docs(okf-v0.2): admit portfolio-optimiser to the pilot set, re-point Test A
Operator decision 2026-08-09, on their request. po-claude is parked until the MAF version ships, so Test A's verdict is not coming from the original producer. The admission is about the axis, not the headcount. With po-claude parked, no original pilot member could EMIT a v0.2 bundle at all -- claude-code-llm-wiki is read-only in the pilot and catalog is gate-side -- so GA exit criterion 5's emit half had no possible runner. portfolio-optimiser consumes the same Door A and is the D7 sibling of the parked repo, which makes it a substitute for the axis rather than a fourth opinion on it. A-E1 now measures a wider span than it was written for, because they are pinned at v0.3.2. Measured rather than asserted: the three DEFAULT goldens are byte-identical v0.3.2 -> v0.5.0a2, so the measurement can be cited instead of asking them to trust the additivity promise. CHANGELOG amends the pilot set under [Unreleased] rather than editing the released v0.5.0a1 entry, which records what was true when that tag shipped. It also states the guard pin that tag actually carries (>=0.2,<0.3, resolving against guard v0.2.0), since main has since moved to >=0.3,<0.4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TgTrQdexGdLYmt1ZMenPyC
This commit is contained in:
parent
5dc2090aba
commit
7d9bc0cddd
2 changed files with 66 additions and 4 deletions
|
|
@ -445,6 +445,27 @@ Three repos, each exercising a different axis, and deliberately cheap for them:
|
|||
| `portfolio-optimiser-claude` | **Producer path.** Real Door A ingestion emitting v0.2 from a real manifest | Pin the pre-release tag, run one real manifest, report | one run |
|
||||
| `catalog` | **Gate acceptance.** Does a bundle *declaring* `okf_version: 0.2` actually pass their gate — measured against their gate, not our reading of its regex | Run their existing gate on our fixture. No code change | one gate run |
|
||||
| `claude-code-llm-wiki` | **Expressiveness.** Can the profile object express a strict consumer at v0.2, over 524 real documents | Nothing. We read their bundle and send them the report | zero |
|
||||
| `portfolio-optimiser` | **Producer path** — admitted 2026-08-09, see below | Pin the pre-release tag in a scratch venv, run one real manifest, report | one run |
|
||||
|
||||
**Fourth member admitted 2026-08-09, on their request and the operator's
|
||||
decision.** `portfolio-optimiser` (the MAF side) asked to join; the ask arrived
|
||||
alongside the notice that `portfolio-optimiser-claude` is **parked** until the MAF
|
||||
version is finished, so Test A's verdict is not coming from the original producer
|
||||
on any near horizon.
|
||||
|
||||
The admission is not a courtesy. The producer axis was the only one still open —
|
||||
Test B closed 2026-07-31 and Test C is ours — and GA exit criterion 5 requires one
|
||||
consumer to have *emitted* end-to-end. With po-claude parked, `claude-code-llm-wiki`
|
||||
read-only and `catalog` gate-side, **no member of the original three could emit at
|
||||
all**, so criterion 5 had no possible runner. They consume the same Door A and are
|
||||
the D7 sibling of the parked repo, which is what makes them a substitute for the
|
||||
axis rather than a fourth opinion on it. It also satisfies the standing
|
||||
needs-driven posture directly: a consumer *asking* is the stated need.
|
||||
|
||||
Two things stated to them rather than assumed, because both are theirs to decide:
|
||||
their run path is frozen 2026-08-12 for a 2026-08-13 live demo, and Test A runs in
|
||||
a **scratch venv** — the procedure's own words — so it never touches that path;
|
||||
timing after the demo is offered and no date is attached, since GA has none.
|
||||
|
||||
The wiki entry is the important design detail: **most of the pilot is read-only
|
||||
on our side.** We run the v0.2 reader over real consumer bundles and report what
|
||||
|
|
@ -464,9 +485,12 @@ deciding V1 — a participant, not a test site); `llm-ingestion-pipeline-securit
|
|||
- **P1 — read-only sweep (us).** Run the v0.2 reader over real bundles from the
|
||||
pilot set. Finds parser gaps, tolerance-rule violations, and expressiveness
|
||||
gaps at zero risk to anyone. Runs as soon as D1–D3 are green.
|
||||
- **P2 — one producer, opt-in.** `portfolio-optimiser-claude` emits a v0.2 bundle
|
||||
against the pre-release tag.
|
||||
- **P3 — gate check.** `catalog` runs their real gate on P2's output.
|
||||
- **P2 — one producer, opt-in.** A pilot producer emits a v0.2 bundle against the
|
||||
pre-release tag. Originally `portfolio-optimiser-claude`; **re-pointed to
|
||||
`portfolio-optimiser` 2026-08-09** when the former was parked.
|
||||
- **P3 — gate check.** `catalog` runs their real gate. **Done 2026-07-31, and it
|
||||
did not wait on P2** — the procedure runs on `examples/` at the tag, not on P2's
|
||||
output. The dependency stated here originally was wrong; see the Test B result.
|
||||
- **P4 — fix, then GA.** Address findings, then flip `OKF_LATEST` as its own
|
||||
release.
|
||||
|
||||
|
|
@ -860,7 +884,26 @@ merely confirming it.
|
|||
All three read their inputs from this repo at the pre-release tag (`v0.5.0a1`);
|
||||
nothing is transported through the mailbox except the specification itself.
|
||||
|
||||
#### Test A — producer path (`portfolio-optimiser-claude`)
|
||||
#### Test A — producer path (`portfolio-optimiser`, re-pointed 2026-08-09)
|
||||
|
||||
**Runner changed, expectations unchanged.** Originally `portfolio-optimiser-claude`;
|
||||
they are parked, and `portfolio-optimiser` was admitted to the pilot set to run it.
|
||||
Two consequences worth stating, since neither is cosmetic:
|
||||
|
||||
- **A-E1 measures a wider span than it was written for**, and that is better
|
||||
signal, not worse. It asserts byte-identity with what *their currently pinned
|
||||
version* produces, and they are pinned at `v0.3.2` — not at the baseline
|
||||
po-claude would have used. **Already measured here rather than asserted:**
|
||||
`git diff v0.3.2 v0.5.0a2 -- examples/ingest-golden-{file,sql,http}` is empty,
|
||||
so the three `DEFAULT` goldens are byte-identical across that whole span and the
|
||||
only `examples/` change is the *added* v0.2 golden. That is what V-A6's suite
|
||||
exists to hold, so we can cite the measurement instead of asking them to take
|
||||
our word for it — the symmetric move to catalog pre-measuring their own gate
|
||||
rather than trusting our reading of their regex.
|
||||
- **Do not assume po-claude's call-path finding transfers.** Their adapter took
|
||||
three positional arguments and exposed no `profile` parameter, which is what
|
||||
made A-E1 measure the library API rather than their pipeline. Whether the MAF
|
||||
side has the same shape is theirs to report, not ours to predict.
|
||||
|
||||
**Procedure.** In a scratch venv, install the package at the `v0.5.0a1` tag. Take
|
||||
**one manifest they have already run under `DEFAULT`**, so the existing v0.1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue