Skip to content

Commit 0549b63

Browse files
committed
Keep the central KeyLoad mark sharp as native SVG
1 parent 9b3bd8e commit 0549b63

17 files changed

Lines changed: 471 additions & 66 deletions

‎AGENTS.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ For changes outside existing owner authorization, obtain direction before changi
408408
- KeyLoad's visual style is serious, adult Apple-style Liquid Glass in the Managed Code family: editorial off-white surfaces, bold black typography and Managed Code's pastel iridescent accent (peach → lilac → periwinkle), plus Prostir graphite. Do not use green or lime as the brand accent, and do not return to the rejected light-blue look. No Material Design, colour blobs, rainbow logos or playful decoration. The `/admin` console and the public site share it (owner direction 2026-10-02).
409409
- The public landing must be a radically better product page for KeyLoad as the database for AI agents, on .NET and Orleans. Its Three.js scene must be live and moving as soon as it loads, except under reduced-motion preferences, within the scene lifecycle, budget and honesty contracts.
410410
- Every public KeyLoad page ends with "Developed by Managed Code" and a normal followed (dofollow) link to https://www.managed-code.com/.
411+
- The central KeyLoad K MUST use the canonical true SVG outside the bounded 3D raster buffer so it stays sharp on Retina displays. An SVG wrapper around a bitmap or a CanvasTexture logo does not satisfy this requirement (repeated owner correction 2026-10-03).
411412
### Dislikes
412413
- Repeated permission questions for already authorized work.
413414
- Fake production readiness, power-loss claims from process-kill tests, or unsupported performance supremacy.

‎docs/Features/BenchmarkComparisons/VectorAssets.md‎

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
# BenchmarkComparisons vector assets
22

33
Continuation of [BenchmarkComparisons](../BenchmarkComparisons.md), existing
4-
REQ-BC-012/013/016/017/025/029. [Acceptance](../../../vector-assets.acceptance.md)
5-
is the precise AC-VEC-001..005 test matrix; [plan](../../../vector-assets.plan.md)
6-
records task ownership, ordered checks and evidence. Decision: ADR-053 vector
7-
repair continuation; no database/public API/persistence boundary changes.
4+
REQ-BC-012/013/016/017/025/029. The acceptance matrix below is the durable contract;
5+
the ignored root vector-assets acceptance/plan files retain local task planning.
6+
Decision: [ADR-053](../../ADR/ADR-053-unified-visual-identity.md) vector repair
7+
continuation and [ADR-040](../../ADR/ADR-040-static-site-threejs-evidence.md) manual
8+
visual review; no database/public API/persistence boundary changes.
89

910
- REQ-VEC-001 → AC-VEC-001: replace the raster-in-SVG poster with real geometry.
1011
- REQ-VEC-002 → AC-VEC-002/003: project the canonical vector logo outside the
1112
bounded GPU buffer and keep it subordinate to scene lifecycle.
1213
- REQ-VEC-003 → AC-VEC-004/005: retain resource, accessibility, brand, real build,
1314
provenance and GitHub-only qualification contracts.
1415

