diff --git a/.coldstart/notebook/.raw/how-a-new-site-astro-page-acquires-nav-footer-and-svg-defs.jsonl b/.coldstart/notebook/.raw/how-a-new-site-astro-page-acquires-nav-footer-and-svg-defs.jsonl index ce7be4e..071853d 100644 --- a/.coldstart/notebook/.raw/how-a-new-site-astro-page-acquires-nav-footer-and-svg-defs.jsonl +++ b/.coldstart/notebook/.raw/how-a-new-site-astro-page-acquires-nav-footer-and-svg-defs.jsonl @@ -1,3 +1,5 @@ {"title":"how a new site-astro page acquires nav, footer and SVG defs","summary":"Nav.astro, Footer.astro and SvgDefs.astro carry no styling or defs of their own — the chrome CSS lives entirely in whichever page-level stylesheet the page imports, so a new page must import landing.css or docs.css for the nav/footer to look right EVEN IF it ships its own stylesheet, and must render or every url(#rough)/url(#glow) reference in its own markup silently resolves to nothing (no console error, the stroke just renders unfiltered). Verified this session by building two new pages: docs.css was the stylesheet that carried the chrome, and the hand-drawn filter on the new figures only appeared once was rendered on the page.","identityAliases":["new site-astro page","page chrome wiring","nav footer styling","SvgDefs filter defs"],"incidentAliases":["nav unstyled on new page","rough filter not applied","hand-drawn stroke missing"],"steps":[{"path":"site-astro/src/pages/how-it-works/notebook.astro","role":"a page: imports docs.css for chrome + how.css for its own styles, renders SvgDefs then Nav then content then Footer"},{"path":"site-astro/src/styles/docs.css","role":"carries the nav/footer chrome CSS and the dark tokens for every non-home page"},{"path":"site-astro/src/components/Nav.astro","symbols":["Props"],"role":"markup only; the variant prop picks the active link and the install href"},{"path":"site-astro/src/components/SvgDefs.astro","role":"inline zero-size holding #rough/#glow/#core/#warm/#flake, referenced by url(#...) from page markup"},{"path":"site-astro/src/components/Footer.astro","symbols":["taglines"],"role":"markup only; variant selects the tagline string"}],"invariants":["Nav/Footer/SvgDefs are unstyled markup — their appearance comes entirely from the page's stylesheet, never from the component","url(#rough) on a page that does not render fails silently: no error, the element just draws without the filter","Nav and Footer each declare their own variant union and Footer keys a taglines map off it — adding a page family means widening BOTH unions and adding the taglines key, or the tagline lookup returns undefined"],"verified":["site-astro/src/pages/how-it-works/notebook.astro","site-astro/src/pages/how-it-works/navigation.astro","site-astro/src/components/Nav.astro","site-astro/src/components/Footer.astro","site-astro/src/components/SvgDefs.astro","site-astro/src/styles/docs.css","site-astro/src/styles/how.css"],"id":"how-a-new-site-astro-page-acquires-nav-footer-and-svg-defs","type":"flow","op":"put","v":1,"ts":"2026-08-09T10:05:32.726Z","head":"578f3ec476b0","anchors":[{"path":"site-astro/src/pages/how-it-works/notebook.astro","hash":"sha256:1a01e0dc7278","head":"578f3ec476b0"},{"path":"site-astro/src/pages/how-it-works/navigation.astro","hash":"sha256:fe084da82216","head":"578f3ec476b0"},{"path":"site-astro/src/components/Nav.astro","hash":"sha256:8f39e6f12895","head":"578f3ec476b0"},{"path":"site-astro/src/components/Footer.astro","hash":"sha256:d72628133dd4","head":"578f3ec476b0"},{"path":"site-astro/src/components/SvgDefs.astro","hash":"sha256:855fadd756ae","head":"578f3ec476b0"},{"path":"site-astro/src/styles/docs.css","hash":"sha256:7d9b9aaaa745","head":"578f3ec476b0"},{"path":"site-astro/src/styles/how.css","hash":"sha256:271af95a654d","head":"578f3ec476b0"}]} {"title":"how a new site-astro page acquires nav, footer and SVG defs","identityAliases":["docs sidebar component pattern"],"summary":"Nav.astro, Footer.astro and SvgDefs.astro carry no styling or defs of their own — the chrome CSS lives entirely in whichever page-level stylesheet the page imports, so a new page must import landing.css or docs.css for the nav/footer to look right EVEN IF it ships its own stylesheet, and must render or every url(#rough)/url(#glow) reference in its own markup silently resolves to nothing. Confirmed again this session building 3 new docs sub-pages (/docs/navigation/, /docs/notebook/, /docs/under-the-hood/): each imports docs.css + how's own DocsSidebar.astro component, no per-page chrome CSS needed.","steps":[{"path":"site-astro/src/components/DocsSidebar.astro","role":"reusable sidebar (active prop), only new component this session — the one exception to 'components carry no styling': it ships a small scoped
` between sections — placed outside, it got both the class's own margin AND the section's padding stacked, reading as a disconnected floating block on the wrong background. The `.recall.reveal` timeline's per-item pacing is driven by cumulative `data-t` delays in `runTimeline`, but a `.term.live` element's OWN internal typing+reveal duration (typeCommand's per-char delay, the post-type pause, then each output line's own `data-t`) runs independently of that countdown — its outer `data-t` must be sized to outlast that internal animation or the next timeline item fades in before the terminal finishes typing.","anchors":[{"path":"site-astro/src/pages/demo/index.astro","hash":"sha256:4b92d0cdd5ac","head":"b0e998cf87a1"}],"id":"site-astro-src-pages-demo-index-astro-2e0c6d23","type":"file","op":"put","verified":["site-astro/src/pages/demo/index.astro"],"character":"single","v":1,"ts":"2026-08-26T19:35:23.985Z","head":"b0e998cf87a1"} {"anchors":[{"path":"site-astro/src/pages/demo/index.astro","symbols":["title","description"]}],"id":"site-astro-src-pages-demo-index-astro-2e0c6d23","type":"file","op":"put","verified":[],"v":1,"ts":"2026-08-26T19:35:24.576Z","head":"b0e998cf87a1"} +{"summary":"The /demo/ page: two static Claude Code panel replicas showing the same repo on two different days - COLD (recall hook searches the notebook, finds nothing, agent runs coldstart find then coldstart gs, answers, Stop hook writes the note) and WARM (different session, note matches and arrives with the prompt, zero tool calls). Rebuilt in 54deea7 from a JS-animated typewriter timeline into something FULLY RENDERED ON LOAD: no typing effect, no scroll triggers, zero opacity:0 elements, works with JS off and is screenshot-able. All command output is real unedited output from this repo, elided with a `… +N lines` line. The panel keeps its own neutral #1f1f1f ground rather than the site's frost/ember field, because it is a replica and should read as the real thing sitting on the page. Annotations are centred captions BETWEEN turn groups rather than a side rail, so the panel itself carries no marketing copy while still collapsing correctly on mobile. Two mechanics here are non-obvious and were both found by rendering rather than reading: Astro COLLAPSES template newlines, so each line of terminal output must be its own
under white-space:pre or the whole block runs onto one wrapped line; and the output box needs its own overflow-x:auto so long lines scroll inside the box instead of overflowing the page at 390px.","identityAliases":["demo page","claude code panel replica","cold and warm session panels","static demo transcript"],"incidentAliases":["terminal output on one line","astro strips newlines","demo page horizontal overflow","demo animation removed","opacity 0 hidden content"],"anchors":[{"path":"site-astro/src/pages/demo/index.astro","symbols":["title","description",".cc",".cc-body",".cc-bar",".cc-in",".turn",".tool",".ob",".note",".cap",".chip",".prose",".dsec",".dhead",".dclose"],"hash":"sha256:16aafe9b8961","head":"54deea7bca84"}],"id":"site-astro-src-pages-demo-index-astro-2e0c6d23","type":"file","op":"put","verified":["site-astro/src/pages/demo/index.astro"],"character":"single","v":1,"ts":"2026-09-04T09:19:10.074Z","head":"54deea7bca84"} +{"summary":"The /demo/ page: two static Claude Code panel replicas, fully rendered on load - no typing effect, no scroll triggers, zero opacity:0, works with JS off. The scenario is 'how does authentication work in this codebase?' on an INVENTED Node/Express API, and the page says so in a line under the hero: the repo and its output are made up, only the command shapes and output format are real. It was previously a real captured session about coldstart's own co-change internals, which only demonstrates the tool to someone who already uses it. COLD panel: no note, one `coldstart find`, one `coldstart gs`, then the answer (Redis sessions, not JWTs, despite the variable being named token). WARM panel: a note arrives with the prompt, and the agent then runs ONE Read against the file the note named before answering. That read is deliberate and must not be removed - an earlier version claimed 'Zero tool calls, no reads', which is false about how agents behave and contradicts the freshness story on the same page. The honest framing the copy now uses is 'one read instead of a search'. The panel keeps its own neutral #1f1f1f ground rather than the site's field, because it is a replica.","identityAliases":["demo page","claude code panel replica","auth demo","cold and warm session panels"],"incidentAliases":["demo not relatable","zero tool calls claim","demo page overclaims","demo animation removed"],"anchors":[{"path":"site-astro/src/pages/demo/index.astro","symbols":["title","description",".cc",".cc-body",".cc-bar",".cc-in",".turn",".tool",".ob",".note",".cap",".chip",".prose",".dsec",".dhead",".dclose","readOut",".tally",".disclaim"],"hash":"sha256:1e4be26bcb26","head":"e52802156249"}],"id":"site-astro-src-pages-demo-index-astro-2e0c6d23","type":"file","op":"put","verified":["site-astro/src/pages/demo/index.astro"],"character":"single","v":1,"ts":"2026-09-06T17:33:53.824Z","head":"e52802156249"} +{"summary":"The /demo/ page: two static Claude Code panel replicas, fully rendered on load - no typing effect, no scroll triggers, zero opacity:0, works with JS off. The hero does NOT pose the scenario question; it names what the page is ('What coldstart changes, inside the session'), because the auth question is already the first line inside the cold panel and having it as the headline too made the page ask twice and read as if auth were its subject. The question, the invented Node/Express repo (acme-api) and its output all live in the panels. There is no longer a standalone .disclaim paragraph - the 'example repo' honesty it carried is one clause of the single .hero-sub line, and that clause must survive any rewrite: a terminal on a page reads as captured output unless the copy says otherwise. Page title/description and both og fields restate the hero, so a hero rewrite that skips them leaves search and link previews on the old framing. COLD panel: no note, one `coldstart find`, one `coldstart gs`, then the answer (Redis sessions, not JWTs, despite the variable being named token). WARM panel: a note arrives with the prompt, and the agent then runs ONE Read against the file the note named before answering. That read is deliberate and must not be removed - an earlier version claimed 'Zero tool calls, no reads', which is false about how agents behave and contradicts the freshness story on the same page; the honest framing is 'one read instead of a search'. The panels keep their own neutral #1f1f1f ground rather than the site's field, because they are replicas.","identityAliases":["demo page","live session demo","claude code panel replica","cold and warm session panels","static demo transcript","demo hero copy","acme-api example repo"],"incidentAliases":["question asked twice","hero poses the question","disclaim paragraph removed","demo page framing"],"anchors":[{"path":"site-astro/src/pages/demo/index.astro","symbols":["title","description",".cc",".cc-body",".cc-bar",".cc-in",".turn",".tool",".ob",".note",".cap",".chip",".prose",".dsec",".dhead",".dclose","readOut",".tally",".disclaim",".demo-hero",".hero-sub"],"hash":"sha256:32b9cd4a434a","head":"935c13e94156"}],"id":"site-astro-src-pages-demo-index-astro-2e0c6d23","type":"file","op":"put","verified":["site-astro/src/pages/demo/index.astro"],"character":"single","v":1,"ts":"2026-09-06T18:16:22.904Z","head":"935c13e94156"} diff --git a/.coldstart/notebook/.raw/site-astro-src-pages-docs-astro-d1cf6fe9.jsonl b/.coldstart/notebook/.raw/site-astro-src-pages-docs-astro-d1cf6fe9.jsonl index 2502560..12d6276 100644 --- a/.coldstart/notebook/.raw/site-astro-src-pages-docs-astro-d1cf6fe9.jsonl +++ b/.coldstart/notebook/.raw/site-astro-src-pages-docs-astro-d1cf6fe9.jsonl @@ -3,3 +3,4 @@ {"target":{"kind":"alias","key":"notebook docs section"},"id":"site-astro-src-pages-docs-astro-d1cf6fe9","type":"file","op":"retract","v":1,"ts":"2026-08-16T16:51:41.552Z","head":"5ddc264e056c"} {"target":{"kind":"alias","key":"docs freshness section"},"id":"site-astro-src-pages-docs-astro-d1cf6fe9","type":"file","op":"retract","v":1,"ts":"2026-08-16T16:51:41.564Z","head":"5ddc264e056c"} {"summary":"Docs landing page — sidebar reference layout on docs.css, with its own TechArticle JSON-LD and its own Google Fonts block (not centralised in Head.astro). Sections are #overview, #install, #flow, #next; #next's fcards link out to the 3 docs sub-pages (navigation, notebook, under-the-hood) — there is no #notebook or #freshness section on this page itself, that content lives in the sub-pages now. Inline links in docs prose are styled per-link with style=\"color:var(--frost)\" — there is no link class in docs.css. Its closing sidebar-highlight script is one of 4 duplicated copies (see flow: docs pages share a hand-duplicated sidebar scrollspy script, not an import).","identityAliases":["docs page","structured data","brand terminology binding","docs landing page"],"anchors":[{"path":"site-astro/src/pages/docs.astro","symbols":["techArticleJsonLd","doc-sec#notebook","doc-sec#freshness","overview","install","flow","next"],"hash":"sha256:9faa0af4d67d","head":"5ddc264e056c"}],"id":"site-astro-src-pages-docs-astro-d1cf6fe9","type":"file","op":"put","verified":["site-astro/src/pages/docs.astro"],"character":"single","v":1,"ts":"2026-08-16T16:51:41.575Z","head":"5ddc264e056c"} +{"summary":"Docs landing page - sidebar reference layout on docs.css, with its own TechArticle JSON-LD and its own Google Fonts block (not centralised in Head.astro). Sections are #overview, #install, #flow, #next; #next's fcards link out to the 3 docs sub-pages (navigation, notebook, under-the-hood) - there is no #notebook or #freshness section here, that content lives in the sub-pages. Inline prose links are NOT styled per-link any more: docs.css carries '.content p a, .doc-sec p a, .prose p a, .doc-sec li a', so do not add style=\"color:var(--frost)\" to new links. The .flags/.flag-row table is the page's one key-value device and it is easy to misuse: #install once carried two consecutive .flags blocks where the second held Upgrading/Removing/Codex-hook-trust, so the frost mono key column scanned as six flags of which three were not flags. Sub-groups inside a section now take an

(styled in docs.css) so two tables can never read as one list, commands go in a .term block rather than as long inline chips, and asides go in .callout. Its closing sidebar-highlight script is one of 4 duplicated copies (see flow: docs pages share a hand-duplicated sidebar scrollspy script, not an import).","identityAliases":["docs landing page","docs.astro","install and setup section","coldstart init docs","flags table","docs sidebar sections"],"incidentAliases":["install section cluttered","two identical flag tables","code chips wall of text","upgrading removing rows"],"anchors":[{"path":"site-astro/src/pages/docs.astro","symbols":["techArticleJsonLd","doc-sec#notebook","doc-sec#freshness","overview","install","flow","next","flags","flag-row","doc-sec","callout"],"hash":"sha256:bc20dc3f63f0","head":"e6e8bea1e30c"}],"id":"site-astro-src-pages-docs-astro-d1cf6fe9","type":"file","op":"put","verified":["site-astro/src/pages/docs.astro"],"character":"single","v":1,"ts":"2026-09-06T18:27:40.249Z","head":"e6e8bea1e30c"} diff --git a/.coldstart/notebook/.raw/site-astro-src-pages-index-astro-08d662bc.jsonl b/.coldstart/notebook/.raw/site-astro-src-pages-index-astro-08d662bc.jsonl index 52ef939..84b9c7b 100644 --- a/.coldstart/notebook/.raw/site-astro-src-pages-index-astro-08d662bc.jsonl +++ b/.coldstart/notebook/.raw/site-astro-src-pages-index-astro-08d662bc.jsonl @@ -6,3 +6,5 @@ {"summary":"Homepage — v4 centered hero, Newsreader/IBM Plex Sans/JetBrains Mono. Section order is hero → notebook → flow (index) → philosophy → FAQ → install. The FAQ exists to fix a real defect: FAQPage JSON-LD was declared for five Q&A pairs that appeared NOWHERE in the rendered body, which Google's structured-data policy disallows. A single `faqs` array is now the one source — the visible
section maps over it AND faqJsonLd.mainEntity is derived from it via .map(), so the two cannot drift. Verified by stripping every ld+json block out of dist/index.html and confirming all five questions still appear in the body. The answer strings contain backticks, so the visible render splits each answer on '`' and wraps odd segments in , while the JSON-LD strips backticks with .replace(/`/g,'') to keep schema text plain prose. Title tag and all three meta/og/twitter descriptions are category-slot copy governed by the entity-binding flow. Not in the import graph — Astro routes it by file path.","identityAliases":["homepage","index page","hero section","landing page astro","faq section"],"incidentAliases":["faq schema not visible","json-ld out of sync with html","backticks rendered literally"],"anchors":[{"path":"site-astro/src/pages/index.astro","symbols":["class hero","class commands-grid","class notebook","class philosophy","section#notebook","section#flow","section#philosophy","section#install","faqs","faqJsonLd","Head title","class kicker","section#faq","softwareAppJsonLd"],"hash":"sha256:d30a2555c5e0","head":"aaddf6e72e41"}],"id":"site-astro-src-pages-index-astro-08d662bc","type":"file","op":"put","verified":["site-astro/src/pages/index.astro"],"character":"single","v":1,"ts":"2026-08-08T16:57:29.326Z","head":"aaddf6e72e41"} {"summary":"Homepage — v4 centred hero. Section order: hero -> notebook -> flow (index) -> philosophy -> FAQ -> install. The single `faqs` array is the source for BOTH the rendered
list and the FAQPage JSON-LD (the JSON-LD maps over it and strips backticks), so adding a question means editing that one array and nothing else — this is what keeps the two from drifting, the defect the FAQ block exists to fix (JSON-LD declaring Q&A that appeared nowhere in the body, which Google's structured-data policy disallows). Verified this session by parsing dist/index.html: every FAQPage question string is present in the rendered body. The notebook and flow sections each end with a centred .how-link into the matching /how-it-works/ page.","identityAliases":["faq json-ld source","how-it-works entry links"],"incidentAliases":["faq schema not visible","json-ld out of sync with html"],"anchors":[{"path":"site-astro/src/pages/index.astro","symbols":["class hero","class commands-grid","class notebook","class philosophy","section#notebook","section#flow","section#philosophy","section#install","faqs","faqJsonLd","Head title","class kicker","section#faq","softwareAppJsonLd","how-link"],"hash":"sha256:8d22655929c5","head":"578f3ec476b0"}],"id":"site-astro-src-pages-index-astro-08d662bc","type":"file","op":"put","verified":["site-astro/src/pages/index.astro"],"character":"single","v":1,"ts":"2026-08-09T10:05:32.788Z","head":"578f3ec476b0"} {"identityAliases":["homepage","index page","hero section","faq json-ld source","how-it-works entry links"],"incidentAliases":["faq schema not visible","json-ld out of sync with html"],"summary":"Homepage — v4 centred hero. Section order: hero -> notebook -> flow (index) -> philosophy -> FAQ -> install. The single `faqs` array is the source for BOTH the rendered
list and the FAQPage JSON-LD, so adding a question means editing that one array only. The nav-section CTA that used to link straight to /graph/ ('View the graph') now reads 'See it live' and points at the new /live/ hub page instead, so visitors choose between the demo/graph/notebook rather than always landing on the graph.","anchors":[{"path":"site-astro/src/pages/index.astro","symbols":["class hero","class commands-grid","class notebook","class philosophy","section#notebook","section#flow","section#philosophy","section#install","faqs","faqJsonLd","Head title","class kicker","section#faq","softwareAppJsonLd","how-link"],"hash":"sha256:46674c8a42cf","head":"b0e998cf87a1"}],"id":"site-astro-src-pages-index-astro-08d662bc","type":"file","op":"put","verified":["site-astro/src/pages/index.astro"],"character":"single","v":1,"ts":"2026-08-26T19:35:24.035Z","head":"b0e998cf87a1"} +{"summary":"Homepage. Section order: hero -> notebook -> flow (index) -> philosophy -> FAQ. The single `faqs` array is the source for BOTH the rendered
list and the FAQPage JSON-LD, so adding a question means editing that one array only. The layout is now TWO-COLUMN, not the v4 centred hero: four sections (hero, notebook, navigation, FAQ) each wrap their content in a .two grid with the argument in .col-a and the artifact in .col-b — hero pairs the copy with the install terminal, notebook pairs the intro plus .nb-steps with the note-card exhibit, navigation pairs the intro with the flow SVG, FAQ pairs the heading with the list. The philosophy section is deliberately left single-column: it has no artifact. Converting to two columns MOVED the .cta block and .meta-line above the terminal in source order; the copy itself is byte-identical to the pre-two-column version.","identityAliases":["two column homepage","col-a col-b sections","hero install terminal"],"incidentAliases":["homepage centred layout","sections not uniform"],"anchors":[{"path":"site-astro/src/pages/index.astro","symbols":["class hero","class commands-grid","class notebook","class philosophy","section#notebook","section#flow","section#philosophy","section#install","faqs","faqJsonLd","Head title","class kicker","section#faq","softwareAppJsonLd","how-link","class two","class col-a","class col-b"],"hash":"sha256:bbc5f364e028","head":"43401f352e9d"}],"id":"site-astro-src-pages-index-astro-08d662bc","type":"file","op":"put","verified":["site-astro/src/pages/index.astro"],"character":"single","v":1,"ts":"2026-09-04T08:42:59.532Z","head":"43401f352e9d"} +{"summary":"Homepage. Section order: hero -> notebook -> flow (index) -> philosophy -> FAQ. The single `faqs` array is the source for BOTH the rendered
list and the FAQPage JSON-LD, so adding a question means editing that one array only. Layout is the ORIGINAL centred, single-column, stacked one: the .two/.col-a/.col-b two-column conversion an earlier version of this note described was reverted wholesale in 0867280 after USER rejected it and measurement contradicted it. The copy was never touched by that experiment or its revert. The only change that survives here is that the three traffic-light dots were removed from the hero terminal's .term-bar, part of a sitewide removal of 39 such spans across five pages.","identityAliases":["homepage","faqs array","hero install terminal","faq json-ld source"],"incidentAliases":["two column homepage reverted","homepage layout rejected","traffic light dots removed"],"anchors":[{"path":"site-astro/src/pages/index.astro","symbols":["class hero","class commands-grid","class notebook","class philosophy","section#notebook","section#flow","section#philosophy","section#install","faqs","faqJsonLd","Head title","class kicker","section#faq","softwareAppJsonLd","how-link","class two","class col-a","class col-b","class term-bar"],"hash":"sha256:5b1f210cd987","head":"54deea7bca84"}],"id":"site-astro-src-pages-index-astro-08d662bc","type":"file","op":"put","verified":["site-astro/src/pages/index.astro"],"character":"single","v":1,"ts":"2026-09-04T09:19:10.061Z","head":"54deea7bca84"} diff --git a/.coldstart/notebook/.raw/site-astro-src-pages-specimen-plate-astro-652cc265.jsonl b/.coldstart/notebook/.raw/site-astro-src-pages-specimen-plate-astro-652cc265.jsonl new file mode 100644 index 0000000..e1ce956 --- /dev/null +++ b/.coldstart/notebook/.raw/site-astro-src-pages-specimen-plate-astro-652cc265.jsonl @@ -0,0 +1,2 @@ +{"summary":"A disposable design specimen, not a shipped page: noindex, linked from nowhere, and deliberately self-contained — it imports NONE of the real stylesheets so it can be approved or deleted without touching the live site. It renders DESIGN.md's 5/7 .split layout with a set of drawing devices (Fig. numbering, dimension lines with knockout labels, a title-block footer, radius 0, a drawn column rail replacing DESIGN.md §5's position:fixed seam). Two mechanics here are reusable and were both found by rendering rather than reading: Astro COLLAPSES template newlines, so a terminal transcript built as one text block under `white-space:pre` runs onto a single line — one
per line is required; and `font-variant-ligatures:none` is needed because JetBrains Mono ligates `--` into what reads as an en dash, which misrepresents CLI flags like --match.","identityAliases":["design specimen page","plate specimen","throwaway design sample","noindex specimen"],"incidentAliases":["terminal output on one line","white-space pre not working","astro strips newlines","double dash looks like en dash"],"anchors":[{"path":"site-astro/src/pages/specimen/plate.astro","symbols":[".two",".termbody",".dim",".block",".fig","findCmd"],"hash":"sha256:e8fc205fa705","head":"43401f352e9d"}],"id":"site-astro-src-pages-specimen-plate-astro-652cc265","type":"file","op":"put","verified":["site-astro/src/pages/specimen/plate.astro"],"character":"single","v":1,"ts":"2026-09-04T08:42:59.543Z","head":"43401f352e9d"} +{"target":{"kind":"note"},"reason":"The file site-astro/src/pages/specimen/plate.astro was deleted in 90368a1 along with site-astro/src/pages/specimen/index.astro. Both specimens were built on DESIGN.md 4's 5/7 split layout, which was retired in the same commit after measurement showed the reference class does not use an asymmetric two-column spine. Neither specimen was ever approved. The two reusable mechanics this note recorded are preserved in the note for site-astro/src/pages/demo/index.astro, which is where they are now load-bearing: Astro collapses template newlines, so a terminal transcript under white-space:pre needs one element per line; and font-variant-ligatures:none is needed because JetBrains Mono ligates -- into what reads as an en dash.","id":"site-astro-src-pages-specimen-plate-astro-652cc265","type":"file","op":"retract","v":1,"ts":"2026-09-04T09:19:10.019Z","head":"54deea7bca84"} diff --git a/.coldstart/notebook/.raw/site-astro-src-styles-backdrop-css-590ddcf8.jsonl b/.coldstart/notebook/.raw/site-astro-src-styles-backdrop-css-590ddcf8.jsonl new file mode 100644 index 0000000..d09af71 --- /dev/null +++ b/.coldstart/notebook/.raw/site-astro-src-styles-backdrop-css-590ddcf8.jsonl @@ -0,0 +1,2 @@ +{"summary":"The single definition of the site's page-wide background: one fixed body::before carrying a 90deg frost-to-ember ramp (frost at the left edge, ember at the right, transparent 42%-58%), rotating to 180deg below 900px. Every page shell imports it alongside landing.css or docs.css, so one edit here changes home, docs and blog together. It previously held a 30px repeating dot grid; that was replaced because a tiled background pattern is the most common generated-site tell on the web and it also competed for the same z-index -1 layer as the ramp.","identityAliases":["backdrop stylesheet","page background field","frost ember gradient","body before background","shared page visual"],"incidentAliases":["dot grid background","repeating pattern looks templated","background bands per section"],"anchors":[{"path":"site-astro/src/styles/backdrop.css","symbols":["body::before"],"hash":"sha256:477469b7a917","head":"43401f352e9d"}],"id":"site-astro-src-styles-backdrop-css-590ddcf8","type":"file","op":"put","verified":["site-astro/src/styles/backdrop.css"],"character":"single","v":1,"ts":"2026-09-04T08:42:59.509Z","head":"43401f352e9d"} +{"summary":"The site's single source for TWO page-wide things, and it is imported LAST by every page shell so its :root wins over landing.css/docs.css/how.css. (1) The background field: one fixed body::before carrying a 90deg frost-to-ember ramp, rotating to 180deg below 900px. It replaced a 30px dot grid, because a tiled background is the most common generated-site tell. (2) The TEXT RAMP - --text #eef2f8, --muted #c3c8d0, --faint #a3a9b2, plus --ink and --prose as aliases for the names docs.css and the essay pages use. The ramp moved here because it had been hand-copied into three stylesheets and had already drifted: body.essay-page carried a repaired --prose at 12.8:1 with a comment reading 'was #8b9ab2 at 6.9:1', so the blog was fixed and docs and the landing page were left behind. The old values were measured as FAILING: against the composited ground (the field changes what text sits on, costing ~24% of the contrast ratio) --muted fell to 5.28:1 and --faint to 4.30:1, which is below the 4.5 AA floor for normal text. Both also carried an R-B spread near 40, which DESIGN.md 11 identified as the real cause of the washed-out look - a blue-grey on a blue-black ground has too little hue separation from its own background. The new values are 13.4 / 9.0 / 6.4 on the worst ground with R-B spreads of 10 / 13 / 15.","identityAliases":["backdrop stylesheet","page background field","frost ember gradient","text ramp","shared token source","contrast tokens"],"incidentAliases":["grey text hard to read","low contrast body copy","washed out text","tokens drifted between stylesheets","dot grid background","page has no background field"],"anchors":[{"path":"site-astro/src/styles/backdrop.css","symbols":["body::before",":root","--text","--muted","--faint","--ink","--prose"],"hash":"sha256:35ff4c406dd2","head":"e52802156249"}],"id":"site-astro-src-styles-backdrop-css-590ddcf8","type":"file","op":"put","verified":["site-astro/src/styles/backdrop.css"],"character":"single","v":1,"ts":"2026-09-06T17:33:53.788Z","head":"e52802156249"} diff --git a/.coldstart/notebook/.raw/site-astro-src-styles-docs-css-e5e1acf9.jsonl b/.coldstart/notebook/.raw/site-astro-src-styles-docs-css-e5e1acf9.jsonl index bfdd140..e5bb31e 100644 --- a/.coldstart/notebook/.raw/site-astro-src-styles-docs-css-e5e1acf9.jsonl +++ b/.coldstart/notebook/.raw/site-astro-src-styles-docs-css-e5e1acf9.jsonl @@ -4,3 +4,5 @@ {"summary":"Docs+blog stylesheet, token-synced to landing.css this session: fonts switched to Newsreader/IBM Plex Sans/JetBrains Mono, nav/footer chrome hardcoded to max-width:1120px + padding:0 28px (previously used a --nav-wrap custom property that gave docs 1200px and blog 1080px via a body-class cascade-order bug — body.essay-page's rule came after body.docs-page's in the file, and blog pages carry both classes, so essay-page silently won). Brand wordmark, page h1/h2, and essay headings now use serif --display; command names/flag tables/badges stay mono on purpose (technical-reference identity, mirrors landing.css's .op card treatment). Blog index (.essay-list/.essay-card) was rebuilt from a single-column stacked list into a 3-col card grid now that there are 9 posts — the stacked-list choice was made when there were only 2-3 and a grid looked broken.","identityAliases":["docs stylesheet","blog stylesheet","nav-wrap bug","essay card grid"],"incidentAliases":["docs blog font mismatch","nav width inconsistent","brand wordmark different font"],"anchors":[{"path":"site-astro/src/styles/docs.css","symbols":[":root",".side",".term","@media (max-width: 768px)",".nav-burger",".nav-mobile","body.essay-page"],"hash":"sha256:d431fe304296","head":"78e40d494806"}],"id":"site-astro-src-styles-docs-css-e5e1acf9","type":"file","op":"put","verified":["site-astro/src/styles/docs.css"],"character":"single","v":1,"ts":"2026-08-08T07:54:46.948Z","head":"78e40d494806"} {"summary":"Docs+blog stylesheet, token-synced to landing.css: Newsreader/IBM Plex Sans/JetBrains Mono, nav/footer chrome hardcoded to max-width:1120px + padding:0 28px (previously a --nav-wrap custom property gave docs 1200px and blog 1080px via a body-class cascade-order bug — body.essay-page's rule came after body.docs-page's and blog pages carry both classes, so essay-page silently won). Blog index (.essay-list/.essay-card) is a 3-col card grid. Verified this session while adding a third page family: the dark palette is declared on a BARE :root with no body-class qualifier, so any page importing this file inherits it under any body class — body.essay-page is the only class that re-scopes to a light palette. That is why this file is also the de-facto chrome stylesheet: a new page family imports it for nav/footer styling and the dark tokens, then layers its own scoped stylesheet on top, without editing this file at all. Inline links in docs prose have no class — each is styled per-link with style=color:var(--frost).","identityAliases":["docs.css bare root","chrome stylesheet","dark token source"],"incidentAliases":["new page wrong theme","nav unstyled on new page"],"anchors":[{"path":"site-astro/src/styles/docs.css","symbols":[":root",".side",".term","@media (max-width: 768px)",".nav-burger",".nav-mobile","body.essay-page","footer",".foot-in"],"hash":"sha256:7d9b9aaaa745","head":"7bb5ae6d6b3b"}],"id":"site-astro-src-styles-docs-css-e5e1acf9","type":"file","op":"put","verified":["site-astro/src/styles/docs.css"],"character":"single","v":1,"ts":"2026-08-09T10:15:57.428Z","head":"7bb5ae6d6b3b"} {"summary":"Docs+blog stylesheet, token-synced to landing.css: Newsreader/IBM Plex Sans/JetBrains Mono, nav chrome now byte-identical to landing.css (64px height, 28px gap, z-index 50 — was drifted to 60px/20px/30, fixed this session). The docs-page sidebar lives here (.side, .side-group, .side a.active applies a background+left-border 'pill' to ANY active under .side) — DocsSidebar.astro's group-header links share that selector and must explicitly opt out or they double-box. .chip.hot (an arbitrary blue-highlight tier on the supported-languages chips) was removed this session; all .chip now render uniformly. .term-body .ln needed display:block alongside white-space:pre or sibling command lines visually merge onto one row.","identityAliases":["docs styles","blog styles","chrome stylesheet","dark token source"],"incidentAliases":["header resizes between pages","sidebar group header double boxed","language chips arbitrarily highlighted","terminal lines merged onto one row"],"anchors":[{"path":"site-astro/src/styles/docs.css","symbols":[":root",".side",".term","@media (max-width: 768px)",".nav-burger",".nav-mobile","body.essay-page","footer",".foot-in","nav",".nav-in",".side a.active",".chip",".term-body .ln"],"hash":"sha256:cabd593fda98","head":"fdcb648611d7"}],"id":"site-astro-src-styles-docs-css-e5e1acf9","type":"file","op":"put","verified":["site-astro/src/styles/docs.css"],"character":"single","v":1,"ts":"2026-08-10T18:51:51.939Z","head":"fdcb648611d7"} +{"summary":"Stylesheet for the docs pages, the blog index and blog posts (body.essay-page), and the base that how.css rides on. It no longer defines --ink/--prose/--muted/--faint: those come from backdrop.css, which every page shell imports after this one. It still owns --bg/--surface/--frost/--ember/--line and, independently of landing.css, the same nav and footer layout rules - that duplication is deliberate but unguarded, so a nav change here needs the matching edit in landing.css by hand. The .docs container is 1120px with 28px padding, which MATTERS: it was 1200/24, which put the docs content edge at 144px against the nav's 188px, so the logo read as indented against the sidebar. 1120/28 is what .nav-in and landing.css's .wrap use, and any new container should match it rather than invent its own width.","identityAliases":["docs stylesheet","essay page styles","docs container width","blog post styles"],"incidentAliases":["navbar not as wide as body","docs page asymmetric","sidebar misaligned with logo","content edge mismatch"],"anchors":[{"path":"site-astro/src/styles/docs.css","symbols":[":root",".side",".term","@media (max-width: 768px)",".nav-burger",".nav-mobile","body.essay-page","footer",".foot-in","nav",".nav-in",".side a.active",".chip",".term-body .ln",".docs",".term-bar"],"hash":"sha256:5c6dfd9b8f8f","head":"e52802156249"}],"id":"site-astro-src-styles-docs-css-e5e1acf9","type":"file","op":"put","verified":["site-astro/src/styles/docs.css"],"character":"single","v":1,"ts":"2026-09-06T17:33:53.814Z","head":"e52802156249"} +{"summary":"Stylesheet for the docs pages, the blog index and blog posts (body.essay-page), and the base that how.css rides on. It no longer defines --ink/--prose/--muted/--faint: those come from backdrop.css, which every page shell imports after this one. It still owns --bg/--surface/--frost/--ember/--line and, independently of landing.css, the same nav and footer layout rules - that duplication is deliberate but unguarded, so a nav change here needs the matching edit in landing.css by hand. The .docs container is 1120px with 28px padding, which MATTERS: it was 1200/24, which put the docs content edge at 144px against the nav's 188px, so the logo read as indented against the sidebar. 1120/28 is what .nav-in and landing.css's .wrap use. TYPOGRAPHIC TRAP: 'p code, li code, .prose code' gives every inline code span a bordered ember chip (background + border + radius + padding). That reads well at two or three per paragraph and turns a paragraph into a speckled field at ten - the install prose had 13 and looked cluttered for that reason alone. When docs copy needs many literals, move them into a .flags table or a .term block instead of leaving them inline; more chips is never the fix. '.doc-sec h3' is deliberately sans (var(--sans), 600, 15px) rather than the Newsreader display face the h2s use, so a subsection head ranks below its h2 by weight and family instead of competing with it.","identityAliases":["docs stylesheet","docs.css","inline code chip style","doc-sec h3","flags table styling","ember code chips"],"incidentAliases":["cluttered docs section","too many code chips","subsection heading unstyled"],"anchors":[{"path":"site-astro/src/styles/docs.css","symbols":[":root",".side",".term","@media (max-width: 768px)",".nav-burger",".nav-mobile","body.essay-page","footer",".foot-in","nav",".nav-in",".side a.active",".chip",".term-body .ln",".docs",".term-bar","doc-sec","flags","flag-row","callout","term-body","lead-p"],"hash":"sha256:d5f16297671d","head":"e6e8bea1e30c"}],"id":"site-astro-src-styles-docs-css-e5e1acf9","type":"file","op":"put","verified":["site-astro/src/styles/docs.css"],"character":"single","v":1,"ts":"2026-09-06T18:27:40.303Z","head":"e6e8bea1e30c"} diff --git a/.coldstart/notebook/.raw/site-astro-src-styles-footer-css-e509e4fe.jsonl b/.coldstart/notebook/.raw/site-astro-src-styles-footer-css-e509e4fe.jsonl new file mode 100644 index 0000000..16f8fc0 --- /dev/null +++ b/.coldstart/notebook/.raw/site-astro-src-styles-footer-css-e509e4fe.jsonl @@ -0,0 +1,2 @@ +{"summary":"The site's ONLY footer rule set, replacing copies that had been duplicated in landing.css and docs.css. It is not imported by any page: backdrop.css carries `@import \"./footer.css\"` at its top, and every page shell already imports backdrop.css, so this reaches a page for free - deliberately, because a per-page import is one more thing a new page can silently forget. It defines no tokens, so being hoisted above backdrop.css's :root by Vite is harmless. Layout is a 5-column grid (identity block + four link columns) over a .foot-base rule with the tagline and a frost/ember key; it collapses to 2 columns under 1000px and 1 under 520px. The columns are DIVS on purpose - as