Fable (integrator): the v5 epoch retro — five holds, nine vacuous gates, the covenant amendment, the case law
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b2d29ba112
commit
e93bece0f4
122
docs/RETRO_V5.md
Normal file
122
docs/RETRO_V5.md
Normal file
@ -0,0 +1,122 @@
|
||||
# PROCITY v5 — THE REAL SHOP: the epoch retro
|
||||
|
||||
*Fable (m3, integrator), 2026-07-17, written after the `v5.0` tag (`b2d29ba`) per ROUND27 §7.
|
||||
Epoch span: R23 → R27. Tags: `v5.0-alpha` → `v5.0-beta` → `v5.0`. The first two-studio epoch:
|
||||
Lane G (ultra) went from merged guest to the lane that shipped the epoch's server.*
|
||||
|
||||
## What shipped, in one breath
|
||||
|
||||
The tier ladder, whole: **344 real-or-minted items across 15 keyed crates in two godverse
|
||||
towns**, every crate distinct (105 pairs, 0 shared titles), sourcing-honest (`real`/`mint` as
|
||||
law, prefixes as namespace fences); Monster Robot Party's actual crate 550 riffled and bought
|
||||
in-game off its actual POS; **tier 2 live** — read-only endpoints over the real till, fences
|
||||
enforced at the DB credential, `/reserve`+`/buy` absent by John's A-then-B ruling; and the
|
||||
epoch's defining proof: **a real HTTP server killed mid-session costs the game Δ+2 ms and
|
||||
exactly one refused connection** — the offline law as an executable, not a sentence. Plus the
|
||||
finale nobody ordered: **every shopfront in every town finally faces its street.**
|
||||
|
||||
## The five holds — the epoch's spine
|
||||
|
||||
Every hold was correct; every hold traced to the same species (a rule or contract meeting a
|
||||
case written before the case existed); every hold was released by its owner, never by the
|
||||
beneficiary:
|
||||
|
||||
1. **R23** — the crate was real but had no street, no identity, no compatible contract; the
|
||||
gate built to catch it was blind-green, and #7a as briefed would have passed vacuously.
|
||||
2. **R24→25** — E's rebuild sat uncommitted; tagging would have produced a tag whose tree
|
||||
lacked the code that produced its green.
|
||||
3. **R26** — the mint-id rule demanded a POS sku from crates that never saw a till; G refused
|
||||
the easy green because colliding id spaces in the economy layer eventually sells the wrong
|
||||
record.
|
||||
4. **R27 (reader)** — "zero console errors on server death" was physically impossible; the
|
||||
replacement (exactly one refusal) is strictly stronger because it proves the breaker.
|
||||
5. **R27 (facade)** — the fifth hold found the oldest bug in the project.
|
||||
|
||||
## The finale: the facade, and the covenant amendment
|
||||
|
||||
B's frontage helper — a micro-task — exposed that `plan_osm` aimed lots' −Z at the street
|
||||
while `buildings.js` draws facades on +Z. The wave-5 ruling named it "every real town since
|
||||
R18" and ordered A to *measure the marched path rather than assume it clean*. **A's measurement
|
||||
caught the ruling's own premise: it was EVERY town, EVERY path, since v1** — all four seating
|
||||
sites wrote `atan2(outward)` under comments that said `-outward`; 637 of 681 synthetic lots
|
||||
faced no street at all; the classic covenant town was a row of back walls, and A proved it the
|
||||
only way left — standing in the street, looking at NUMBAT PLAYTHINGS facing the dirt.
|
||||
|
||||
**John ruled the covenant amendment**, and his ruling is the epoch's best line: *the covenant
|
||||
is anti-drift machinery, not a defect preservative.* `0x3fa36874` did its job for five epochs —
|
||||
it never drifted. It was never right, and no hash can catch what was wrong in the first commit.
|
||||
**A golden proves nothing changed; it cannot prove anything is correct.** 51 goldens re-pinned
|
||||
in one commit; F re-pinned its own files per A's handoff (lane boundaries held to the last);
|
||||
and A caught, in passing, a bare-string OR-clause in F's classic gate that would have gone
|
||||
green off a *sentence about* the old covenant. The cross-convention gate is now in the
|
||||
selfcheck so the two conventions are compared against each other forever.
|
||||
|
||||
## The epoch's signature species: the vacuous gate
|
||||
|
||||
Named as law in R24, then found NINE times — including three inside the law's own
|
||||
applications: the empty-glob validator, the covers-render #7a, my id-equality gate spec
|
||||
(positional ids collide), F's selector entering the wrong shop, the silent licence line, the
|
||||
impossible zero-errors assert, F's 72/72 self-agreement (testing a spec line's data against
|
||||
the same line), F's attempt-4 error-check (the call succeeded; the pose was never applied),
|
||||
and the stdout OR-clause. The case law that came out of it is the epoch's real export:
|
||||
|
||||
- **A gate proves it touched its subject** (fetch log, matched-file count, id equality —
|
||||
something falsifiable) or it is not a gate.
|
||||
- **The collateral assertion**: when correct and broken implementations both hide the obvious
|
||||
evidence, assert on what discriminates (the other 119 records unchanged).
|
||||
- **Cross-convention checks**: two subsystems implementing "the same" convention are compared
|
||||
against each other, never each against its own spec line.
|
||||
- **Control-deltas for performance**: an absolute threshold measures the wrong thing politely.
|
||||
- **A named exception starts protecting new bugs the moment the real fix exists** (F's 404
|
||||
tolerance — deleted, and the deletion caught a ninth invisible probe).
|
||||
- **Id prefixes are namespace fences**; plan ids, godverse ids, POS skus and listing ids are
|
||||
four spaces, and no bare number crosses them.
|
||||
|
||||
## What worked — keep doing
|
||||
|
||||
1. **Restraint under benefit.** F declined to touch A's sweep, E's validator, and E's
|
||||
uncommitted file across three separate holds where one edit would have unblocked its own
|
||||
tag; B proved the facade one-liner and reverted it; A handed F's re-pins to F instead of
|
||||
editing F's files. The party that benefits never releases its own hold.
|
||||
2. **Ownership sentences.** "The red was mine" (E) · "my rule was the stale thing" (C) ·
|
||||
"it fired 54/72 on a good town" (A) · "four of the five attempts were F's fault" (F).
|
||||
Nobody defended; everybody measured.
|
||||
3. **The contract's author is the authority for the contract's shape** — and when contract
|
||||
and runtime disagree, **the runtime is the authority** (R24's root-cause ruling).
|
||||
4. **Machine-enforced fences beat reviewed promises**: the read-only credential (measured
|
||||
permission-denied), 501s for absent verbs, metadata-only responses.
|
||||
5. **The two-studio pattern matured**: G went from branch-merged guest (R23) to full lane on
|
||||
main (R25) to shipping the epoch's server (R27), with John's rulings recorded as mechanism.
|
||||
|
||||
## What cost us — fixed or fenced
|
||||
|
||||
1. **Comments and specs are not measurements.** All four facade sites' comments described the
|
||||
correct behaviour above code doing the opposite, for 27 rounds. The cross-convention gate
|
||||
is the fix; the lesson is older: nothing is true because a document says it.
|
||||
2. **Consistency masquerades as correctness.** Every subsystem agreed with itself, so every
|
||||
gate was green over a wrong world; only a human in the street saw it. Money shots and
|
||||
walk-arounds are QA, not decoration — John's browser stroll started the v6 charter, and
|
||||
A's street-level eyeball confirmed the covenant bug.
|
||||
3. **My briefs carried five corrected errors this epoch** (the `tier` field, the id-equality
|
||||
gate, the zero-errors assert, the "wire on entry" default that F correctly made opt-in,
|
||||
and the wave-5 premise). All five were caught by the contract-first channel or by
|
||||
measurement before they became bugs. Briefs state acceptance; lanes own method; the
|
||||
integrator is not exempt from measurement-over-brief.
|
||||
|
||||
## Carried forward
|
||||
|
||||
- **v5.x**: Option B reservation (chartered, behind John's hold budget) · tier-2
|
||||
auto-discovery (needs a reachability contract) · more POS shops if monsterrobot gains
|
||||
siblings · **a shop-ops note for John, not a code item: the POS has recorded no sale since
|
||||
2026-07-01 — G proved the dump is fresh but the data is stale; worth checking the till's
|
||||
sync before the next live demo.**
|
||||
- **v4.x tail** (unchanged): thin-tail clustering floor · seating overflow tail · instrument
|
||||
LOD · tram-stop tri diet · awning ripple · audioEmitter · flag retirement.
|
||||
- **v6 — THE LIVING STREET**: charter drafted (`docs/V6_LIVING_STREET.md`), spikes gated on
|
||||
John's mocap vids (the MOCAPGOD queue is still empty) and the MOCAPGOD-C/MIRPAMO
|
||||
integration call on ultra.
|
||||
|
||||
*— Fable. Twenty-seven rounds, eleven tags, five correct holds, one amended covenant. The game
|
||||
now sells a record that is really in the crate, in a shop that is really on the street, in a
|
||||
town that is really in Australia — and for the first time since v1, the shops are facing you
|
||||
when you walk up the road.*
|
||||
Loading…
Reference in New Issue
Block a user