docs(okf-v0.2): the pilot tag needs far less than the deliverable list implied
Walking each pilot test back to what it actually exercises produces a result the deliverable ordering had obscured: none of the three needs D1's structured reader. Test A emits v0.2 -- `generated` is an inline flow mapping, a formatted string, and `sources` needs the emitter to accept a block-list value. Neither requires reading one back. Test B runs catalog's gate on Test A's output. Test C validates the wiki's v0.1-shaped documents against a v0.2 variant profile; their documents carry no v0.2 families, so block-list reading is never reached. The structured reader exists to consume third-party v0.2 bundles -- D3, Door C -- and no pilot repo sends us one. So D1 splits: the emitter half is in the tag, and the reader half moves behind the pilot where the feedback can inform it. Two consequences worth stating plainly. V2 is off the critical path. It chooses the reader's design, and the reader now lands after the pilot; the tag is not waiting on a decision. The tag is roughly a session of work, not a phase: an emitter change, a profile constant following the existing STRICT_V1 pattern, a profile-aware ownership predicate, `sources` derivation, one generated fixture. Risk concentrates rather than spreads. `_is_ingest_owned` is the pre-mutation collision gate, so a defect there is expensive and quiet -- its characterization test is written before it is touched. The emitter change runs through DEFAULT's path, so V-A6 is proven by the golden suite rather than assumed. The sizing itself carries a caveat in the doc: it treats FrontmatterSchema.emit as a single formatting function, inferred from its tests rather than read. That is a premise like any other and gets verified before the estimate is relied on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A2aKJxLejT9S8jYwoZ9fut
This commit is contained in:
parent
5de590ebdf
commit
95b1ef0bcd
1 changed files with 58 additions and 10 deletions
|
|
@ -229,6 +229,48 @@ deciding V1 — a participant, not a test site); `llm-ingestion-pipeline-securit
|
|||
- **P4 — fix, then GA.** Address findings, then flip `OKF_LATEST` as its own
|
||||
release.
|
||||
|
||||
### What `v0.5.0a1` minimally requires — much less than the deliverable list
|
||||
|
||||
Walking each pilot test back to what it actually exercises produces a result the
|
||||
deliverable ordering had obscured: **none of the three tests needs D1's
|
||||
structured reader.**
|
||||
|
||||
- Test A **emits** v0.2. `generated` is an inline flow mapping — a formatted
|
||||
string — and `sources` needs the frontmatter *emitter* to accept a block-list
|
||||
value. Neither requires reading one back.
|
||||
- Test B runs catalog's gate on a fixture. That fixture is Test A's output.
|
||||
- Test C validates the wiki's **v0.1-shaped** documents (scalar frontmatter,
|
||||
`timestamp`, no `generated`) against a v0.2 *variant profile*. Their documents
|
||||
contain no v0.2 families, so block-list reading is never reached.
|
||||
|
||||
The structured reader exists to **consume third-party v0.2 bundles** — that is
|
||||
D3/Door C, and no pilot repo sends us one. So the tag needs:
|
||||
|
||||
1. `FrontmatterSchema.emit` accepts a block-list value (`sources`).
|
||||
2. An `OKF_V0_2` profile constant — same shape as the existing `STRICT_V1` work.
|
||||
3. `_is_ingest_owned` becomes profile-aware, since the ownership marker now
|
||||
differs per profile.
|
||||
4. `sources` derived from the manifest source in the materializer.
|
||||
5. One v0.2 golden fixture in `examples/`, generated by the code rather than
|
||||
hand-authored, or it does not test the emitter.
|
||||
6. The tag.
|
||||
|
||||
Plus TDD steps 1–3 first as the safety net; they change no behavior.
|
||||
|
||||
**Consequence: V2 is off the critical path.** V2 chooses the *reader's* design,
|
||||
and the reader now lands after the pilot. The emitter's shape is not contentious
|
||||
in the same way. The tag is not waiting on a decision.
|
||||
|
||||
**Risk concentrates in item 3**, not in volume: `_is_ingest_owned` is the
|
||||
pre-mutation collision gate, so a defect there is expensive and quiet. Its
|
||||
characterization test (TDD step 1) is written before it is touched. Item 1 also
|
||||
runs through `DEFAULT`'s code path, so V-A6 must be *proven* by the golden suite,
|
||||
not assumed.
|
||||
|
||||
**Caveat on the estimate:** it treats `FrontmatterSchema.emit` as a single
|
||||
formatting function, inferred from its tests rather than read. Verify that before
|
||||
committing to the sizing — the estimate is a premise like any other.
|
||||
|
||||
### Shipping a provisional surface without owing stability
|
||||
|
||||
The install channel is a direct git reference, so consumers pin a tag explicitly
|
||||
|
|
@ -407,19 +449,25 @@ everything after.
|
|||
the bare-`verified` MUST. Failures here are real defects, not plan revisions.
|
||||
3. **Assert no hard-coded version** anywhere a profile should decide (V4), and
|
||||
the no-`timestamp`-plus-malformed-`generated` construction invariant (V-A7).
|
||||
4. **D1** — the structured reader, behind the profile seam, with the v0.1 scalar
|
||||
path untouched and the full existing suite as the net.
|
||||
5. **D2** — the `OKF_V0_2` profile and `OKF_LATEST` alias.
|
||||
6. **D5** — v0.2 golden fixtures; `okf_version: "0.2"` is declared only here,
|
||||
once 1–5 are green (conform first, claim after).
|
||||
4. **D1a — the emitter half only.** `FrontmatterSchema.emit` accepts a block-list
|
||||
value. Runs through `DEFAULT`'s path, so the golden suite proves V-A6 here.
|
||||
5. **D2** — the `OKF_V0_2` profile, profile-aware `_is_ingest_owned`, `sources`
|
||||
derivation. `OKF_LATEST` stays on v0.1 semantics.
|
||||
6. **D5** — the v0.2 golden fixture, generated by the code. `okf_version: "0.2"`
|
||||
is declared only here, once 1–5 are green (conform first, claim after).
|
||||
7. **P1** — read-only sweep over real pilot bundles. Cheap, zero-risk, and the
|
||||
first point where a finding can come from outside our own assumptions.
|
||||
8. **Pre-release tag `v0.5.0a1`**, then **P2** (producer) and **P3** (gate).
|
||||
9. **D4** — `Attested Computation` round-trip. Placed after the pilot on purpose:
|
||||
nothing in the pilot set uses it, so building it earlier would add surface the
|
||||
feedback cannot reach.
|
||||
10. **P4** — address findings, then GA: flip `OKF_LATEST`, its own release.
|
||||
11. **V1 to commons** in parallel throughout; **D6** lands with the GA release.
|
||||
Steps 1–8 are the whole pilot scope.
|
||||
9. **P4** — address findings.
|
||||
10. **D1b — the structured reader** (V2's decision applies here, not earlier),
|
||||
then **D3** — Door C conformance against the tolerance rules. This is where
|
||||
consuming third-party v0.2 bundles becomes real; no pilot repo sends us one,
|
||||
so it deliberately follows the feedback rather than preceding it.
|
||||
11. **D4** — `Attested Computation` round-trip. Nothing in the pilot set uses it,
|
||||
so building it earlier would add surface the feedback cannot reach.
|
||||
12. **GA** — flip `OKF_LATEST`, its own release. **V1 to commons** in parallel
|
||||
throughout; **D6** lands with the GA release.
|
||||
|
||||
## Key assumptions, each with its test
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue