Skip to content

The serve surface states the map; stale frontmatter stops surfacing - #128

Merged
leeovery merged 2 commits into
instance-map-placementfrom
instance-map-serve
Sep 1, 2026
Merged

The serve surface states the map; stale frontmatter stops surfacing#128
leeovery merged 2 commits into
instance-map-placementfrom
instance-map-serve

Conversation

@leeovery

@leeovery leeovery commented Sep 1, 2026

Copy link
Copy Markdown
Owner

PR3 of the instance-map stack (design: #125, on #127). Three new tools — topics, entities, graph — each a verbatim read of state/map.json (counts and typed edges on the wire, member ids stay in the artifact, nothing recomputed at call time), with refusals that name the recompile. Exposure hygiene lands with them: fetch returns the digest body with signal lifted to a field, search scans digest bodies only, page returns the body — stale-by-design classification frontmatter and generated: bookkeeping no longer reach callers. Steering opens "what does this instance hold" with the maps.

31 new tests, six pins deliberately moved to the new contract; mutation audit on the changed serve modules (14 holes closed by stronger pins; server tool wiring hand-audited past the decorator trap).

🤖 Generated with Claude Code

Three new tools — topics(instance), entities(instance), graph(instance) —
each a verbatim read of the compiled state/map.json: descriptions, counts,
has-page and newest dates on the wire, member id lists left in the
artifact, typed edges served in the map's own order with nothing
recomputed at call time. A missing map refuses by naming `bin/dex map`
(or the next sync); one that will not parse or reshape refuses with the
recompile wording. The connect-time instructions open "what does this
instance hold?" with the maps, and each read travels with its own
next-move footer.

Exposure hygiene, one rule: judgment content and provenance surface;
pipeline bookkeeping and stale-by-design frontmatter never do. fetch
returns the digest's fact body with `signal` lifted to its own Item
field; search scans digest bodies only, so a candidate topic name living
only in digest frontmatter can neither hit nor snippet (corpus files
keep their whole-file scan — frontmatter URLs are provenance, and finding
an item by its source is a real search); page returns the body, its
`generated:` frontmatter stripped, with title and wikilinks unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Real-scale testing put the whole compiled graph on the wire — five
figures of edges, 1.3MB — straight into a chat model's context. The
tool now defaults to the topic↔topic core under a 2000-edge cap
(every curated wikilink edge kept, the heaviest shared-items ones
filling the room left, ties cut on the map's own deterministic
order), and states the trim honestly: `total` counts the whole map,
and the next-move line names the three parameters that open it up.
`around=<name>` serves one name's entire neighborhood — all types,
all endpoint kinds, uncapped — refusing an unknown name toward
`topics`/`entities`; `min_weight=N` drops shared-items edges below N
and composes with everything; `full=true` is the whole graph,
uncapped and unrestricted, and contradicts `around` out loud. The
map file itself keeps every edge: trimming is read-time only, and
`state/map.json` joins the per-instance resources so a
resource-capable client pulls the full artifact without it
transiting a model's context.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@leeovery
leeovery merged commit 5334621 into main Sep 1, 2026
@leeovery
leeovery deleted the instance-map-serve branch September 1, 2026 14:26
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.

1 participant