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.
83 lines
4.2 KiB
YAML
83 lines
4.2 KiB
YAML
# Phase 7.2 — diagram manifest
|
|
#
|
|
# Machine-readable index for the templates. `alt` is copied verbatim from each
|
|
# file's <desc>, so the text a screen reader gets and the text in this manifest
|
|
# are the same string.
|
|
version: 1
|
|
authored: 2026-10-26
|
|
viewbox: "0 0 960 540"
|
|
themes: [light, dark] # both resolved from one file via prefers-color-scheme
|
|
format: svg-text # real text nodes, not glyph outlines
|
|
external_refs: none # no fonts, images or scripts referenced
|
|
presentation:
|
|
desktop: {css_width: "100%", rendered_type_px: [15, 13]}
|
|
mobile:
|
|
wrap: "overflow-x:auto"
|
|
css: "svg{display:block;width:100%;min-width:900px;height:auto}"
|
|
rendered_type_px: [14.1, 12.2]
|
|
diagrams:
|
|
- id: platform-homelab-topology
|
|
file: 01-homelab-topology.svg
|
|
area: platform
|
|
level: 2
|
|
title: "Homelab topology"
|
|
answers: "where it runs, and where the trust boundaries are"
|
|
alt: "Three hosts with their roles and the trust boundaries between them: public internet reaches Caddy on .35, which forwards over the LAN to services bound to 127.0.0.1 on .13. .27 is build and dev with no public listeners."
|
|
bytes: 7079
|
|
- id: ai-agent-architecture
|
|
file: 02-agent-architecture.svg
|
|
area: ai
|
|
level: 2
|
|
title: "Agent architecture"
|
|
answers: "how the agent estate is organised, and why there is one gateway"
|
|
alt: "The operator reaches a fleet of agent sessions through one inbox. Paperclip is the control plane and delegates to peer projects, which answer the Hub read-only. Every model call in the estate passes through one gateway, OmniRoute."
|
|
bytes: 6027
|
|
- id: ai-rag-pipeline
|
|
file: 03-rag-pipeline.svg
|
|
area: ai
|
|
level: 2
|
|
title: "Retrieval pipeline"
|
|
answers: "which side of the pipeline is AI and which side is not"
|
|
alt: "Left, offline ingest: content files are validated, chunked with metadata, embedded and upserted into Qdrant, while the same files render to static pages with no AI in the path. Right, per-visitor query: guardrail, query graph, filtered retrieval, then a streamed answer with citations."
|
|
bytes: 7010
|
|
- id: edge-architecture
|
|
file: 04-edge-architecture.svg
|
|
area: edge
|
|
level: 2
|
|
title: "Edge architecture"
|
|
answers: "why devices never talk to each other directly"
|
|
alt: "Constrained devices publish over LoRa, Zigbee or WiFi to a single MQTT broker, which feeds one automation layer that drives actuation. Retained configuration, telemetry and last-will presence let devices recover unattended."
|
|
bytes: 6896
|
|
- id: edge-distributed-audio
|
|
file: 05-distributed-audio.svg
|
|
area: edge
|
|
level: 2
|
|
title: "Distributed audio"
|
|
answers: "how eight endpoints stay in sync, and how voice gets in"
|
|
alt: "Music and speech sources feed one Snapcast server, which streams one clock-synchronised mix to eight Pi endpoints. Voice announcements arrive as a priority lane: duck the music, speak, restore."
|
|
bytes: 6833
|
|
- id: products-media-pipeline
|
|
file: 06-media-pipeline.svg
|
|
area: products
|
|
level: 2
|
|
title: "Media pipeline"
|
|
answers: "where the human gate sits in a media pipeline"
|
|
alt: "Five stages from download to library: fingerprinting gives every file a natural key so re-runs converge, audit verifies the copy, and review is a deliberate human gate before anything is published."
|
|
bytes: 5694
|
|
- id: platform-cost-resource-engineering
|
|
file: 07-cost-resource-engineering.svg
|
|
area: platform
|
|
level: 2
|
|
title: "Cost and resource engineering"
|
|
answers: "the memory ceiling, drawn to scale from measured caps"
|
|
alt: "A bar chart of the per-service memory caps drawn to scale against the 1024 MiB ceiling, totalling 970 MiB across four containers, beside the rules that hold the ceiling: equal memory and swap limits, loopback binding, a hard container count and a cost ceiling."
|
|
bytes: 6151
|
|
- id: history-era-timeline
|
|
file: 08-era-timeline.svg
|
|
area: history
|
|
level: 2
|
|
title: "Era timeline"
|
|
answers: "five platform shifts and what survived them"
|
|
alt: "Five consecutive platform eras from Flash and ActionScript through jQuery and PHP, React and TypeScript, server-driven Go with HTMX, to agent systems, on an axis from 2000 to 2026. Era boundaries are approximate; the bands show order."
|
|
bytes: 6039
|