add 0041/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md + replace placeholder/variant SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--INPROGRESS.md
This commit is contained in:
@@ -0,0 +1,286 @@
|
||||
# Session 0041.0 — Transcript
|
||||
|
||||
> Date: 2026-05-29
|
||||
> Start: 2026-05-29T05-45 (PST implied)
|
||||
> End: 2026-05-29T07-23
|
||||
>
|
||||
> 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.
|
||||
>
|
||||
> Outcome: **#36 SETTLED meta-only. rfc-app v0.31.0 shipped + deployed
|
||||
> (deploys.id=45, healthy). RFC-0001 folded back to its meta entry
|
||||
> (repo: null, body restored); wiggleverse/rfc-0001-human archived. OHM
|
||||
> now has zero per-RFC repos. 375 backend tests green. Follow-on:
|
||||
> ohm-meta → ohm-content rename tracked under #33.**
|
||||
|
||||
---
|
||||
|
||||
## Plan / TODO
|
||||
|
||||
- [x] Claim session ID (0041).
|
||||
- [x] Close stale ohm-meta PR #2 (duplicate "Graduate human" PR).
|
||||
- [x] Read SPEC §1/§3/§13 + map the rfc-app graduation code surface.
|
||||
- [x] 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.
|
||||
- [x] Revise SPEC §1/§2/§3/§4/§9.8/§13 to meta-only (operator signed off
|
||||
on the diff).
|
||||
- [x] 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.
|
||||
- [x] Tests green (full suite 375 passed); frontend builds.
|
||||
- [x] Bump VERSION + package.json + CHANGELOG (v0.31.0).
|
||||
- [x] Commit + tag v0.31.0 + push origin + benstull mirror (commit
|
||||
`0c972c8`, tag `v0.31.0`; rebased over the parallel v0.30.2).
|
||||
- [x] Bump ohm-rfc pin to v0.31.0 (`69121e6`).
|
||||
- [x] `flotilla deploy ohm-rfc-app` (deploys.id=45) + verify (healthy).
|
||||
- [x] RFC-0001 fold-back content migration (ohm-meta PR #8 merged:
|
||||
body restored, `repo: null`; `wiggleverse/rfc-0001-human` archived).
|
||||
- [x] Strike ROADMAP #36; capture #33 rename follow-up (`4526f64`).
|
||||
- [x] 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/health` ok).
|
||||
- rfc-app `main` at `732b23b` (v0.30.1).
|
||||
- ohm-meta: `human` is **active** (RFC-0001, `repo:
|
||||
wiggleverse/rfc-0001-human`, graduated 2026-05-26, body stripped to
|
||||
frontmatter), `informed-consent` is a super-draft. `wiggleverse/rfc-0001-human`
|
||||
exists with a 22KB `RFC.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):
|
||||
1. **Settle #36 meta-only** (full code + deploy, not SPEC-only).
|
||||
2. **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.
|
||||
3. **Reframe the SPEC** for the "single content repository" deployer
|
||||
story (a framework-level win, not just OHM), keep `META_REPO` config
|
||||
term stable, and **track the concrete `ohm-meta → ohm-content`
|
||||
rename 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.py` rewritten: `GraduateBody` drops `repo_name`;
|
||||
`graduate_check` is two fields; the orchestrator is a two-step flip
|
||||
(`open_pr` → `merge_pr`) that **keeps the body** and sets `repo=None`;
|
||||
no rollback (merge-failure cleans up the unmerged PR + branch). New
|
||||
`graduate_failed` audit kind; removed the `graduate_repo_*` /
|
||||
`graduate_rollback` steps.
|
||||
- `bot.py`: `open_graduation_pr` drops `repo_full` + the "moves to
|
||||
RFC.md" PR body; deleted `create_rfc_repo_for_graduation`,
|
||||
`seed_graduated_rfc`, `delete_rfc_repo`.
|
||||
- Dispatch re-keyed on **meta-residency (`repo IS NULL`)** in
|
||||
`api_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-branch` now names an active RFC's auto-branch
|
||||
`edit-<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_history` scoped to legacy per-repo only.
|
||||
- `cache.py`: `refresh_meta_branches` includes 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.py` to 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);
|
||||
updated `test_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 — Release, deploy, RFC-0001 fold-back
|
||||
|
||||
Committed v0.31.0 on the worktree branch. While pushing,
|
||||
**origin/main had moved** — a parallel session (0042.0) shipped
|
||||
v0.30.2 (header nav "Philosophy" → "About"), touching VERSION,
|
||||
package.json, CHANGELOG. Rebased onto the new main; resolved the three
|
||||
conflicts (kept 0.31.0; CHANGELOG order 0.31.0 → 0.30.2 → 0.30.1).
|
||||
Re-ran the full backend suite post-rebase: **375 passed**. Pushed
|
||||
`0c972c8` → origin `main` + tag `v0.31.0` + the **benstull mirror**
|
||||
(a transient LibreSSL `SSL_ERROR_SYSCALL` on the first origin-main push
|
||||
needed one retry; the tag + mirror landed first try).
|
||||
|
||||
Bumped the ohm-rfc pin 0.30.2 → 0.31.0 (`69121e6`) — done in an
|
||||
**isolated ohm-rfc worktree** because the shared checkout was on session
|
||||
0042's `philosophy/concept-not-word` branch. `flotilla deploy
|
||||
ohm-rfc-app` → **deploys.id=45**, all 9 steps green (no SSE-keepalive
|
||||
SIGTERM abort this time), v0.31.0 live + `/api/health` ok. Verified the
|
||||
dual-capable code still rendered RFC-0001 via the legacy per-repo path
|
||||
(repo still set, 22KB body from RFC.md).
|
||||
|
||||
Then folded RFC-0001 back (deploy-first ordering kept the live app from
|
||||
409-ing on a repo-null active): built the meta-only entry with the
|
||||
rfc-app `entry` serializer (round-trip checked — `repo: null`, state
|
||||
active, id RFC-0001, 22KB body restored), opened **ohm-meta PR #8**
|
||||
(branch `fold-human-meta-only`) via the #35 authoring lane, merged it;
|
||||
updated `rfc-0001-human/README.md` to an archive-notice pointer and
|
||||
**archived** the repo (`PATCH … {"archived": true}`). The ohm-meta
|
||||
webhook fired — the live catalog flipped `human` to `repo: None` with
|
||||
the body served from the meta entry, no reconciler wait needed.
|
||||
|
||||
Updated ROADMAP #36 (struck, meta-only, deploys.id=45) + #33 (added the
|
||||
ohm-content rename sub-item) in the ohm-rfc worktree, pushed `4526f64`.
|
||||
Removed both worktrees + branches.
|
||||
|
||||
---
|
||||
|
||||
## Cut state (end of session)
|
||||
|
||||
| repo | state |
|
||||
| --- | --- |
|
||||
| rfc-app | `main` = `0c972c8`, tag **v0.31.0** (origin + benstull mirror) |
|
||||
| ohm-rfc | `main` = `4526f64`; pin `.rfc-app-version` = **0.31.0**; ROADMAP #36 struck, #33 += rename |
|
||||
| ohm-meta | `human` = active, **repo: null**, body restored (PR #8 merged); `informed-consent` super-draft |
|
||||
| wiggleverse/rfc-0001-human | **archived** (README → archive-notice pointer) |
|
||||
| OHM live | **deploys.id=45, v0.31.0, healthy** |
|
||||
|
||||
| #36 ledger | Status |
|
||||
| --- | --- |
|
||||
| #36 RFC topology (meta-only) | ✅ shipped — rfc-app v0.31.0, deploys.id=45 |
|
||||
| RFC-0001 fold-back | ✅ done — ohm-meta PR #8 + repo archived |
|
||||
|
||||
---
|
||||
|
||||
## §19.2 / process candidates surfaced
|
||||
|
||||
1. **ohm-meta → ohm-content rename (#33).** The meta-only topology makes
|
||||
the repo the single content home; the name should follow. Config-
|
||||
driven (META_REPO overlay), no rfc-app code change. Captured in
|
||||
ROADMAP #33 + the next-session prompt below.
|
||||
2. **Authoring-lane token scope.** `ohm-gitea-token` is
|
||||
`write:repository` — cannot comment on PRs/issues (403, needs
|
||||
`write:issue`). Document or widen. (Memory written.)
|
||||
3. **SPEC incidental-reference sweep.** §1 carries a blanket
|
||||
supersession note for the ~30 incidental "RFC.md / the repo" mentions
|
||||
in later sections (the editing machinery is unchanged, only the
|
||||
location collapses). A future pass could rewrite each inline if the
|
||||
blanket note ever reads as ambiguous.
|
||||
|
||||
---
|
||||
|
||||
## What lands on the operator's plate
|
||||
|
||||
1. **ROADMAP #33 ohm-content rename** — operator-run ops gesture (gitea
|
||||
repo rename + META_REPO overlay + webhook + VM meta-content remote +
|
||||
redeploy). Prompt provided in chat + below.
|
||||
2. **RFC-0002 graduation is now unblocked** — graduating it is an
|
||||
in-place flip (no repo). Operator decides when/whether.
|
||||
|
||||
---
|
||||
|
||||
## 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-token` is `write:repository`
|
||||
scope; PR/issue commenting needs `write: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 → update `META_REPO` overlay → 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
|
||||
|
||||
```
|
||||
OHM driver session. Reserve your own session ID first
|
||||
(~/git/ohm-infra/scripts/claim-session-id.sh --start <YYYY-MM-DDTHH-MM>).
|
||||
Read ~/git/ohm-infra/SESSION-PROTOCOL.md once at start.
|
||||
|
||||
GOAL: ROADMAP #33 — rename the RFC content repository
|
||||
wiggleverse/ohm-meta → wiggleverse/ohm-content. The meta-only topology
|
||||
(#36, rfc-app v0.31.0, session 0041.0) made this repo the single
|
||||
canonical home of every RFC, so "meta" is now a misnomer and "content"
|
||||
tells a cleaner deployer story. OPERATIONAL/config move — the framework
|
||||
references the repo by the config-driven META_REPO name, so NO rfc-app
|
||||
code change is needed. (SPEC §1 already carries the "<deployment>-
|
||||
content" framing as of v0.31.0.)
|
||||
|
||||
PRE-STATE (confirm first):
|
||||
- OHM live: rfc-app v0.31.0 (deploys.id=45), meta-only.
|
||||
- RFC-0001 `human` is folded back: ohm-meta/rfcs/human.md has repo:null
|
||||
+ the full body; wiggleverse/rfc-0001-human is archived. Catalog:
|
||||
human (active, repo None) + informed-consent (super-draft).
|
||||
- Live META_REPO overlay = "ohm-meta"; gitea org = "wiggleverse".
|
||||
- Parallel session 0042 was on ohm-rfc branch philosophy/concept-not-word
|
||||
— ensure it's done before renaming the content repo.
|
||||
|
||||
THE MOVE (in order, verify each; quiet window, no in-flight edit/PR):
|
||||
1. Rename gitea repo: PATCH /repos/wiggleverse/ohm-meta {"name":
|
||||
"ohm-content"} (via the #35 authoring lane `api` verb). Gitea keeps
|
||||
attached webhooks + leaves an old-name redirect — confirm both.
|
||||
2. flotilla overlay set ohm-rfc-app META_REPO=ohm-content (overlay,
|
||||
NOT secret set — it's non-secret config).
|
||||
3. Update flotilla's webhook EXPECTATION in the §13 deployment record
|
||||
(the #18/v1.3.0 `webhook expect` set names ohm-meta → repoint to
|
||||
ohm-content), then `flotilla webhook check --org`.
|
||||
4. Re-point the VM meta-content checkout (PHILOSOPHY_PATH source at
|
||||
/opt/ohm-rfc-app/meta-content): update its origin remote to
|
||||
.../ohm-content.git and pull (manual — flotilla deploy doesn't
|
||||
refresh it).
|
||||
5. flotilla deploy ohm-rfc-app, then verify: /api/health ok; catalog
|
||||
lists human (active) + informed-consent (super-draft); a super-draft
|
||||
body-edit branch+PR round-trip works against the renamed repo.
|
||||
6. Sweep "ohm-meta" → "ohm-content" doc references (CLAUDE.md,
|
||||
SESSION-PROTOCOL.md, ROADMAP, deployment record). Strike #33's
|
||||
ohm-content sub-item.
|
||||
|
||||
GOTCHAS:
|
||||
- Do NOT rename ben/ohm-rfc (the DEPLOYMENT content repo with the pin +
|
||||
ROADMAP) — only the RFC framework meta repo ohm-meta → ohm-content.
|
||||
- Authoring-lane token is write:repository (opens/merges/closes PRs +
|
||||
PATCHes the repo, but cannot comment — 403; needs write:issue).
|
||||
- Broader #33 (ohm-infra → ohm-rfc-infra; fold ohm-session-history into
|
||||
ohm-rfc-infra/sessions/) is a separate multi-repo arc — only take it
|
||||
on if you intend that scope.
|
||||
|
||||
Context: ohm-rfc/ROADMAP.md #33 + #36; rfc-app SPEC §1/§13.6. Finalize +
|
||||
publish the transcript last.
|
||||
```
|
||||
@@ -1,152 +0,0 @@
|
||||
# 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
|
||||
|
||||
- [x] Claim session ID (0041).
|
||||
- [x] Close stale ohm-meta PR #2 (duplicate "Graduate human" PR).
|
||||
- [x] Read SPEC §1/§3/§13 + map the rfc-app graduation code surface.
|
||||
- [x] 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.
|
||||
- [x] Revise SPEC §1/§2/§3/§4/§9.8/§13 to meta-only (operator signed off
|
||||
on the diff).
|
||||
- [x] 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.
|
||||
- [x] Tests green (full suite 375 passed); frontend builds.
|
||||
- [x] Bump VERSION + package.json + CHANGELOG (v0.31.0).
|
||||
- [ ] RFC-0001 fold-back content migration (restore body to meta entry,
|
||||
`repo: null`, archive `wiggleverse/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/health` ok).
|
||||
- rfc-app `main` at `732b23b` (v0.30.1).
|
||||
- ohm-meta: `human` is **active** (RFC-0001, `repo:
|
||||
wiggleverse/rfc-0001-human`, graduated 2026-05-26, body stripped to
|
||||
frontmatter), `informed-consent` is a super-draft. `wiggleverse/rfc-0001-human`
|
||||
exists with a 22KB `RFC.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):
|
||||
1. **Settle #36 meta-only** (full code + deploy, not SPEC-only).
|
||||
2. **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.
|
||||
3. **Reframe the SPEC** for the "single content repository" deployer
|
||||
story (a framework-level win, not just OHM), keep `META_REPO` config
|
||||
term stable, and **track the concrete `ohm-meta → ohm-content`
|
||||
rename 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.py` rewritten: `GraduateBody` drops `repo_name`;
|
||||
`graduate_check` is two fields; the orchestrator is a two-step flip
|
||||
(`open_pr` → `merge_pr`) that **keeps the body** and sets `repo=None`;
|
||||
no rollback (merge-failure cleans up the unmerged PR + branch). New
|
||||
`graduate_failed` audit kind; removed the `graduate_repo_*` /
|
||||
`graduate_rollback` steps.
|
||||
- `bot.py`: `open_graduation_pr` drops `repo_full` + the "moves to
|
||||
RFC.md" PR body; deleted `create_rfc_repo_for_graduation`,
|
||||
`seed_graduated_rfc`, `delete_rfc_repo`.
|
||||
- Dispatch re-keyed on **meta-residency (`repo IS NULL`)** in
|
||||
`api_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-branch` now names an active RFC's auto-branch
|
||||
`edit-<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_history` scoped to legacy per-repo only.
|
||||
- `cache.py`: `refresh_meta_branches` includes 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.py` to 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);
|
||||
updated `test_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-token` is `write:repository`
|
||||
scope; PR/issue commenting needs `write: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 → update `META_REPO` overlay → 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)_
|
||||
Reference in New Issue
Block a user