Skip to content

Record-line codes carry their titles, and lists get lines - #200

Merged
dmarx merged 1 commit into
mainfrom
claude/record-line-titles-and-bullets-e6evzh
Sep 7, 2026
Merged

Record-line codes carry their titles, and lists get lines#200
dmarx merged 1 commit into
mainfrom
claude/record-line-titles-and-bullets-e6evzh

Conversation

@dmarx

@dmarx dmarx commented Sep 7, 2026

Copy link
Copy Markdown
Owner

SOTA-136, staged and then rendered through real Quartz:

Status Proposed
Filed 2026-09-05
Consensus contested
Source LIT-140 — mHC: Manifold-Constrained Hyper-Connections
Extends SOTA-137 — Widen the residual stream into several streams with freely learned mixing (hyper-connections)
Compared against SOTA-133 — Replace fixed residual accumulation with learned attention over preceding layers
Contested by
  • LIT-151 — oHC: Orthogonal Hyper-Connections on SO(4) via Quaternions
  • LIT-181 — Beyond the Birkhoff Polytope: Spectral-Sphere-Constrained Hyper-Connections
Supersedes SOTA-137 — Widen the residual stream into several streams with freely learned mixing (hyper-connections)

A code alone asks the reader to already know the record — LIT-141 says nothing about what it is, and being followed by someone who doesn't yet know where it goes is the whole point of a backlink. That makes the items long enough that the center dot stops working, so several values become a real bulleted list, one per line. A single value stays plain: a one-item bullet is a bullet about nothing.

Bullets in a table cell need HTML, so I checked rather than guessed

A markdown table cell can't hold a block-level list, so this is <ul><li> — which only works if the renderer passes raw HTML through, and guessing would ship a page full of visible angle brackets.

Cloned Quartz v4.5.2 (what actions/site pins) and built a probe. Raw HTML passes through, and the part that actually mattered is that markdown inside the <li> is still parsed:

<td><ul><li><a href="../literature.d/LIT-151" class="internal alias"
    data-slug="record/literature.d/LIT-151">LIT-151</a> — oHC…</li></ul></td>

Then the whole anthology through the same build — 410 files, 1217 pages emitted, bullets are a real <ul>, links inside them come out class="internal alias", and zero pages contain an unexpanded [[. That last check is what a fixture can't give you.

The title that reads as syntax

Splicing titles in broke luria site on this repository:

record/decisions.d/ADR-005.md → unresolved in frontmatter: [[CODE]]
record/decisions.d/ADR-024.md → unresolved in frontmatter: [[CODE]]

ADR-025 is titled Wikilinks: `[[CODE]]` is a typed reference, and typing it changes the rules. Both those decisions carry influenced_by: ADR-025, so both record lines now contained a literal [[CODE]], and the expander went looking for a document called CODE.

A title is data being spliced into two surfaces that read syntax — a table cell where | ends the cell, and a string about to be wikilink-expanded where [[ opens a reference. Both are escaped now; markdown renders \[ as [, so it costs the reader nothing.

Worth noting: the backticks around it in the title are not protection — the expander doesn't mask code spans, consistent with ref_status.scan being deliberately unmasked.

What caught it was test_links_out_of_the_site_go_to_the_repository, which asserts report.unplaced == [] over the whole real record. A fixture with tidy titles passes either way. There's now also a test naming ADR-025 specifically, so the escaping can't be quietly removed by someone who doesn't know why it's there.

Shape

Rows changed from (label, str) to (label, list[str]) — that's what lets one renderer choose between a plain cell and a list without parsing its own output back. Titles are read once per stage() through ref_status.load_docs(), the reader that already answers "what documents are there and what are they called", rather than a second one that could disagree.

Checks

python -m pytest tests -q926 passed. luria link --fix, luria index, luria lint → clean. Plus the real Quartz build above.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YP4P3m8rzVFb8idnTE4FfT


Generated by Claude Code

A code alone asks the reader to already know the record. `LIT-141` says
nothing about what it is, and being followed by someone who does not yet know
where it goes is the whole point of a backlink — so every document code in the
record line now carries the document's title.

That makes the items long enough that the center dot stops working, so a field
with several values gets a real bulleted list, one per line. A markdown table
cell cannot hold a block-level list, so this is `<ul><li>`; checked against
Quartz v4.5.2 rather than assumed, including the part that matters — markdown
inside the items is still parsed and CrawlLinks still resolves it. A single
value stays plain: a one-item bullet is a bullet about nothing.

Titles are escaped where they are spliced, because a title is data landing in
two surfaces that read syntax. This is not hypothetical: ADR-025 is titled
"Wikilinks: `[[CODE]]` is a typed reference", two decisions carry
`influenced_by: ADR-025`, and unescaped both their pages asked the resolver
for a document called CODE. `|` is escaped for the same reason one level up.

Found by the assertion that stages the whole real record and demands no
unplaced wikilinks; a fixture with tidy titles passes either way. A test now
names ADR-025 so the escaping cannot be quietly removed.

Rows carry a list of values rather than a joined string, which is what lets
one renderer choose between a plain cell and a list without parsing its own
output back. Titles are read once per stage through ref_status.load_docs(),
the reader that already answers what the documents are called.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YP4P3m8rzVFb8idnTE4FfT
@dmarx
dmarx merged commit ad876c2 into main Sep 7, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants