diff --git a/SESSION-I-TRANSCRIPT.md b/SESSION-I-TRANSCRIPT.md index 3ac43e8..859934b 100644 --- a/SESSION-I-TRANSCRIPT.md +++ b/SESSION-I-TRANSCRIPT.md @@ -665,6 +665,128 @@ Pushed. --- +## Arc 15 — Transcripts published as `wiggleverse/ohm-session-history` + +After Wave 3 wrapped, the operator said "Let's stop and I'll start a +new session." The driver acknowledged and gave a clean-stop summary. +But before the operator opened a new session, they pivoted to item +#14: "Let's actually work on transcripts. I want those hosted on git. +I think a repo called ohm-session-history or something?" + +The §14 subagent's audit + plan + publish-script from Arc 9 turned +out to be exactly the foundation needed. Five clarifying questions +settled the open variables: + +1. **Repo name**: `ohm-session-history` (operator's suggestion; matched + "history" framing over "transcripts" — the latter is what the + format is, the former is what the corpus is for). +2. **Repo creation**: operator via gitea web UI (~30 seconds; the + driver lacked a gitea API token and the UI gesture is faster than + provisioning credentials). +3. **SESSION-H lines 683-685 audit finding**: ship as-is. The OAuth + client ID UUID is publicly visible to anyone who initiates the + OAuth flow on the live OHM instance; the two truncated secret + prefixes (`gto_oge…`, `2e05383a849…`) lack exploit entropy. +4. **SESSION-A inclusion**: yes, include it. The audit had + recommended exclude (since it predates OHM and covers + `git.benstull.org` not Wiggleverse); the operator overrode for + continuity. The README's session table calls out that A predates + OHM so readers understand the scope shift. +5. **License**: CC BY 4.0 — matches `ohm-rfc`'s precedent (same kind + of work — documentation/content, not code). + +### Mid-arc concurrency surprise — cross-session staged state question + +The operator's *other* Claude Code session asked them: "Another +session says there's stuff staged here. Is that true?" Triaged +in-line. + +Diagnosis: yes, 32 lines of staged/modified state in +`/Users/benstull/git/rfc-app` — but it's an artifact of the +Arc 8 / Arc 11 `git update-ref refs/heads/main` gesture this +session used to advance local main past v0.13.0 → v0.10.0 without +touching the operator's working tree. The working tree carries the +operator's pre-session docs-feature work authored against v0.3.0 +HEAD; the index advanced to v0.10.0; so every file in v0.10.0's +tree that isn't in the v0.3.0-based working tree appears as `D` +(staged-for-deletion), and every file modified since v0.3.0 appears +as `M` (staged-modification). The operator's untracked files +(`DOCS.md`, `backend/app/docs.py`, `frontend/src/components/Docs.jsx`) +were verified intact; the modified tracked files (`api.py`, +`App.jsx`, `api.js`) carry the operator's docs-feature additions in +the working-tree layer, even though the staged layer shows +subagent-era versions. **No data at risk; just a cosmetic side +effect of the update-ref discipline.** + +This is a §19.2 candidate worth surfacing: `git update-ref` is the +cleanest way to advance local main past a working-tree-modified +checkout, but the resulting `git status` output is confusing because +it conflates "files the working tree never had" with "files the +working tree explicitly removed." The fix when the operator's ready +to commit the docs feature is `git stash -u` → `git reset --hard main` +→ `git stash pop` + conflict resolution. Not urgent; documented in +the §19.2 list below and in the "operator's plate" section. + +### Bootstrap publish + +Driver `git clone`'d `ssh://git@git.wiggleverse.org:2222/wiggleverse/ohm-session-history.git` +(operator had just created it). The repo arrived initialized with CC +BY 4.0 LICENSE + a stub `README.md` ("Claude Code session transcripts +for creating OHM"). + +Driver: + +1. Copied SESSION-A from `~/git/benstull-infra/` (per operator's + "include it" answer). +2. Copied SESSION-B through SESSION-I from `~/git/ohm-infra/`. +3. Rewrote the README with: what the repo is, the per-session + topic table, the publish gesture, the "what this repo is not" + guard rails (not a discussion surface, not the spec, not a + curated retelling), and a related-repos list. +4. `git commit` + `git push origin main` — bootstrap commit + `5f4f76c`, 10 files, 10,587 insertions, 1 deletion (the stub + README). + +### Idempotency verification + +After the bootstrap, driver ran `~/git/ohm-infra/scripts/publish-transcript.sh --dry-run SESSION-I-TRANSCRIPT.md` to confirm the +single-session gesture works against the now-populated repo. Output: + +``` +[publish-transcript] header OK: # Session I — Transcript +[publish-transcript] size: 47095 bytes +[publish-transcript] cloning … -> /var/folders/…/repo +[publish-transcript] no changes — already published at 5f4f76c; exiting 0 +``` + +The publish script recognized the committed transcript and no-op'd. +Good. The single-session cadence from here on is the operator +running `publish-transcript.sh SESSION-X-TRANSCRIPT.md` at the end +of each future session; the script handles new-add, content-changed, +and already-published cases. + +### Closure + +`ohm-rfc/ROADMAP.md` updated: #14 struck through, row points at the +new repo + bootstrap commit. Committed (`0d1d47b`) and pushed. + +The driver also updated `~/git/ohm-infra/scripts/publish-transcript.sh` +(swapped `ohm-transcripts` → `ohm-session-history` throughout — five +occurrences in comments + the `REMOTE` default URL + the workdir +tempname) so the script's documentation matches the repo it points +at. The plan doc `~/git/ohm-infra/TRANSCRIPT-PUBLISHING-PLAN.md` was +NOT updated this turn — it's a historical artifact of the audit pass +and the references to `ohm-transcripts` reflect the planning state at +the time the §14 subagent ran. Leaving it alone preserves the +audit-trail shape; the operator can update or archive it later. + +This published transcript itself — the version on `wiggleverse/ohm-session-history` after the bootstrap commit — does not yet include +this arc. The next gesture (or the operator's first run of +`publish-transcript.sh SESSION-I-TRANSCRIPT.md` after this extension +commits) will push the diff. + +--- + ## Why the failure mode hadn't surfaced before This is the part worth understanding before acting on the §19.2 @@ -710,9 +832,10 @@ contributor to remember. | --- | --- | | flotilla | `cad9b5b` tag `v1.0.1` (unchanged — no flotilla changes this session) | | rfc-app | `55beba5` tag `v0.10.0` (latest). Tags pushed to origin + benstull through v0.4.0, v0.5.0, v0.6.0, v0.7.0, v0.8.0, v0.10.0, v0.13.0. | -| ohm-rfc | `3a8034d` (pin at `0.10.0`, ROADMAP strikethrough applied to #2, #3, #4, #5, #6, #8, #11). | +| ohm-rfc | `0d1d47b` (pin at `0.10.0`, ROADMAP strikethrough applied to #2, #3, #4, #5, #6, #8, #11, #14). | | OHM live | `deploys.id=11`, v0.10.0, healthy. `/api/health` returns `{"version":"0.10.0","status":"ok"}`. | | ohm-infra | unchanged in git (not a repo). New artifacts: `scripts/publish-transcript.sh`, `scripts/README.md`, `TRANSCRIPT-PUBLISHING-PLAN.md` (item #14 plan + audit + script). | +| ohm-session-history | **NEW.** `5f4f76c` bootstrap commit at `wiggleverse/ohm-session-history` on `git.wiggleverse.org`. CC BY 4.0. Sessions A–I published, 10,587 lines. SESSION-I will need a re-publish to include this Arc 15. | | Wave 1 ledger | Status | | --- | --- | @@ -730,7 +853,7 @@ contributor to remember. | --- | --- | | #6 Open beta-access request (v0.8.0) | ✅ rfc-app v0.8.0 + OHM `deploys.id=10`. Replaces v0.3.0 allowlist; new `permission_state` column with default `'granted'` so existing users grandfather; new OTC users land `'pending'` and capture first/last/why. Admin grant is operator-DB-UPDATE until v0.9.0 ships the UI. | | #8 User-set passcodes (v0.10.0) | ✅ rfc-app v0.10.0 + OHM `deploys.id=11`. Email+passcode primary; OTC remains fallback. 5-attempt lockout to 15 minutes via HTTP 423. | -| #14 Public transcripts | 🟡 plan + audit + script prepared at `~/git/ohm-infra/TRANSCRIPT-PUBLISHING-PLAN.md`. No publishing happened — gitea repo creation, redaction decision (SESSION-H lines 683-685 medium finding), and first-publish gesture are operator gates. | +| #14 Public transcripts | ✅ `wiggleverse/ohm-session-history` bootstrap commit `5f4f76c`. Sessions A–I published under CC BY 4.0. Future sessions use `~/git/ohm-infra/scripts/publish-transcript.sh`. Shipped in Arc 15 after Wave 3 wrap, in the same session. | ---