memory: snapshot — v1.0.0b1 cut, the version that was two copies, and the design-dev handoff
This commit is contained in:
+63
@@ -0,0 +1,63 @@
|
|||||||
|
# v1.0.0b1 — the v1 target staged as a beta, and a version that was two copies
|
||||||
|
|
||||||
|
_2026-09-22 · booth_
|
||||||
|
|
||||||
|
**All seven v1 units landed, so the operator cut `1.0.0b1`** — the first release
|
||||||
|
of the 1.x train, deliberately a BETA rather than a final. Tag `v1.0.0b1`,
|
||||||
|
annotated (milestone), commit `3126dec`.
|
||||||
|
|
||||||
|
**The beta is the right vehicle and not a hedge.** The canonical policy defines
|
||||||
|
`-beta.N` as feature-complete, external testing, no new features, focus on bugs
|
||||||
|
— which is exactly this state, with a cross-frontier bug-hunt panel outstanding
|
||||||
|
on U7's diff. This repo already paid for the alternative once:
|
||||||
|
[[2026-09-21-v020-tagged-with-a-gate-in-flight]] — v0.2.0 was tagged AND
|
||||||
|
announced while a panel was in flight, the panel found three defects in the
|
||||||
|
just-released code, and v0.2.1 shipped within the hour. **A beta is the designed
|
||||||
|
answer to that, not a workaround for it.**
|
||||||
|
|
||||||
|
## Version format, decided and worth not re-deriving
|
||||||
|
|
||||||
|
- `pyproject.toml` carries **`1.0.0b1`** — PEP 440, which is what the packaging
|
||||||
|
tool normalizes `1.0.0-beta.1` to anyway.
|
||||||
|
- The git tag is **`v1.0.0b1`**, matching the artifact string exactly rather
|
||||||
|
than carrying a SemVer spelling the wheel does not. One string, no translation
|
||||||
|
layer.
|
||||||
|
- Ordering verified: `0.6.1 < 1.0.0b1 < 1.0.0`.
|
||||||
|
|
||||||
|
## ⚠ The version was TWO copies, and the obvious fix was the wrong one
|
||||||
|
|
||||||
|
`booth.__version__` was the literal `"0.1.0"` and had been wrong through six
|
||||||
|
releases. Nothing reads it, which is why nobody noticed.
|
||||||
|
|
||||||
|
**The reflex fix — derive it from `importlib.metadata` — is WRONG HERE, and
|
||||||
|
measurably so.** This repo has no build step and no install step: `booth.service`
|
||||||
|
runs uvicorn with `WorkingDirectory` set to the tree, so the running code IS
|
||||||
|
this checkout. Installed metadata describes a different artifact. The venv was
|
||||||
|
carrying a vestigial `booth-0.3.0.dist-info` **with no package directory behind
|
||||||
|
it**, so `importlib.metadata.version("booth")` returned `0.3.0` for a tree at
|
||||||
|
`1.0.0b1` — confidently wrong, and varying by environment, which is worse than
|
||||||
|
a literal that at least fails the same way everywhere.
|
||||||
|
|
||||||
|
It now reads `pyproject.toml` via `tomllib`, with metadata as the fallback for
|
||||||
|
the wheel case this repo does not have. **The test asserts the ABSENCE OF A
|
||||||
|
LITERAL, not agreement with pyproject** — comparing the two would be circular
|
||||||
|
and would prove only that the read works. The defeating change is hardcoding a
|
||||||
|
number back in, and that is what is caught.
|
||||||
|
|
||||||
|
## ⚠ `booth/__init__.py` is a FOURTH stdlib-only module
|
||||||
|
|
||||||
|
`scripts/booth` imports `booth.links` / `booth.marks` / `booth.manifest` under
|
||||||
|
the SYSTEM python3 with no venv — and every one of those executes the package
|
||||||
|
root first. So a single third-party import in `__init__.py` breaks `booth ask`
|
||||||
|
on every fleet host exactly as one in the documented three would, and **nothing
|
||||||
|
asserted it.** `test_stdlib_only` now covers `__init__`; `tomllib` is stdlib and
|
||||||
|
`requires-python` is `>=3.11`, so the pyproject read is safe there. Verified by
|
||||||
|
running the real import chain under `/usr/bin/python3` 3.11.2 with no venv.
|
||||||
|
|
||||||
|
## Handoff sent
|
||||||
|
|
||||||
|
The SVOS design-system retrofit went to `design-dev` (althing thread
|
||||||
|
`01M369321KNBPZ7FYDQGZG7AXP`) — the IA is ours and settled, the visual and
|
||||||
|
interaction system is his. ⚠ **`design-dev` is PULL-ONLY and last read
|
||||||
|
2026-09-21T18:44Z**, so the message is queued, not picked up. Do not read
|
||||||
|
silence as a decision.
|
||||||
+13
-4
@@ -30,10 +30,18 @@ _As of 2026-09-22:_
|
|||||||
(filename-prefix groups) is built; `test_no_group_rail_is_shipped_yet` was
|
(filename-prefix groups) is built; `test_no_group_rail_is_shipped_yet` was
|
||||||
deleted in the same commit, as required.
|
deleted in the same commit, as required.
|
||||||
→ `persistent-memory.d/2026-09-22-u7-landed-and-a-table-that-did-not-reproduce.md`
|
→ `persistent-memory.d/2026-09-22-u7-landed-and-a-table-that-did-not-reproduce.md`
|
||||||
- 🔶 **THE 1.0 CUT IS NOW A DECISION, NOT A DEPENDENCY, AND IT IS HIS.** The v1
|
- ✅ **RELEASED `v1.0.0b1` — the first 1.x release, staged as a BETA** (operator,
|
||||||
target is met. A major bump needs explicit operator approval; nothing in the
|
2026-09-22: "cut 1.0 beta 1"). Feature-complete, no new features, remaining
|
||||||
code is waiting on it. The open fork: cut `1.0`, or stage a `0.7.0` first.
|
work is bugs. `1.0.0` final is cut when the beta survives. **NOT PUSHED.**
|
||||||
**Not bumped — the work is committed as commits, which are not releases.**
|
→ `persistent-memory.d/2026-09-22-v1-staged-as-a-beta-and-a-second-copy-of-the-version.md`
|
||||||
|
- ⚠ **`booth/__init__.py` IS A FOURTH STDLIB-ONLY MODULE** and nothing said so
|
||||||
|
until now — `scripts/booth` executes it before every one of the documented
|
||||||
|
three. Now covered by `test_stdlib_only`. Same detail file carries why
|
||||||
|
`importlib.metadata` is the WRONG version source in this repo.
|
||||||
|
- 🔶 **SVOS design-system retrofit HANDED OFF to `design-dev`** (althing thread
|
||||||
|
`01M369321KNBPZ7FYDQGZG7AXP`). We own the IA; he owns the visual and
|
||||||
|
interaction system. ⚠ He is **PULL-ONLY, last read 2026-09-21T18:44Z** — the
|
||||||
|
message is QUEUED, not picked up. Silence is not a decision.
|
||||||
- ⚠ **U7'S CONTRACT CARRIED A MEASUREMENT THAT DID NOT REPRODUCE**, and it was
|
- ⚠ **U7'S CONTRACT CARRIED A MEASUREMENT THAT DID NOT REPRODUCE**, and it was
|
||||||
the number the scope departure rested on. The stated rule gives 24 and 27
|
the number the scope departure rested on. The stated rule gives 24 and 27
|
||||||
groups where the table claimed 5 and 1; the table was assembled from two
|
groups where the table claimed 5 and 1; the table was assembled from two
|
||||||
@@ -84,6 +92,7 @@ _As of 2026-09-22:_
|
|||||||
|
|
||||||
## Recent decisions
|
## Recent decisions
|
||||||
|
|
||||||
|
- `[2026-09-22]` ✅ **v1.0.0b1 — the v1 target staged as a beta, and a version that was two copies** — READ BEFORE DERIVING A VERSION FROM `importlib.metadata` HERE; it reports a different artifact, and `booth/__init__.py` turns out to be stdlib-only → `persistent-memory.d/2026-09-22-v1-staged-as-a-beta-and-a-second-copy-of-the-version.md`
|
||||||
- `[2026-09-22]` ✅ **U7 landed — and the number that justified it did not reproduce** — all seven v1 units are in; READ BEFORE TRUSTING A MEASUREMENT INSIDE A CONTRACT, and before assuming a degeneracy guard covers the degeneracy you actually have → `persistent-memory.d/2026-09-22-u7-landed-and-a-table-that-did-not-reproduce.md`
|
- `[2026-09-22]` ✅ **U7 landed — and the number that justified it did not reproduce** — all seven v1 units are in; READ BEFORE TRUSTING A MEASUREMENT INSIDE A CONTRACT, and before assuming a degeneracy guard covers the degeneracy you actually have → `persistent-memory.d/2026-09-22-u7-landed-and-a-table-that-did-not-reproduce.md`
|
||||||
- `[2026-09-22]` ⚠ **A mutation harness certified a broken test, twice, for two reasons** — no green baseline, and the pyc cache silently reverting same-size mutations; READ BEFORE WRITING ONE → `persistent-memory.d/2026-09-22-a-mutation-harness-that-certified-a-broken-test.md`
|
- `[2026-09-22]` ⚠ **A mutation harness certified a broken test, twice, for two reasons** — no green baseline, and the pyc cache silently reverting same-size mutations; READ BEFORE WRITING ONE → `persistent-memory.d/2026-09-22-a-mutation-harness-that-certified-a-broken-test.md`
|
||||||
- `[2026-09-22]` 🛑 **STANDING: no announcements out of this repo until the arc is done, and he sends that one himself** — verbatim *"no announcements until the entire arc is done, and even then i'll do it myself."* Stricter than the house broadcast gate: the send is not the agent's to make, so **asking is also out of scope**. The drafted 17-handle note is REASSIGNED to him, not blocked — see the in-flight row above; do not raise it again.
|
- `[2026-09-22]` 🛑 **STANDING: no announcements out of this repo until the arc is done, and he sends that one himself** — verbatim *"no announcements until the entire arc is done, and even then i'll do it myself."* Stricter than the house broadcast gate: the send is not the agent's to make, so **asking is also out of scope**. The drafted 17-handle note is REASSIGNED to him, not blocked — see the in-flight row above; do not raise it again.
|
||||||
|
|||||||
Reference in New Issue
Block a user