15-
Slice ownership: site/Features/BenchmarkComparisons owns HTML, poster, scene
16+
Slice ownership: site/Features/BenchmarkComparisons owns HTML, desktop/mobile posters, scene
1617
geometry/lifecycle/observer and CSS; tests/KeyLoad.SiteTests/Features/BenchmarkComparisons
1718
owns actual-source XML and real Chrome assertions. Shared favicon remains the
1819
unchanged byte-identical mirror of the AdminDashboard canonical logo. Backend,
@@ -30,9 +31,23 @@ flowchart LR
3031
```
3132

3233
Tests must reject raster/executable/external poster payloads and exercise real
33-
ready/resize/pointer/reduced-motion/offscreen/restoration flows at DPR2. Full
34+
ready/resize/pointer/reduced-motion/offscreen/restoration flows at DPR2.
35+
An actual favicon404 keeps the poster; both mobile and desktop retain all model cards.
36+
The complete
3437
GitHub SiteTests, native coverage, parity/build and existing renderer assertions
3538
remain mandatory. Design judgment uses the existing ADR-040 manual exception;
3639
static builds and screenshots do not establish GitHub qualification/publication.
3740
Keep source and measured revisions separate. Rollback restores the coherent
3841
presentation source, never archived reports or database formats.
42+
43+
| Acceptance | Pass/fail contract | Verification |
44+
|---|---|---|
45+
| AC-VEC-001 | Both posters contain true SVG paths/text, the canonical K geometry and all eight model labels. Embedded raster, executable/external content or clipped mobile models fails. | SiteVectorAssetTests validates actual XML, local references, labels and canonical path attributes; ADR-040 manual desktop/mobile review judges fitting and sharpness. |
46+
| AC-VEC-002 | Exactly one decorative live image loads the unchanged favicon outside the GPU buffer, with contained central bounds and projected CSS sizing. Missing, duplicated, unloaded or oversized rasterized logo fails. | Real Chrome ready/pointer/resize assertions at DPR2; manual sharpness review. |
47+
| AC-VEC-003 | Loading/no-JS/error/zero-size/offscreen/disposed retains the poster and hides the live image; ready shows the loaded SVG. Favicon404 never reaches ready. Pause/reduced motion/restoration preserves the lifecycle. | Existing real browser lifecycle flow, Retina resize/pose checks and SiteVectorAssetBrowserTests actual HTTP404 failure. Hardware device-loss qualification remains open. |
48+
| AC-VEC-004 | Existing DPR1.5/1M-pixel/30-draw/5K-triangle budgets, movement, accessibility and responsive overflow bounds hold. | Existing real renderer/responsive assertions plus recorded manual GPU observations. |
49+
| AC-VEC-005 | The real builder emits both posters and canonical assets with unchanged brand parity and benchmark provenance. | Complete SiteTests, source/output byte parity, native coverage and Pages gates in GitHub at the exact source revision. |
50+
51+
GitHub-only TUnit/MTP qualification remains required for every automated criterion.
52+
The [implementation evidence](../../implementation/vector-assets.json) records
53+
development checks and manual preview separately from the blocked publication.
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
{
2+
"schemaVersion": 1,
3+
"scope": "BenchmarkComparisons vector assets",
4+
"sourceBaseRevision": "9b3bd8ed64b42e7e3bd37d454face7984dfc6b5f",
5+
"workingTree": true,
6+
"requirements": [
7+
"REQ-VEC-001",
8+
"REQ-VEC-002",
9+
"REQ-VEC-003"
10+
],
11+
"acceptance": "vector-assets.acceptance.md",
12+
"plan": "vector-assets.plan.md",
13+
"sourceHashes": {
14+
"site/favicon.svg": "7d93c0d681b1b2a0c29708bcf6055242b8d57d3931282ef11a203ed5988ce459",
15+
"src/KeyLoad.Server/Features/AdminDashboard/Assets/logo.svg": "7d93c0d681b1b2a0c29708bcf6055242b8d57d3931282ef11a203ed5988ce459",
16+
"site/Features/BenchmarkComparisons/assets/cluster-poster.svg": "ef787a7eaec235cf47aa240dc64239eccccfb3a503aefd857367867fd2af8ac0",
17+
"site/Features/BenchmarkComparisons/assets/cluster-poster-mobile.svg": "68e303d0b94e0471926bfdb416f590cb053b88a8c3cbdf4f191a792e5521bfb9",
18+
"site/Features/BenchmarkComparisons/scene-geometry.mjs": "5db7511e529813f466012a8edc7ebe7ac9e3f8b96371525c3fba81da36c8ebf1",
19+
"site/Features/BenchmarkComparisons/scene-lifecycle.mjs": "60ecc385a394b963be18c09a9e14e9756bdbf304927463f1a133d03d012996fa"
20+
},
21+
"developmentChecks": {
22+
"siteTestsBuild": {
23+
"exitCode": 0,
24+
"warnings": 0,
25+
"errors": 0,
26+
"log": "/private/tmp/keyload-vector-build-verified.log"
27+
},
28+
"scopedFormat": {
29+
"exitCode": 0,
30+
"log": "/private/tmp/keyload-vector-format-verified.log"
31+
},
32+
"javascriptSyntax": "passed",
33+
"staticGovernance": {
34+
"exitCode": 0,
35+
"log": "/private/tmp/keyload-vector-governance.log"
36+
},
37+
"localTestsExecuted": false
38+
},
39+
"manualPreview": {
40+
"qualification": false,
41+
"mode": "local_preview",
42+
"measuredSource": "9c570f8c33a7a9667507a8e1c0ca68860de3be45",
43+
"measuredRun": "https://github.com/managedcode/KeyLoad/actions/runs/36926803549",
44+
"javascriptGzipBytes": 40804,
45+
"cssGzipBytes": 9700,
46+
"devices": [
47+
{
48+
"width": 1440,
49+
"dpr": 2,
50+
"backend": "webgpu",
51+
"bufferPixels": 999044,
52+
"drawCalls": 18,
53+
"triangles": 35,
54+
"markLoaded": true,
55+
"svg": "/favicon.svg",
56+
"contained": true,
57+
"overflow": false
58+
},
59+
{
60+
"width": 390,
61+
"dpr": 2,
62+
"backend": "webgpu",
63+
"bufferPixels": 226884,
64+
"drawCalls": 18,
65+
"triangles": 35,
66+
"markLoaded": true,
67+
"svg": "/favicon.svg",
68+
"contained": true,
69+
"overflow": false
70+
}
71+
],
72+
"noJavascriptMobilePoster": "cluster-poster-mobile.svg",
73+
"desktopScreenshot": "/private/tmp/keyload-vector-final-preview.png",
74+
"mobileNoJavascriptScreenshot": "/private/tmp/keyload-vector-mobile-no-js.png"
75+
},
76+
"gitHubQualification": {
77+
"state": "blocked_before_site_checkout",
78+
"runId": 37112008157,
79+
"sourceRevision": "9b3bd8ed64b42e7e3bd37d454face7984dfc6b5f",
80+
"runUrl": "https://github.com/managedcode/KeyLoad/actions/runs/37112008157",
81+
"artifactId": 11270013705,
82+
"artifactName": "site-qualification-9b3bd8ed64b42e7e3bd37d454face7984dfc6b5f-1",
83+
"reason": "Isolated Pages GitHub evidence rejected.",
84+
"siteTestsExecuted": false,
85+
"nativeCoverageQualified": false,
86+
"published": false
87+
},
88+
"acceptanceState": {
89+
"AC-VEC-001": "source and manual preview implemented; GitHub tests pending",
90+
"AC-VEC-002": "source and DPR2 manual preview implemented; GitHub browser tests pending",
91+
"AC-VEC-003": "source and manual fallback implemented; real HTTP404 regression written but unexecuted",
92+
"AC-VEC-004": "development checks and manual renderer budgets pass; GitHub gates pending",
93+
"AC-VEC-005": "publication blocked by rejected isolated evidence"
94+
}
95+
}
Lines changed: 83 additions & 0 deletions
Loading

‎site/Features/BenchmarkComparisons/build-site.mjs‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ const BUILD = Object.freeze({
1818
'isolated-report-validation.mjs', 'isolated-http.mjs', 'isolated-loader.mjs',
1919
'isolated-measurements.mjs', 'isolated-view.mjs', 'isolated-controls.mjs', 'isolated-lab.mjs', 'contracts.mjs', 'bootstrap.mjs', 'measurements.mjs', 'measurement-loader.mjs',
2020
'benchmark-lab.mjs', 'benchmark-chart.mjs', 'benchmark-profiles.mjs', 'cluster-scene.mjs',
21-
'scene-geometry.mjs', 'scene-lifecycle.mjs', 'scene-observers.mjs', 'styles.css', 'brand.css', 'tokens.css', 'scene.css', 'assets/cluster-poster.svg'],
21+
'scene-geometry.mjs', 'scene-lifecycle.mjs', 'scene-observers.mjs', 'styles.css', 'brand.css', 'tokens.css', 'scene.css',
22+
'assets/cluster-poster.svg', 'assets/cluster-poster-mobile.svg'],
2223
vendorFiles: ['three.webgpu.js', 'three.core.js', 'LICENSE'],
2324
vendorHashes: ['15cfce5c653541704fd9a3463c39d3e8b854bb6265ccd854d7cfe74090625cc6',
2425
'9edde002b066a9a05676a6127f67735b62baf399bdea529f2f7e31657da769e6',

‎site/Features/BenchmarkComparisons/index.html‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ <h1 id="page-title">The database <span class="h1-break">for <span class="kl-mark
4848
</div>
4949
<figure class="stage" aria-labelledby="scene-caption">
5050
<div class="scene-frame" id="cluster-scene" aria-label="Conceptual view of one engine holding every data shape an agent needs">
51-
<img class="cluster-poster" src="./Features/BenchmarkComparisons/assets/cluster-poster.svg" alt="Conceptual illustration: cards for SQL, documents, graphs, events, vectors, queues, time series and blobs circle one KeyLoad engine.">
51+
<picture>
52+
<source media="(max-width: 760px)" srcset="./Features/BenchmarkComparisons/assets/cluster-poster-mobile.svg">
53+
<img class="cluster-poster" src="./Features/BenchmarkComparisons/assets/cluster-poster.svg" alt="Conceptual illustration: cards for SQL, documents, graphs, events, vectors, queues, time series and blobs circle one KeyLoad engine.">
54+
</picture>
5255
<img class="cluster-core" src="./favicon.svg" alt="" aria-hidden="true" hidden>
5356
<span class="scene-status" data-scene-status role="status">Static illustration.</span>
5457
</div>

0 commit comments

Comments
 (0)