docs(okf-v0.2): point the pilot procedure at v0.5.0a2, not the abandoned tag

Test A's procedure still said "install the package at the v0.5.0a1 tag", and
the test-spec preamble said all three tests read from v0.5.0a1. That tag is
abandoned: it carries the excluded generated.by actor id.

This was a live hazard, not a stale reference. Installing it is exactly the
A-E5 failure this doc warns about -- a pilot would hold bundles the library
stops recognising the moment the id is corrected, hitting collision_unstamped
on their own files. It survived because the heading and the CHANGELOG were
corrected when the tag was abandoned while the procedure text underneath was
not, so the section contradicted itself.

Latent until now because no pilot was reading the procedure as an instruction.
Re-pointing Test A to portfolio-optimiser in 7d9bc0c is what made these lines
live again, which is why the fix belongs with that change rather than after it.

The message already sent to portfolio-optimiser never names a1 and gives the
v0.5.0a2 install channel explicitly, so no correction is owed to them.

The remaining a1 mentions are historical records of what the abandoned tag
required and why, and are left as written.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TgTrQdexGdLYmt1ZMenPyC
This commit is contained in:
Kjell Tore Guttormsen 2026-08-09 10:11:22 +02:00
commit bb49fad0e3

View file

@ -861,8 +861,8 @@ estimate that was merely asserted twice.
The install channel is a direct git reference, so consumers pin a tag explicitly
and nothing reaches anyone implicitly. The pilot therefore ships as a
**pre-release tag** (`v0.5.0a1`), and the marker lives in the tag name so a pin
is self-documenting. Three rules make the provisional status real rather than
**pre-release tag** (`v0.5.0a2`; `v0.5.0a1` was abandoned unused), and the marker
lives in the tag name so a pin is self-documenting. Three rules make the provisional status real rather than
stated:
1. `OKF_LATEST` does not point at v0.2 until GA (above).
@ -881,9 +881,19 @@ expected outcomes numbered, plus an explicit list of what would surprise us —
naming the surprises is what lets someone else's run falsify our model instead of
merely confirming it.
All three read their inputs from this repo at the pre-release tag (`v0.5.0a1`);
All three read their inputs from this repo at the pre-release tag **`v0.5.0a2`**;
nothing is transported through the mailbox except the specification itself.
**The tag in this section was `v0.5.0a1` until 2026-08-09, and that was a live
hazard rather than a stale reference.** `v0.5.0a1` is abandoned: it carries the
excluded `generated.by` actor id, and installing it is precisely the A-E5 failure
this doc warns about — a pilot would hold bundles the library stops recognising
the moment the id is corrected, hitting `collision_unstamped` on their *own*
files. It survived because the heading and the CHANGELOG were corrected when the
tag was abandoned while the procedure text underneath was not, and the section
therefore contradicted itself. Test A's runner changed on 2026-08-09, which is
what made a pilot read these lines as instructions again.
#### Test A — producer path (`portfolio-optimiser`, re-pointed 2026-08-09)
**Runner changed, expectations unchanged.** Originally `portfolio-optimiser-claude`;
@ -905,7 +915,8 @@ Two consequences worth stating, since neither is cosmetic:
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
**Procedure.** In a scratch venv, install the package at the `v0.5.0a2` tag —
**not `v0.5.0a1`, which is abandoned** (see above). Take
**one manifest they have already run under `DEFAULT`**, so the existing v0.1
output is the baseline. Materialize it twice with the *same* explicit
`ingested_at`: once with `profile=DEFAULT`, once with `profile=OKF_V0_2`. Diff.