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.
3.4 KiB
Phase 7.4 — asset weight budget
Measured 2026-10-26 on .13 with stat -c%s and gzip -9. Every number below
is a measurement of a file that is in this repository, not an estimate.
What is in the assets directory
| Group | Files | Raw | Gzip (-9) |
|---|---|---|---|
Diagrams (diagrams/*.svg) |
8 | 51,729 B | 8,943 B |
Code exhibits (code/*.as, .js, .php, .ts, .hpp, .nix) |
6 | 8,161 B | 2,989 B |
Client wall data (logos/clients.yaml) |
1 | 3,912 B | 1,288 B |
| Served payload total | 15 | 63,802 B | 13,220 B |
| Manifests and READMEs (build-time only, never served) | 5 | 15,955 B | — |
Per-asset
| File | Raw | Gzip |
|---|---|---|
diagrams/01-homelab-topology.svg |
7,079 | 2,169 |
diagrams/02-agent-architecture.svg |
6,027 | 1,971 |
diagrams/03-rag-pipeline.svg |
7,010 | 2,043 |
diagrams/04-edge-architecture.svg |
6,896 | 2,163 |
diagrams/05-distributed-audio.svg |
6,833 | 1,997 |
diagrams/06-media-pipeline.svg |
5,694 | 1,718 |
diagrams/07-cost-resource-engineering.svg |
6,151 | 2,023 |
diagrams/08-era-timeline.svg |
6,039 | 1,930 |
code/01-actionscript-class.as |
958 | 495 |
code/02-js-easing-core.js |
1,848 | 584 |
code/03-php-encode-op.php |
2,295 | 765 |
code/04-typescript-service-layer.ts |
1,078 | 482 |
code/05-embedded-cpp-interface.hpp |
788 | 419 |
code/06-nix-derivation.nix |
1,194 | 724 |
Rasters: zero. There are no PNG, JPEG, WebP or font files in this phase. That is a design outcome, not an oversight — every diagram is text-based SVG and every code exhibit is text, so the "optimise every image" requirement has no image to optimise yet. Phase 7.4 screenshots are deferred (see below).
The budget
| Rule | Limit | Worst case today |
|---|---|---|
| Any single diagram | ≤ 7.5 KB raw / ≤ 2.5 KB gzip | 7,079 B / 2,169 B |
| Any single code exhibit | ≤ 3 KB raw / ≤ 1 KB gzip | 2,295 B / 765 B |
| Diagrams on one page | ≤ 2 | 2 (14.1 KB raw) |
| Asset payload per page, gzipped | ≤ 12 KB | 4.3 KB (two diagrams + one exhibit) |
| Web fonts | 0 | 0 — system font stack only |
| JS required by any asset | 0 | 0 — SVG carries its own palette |
Worst realistic page: an L2 page with two diagrams and one code exhibit is 14,089 B raw, about 4.3 KB over the wire after gzip and before the HTML, CSS and template overhead. The whole 15-file asset set is 13.2 KB gzipped, so even a page that loaded every one of them would stay inside a single small image's budget.
What is not yet measured, and why
| Item | Status | Why |
|---|---|---|
| Full page weight (HTML + CSS + assets) | not measured | No page exists yet: Phase 2 owns the templates |
| Lighthouse ≥ 95 / 95 | not measured | Needs a rendered page (Phase 2) served behind the edge (Phase 3). Nothing in this phase can stand in for it |
| Screenshots and recordings (7.4) | deferred | The agent console is Phase 5 and the TUIOS fleet session has to be real work, not staged. Recording a console that does not exist would be a fabrication |
| Home Assistant / Snapcast stills | deferred | Same reason: needs a live system and a judgement about whether a still adds what diagram 4 and diagram 5 already show |
These are recorded as open rather than asserted. DoD items 4 and 5 cannot be closed until Phase 2 and Phase 3 produce a page to measure, and the measurement must be taken by whoever holds that page.