Skip to content

The Enrichment contract narrows to what it actually answers (ADR 0019) - #177

Merged
wschenk merged 1 commit into
mainfrom
claude/walking-thoughts-org-g0qlvt
Aug 10, 2026
Merged

The Enrichment contract narrows to what it actually answers (ADR 0019)#177
wschenk merged 1 commit into
mainfrom
claude/walking-thoughts-org-g0qlvt

Conversation

@wschenk

@wschenk wschenk commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

"It feels like it's too complicated."

Measured across the whole corpus with scripts/what-it-knows.mjs: every report is asked for eleven fields, and four of them come back empty or useless.

Field Over 171 reports
topics 438 distinct slugs, 405 naming exactly one Thread (92%)
mentions emitted by 14 reports; 37 of 38 nouns occur once
suggestedQuestions 165 of 171 returned zero
draftWorthy never once true

Against the four that work: every report titles itself, 82% classify, proposals accrue Threads, and 136 of 171 did real research.

All four are cut — from the prompt, the parser, the gateway contract, both repositories' writes, and the surfaces that displayed them. TITLE / KIND / ASK / PROJECT / PROPOSE stay.

The point is not that the ideas were bad. A walker carries the whole vocabulary in their head whether or not the machine fills it in, and four empty columns read as a system that is organizing when it is not.

What goes with them

  • The Mentions rail group (7 facet groups → 6)
  • The Topics Lens — which was a Project stack with a mention fallback, so it keeps the half that works and is renamed project for what it actually does
  • The draft-candidate queue and its notebook flag
  • The suggested-question chips on the Thread page
  • ~1,100 lines net, and their CSS

Retrieval

retrievePriorThreads keeps its embedding half and loses the exact-noun half. The same measurement says that path cannot have been firing: 14 reports carrying any mention against 150 of 155 Threads carrying an embedding. The vector path was doing all the work. Signature, best-effort posture, and cold-start behaviour are unchanged.

Columns are left in place holding their history rather than dropped — a reversal should find them where it left them.

Three unrelated reds, found and fixed on the way

All three were already failing on main:

  • The Day flow took the page 109px sideways. A Thread titled after a 95-character filename set the min-content of a minmax(13rem, 1fr) grid track, and the lanes pushed past the viewport. min-width: 0 on the lane, overflow-wrap: anywhere on its items.
  • A test that failed by the calendar. The trash-restore case pinned no clock, so its July 2026 dates passed the 30-day retention deadline on July 31 and it had been red every day since.
  • The sql-tables guard read information_schema.columns as a missing user table — tripped by the transcript backfill in The transcript backfill runs its own migration #174. It now recognizes a schema-qualified catalog read.

And lib/sync/hydrate.ts is a text file again. The two NUL bytes that made git classify it as binary — and merge it wholesale with no conflict markers, a silent data-loss hazard flagged two PRs ago — lived inside the topics comparison this removes.

Tests

pixel-9 362 passed · desktop 26 passed · typecheck clean · lint at its pre-existing baseline (7 errors, all on main).

Two spec files deleted (enrichment-mentions, desk-mentions-desktop) and the mention-link cases in desk-similarity / desk-priors-desktop / enrichment-retrieval rewritten for the embedding path.

One pre-existing flake left alone and reported rather than papered over: thread-dialogue.spec.ts:11 fails about 1 run in 3, at the same rate on main.


Generated by Claude Code

Measured across the whole corpus of 171 reports, four of the eleven fields
every report is asked for came back empty or useless. Topics: 438 distinct
slugs, 405 of them naming exactly one Thread. Mentions: emitted by 14
reports out of 171, 37 of 38 nouns occurring once. Suggested questions:
absent from 165 of 171. Draft-worthy: never once true.

All four are cut — from the prompt, the parser, the gateway contract, both
repositories' writes, and the surfaces that showed them. Title, Kind,
Project/Propose, sources and research stay: those work.

The walker carries a vocabulary whether or not the machine fills it in, so
four empty columns read as a system that is organizing when it is not.
Going with them: the Mentions rail group, the Topics Lens (which was a
Project stack with a mention fallback, and is now named for what it does),
the draft-candidate queue, and the suggested-question chips.

Retrieval keeps its embedding half and loses the exact-noun half — the same
measurement shows it cannot have been firing, 14 reports carrying a mention
against 150 of 155 Threads carrying an embedding. Columns are left in place
holding their history rather than dropped.

Three unrelated reds found and fixed on the way:

- The Day flow's lanes took the page 109px sideways when a Thread was
  titled after a long filename — a grid track sized to an unbreakable word.
- The trash restore test had no pinned clock, so its July dates passed the
  30-day deadline on July 31 2026 and it had been failing by the calendar.
- The sql-tables guard read `information_schema.columns` as a missing user
  table; it now knows a catalog schema when it sees one.

And lib/sync/hydrate.ts is a text file again: the two NUL bytes that made
git treat it as binary — and merge it with no conflict markers — lived in
the topics comparison that this removes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mm4zPLAX77USAqyk12jgc1
@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
walking-thoughts Ready Ready Preview Aug 9, 2026 4:13pm

Request Review

@wschenk
wschenk merged commit 8452252 into main Aug 10, 2026
3 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