Squashed 'shared/' changes from 7aa53fc..a2b57d2
a2b57d2 docs(plan): V1 — «de 5 linjene» var ikke homogene; :214 er ikke en literal d63e45d docs(plan): okf-versjonssjekken utført — hypotesen falsifisert på to stale premisser ef31dda docs(plan): V1 §4.2 — pin + id + sitering avgjort, og ratifiseringsgaten funnet 35220f7 docs(plan): V1 §4.1 — serialiseringsformen er bundet av :158, så 6 sider er invariant 8a7d430 docs(plan): operatøren avgjorde V1 (O2) og B1 (O1) — B1 utført, V1 gated f306c7b docs(plan): V1 §5.1 — konsument-kostnaden målt @ 8a14137, O3-raden priset ab0ea8f docs(plan): innboksrunden — V1 utvidet med tre målte funn, §7.2-siteringen ref-bundet 84a3010 docs(plan): §7.2 — MCP-spørsmålet er avgjort av frossen tekst, S2.2 og S2.4 er ugated e984d51 docs(plan): D-B ankret, D-A#3s årsak er repo-avhengig, V1 utvidet med oppstrøms-evidens 3de702b docs(plan): V1 §6 — rekkevidde-forbeholdet korrigert, og funnet under funnet 249425b docs(plan): amendment-underlag — D-A#3s ÅRSAK rettet, drift ikke avvik 4876970 docs(plan): V1-underlag — generated-feltets form etter OKF v0.2 3f18ca7 docs(plan): B1/D4 operator question — nav-golden's normative status, four costed options 29ad8ca docs(plan): amendment-underlag — frossen tekst per køpunkt, med målt fasit-effekt a67a243 docs(plan): ordering-axes ruling — three distinct axes, as an interpretation record 381d9e5 docs(plan): guard adoption plan pins no version — v0.2 header was stale 54ca0ff docs(plan): D3 ratified — status vocabulary landed in coord register fe6b998 docs(plan): D3 status vocabulary — canonical 7-token set for roll-up register c66ccc3 docs(plan): D2 register-form fix — two-output model resolves ÅS#5 b641741 docs(examples): nav-golden fixture class — bundle → read-context goldens 9801d35 docs(spec): method-spec §3 Step 1 — Q3 navigation contract (hierarchy) bfa5a9b docs(spec): ingest-spec — land ratified D1 stamp model 5f046ab docs(plan): Q3 finding — method-spec §3 silently forbids hierarchical bundles a013e8b docs(plan): F1 direction — free-text sources belong in ingest-spec door A 84191c6 docs(plan): record commons↔implementation-repo coordination boundary cae9972 docs(plan): llm-ingestion-guard adoption — planned at future untrusted ingest boundaries git-subtree-dir: shared git-subtree-split: a2b57d20fc0953c19776c21ce1311f234386a590
This commit is contained in:
parent
ef1a2c57e0
commit
8a86f2ab6d
29 changed files with 2712 additions and 21 deletions
|
|
@ -65,20 +65,42 @@ progressive disclosure — never by stuffing the whole bundle (or keyword-retrie
|
|||
it) into the prompt:
|
||||
|
||||
- Navigation starts at `index.md` and follows its intra-bundle markdown cross-links
|
||||
(`](target.md)`). Targets containing a path separator are out-of-bundle and MUST be
|
||||
skipped. Repeated links are de-duplicated; order is deterministic (index first, then links
|
||||
in first-seen order). *(reference: the link pattern is `\]\(([^)]+\.md)\)`)*
|
||||
- A missing `index.md` is an error (a bundle has no entry point without it). A broken or
|
||||
bundle-escaping cross-link MUST be tolerated — skipped, never raised (OKF robustness rule);
|
||||
path resolution MUST be boundary-checked against the bundle directory, fail-closed.
|
||||
(`](target.md)`). A target is resolved **relative to the bundle** and boundary-checked
|
||||
fail-closed (below): a leading `/` denotes the **bundle root** (NEVER a filesystem-absolute
|
||||
path), any other form is relative to the linking file's own directory — so a target MAY
|
||||
address a nested directory (`sub/index.md`, `/a/b.md`). It is **escape, not depth**, that is
|
||||
forbidden: a target resolving outside the bundle is skipped; a legitimate nested target is
|
||||
followed. (This resolve-and-boundary-check REPLACES the old "a path separator means
|
||||
out-of-bundle" heuristic, which conflated depth with escape and forbade valid hierarchy.)
|
||||
Each index entry descends **one path segment per level** — a per-level index links its
|
||||
immediate children, never a multi-segment path. Traversal is **depth-first in first-seen
|
||||
link order** and fully deterministic (the root index first, then each link followed in the
|
||||
order it appears, recursively). Repeated links are de-duplicated **on the resolved path**, so
|
||||
`./a.md` and `a.md` are one entry and cycles terminate. *(reference: the link pattern is
|
||||
`\]\(([^)]+\.md)\)`)*
|
||||
- A missing `index.md` **at the bundle root** is an error (a bundle has no entry point without
|
||||
it) — this binds the **root alone**: an intermediate directory reached by a link is
|
||||
navigated only through the links its own files carry, never by directory enumeration, so a
|
||||
nested directory without its own `index.md` is not an error (its unlinked content is simply
|
||||
unreachable). A broken, malformed, or bundle-escaping cross-link MUST be tolerated — skipped,
|
||||
never raised (OKF robustness rule): a target that fails to resolve for ANY reason (missing
|
||||
file, invalid path component, escape) is skipped, not raised. Path resolution MUST be
|
||||
boundary-checked against the bundle directory, fail-closed — this is the SOLE
|
||||
in-/out-of-bundle test.
|
||||
- Frontmatter is the leading `---`-delimited block, parsed line-oriented as `key: value`
|
||||
strings; the single required field is `type`; unknown fields MUST be preserved.
|
||||
- The rendered read-context is the index body (the summary) followed by each non-index
|
||||
concept file as a `## {type}: {title}` section; empty sections are dropped.
|
||||
- **`type: verdict` files MUST be excluded from the read-context.** Prior verdicts reach the
|
||||
hypothesis prompt ONLY via the gated experience fold below — never via context rendering,
|
||||
and never via a query-time retrieval tool pointed at the bundle (which would re-leak the
|
||||
verdict layer).
|
||||
concept file as a `## {type}: {title}` section; empty sections are dropped. Rendering is
|
||||
**flat regardless of nesting depth** — directory structure is navigation, not presentation,
|
||||
so a nested concept file renders as the same `## {type}: {title}` section a root file would;
|
||||
there is no level heading.
|
||||
- **`type: verdict` files MUST be excluded from the read-context.** The exclusion is a **type
|
||||
check on each file as it is reached** — applied recursively at every level, NEVER a property
|
||||
of the link graph: a file is excluded because it is `type: verdict`, not because of where it
|
||||
sits or how it was linked, so a mislabelled or injected navigation edge can never smuggle a
|
||||
verdict into the context. Prior verdicts reach the hypothesis prompt ONLY via the gated
|
||||
experience fold below — never via context rendering, and never via a query-time retrieval
|
||||
tool pointed at the bundle (which would re-leak the verdict layer).
|
||||
|
||||
**Experience fold (ExpeL-style, the learning seam):** before generation, the candidate's
|
||||
prior verdicts are retrieved from the store and folded into the hypothesis prompt:
|
||||
|
|
@ -399,7 +421,8 @@ cross-reference):
|
|||
| Seam | The test MUST fail when… | Reference test |
|
||||
|---|---|---|
|
||||
| Step-1 fold | a prior verdict no longer reaches the next hypothesis prompt; control: an empty store changes the outcome signal | `test_step1_expel_loadbearing.py` |
|
||||
| Verdict-layer exclusion | the realization signal appears in the rendered read-context | `test_okf.py` (bundle-context exclusion) |
|
||||
| Verdict-layer exclusion | the realization signal appears in the rendered read-context, at the root OR any nested level | `test_okf.py` (bundle-context exclusion) |
|
||||
| Navigation boundary | an escaping cross-link (`..`, a filesystem-absolute path, or a bundle-root `/` read as filesystem-absolute) is followed, a malformed target (e.g. an invalid path component) is raised instead of skipped, or a legitimate nested in-bundle link is skipped | `test_okf.py` (navigation boundary) |
|
||||
| Checker gate | the checker's surfaced output is detached OR its REJECT no longer overrides a validated outcome | `test_checker_gate_loadbearing.py` |
|
||||
| Informed refinement | the prior rejection reason no longer appears verbatim in the next prompt / the outcome never flips | `test_step5_refine_loadbearing.py` |
|
||||
| Async file loop | a verdict dropped after Run A fails to reach Run B's prompt via a FRESH store; control: an empty inbox | `test_step7_async_loop_loadbearing.py` |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue