Grep across the graph, and name the page states for what they are

↗ view on GitHub · Eli Ziff · 2026-07-31 · 0fcc4aeb

SCOPE COMPOSITION. library_find gains `section`, `follow` and `depth`: search
one provision and, optionally, the provisions it references, the provisions
that reference it, or both, out to three hops. Only RESOLVED edges expand the
scope -- an external or unresolved reference names no span in this document,
so following it could only widen the search to nothing.

Page scope and structural scope compose by INTERSECTION. Two filters both
supplied read as "in these pages AND in this part of the document", the only
reading under which asking for more narrowing cannot widen the result. The
graph is compiled only when it will actually be walked, so a plain section
scope still costs a skeleton and nothing more.

PAGE STATES. Eli: "for where we can't detect a page number, that's not
'unavailable', it's 'pdf page numbers only'." Printed labels are DETECTED --
from header and footer furniture, left unresolved when they conflict -- so
their absence is a detection outcome, never a missing document feature. The
states are now `artifact`, `markers`, `unpaginated` (no fixed pages at all)
and `unindexed` (paged, index not built), and `pageSchemes` reports which of
the two addressing schemes actually work so a refusal can say "PDF page
numbers only" instead of implying the document has no pages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H9ToHYJVDxfeJcJwdzrP2H
Repository eliziff/Beaver
Author Eli Ziff <eliasziff@gmail.com>
Authored
Parents b9143a48
Stats 4 files changed , +219 , -28
Part of Legal agent-surface and context-compaction experiments

Capture this commit into my fork

Download a Markdown prompt that tells Claude how to port this exact commit into your working tree. Run it via claude -p < capture-commit-0fcc4aeb.md from inside the repo you want the change in.

⬇ Download capture-commit-0fcc4aeb.md