docs(examples): nav-golden fixture class — bundle → read-context goldens

New fixture class for the D4 step-0 split (commons-owned; delivered into
catalog's corpus/runner). A nav-golden case is bundle in / expected-read-
context out — the shape that expresses "two conformant implementations MUST
produce an identical read-context" (method-spec §3 Step 1).

- nav-golden-hierarchy/ (positive): depth-first first-seen order, both link
  forms (/ = bundle root vs relative), one segment per level, resolved-path
  dedup, cycle termination, recursive verdict exclusion, missing-index binds
  root alone, flat render.
- nav-golden-escape/ (negative, gate must go red): .. escapes and a
  /etc/passwd root-relative trap; conformant returns only valid.md.

Both expected-read-context.md verified byte-for-byte against a conformant
navigator implementing §3 Step 1; the negative case verified to diverge
under a naive navigator.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VUCuNNvnCkayuUDy2WFgeU
This commit is contained in:
Kjell Tore Guttormsen 2026-07-21 10:22:50 +02:00
commit b6417414c8
15 changed files with 171 additions and 0 deletions

View file

@ -0,0 +1,34 @@
# nav-golden-hierarchy — hierarchical navigation golden
Fixture class **nav-golden** (commons-owned, per the D4 step-0 split): `bundle/` in,
`expected-read-context.md` out. Unlike the ingest-golden class (ingest-spec §11,
extraction-shaped: `manifest.json``expected-bundle/`), a nav-golden case is
**bundle → read-context** — the only shape that can express the load-bearing property
"two conformant implementations MUST produce an identical read-context from the same
bundle" (method-spec §3 Step 1).
This **positive** case exercises every decision the Q3 navigation contract pins:
| Decision (method-spec §3 Step 1) | How this bundle exercises it |
|---|---|
| Hierarchy allowed; escape, not depth, forbidden | `a/`, `a/b/` are navigated; nothing escapes |
| Link syntax: leading `/` = bundle root, else relative | `index.md`: relative `overview.md` + root-relative `/a/index.md`; `a/index.md`: relative `b/index.md` + root-relative `/overview.md` |
| Depth-first, first-seen order | render order is `overview``doc-a``doc-b` |
| Dedup on resolved path | `/overview.md` (from `a/`) resolves to the already-seen `overview.md` → one entry |
| Cycle termination | `a/b/index.md` links back to `/a/index.md` (already seen) → stops |
| One segment per level | each index links only its immediate children |
| Missing `index.md` binds the root alone | `c/` has no `index.md` and nothing links `c/orphan.md`; it is simply unreachable, not an error |
| Verdict exclusion = type check per reached file, recursive | `a/verdict-nested.md` is reached but excluded |
| Flat render regardless of depth | nested concepts render as the same `## {type}: {title}` sections; no level heading; nested index bodies are navigation, not content, and are not rendered |
**Traversal trace:** `index.md` (its body is the leading summary) → `overview.md`
`/a/index.md``a/doc-a.md``a/verdict-nested.md` (reached, excluded) → `a/b/index.md`
`a/b/doc-b.md``/a/index.md` (seen, deduped) → `/overview.md` (seen, deduped).
Unreachable: `c/orphan.md`.
**Serialization** the gate compares against: the root index body verbatim, then each
**non-index** concept as `## {type}: {title}` + blank line + the file body, sections
separated by one blank line, file ending in exactly one trailing newline. The spec does
not pin whitespace beyond this shape; a gate MAY compare byte-exact or after
trailing-whitespace normalization. **Only the root index body is the summary** — nested
index bodies (`a/index.md`, `a/b/index.md`) are navigation and do not appear.

View file

@ -0,0 +1,6 @@
---
type: reference
title: "Doc B"
---
Level-2 concept reached depth-first, deepest in the traversal.

View file

@ -0,0 +1,8 @@
---
type: index
okf_version: 0.1
title: "Subsection B index"
---
- [Doc B](doc-b.md)
- [Back to A](/a/index.md)

View file

@ -0,0 +1,6 @@
---
type: methodology
title: "Doc A"
---
Level-1 concept reached depth-first after Overview.

View file

@ -0,0 +1,10 @@
---
type: index
okf_version: 0.1
title: "Section A index"
---
- [Doc A](doc-a.md)
- [Nested verdict](verdict-nested.md)
- [Subsection B](b/index.md)
- [Overview again](/overview.md)

View file

@ -0,0 +1,8 @@
---
type: verdict
title: "Nested verdict — must be excluded"
decision: approved
description: "A verdict file at a nested level. A conformant navigator reaches it (dedup marks it seen) but MUST exclude it from the read-context — recursively, not only at the root. This is the leakage surface a graph-based exclusion would miss."
---
This body MUST NOT appear in the read-context.

View file

@ -0,0 +1,6 @@
---
type: project
title: "Orphan — unreachable"
---
Directory `c/` has no `index.md`, and nothing links to this file. A link-following navigator never reaches it; a directory-walking one wrongly would. It MUST be absent from the read-context, and its parent directory's missing `index.md` MUST NOT be an error (that rule binds the bundle root alone).

View file

@ -0,0 +1,10 @@
---
type: index
okf_version: 0.1
title: "Nav-golden — hierarchical navigation case"
---
Nav-golden hierarchical case. This bundle exercises depth-first traversal, both link forms (root-relative and relative), recursive verdict exclusion, resolved-path de-duplication, cycle termination, and the root-only binding of the missing-index rule.
- [Overview](overview.md)
- [Section A](/a/index.md)

View file

@ -0,0 +1,6 @@
---
type: project
title: "Overview"
---
Root-level concept reached by a relative link.

View file

@ -0,0 +1,16 @@
Nav-golden hierarchical case. This bundle exercises depth-first traversal, both link forms (root-relative and relative), recursive verdict exclusion, resolved-path de-duplication, cycle termination, and the root-only binding of the missing-index rule.
- [Overview](overview.md)
- [Section A](/a/index.md)
## project: Overview
Root-level concept reached by a relative link.
## methodology: Doc A
Level-1 concept reached depth-first after Overview.
## reference: Doc B
Level-2 concept reached depth-first, deepest in the traversal.