Session 0018.0 (Wave 9): rewrite legacy session refs in transcript bodies + README scoping

- Rewrite every legacy `Session L` / `Session M.1` etc. reference inside
  transcript bodies to the numeric form (`Session 0012.0` / `Session 0013.1`),
  via a mechanical Python sed pass scoped to canonical-filename transcripts
  only (502 replacements across 39 files; 21 files in this published repo +
  18 sibling files in `~/git/ohm-infra/`). The §23 rename was originally
  filename-only — session 0018.0 reverses that and rewrites the bodies too,
  so cross-references inside a transcript match the filename you'd browse
  to. The mapping table (`A → 0001` … `N → 0014`) lives in
  `SESSION-PROTOCOL.md` §1 (also amended this session) for anyone hitting
  an old external link.

- Amend README.md:
  - New "Where the record begins" section noting OHM started with two
    vibe-coded prototypes (no transcripts; the discipline that produced this
    record didn't exist yet). The transcripts here begin at the
    spec-driven-development phase — not at the literal beginning of OHM.
  - Update the existing "Sessions 0001 through 0013 originally shipped
    under a letter-form naming" paragraph to reflect that body refs are
    now also in numeric form.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-05-28 09:40:06 -07:00
parent 412b6ab5d8
commit d5125190ae
21 changed files with 281 additions and 255 deletions
@@ -1,4 +1,4 @@
# Session J — Transcript
# Session 0010.0 — Transcript
> Date: 2026-05-27 → 2026-05-28
> Goal: Answer an operator UX question ("what's the difference between
@@ -96,7 +96,7 @@
> per the CLAUDE.md exception.
>
> `rfc-app/CLAUDE.md` Session-protocol section was again deferred
> (Session I had also deferred it for the same reason — the working
> (Session 0009.0 had also deferred it for the same reason — the working
> tree was unstable). I did not add it because the working tree
> *was* clean by the time I shipped v0.14.0, but I deprioritized it
> in the rush to deploy. The next OHM-touching rfc-app session
@@ -114,21 +114,21 @@
- flotilla v1.0.1, OHM live on v0.10.0 (`deploys.id=11`).
- This session's docs-feature work — `DOCS.md`,
`backend/app/docs.py`, `frontend/src/components/Docs.jsx`, plus
edits to `api.py` / `App.jsx` / `api.js` — predated Session J's
edits to `api.py` / `App.jsx` / `api.js` — predated Session 0010.0's
*explicit* arc and was the "operator-in-progress" state Session-I
observed in `/Users/benstull/git/rfc-app` (Arc 8 of that
transcript). The two sessions overlapped temporally; Session I
transcript). The two sessions overlapped temporally; Session 0009.0
routed around the in-progress files via throwaway worktrees +
`git update-ref refs/heads/main` while Session J continued
`git update-ref refs/heads/main` while Session 0010.0 continued
building the docs feature in the main checkout.
- The operator was driving both sessions, pivoting between them as
each surfaced something needing a human decision.
The `git status` Session J inherited at its first significant
The `git status` Session 0010.0 inherited at its first significant
checkpoint showed the Session-I-induced ghost-revert: 28 staged
"modifications" (actually the diff between the v0.7.0-era working-
tree files and the post-`update-ref` v0.10.0 HEAD) plus my 3
untracked files. The driver in Session I had documented this
untracked files. The driver in Session 0009.0 had documented this
exact shape in its Arc-15 "cross-session staged state question"
section — I inherited the artifact.
@@ -429,7 +429,7 @@ root) works without it; the CHANGELOG "Upgrade steps (from 0.13.0)"
documents the optional override.
Did NOT update `rfc-app/CLAUDE.md` to add the Session-protocol
section that Session I had deferred — deprioritized in the rush
section that Session 0009.0 had deferred — deprioritized in the rush
to deploy. Noted in §19.2 below.
The commit landed with committer `Ben Stull <benstull@mac.lan>`
@@ -588,7 +588,7 @@ dismiss the chip.
### Arc 18 — Transcript
Operator asked for this transcript per the standing protocol.
Read `SESSION-I-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md`
Read `SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md`
to match shape and voice. Read the publish-transcript script to
understand the filename regex and idempotency contract. Read
`ohm-rfc/ROADMAP.md` to figure out which row to strike — and
@@ -608,14 +608,14 @@ slot collision.
2. **Row #12** (Owner-only invite) target version changed from
`v0.14.0 (needs v0.5.0 + v0.7.0)` to `v0.16.0 (needs v0.5.0 +
v0.7.0; v0.14.0 slot was claimed out-of-band by item #15 per
Session J)` to record the slot reshuffling explicitly. v0.15.0
Session 0010.0)` to record the slot reshuffling explicitly. v0.15.0
remains reserved for #13 Amplitude, so #12 jumps to v0.16.0.
Committed to `ohm-rfc/main` as `4c89179` and pushed
(`d6af91f..4c89179 main -> main`).
Transcript written. The filename
`SESSION-J-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md`
`SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md`
matches the convention. Published via
`~/git/ohm-infra/scripts/publish-transcript.sh` at
commit `44995c9` on `wiggleverse/ohm-session-history`
@@ -647,10 +647,10 @@ idempotency contract handles the round-trip cleanly.
| | |
| --- | --- |
| flotilla | Unchanged. v1.0.1 installed; deployment registered; 3 new `deploys` rows added this session (`id=12 failed`, `id=13 failed`, `id=14 succeeded` — all v0.14.0). |
| rfc-app | `de28272` tag `v0.14.0`. Pushed to `origin = git.wiggleverse.org/ben.stull/rfc-app` AND `benstull = git.benstull.org/benstull/rfc-app`. `VERSION = 0.14.0`, `frontend/package.json#version = 0.14.0`. `CHANGELOG.md` has a new top entry. CLAUDE.md Session-protocol pointer **still deferred** — Session I also deferred this. |
| rfc-app | `de28272` tag `v0.14.0`. Pushed to `origin = git.wiggleverse.org/ben.stull/rfc-app` AND `benstull = git.benstull.org/benstull/rfc-app`. `VERSION = 0.14.0`, `frontend/package.json#version = 0.14.0`. `CHANGELOG.md` has a new top entry. CLAUDE.md Session-protocol pointer **still deferred** — Session 0009.0 also deferred this. |
| ohm-rfc | `4c89179` (`.rfc-app-version` bumped to `0.14.0` via `d6af91f`; ROADMAP edited via `4c89179` with new row #15 struck through and row #12's target version bumped v0.14.0 → v0.16.0). |
| OHM live | `deploys.id=14`, v0.14.0, healthy. `/api/health` returns `{"version":"0.14.0","status":"ok"}`. `/docs` reachable anonymously and serves the new user guide. |
| ohm-infra | New transcript: `SESSION-J-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md`. No other changes to scripts or protocol. |
| ohm-infra | New transcript: `SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md`. No other changes to scripts or protocol. |
| ohm-session-history | This transcript first published at `44995c9` (add); Arc-20 update will re-publish as an "update SESSION-J-…" commit when the operator runs `publish-transcript.sh` again (idempotent — diff push, not a duplicate add). Adds one new file alongside Sessions AI. |
| Spawned task | One chip showing for the operator: "Add VM-origin preflight to flotilla deploy" — cwd-rooted in the flotilla repo. |
@@ -658,7 +658,7 @@ idempotency contract handles the round-trip cleanly.
| --- | --- |
| Docs feature shipped | ✅ rfc-app v0.14.0 + OHM `deploys.id=14`. Not a roadmap item; operator-driven from the admin-vs-owner UX question. |
| ROADMAP collision | v0.14.0 slot was reserved for #12 Owner-only invite; that row's target version bumped to v0.16.0 in this session's ROADMAP edit. |
| CLAUDE.md update | Deferred. (Same as Session I.) |
| CLAUDE.md update | Deferred. (Same as Session 0009.0.) |
---
@@ -697,8 +697,8 @@ idempotency contract handles the round-trip cleanly.
the protocol document doesn't currently take a position.
4. **`rfc-app/CLAUDE.md` Session-protocol section is now deferred
twice.** Session I deferred it because the working tree was
unstable. Session J deferred it because the deploy was the
twice.** Session 0009.0 deferred it because the working tree was
unstable. Session 0010.0 deferred it because the deploy was the
priority and the tree only stabilized late. The third
rfc-app-touching session should make the addition non-deferrable
(e.g. fail the end-of-session checklist if rfc-app's CLAUDE.md
@@ -750,8 +750,8 @@ idempotency contract handles the round-trip cleanly.
```
You are the OHM roadmap driver. Two sessions just closed in
parallel: Session I shipped rfc-app v0.4.0 / v0.5.0 / v0.6.0 /
v0.7.0 / v0.8.0 / v0.10.0 / v0.13.0 to OHM, and Session J shipped
parallel: Session 0009.0 shipped rfc-app v0.4.0 / v0.5.0 / v0.6.0 /
v0.7.0 / v0.8.0 / v0.10.0 / v0.13.0 to OHM, and Session 0010.0 shipped
rfc-app v0.14.0 (DOCS.md + /docs public user guide; not a
roadmap item — operator-driven from a UX question) to OHM
(deploys.id=14). OHM is currently serving v0.14.0. Read
@@ -781,7 +781,7 @@ cross-repo ambiguity.
Session-I + Session-J lessons to apply automatically:
- **VM origin vs pin source divergence (Session J)**: after pushing
- **VM origin vs pin source divergence (Session 0010.0)**: after pushing
a rfc-app tag to `origin = git.wiggleverse.org`, ALSO push to
`benstull = git.benstull.org`. The production VM at /opt/ohm-app
fetches from git.benstull.org, not git.wiggleverse.org; the two
@@ -792,7 +792,7 @@ Session-I + Session-J lessons to apply automatically:
git push origin main && git push origin vX.Y.Z
git push benstull main && git push benstull vX.Y.Z
- **Ghost-revert recovery (Session J)**: if you find a working tree
- **Ghost-revert recovery (Session 0010.0)**: if you find a working tree
whose `git status` shows 20+ files as staged-deletions/
modifications that don't match your session's edits, the cause
is a prior session's `git update-ref refs/heads/main` advancing
@@ -803,7 +803,7 @@ Session-I + Session-J lessons to apply automatically:
(untracked files survive), then manually re-apply any genuine
edits against the current HEAD's file structure.
- **Subagents push feature branches only (Session I)**. Driver
- **Subagents push feature branches only (Session 0009.0)**. Driver
tags, bumps the ohm-rfc pin, and runs the deploy. Do NOT have
subagents bump the pin themselves.
@@ -812,7 +812,7 @@ Session-I + Session-J lessons to apply automatically:
only to the driver's CWD.
- **Migration numbers**: pre-allocate slots per subagent in the
prompt. Session I used 014 for #6 and 015 for #8. Next free is
prompt. Session 0009.0 used 014 for #6 and 015 for #8. Next free is
016 — check `ls /Users/benstull/git/rfc-app/backend/migrations/`
before dispatching to confirm.
@@ -827,7 +827,7 @@ Session-I + Session-J lessons to apply automatically:
integration.
- **Item #12 Owner-only invite** has been re-targeted from v0.14.0
to v0.16.0 per Session J's docs-release slot collision. Update
to v0.16.0 per Session 0010.0's docs-release slot collision. Update
any upgrade-from anchors accordingly.
- **Item #1 VM rename** and operator-provided secrets stay