6.8 KiB
Session 0041.0 — Transcript
Date: 2026-05-29 Start: 2026-05-29T05-45 (PST implied) Status: IN PROGRESS
Goal: Settle ROADMAP #36 — adopt the meta-only RFC repository topology (no per-RFC repos; graduation = in-place state flip), revise the rfc-app SPEC + code, fold RFC-0001 back into its meta entry, ship rfc-app v0.31.0, deploy to OHM.
Plan / TODO
- Claim session ID (0041).
- Close stale ohm-meta PR #2 (duplicate "Graduate human" PR).
- Read SPEC §1/§3/§13 + map the rfc-app graduation code surface.
- Operator decisions: settle #36 meta-only; fold RFC-0001 back (single model); reframe SPEC for the "single content repo" deployer story + track the ohm-meta→ohm-content rename for #33.
- Revise SPEC §1/§2/§3/§4/§9.8/§13 to meta-only (operator signed off on the diff).
- rfc-app code: collapse graduation to an in-place flip; re-key the branch/PR/chat dispatch on meta-residency; remove the per-repo read path / guards; simplify the bot + GraduateDialog.
- Tests green (full suite 375 passed); frontend builds.
- Bump VERSION + package.json + CHANGELOG (v0.31.0).
- RFC-0001 fold-back content migration (restore body to meta entry,
repo: null, archivewiggleverse/rfc-0001-human). - Commit + tag v0.31.0 + push origin + benstull mirror.
- Bump ohm-rfc pin to v0.31.0.
flotilla deploy ohm-rfc-app+ verify.- Strike ROADMAP #36; capture #33 rename follow-up.
- Finalize + publish transcript.
Launch prompt
OHM driver session. Reserve session ID. Context from session 0040.0: #35 (operator RFC authoring lane) proven; "Informed Consent" super-draft live; #36 OPEN + BLOCKING — decide repo-per-RFC vs. meta-only (operator leans meta-only); OHM live v0.30.1 (deploys.id=43), rfc-app main 732b23b; loose end ohm-meta PR #2 (stale graduate-human) open.
Pre-session state
- OHM live: v0.30.1, healthy (
/api/healthok). - rfc-app
mainat732b23b(v0.30.1). - ohm-meta:
humanis active (RFC-0001,repo: wiggleverse/rfc-0001-human, graduated 2026-05-26, body stripped to frontmatter),informed-consentis a super-draft.wiggleverse/rfc-0001-humanexists with a 22KBRFC.md. - PR #2 was a duplicate stale graduation PR (the real graduation merged 2026-05-26 via another PR); closing it was correct.
Turn-by-turn arc
Arc 1 — Orient + operator decisions
Claimed 0041. Closed ohm-meta PR #2 (the authoring-lane token is
write:repository, not write:issue, so the explanatory PR comment
got a 403 — closure itself succeeded; runbook gap noted: commenting
needs write:issue scope). Discovered RFC-0001 is a real graduated
per-repo RFC (22KB RFC.md), which made its fate the pivot for #36.
Operator decisions (via AskUserQuestion):
- Settle #36 meta-only (full code + deploy, not SPEC-only).
- Fold RFC-0001 back to a single meta-only model (restore body to the meta entry, archive the repo, delete the per-repo read path) — rather than grandfathering it as a dual path.
- Reframe the SPEC for the "single content repository" deployer
story (a framework-level win, not just OHM), keep
META_REPOconfig term stable, and track the concreteohm-meta → ohm-contentrename as a #33 follow-up (do NOT rename this session).
Arc 2 — SPEC revision (signed off)
Rewrote SPEC §1 (topology: one meta repo, no per-RFC repos, + a boxed
supersession note + deployer-facing "content repository" framing), §2
(repo: always-null, README index, body-migration note), §3 (active =
in-place state), §3.2, §4 (cache/reconciler), §9.8 (the four per-repo
handoff frictions struck through), and §13 in full (retitled "in
place"; §13.2 two-field dialog, no repo name, no open-PR precondition;
§13.3 "The flip" = single open+merge PR, body kept, no transaction/no
rollback, old sequence struck through; §13.4 nothing moves; §13.5
reversal softened; new §13.6 RFC-0001 fold-back migration record).
Operator approved the diff as the contract.
Arc 3 — rfc-app code (meta-only)
api_graduation.pyrewritten:GraduateBodydropsrepo_name;graduate_checkis two fields; the orchestrator is a two-step flip (open_pr→merge_pr) that keeps the body and setsrepo=None; no rollback (merge-failure cleans up the unmerged PR + branch). Newgraduate_failedaudit kind; removed thegraduate_repo_*/graduate_rollbacksteps.bot.py:open_graduation_prdropsrepo_full+ the "moves to RFC.md" PR body; deletedcreate_rfc_repo_for_graduation,seed_graduated_rfc,delete_rfc_repo.- Dispatch re-keyed on meta-residency (
repo IS NULL) inapi_prs.py+api_branches.py(_is_meta_resident,_is_meta_target, the cache-refresh dispatch); removed the two"RFC has no repo"409 guards;promote-to-branchnow names an active RFC's auto-branchedit-<slug>-<hex>so the shared meta-repo cache can attribute it; the §9.8 read-only-edit-branch guard scoped to legacy per-repo only;pre_graduation_historyscoped to legacy per-repo only. cache.py:refresh_meta_branchesincludes meta-resident active RFCs (synthetic main + edit branches).hygiene.py: branch-delete repo resolution keyed on meta-residency.GraduateDialog.jsx+api.js: two-field dialog, two-step stack, no repo field, no blocking-PR popover.- Tests: rewrote
test_graduation_vertical.pyto the flip model (happy-path keeps body + no per-repo + no repo audit rows; coexists with open body-edit PR; open-pr failure leaves super-draft; merge failure cleans up; edit branch surfaces normally post-graduation); updatedtest_hygiene_vertical.py+test_e2e_smoke.py. Full suite: 375 passed. Frontend builds clean. - Bumped VERSION + frontend/package.json to 0.31.0; CHANGELOG entry with RFC 2119 upgrade steps (incl. the MUST fold-back step).
Arc 4 — (in progress) content migration + release + deploy
To be filled in: RFC-0001 fold-back, tag/push, pin bump, deploy, verify.
Decisions / notes for the record
- Deploy ordering: v0.31.0 is dual-capable (handles both legacy per-repo actives and meta-only actives), so it is deployed FIRST, then RFC-0001 is folded back — avoids a window where the live app 409s on a repo-null active.
- Authoring-lane runbook gap:
ohm-gitea-tokeniswrite:repositoryscope; PR/issue commenting needswrite:issue. Either widen the scope or document that the lane can open/merge/close PRs but not comment. - #33 follow-up captured: rename
wiggleverse/ohm-meta → ohm-content(rename repo → updateMETA_REPOoverlay → update the Gitea webhook → re-point catalog + redeploy). Decided this session; deferred to a #33 ops session.
Prompt the operator can paste into the next session
(to be finalized at session end)