Files
ai-resume/content/assets
Documenter da18ab2237 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.
2026-10-26 17:35:15 +11:00
..

content/assets — authored exhibits

Everything the site shows that is not Markdown prose. Authored in Phase 7; wired into templates by Phase 2's builder.

content/assets/
├── BUDGET.md              measured weights for every asset, and the budget
├── VERIFY.md              what was checked, with the output pasted in
├── diagrams/              8 SVGs, light and dark in one file each
│   ├── README.md          the visual language and the presentation contract
│   └── manifest.yaml      id, area, level, title, alt text per diagram
├── code/                  6 verbatim excerpts, 212 lines, 5 eras
│   ├── README.md          the rules these follow
│   └── manifest.yaml      era, language, shows, rationale, honest note
└── logos/
    └── clients.yaml       the client wall: 45 entries, 44 distinct names

Three decisions worth knowing

The client wall is type, not logos. Forty-five names in one typeface at one size on an even grid. Nothing is an image, so nothing can break, and no client is visually ranked above another. Ten client marks do exist in Simple Icons; none is enabled, because using a company's mark on a public portfolio is a permission question for Sam, not a design choice for an agent.

Diagrams carry both themes in one file. Not two files that can drift: one <style> block with the light palette and the same selectors repeated under prefers-color-scheme: dark. The eight files therefore share one palette by construction.

Code excerpts are copied, never retyped. Including the defects. An excerpt that has been tidied is a claim, not evidence — and this site's whole argument is that the claims are checkable.

What is wired and what is not

DoD item State Evidence
Client wall reads as deliberate, no broken images, no placeholders assets done, markup not logos/clients.yaml — 45 entries, zero image references by design. The grid is CSS and belongs to Builder
Eight diagrams, both themes, readable at 1× and on mobile done VERIFY.md §1–§3: 0 geometry findings, 8/8 resolve two palettes, rendered widths measured
Six code exhibits with a two-sentence rationale each done code/manifest.yaml, VERIFY.md §5
Every image optimised; total weight budgeted and recorded assets done, page weight not BUDGET.md. Zero rasters. A full page cannot be weighed until a page exists
Lighthouse ≥ 95 / 95 after assets not measurable yet Needs a served page (Phase 3)
Archive never linked or exposed done VERIFY.md §6 — no archive path anywhere under content/

The four "not yet" rows are honest gaps, not omissions: three need a page that does not exist until Phase 2 and Phase 3 land, and one needs a live agent console from Phase 5.

Consuming these from templates

// diagrams: "assets/diagrams/01-homelab-topology.svg"
<img src="/assets/diagrams/01-homelab-topology.svg"
     alt="{{ .Alt }}" width="960" height="540" loading="lazy" decoding="async">

The width/height attributes are not optional — they are what stops the page shifting as figures load, which is a Lighthouse CLS and a real annoyance. alt comes from manifest.yaml; if it is set to "" the SVG's own <title>/<desc> are not read out.

Figures go inside a horizontally scrollable wrapper (diagrams/README.md), or a 960 px schematic becomes 5 px type on a phone.

Adding an asset

  1. Put the file in the right folder; no external references of any kind.
  2. Add an entry to the folder's manifest.yaml with alt and, for code, rationale and honest_note.
  3. Re-measure and update BUDGET.md. A budget nobody updates is a wish.