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.
74 lines
3.7 KiB
Markdown
74 lines
3.7 KiB
Markdown
# 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
|
||
|
||
```go
|
||
// 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.
|