Phase 7: authored assets (diagrams, code exhibits, client wall, budget)
Phase 7 is mostly authored assets. This commit is the asset half; the
template half is a Builder child issue because this phase must not write
application code.
DoD items satisfied or advanced:
- [x] Eight diagrams present, both themes, readable at 1x and on mobile
8 SVGs, one byte-identical <style> block across all 8 (one visual
language by construction). Light and dark resolve from a single file
via prefers-color-scheme, verified per file in Chrome: 8/8 return two
distinct palettes. Geometry verified with getBBox(), not estimated:
0 findings after fixing 74 (text overflow, partial overlap, empty
text, out-of-viewBox). Mobile type at the 900px minimum is 14.1/12.2px.
- [x] Six code exhibits with a two-sentence rationale each
212 verbatim lines across five eras, copied with cp/sed from the
read-only archive. Every rationale is exactly two sentences about why
the code is good; every exhibit also carries an honest_note, and where
the code is not good the note says so (the 3,400-line procedural PHP
script is presented for its operational judgement, not its structure).
- [~] Every image optimised; total page weight budgeted and recorded
BUDGET.md records measured raw and gzip weights for all 15 served
files: 63,802 B raw / 13,220 B gzipped. Zero rasters by design. Page
weight of a real page is not measurable until Phase 2 templates and
Phase 3 serving exist, and is recorded as open rather than asserted.
- [x] Archive never linked or exposed
No mount paths or volume names under content/. Provenance recorded as
"private archive, path withheld".
- [ ] Client wall reads as deliberate -> needs markup/CSS (Builder)
- [ ] Lighthouse held at >= 95/95 -> needs a served page (Phase 3)
Also: the client wall is authored as data (45 entries, 44 distinct names) with
the 45-vs-46 discrepancy and the Diajio -> Diageo correction recorded
rather than papered over. No commercial marks are enabled: that is a
permission decision for Sam, so availability is recorded and permission is not
implied.
This commit is contained in:
124
content/assets/VERIFY.md
Normal file
124
content/assets/VERIFY.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Phase 7 — verification record
|
||||
|
||||
What was checked, how, and what it returned. Every block below is pasted output,
|
||||
not a description of output.
|
||||
|
||||
Run 2026-10-26 on `.13`, headless Chrome for measurement.
|
||||
|
||||
## 1. Diagrams: structure and geometry
|
||||
|
||||
Each SVG was parsed as XML, then rendered inline in Chrome and **measured with
|
||||
`getBBox()`** — the browser's own text metrics, not an estimate. The check
|
||||
reported text overflow outside its box, partial overlap between boxes, elements
|
||||
outside the viewBox, empty text nodes and unlabelled boxes.
|
||||
|
||||
```
|
||||
01-homelab-topology.svg OK
|
||||
02-agent-architecture.svg OK
|
||||
03-rag-pipeline.svg OK
|
||||
04-edge-architecture.svg OK
|
||||
05-distributed-audio.svg OK
|
||||
06-media-pipeline.svg OK
|
||||
07-cost-resource-engineering.svg OK
|
||||
08-era-timeline.svg OK
|
||||
|
||||
0 issue(s) total
|
||||
checked 8 diagrams
|
||||
distinct <style> blocks: 1 (1 = one visual language)
|
||||
distinct viewBoxes: 1
|
||||
```
|
||||
|
||||
The first pass produced 74 findings. They were fixed in the source of the
|
||||
diagrams, not suppressed in the checker: shortened labels, widened boxes,
|
||||
removed empty text nodes. The final run is clean.
|
||||
|
||||
**"One visual language" is one number: `distinct <style> blocks: 1`.** All eight
|
||||
files carry a byte-identical style block, so there is no second palette to drift.
|
||||
|
||||
## 2. Diagrams: both themes
|
||||
|
||||
Computed colours of the first text node and the first box, resolved twice — once
|
||||
with the browser's default scheme, once with `--force-dark-mode`, which makes
|
||||
`prefers-color-scheme: dark` match.
|
||||
|
||||
```
|
||||
01-homelab-topology.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
02-agent-architecture.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
03-rag-pipeline.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
04-edge-architecture.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
05-distributed-audio.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
06-media-pipeline.svg light rgb(27, 34, 43) rgb(233, 241, 253) → dark rgb(231, 237, 244) rgb(17, 37, 61) OK
|
||||
07-cost-resource-engineering.svg light rgb(27, 34, 43) rgb(230, 244, 242) → dark rgb(231, 237, 244) rgb(13, 38, 36) OK
|
||||
08-era-timeline.svg light rgb(27, 34, 43) rgb(244, 246, 248) → dark rgb(231, 237, 244) rgb(24, 32, 40) OK
|
||||
|
||||
all eight resolve two distinct palettes: True
|
||||
```
|
||||
|
||||
One file, two palettes, verified per file rather than assumed from one.
|
||||
|
||||
## 3. Diagrams: readable at 1× and on mobile
|
||||
|
||||
Rendered widths measured inside a 390 px container (the mobile case) and a
|
||||
960 px container (1×), using the presentation contract in
|
||||
`diagrams/README.md` (`min-width:900px` in a scrolling wrapper):
|
||||
|
||||
```
|
||||
container 390px -> {'container': 390, 'svgRenderedWidth': 900}
|
||||
container 960px -> {'container': 960, 'svgRenderedWidth': 960}
|
||||
```
|
||||
|
||||
Type is 15 px / 13 px at 1×, and 14.1 px / 12.2 px at the 900 px minimum —
|
||||
arithmetic from the rendered width over the 960 viewBox. Scaled to the container
|
||||
instead, the same labels would render at 5 px, which is unreadable; that is why
|
||||
the wrapper is a requirement and not a styling preference.
|
||||
|
||||
## 4. Accessibility
|
||||
|
||||
Every file carries `role="img"`, `<title>` and `<desc>`. `desc` length per file:
|
||||
219, 230, 285, 223, 193, 197, 260, 234 characters — a real alternative text, not
|
||||
a filename. The manifest repeats each `desc` verbatim as `alt`, so the page and
|
||||
the screen reader cannot disagree.
|
||||
|
||||
## 5. Code exhibits: verbatim copies
|
||||
|
||||
Each exhibit was produced by copying from the archive with `cp` or `sed -n`,
|
||||
never by typing. Line counts as reported by `wc -l`:
|
||||
|
||||
```
|
||||
36 01-actionscript-class.as
|
||||
42 02-js-easing-core.js
|
||||
27 03-php-encode-op.php
|
||||
37 04-typescript-service-layer.ts
|
||||
28 05-embedded-cpp-interface.hpp
|
||||
33 06-nix-derivation.nix
|
||||
212 total
|
||||
```
|
||||
|
||||
`03-php-encode-op.php` is two copied regions joined by one marked elision
|
||||
(line 20 of the file). Nothing else was altered.
|
||||
|
||||
## 6. Archive is not exposed
|
||||
|
||||
Path-shaped strings only — a mount point or a storage volume name would have to
|
||||
appear for the archive to be reachable:
|
||||
|
||||
```
|
||||
$ grep -rnE '/m[n]t/|storage_3[T]B' content/ || echo "no mount paths or volume names under content/"
|
||||
no mount paths or volume names under content/
|
||||
```
|
||||
|
||||
The bracket keeps the check from matching its own command line, so the result
|
||||
above is the real result and not the file quoting itself.
|
||||
|
||||
No matches. The archive is not linked, named, or reachable from anything under
|
||||
`content/`. Provenance is recorded as "private archive, path withheld" — the
|
||||
words only, never the location.
|
||||
|
||||
## What could not be verified here
|
||||
|
||||
| Item | Why | Owner |
|
||||
|---|---|---|
|
||||
| Page weight of a real page | No template exists yet | Builder / Phase 2 |
|
||||
| Lighthouse ≥ 95 / 95 | Needs a served page | Builder / Phase 3 |
|
||||
| Client wall grid renders as deliberate | It is markup and CSS, which this phase must not write | Builder |
|
||||
| Screenshots and recordings (7.4) | The console is Phase 5; staging it would be fabrication | Phase 5, then this phase |
|
||||
Reference in New Issue
Block a user