From 3713299f08be79d20d7feee5a248487c19174fe6 Mon Sep 17 00:00:00 2001 From: Ben Stull Date: Wed, 3 Jun 2026 06:54:38 -0700 Subject: [PATCH] reshape: move OHM transcripts under ohm/ for org-wide multi-app layout; add org-wide root README --- README.md | 193 ++---------------- ...RIPT-2026-05-25T15-00--2026-05-25T17-01.md | 0 ...RIPT-2026-05-25T19-30--2026-05-25T21-30.md | 0 ...RIPT-2026-05-27T06-00--2026-05-27T09-44.md | 0 ...RIPT-2026-05-27T15-30--2026-05-27T16-47.md | 0 ...RIPT-2026-05-27T17-00--2026-05-27T18-40.md | 0 ...RIPT-2026-05-27T19-00--2026-05-27T19-21.md | 0 ...RIPT-2026-05-27T19-30--2026-05-27T19-45.md | 0 ...RIPT-2026-05-27T20-00--2026-05-27T22-40.md | 0 ...RIPT-2026-05-27T23-30--2026-05-28T03-15.md | 0 ...RIPT-2026-05-27T23-50--2026-05-28T03-20.md | 0 ...RIPT-2026-05-28T03-20--2026-05-28T03-55.md | 0 ...RIPT-2026-05-28T04-22--2026-05-28T05-17.md | 0 ...RIPT-2026-05-28T05-26--2026-05-28T06-50.md | 0 ...RIPT-2026-05-28T05-30--2026-05-28T05-40.md | 0 ...RIPT-2026-05-28T05-30--2026-05-28T05-37.md | 0 ...RIPT-2026-05-28T05-30--2026-05-28T05-58.md | 0 ...RIPT-2026-05-28T07-01--2026-05-28T08-25.md | 0 ...RIPT-2026-05-28T07-08--2026-05-28T07-40.md | 0 ...RIPT-2026-05-28T07-44--2026-05-28T08-28.md | 0 ...RIPT-2026-05-28T08-50--2026-05-28T09-22.md | 0 ...RIPT-2026-05-28T08-52--2026-05-28T09-07.md | 0 ...RIPT-2026-05-28T09-10--2026-05-28T09-15.md | 0 ...RIPT-2026-05-28T09-23--2026-05-28T11-02.md | 0 ...RIPT-2026-05-28T10-58--2026-05-28T11-20.md | 0 ...RIPT-2026-05-28T12-04--2026-05-28T13-53.md | 0 ...RIPT-2026-05-28T12-04--2026-05-28T12-28.md | 0 ...RIPT-2026-05-28T12-04--2026-05-28T12-18.md | 0 ...RIPT-2026-05-28T18-40--2026-05-28T20-05.md | 0 ...RIPT-2026-05-28T13-06--2026-05-28T13-30.md | 0 ...TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md | 0 ...TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md | 0 ...RIPT-2026-05-28T14-05--2026-05-28T14-32.md | 0 ...RIPT-2026-05-28T15-47--2026-05-28T16-29.md | 0 ...RIPT-2026-05-28T16-12--2026-05-28T18-41.md | 0 ...RIPT-2026-05-28T17-14--2026-05-28T19-42.md | 0 ...RIPT-2026-05-28T18-52--2026-05-28T19-13.md | 0 ...RIPT-2026-05-28T19-44--2026-05-28T20-14.md | 0 ...RIPT-2026-05-28T20-25--2026-05-28T20-31.md | 0 ...RIPT-2026-05-28T20-43--2026-05-28T20-57.md | 0 ...RIPT-2026-05-29T00-03--2026-05-29T01-17.md | 0 ...RIPT-2026-05-28T23-20--2026-05-29T02-27.md | 0 ...RIPT-2026-05-29T01-24--2026-05-29T02-09.md | 0 ...RIPT-2026-05-29T01-10--2026-05-29T02-26.md | 0 ...RIPT-2026-05-29T04-12--2026-05-29T05-43.md | 0 ...RIPT-2026-05-29T05-45--2026-05-29T07-23.md | 0 ...RIPT-2026-05-29T06-51--2026-05-29T07-12.md | 0 ...RIPT-2026-05-29T07-26--2026-05-29T07-49.md | 0 ...RIPT-2026-05-29T07-27--2026-05-29T07-57.md | 0 ...TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md | 0 ...RIPT-2026-05-30T06-28--2026-05-30T11-01.md | 0 ...RIPT-2026-05-30T11-02--2026-05-30T12-47.md | 0 ...RIPT-2026-05-30T19-29--2026-05-31T07-25.md | 0 ...RIPT-2026-05-31T12-00--2026-05-31T17-37.md | 0 ...RIPT-2026-05-31T12-00--2026-05-31T12-00.md | 0 ...RIPT-2026-05-31T10-50--2026-05-31T11-13.md | 0 ...RIPT-2026-05-31T12-08--2026-05-31T20-42.md | 0 ...RIPT-2026-05-31T20-53--2026-06-01T03-02.md | 0 ...RIPT-2026-06-01T03-24--2026-06-01T03-25.md | 0 ...RIPT-2026-06-01T03-00--2026-06-01T03-35.md | 0 ...RIPT-2026-06-01T04-30--2026-06-01T05-30.md | 0 ...RIPT-2026-06-01T05-40--2026-06-01T06-00.md | 0 ...RIPT-2026-06-01T06-28--2026-06-01T06-52.md | 0 ...RIPT-2026-06-01T08-00--2026-06-01T11-00.md | 0 ...RIPT-2026-06-01T06-30--2026-06-01T10-16.md | 0 ...RIPT-2026-06-01T10-28--2026-06-01T22-25.md | 0 ...RIPT-2026-06-01T21-30--2026-06-01T22-58.md | 0 ...RIPT-2026-06-02T06-18--2026-06-02T09-11.md | 0 ...RIPT-2026-06-02T06-00--2026-06-02T06-55.md | 0 ...RIPT-2026-06-03T02-30--2026-06-03T05-12.md | 0 LICENSE => ohm/LICENSE | 0 ohm/README.md | 188 +++++++++++++++++ sessions.json => ohm/sessions.json | 0 73 files changed, 200 insertions(+), 181 deletions(-) rename {0001 => ohm/0001}/SESSION-0001.0-TRANSCRIPT-2026-05-25T15-00--2026-05-25T17-01.md (100%) rename {0002 => ohm/0002}/SESSION-0002.0-TRANSCRIPT-2026-05-25T19-30--2026-05-25T21-30.md (100%) rename {0003 => ohm/0003}/SESSION-0003.0-TRANSCRIPT-2026-05-27T06-00--2026-05-27T09-44.md (100%) rename {0004 => ohm/0004}/SESSION-0004.0-TRANSCRIPT-2026-05-27T15-30--2026-05-27T16-47.md (100%) rename {0005 => ohm/0005}/SESSION-0005.0-TRANSCRIPT-2026-05-27T17-00--2026-05-27T18-40.md (100%) rename {0006 => ohm/0006}/SESSION-0006.0-TRANSCRIPT-2026-05-27T19-00--2026-05-27T19-21.md (100%) rename {0007 => ohm/0007}/SESSION-0007.0-TRANSCRIPT-2026-05-27T19-30--2026-05-27T19-45.md (100%) rename {0008 => ohm/0008}/SESSION-0008.0-TRANSCRIPT-2026-05-27T20-00--2026-05-27T22-40.md (100%) rename {0009 => ohm/0009}/SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md (100%) rename {0010 => ohm/0010}/SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md (100%) rename {0011 => ohm/0011}/SESSION-0011.0-TRANSCRIPT-2026-05-28T03-20--2026-05-28T03-55.md (100%) rename {0012 => ohm/0012}/SESSION-0012.0-TRANSCRIPT-2026-05-28T04-22--2026-05-28T05-17.md (100%) rename {0013 => ohm/0013}/SESSION-0013.0-TRANSCRIPT-2026-05-28T05-26--2026-05-28T06-50.md (100%) rename {0013 => ohm/0013}/SESSION-0013.1-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-40.md (100%) rename {0013 => ohm/0013}/SESSION-0013.2-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-37.md (100%) rename {0013 => ohm/0013}/SESSION-0013.3-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-58.md (100%) rename {0014 => ohm/0014}/SESSION-0014.0-TRANSCRIPT-2026-05-28T07-01--2026-05-28T08-25.md (100%) rename {0014 => ohm/0014}/SESSION-0014.1-TRANSCRIPT-2026-05-28T07-08--2026-05-28T07-40.md (100%) rename {0015 => ohm/0015}/SESSION-0015.0-TRANSCRIPT-2026-05-28T07-44--2026-05-28T08-28.md (100%) rename {0017 => ohm/0017}/SESSION-0017.0-TRANSCRIPT-2026-05-28T08-50--2026-05-28T09-22.md (100%) rename {0017 => ohm/0017}/SESSION-0017.1-TRANSCRIPT-2026-05-28T08-52--2026-05-28T09-07.md (100%) rename {0017 => ohm/0017}/SESSION-0017.2-TRANSCRIPT-2026-05-28T09-10--2026-05-28T09-15.md (100%) rename {0018 => ohm/0018}/SESSION-0018.0-TRANSCRIPT-2026-05-28T09-23--2026-05-28T11-02.md (100%) rename {0021 => ohm/0021}/SESSION-0021.0-TRANSCRIPT-2026-05-28T10-58--2026-05-28T11-20.md (100%) rename {0022 => ohm/0022}/SESSION-0022.0-TRANSCRIPT-2026-05-28T12-04--2026-05-28T13-53.md (100%) rename {0022 => ohm/0022}/SESSION-0022.1-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-28.md (100%) rename {0022 => ohm/0022}/SESSION-0022.2-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-18.md (100%) rename {0024 => ohm/0024}/SESSION-0024.0-TRANSCRIPT-2026-05-28T18-40--2026-05-28T20-05.md (100%) rename {0025 => ohm/0025}/SESSION-0025.0-TRANSCRIPT-2026-05-28T13-06--2026-05-28T13-30.md (100%) rename {0026 => ohm/0026}/SESSION-0026.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md (100%) rename {0027 => ohm/0027}/SESSION-0027.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md (100%) rename {0028 => ohm/0028}/SESSION-0028.0-TRANSCRIPT-2026-05-28T14-05--2026-05-28T14-32.md (100%) rename {0029 => ohm/0029}/SESSION-0029.0-TRANSCRIPT-2026-05-28T15-47--2026-05-28T16-29.md (100%) rename {0030 => ohm/0030}/SESSION-0030.0-TRANSCRIPT-2026-05-28T16-12--2026-05-28T18-41.md (100%) rename {0031 => ohm/0031}/SESSION-0031.0-TRANSCRIPT-2026-05-28T17-14--2026-05-28T19-42.md (100%) rename {0032 => ohm/0032}/SESSION-0032.0-TRANSCRIPT-2026-05-28T18-52--2026-05-28T19-13.md (100%) rename {0033 => ohm/0033}/SESSION-0033.0-TRANSCRIPT-2026-05-28T19-44--2026-05-28T20-14.md (100%) rename {0034 => ohm/0034}/SESSION-0034.0-TRANSCRIPT-2026-05-28T20-25--2026-05-28T20-31.md (100%) rename {0035 => ohm/0035}/SESSION-0035.0-TRANSCRIPT-2026-05-28T20-43--2026-05-28T20-57.md (100%) rename {0036 => ohm/0036}/SESSION-0036.0-TRANSCRIPT-2026-05-29T00-03--2026-05-29T01-17.md (100%) rename {0037 => ohm/0037}/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md (100%) rename {0038 => ohm/0038}/SESSION-0038.0-TRANSCRIPT-2026-05-29T01-24--2026-05-29T02-09.md (100%) rename {0039 => ohm/0039}/SESSION-0039.0-TRANSCRIPT-2026-05-29T01-10--2026-05-29T02-26.md (100%) rename {0040 => ohm/0040}/SESSION-0040.0-TRANSCRIPT-2026-05-29T04-12--2026-05-29T05-43.md (100%) rename {0041 => ohm/0041}/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md (100%) rename {0042 => ohm/0042}/SESSION-0042.0-TRANSCRIPT-2026-05-29T06-51--2026-05-29T07-12.md (100%) rename {0043 => ohm/0043}/SESSION-0043.0-TRANSCRIPT-2026-05-29T07-26--2026-05-29T07-49.md (100%) rename {0044 => ohm/0044}/SESSION-0044.0-TRANSCRIPT-2026-05-29T07-27--2026-05-29T07-57.md (100%) rename {0045 => ohm/0045}/SESSION-0045.0-TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md (100%) rename {0046 => ohm/0046}/SESSION-0046.0-TRANSCRIPT-2026-05-30T06-28--2026-05-30T11-01.md (100%) rename {0047 => ohm/0047}/SESSION-0047.0-TRANSCRIPT-2026-05-30T11-02--2026-05-30T12-47.md (100%) rename {0048 => ohm/0048}/SESSION-0048.0-TRANSCRIPT-2026-05-30T19-29--2026-05-31T07-25.md (100%) rename {0049 => ohm/0049}/SESSION-0049.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T17-37.md (100%) rename {0050 => ohm/0050}/SESSION-0050.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T12-00.md (100%) rename {0051 => ohm/0051}/SESSION-0051.0-TRANSCRIPT-2026-05-31T10-50--2026-05-31T11-13.md (100%) rename {0052 => ohm/0052}/SESSION-0052.0-TRANSCRIPT-2026-05-31T12-08--2026-05-31T20-42.md (100%) rename {0053 => ohm/0053}/SESSION-0053.0-TRANSCRIPT-2026-05-31T20-53--2026-06-01T03-02.md (100%) rename {0054 => ohm/0054}/SESSION-0054.0-TRANSCRIPT-2026-06-01T03-24--2026-06-01T03-25.md (100%) rename {0055 => ohm/0055}/SESSION-0055.0-TRANSCRIPT-2026-06-01T03-00--2026-06-01T03-35.md (100%) rename {0056 => ohm/0056}/SESSION-0056.0-TRANSCRIPT-2026-06-01T04-30--2026-06-01T05-30.md (100%) rename {0057 => ohm/0057}/SESSION-0057.0-TRANSCRIPT-2026-06-01T05-40--2026-06-01T06-00.md (100%) rename {0058 => ohm/0058}/SESSION-0058.0-TRANSCRIPT-2026-06-01T06-28--2026-06-01T06-52.md (100%) rename {0059 => ohm/0059}/SESSION-0059.0-TRANSCRIPT-2026-06-01T08-00--2026-06-01T11-00.md (100%) rename {0060 => ohm/0060}/SESSION-0060.0-TRANSCRIPT-2026-06-01T06-30--2026-06-01T10-16.md (100%) rename {0061 => ohm/0061}/SESSION-0061.0-TRANSCRIPT-2026-06-01T10-28--2026-06-01T22-25.md (100%) rename {0062 => ohm/0062}/SESSION-0062.0-TRANSCRIPT-2026-06-01T21-30--2026-06-01T22-58.md (100%) rename {0063 => ohm/0063}/SESSION-0063.0-TRANSCRIPT-2026-06-02T06-18--2026-06-02T09-11.md (100%) rename {0064 => ohm/0064}/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md (100%) rename {0065 => ohm/0065}/SESSION-0065.0-TRANSCRIPT-2026-06-03T02-30--2026-06-03T05-12.md (100%) rename LICENSE => ohm/LICENSE (100%) create mode 100644 ohm/README.md rename sessions.json => ohm/sessions.json (100%) diff --git a/README.md b/README.md index 0543867..73a2008 100644 --- a/README.md +++ b/README.md @@ -1,188 +1,19 @@ -# ohm-session-history +# wiggleverse/session-history -Full Claude Code session transcripts from the build of the -[Open Human Model](https://ohm.wiggleverse.org) — including the -infrastructure work that preceded it (Session 0001: the -`git.benstull.org` personal-Gitea buildout) and every OHM session -since. - -Canonical location: -[`git.wiggleverse.org/wiggleverse/ohm-session-history`](https://git.wiggleverse.org/wiggleverse/ohm-session-history). -There is no GitHub mirror. The same content is rendered on-site at -[`ohm.wiggleverse.org/docs/sessions`](https://ohm.wiggleverse.org/docs/sessions) -(live from rfc-app v0.19.0+). - - -## Where the record begins - -OHM started with two vibe-coded prototypes — exploratory passes the -operator built to figure out what the project wanted to be. Neither -prototype produced a session transcript; the discipline that produced -this record didn't exist yet, and the work was more "what does this -even feel like to use" than "ship a deployable version." - -The first draft of the framework spec -([`rfc-app/SPEC.md`](https://git.wiggleverse.org/ben.stull/rfc-app/src/branch/main/SPEC.md)) -was written off what those prototypes had taught the operator. From -that draft onward, the build switched to spec-driven development: -every session reads the spec, advances one feature, lands on OHM, and -records what happened. The transcripts here start at that point — not -at the very beginning of OHM's existence, but at the beginning of -OHM-as-spec-driven-work. - -The two vibe-coded prototypes are not represented here. If you're -trying to understand how OHM thinks, the spec is the primary text; -the transcripts are the day-to-day record of how the spec gets -extended in use. - - -## How OHM gets built - -OHM is built in the open in the literal sense. Every build session -runs in Claude Code, with one human operator (Ben Stull) and one -agent (Claude). The session has a goal, the goal gets executed, and -when the session closes a transcript captures what happened — every -decision, every wrong turn, every recovery, every spec correction. -The transcripts land here. - -The build follows a few binding rules that show up in every session: - -- **One feature per session, one commit per gesture.** Sessions don't - branch into half-finished work. Either it ships (tag + push + deploy - + verify) or it stays uncommitted until the next session picks it - up — but it doesn't live half-on, half-off in a branch nobody owns. -- **Paired-session discipline.** The operator gates irreversible - gestures (DNS edits, IAM changes, secret rotations, force pushes - to protected branches). The agent drafts, the operator commits. - Secret bytes never enter the conversation; per - `ohm-rfc-app-flotilla/SPEC.md` §3 invariant 1, the build pipeline - has no path through which a secret value can touch the model. -- **Parallel forked subagents for fan-out waves.** When a session - has independent shippable items (e.g., three roadmap items targeting - three separate rfc-app minor releases), the driver dispatches them - in parallel as subagent threads. Each subagent writes its own - subsession transcript (numbered `.1`, `.2`, …) and the driver folds - the cross-reference into the main session transcript. -- **Cross-repo coherence.** OHM is three repos in lockstep: the - framework code (`rfc-app`), the deployment content (`ohm-rfc`, - including the pin file that names which rfc-app version OHM serves), - and the operator CLI (`ohm-rfc-app-flotilla`). When a session ships - across all three, the transcript names all three commit SHAs in - the cut-state table. No ambiguity about what landed where. - - -## Why the transcripts are public - -The transcripts are the artifact, not a polished retelling. They -include the gestures that worked and the ones that did not, the -mistakes and their recoveries, the `§19.2` candidates surfaced and -deferred (the running ledger of "this deserves its own session -later"), and the running thread of what the operator and the agent -actually did with each other this turn. - -The lesson from `rfc-app/SPEC.md` §19.3 is that the build is the -artifact; the cleanup is dishonest. A redacted record reads as if -the wrong turns never happened, which makes the path look obvious -when in fact the choosing was the work. So no curation. If a -session hit a dead end, the dead end stays. If the operator violated -a hard rule and recovered, the violation stays and so does the -recovery. The only filter is `§3` invariant 1: no secret bytes, -ever. - -The transcripts are the cross-session driver brief. Future sessions -read the last session's transcript before opening — that's how -context survives the gap between sessions when the operator and -the agent are both fresh. The closing block of each transcript -includes a paste-ready prompt for the next session. - -Oh and Jan, your joke is in there somewhere. - - -## What's in the repo - -Layout: one folder per session, keyed by the 4-digit session number, -with the full `SESSION-NNNN.M-TRANSCRIPT---.md` filename -inside the folder (the `SESSION-` prefix is retained so files remain -self-identifying when shared as raw links). Subagent transcripts -(`.1`, `.2`, …) sit in the same folder as their parent driver -transcript. +Org-wide published **session transcripts** for Wiggleverse apps. Each app's +transcripts live under its own `/` subfolder, numbered per app, one folder +per session: ``` -README.md -sessions.json -0001/ - SESSION-0001.0-TRANSCRIPT-…md -0013/ - SESSION-0013.0-TRANSCRIPT-…md - SESSION-0013.1-TRANSCRIPT-…md - SESSION-0013.2-TRANSCRIPT-…md - SESSION-0013.3-TRANSCRIPT-…md -… +/sessions.json # per-app title manifest, keyed by NNNN +/NNNN/SESSION-NNNN.M-TRANSCRIPT---.md ``` -`sessions.json` is the title manifest — a flat JSON object keyed by -the 4-digit session number, with a human-readable title for each. -The on-site sessions browser at `ohm.wiggleverse.org/docs/sessions` -reads this file to render the nav. Subagent transcripts inherit -their parent session's title; the `.N` ordinal disambiguates rows -under the parent. +Apps currently publishing here: -Sessions 0001 through 0013 originally shipped under a letter-form -naming (`SESSION-A` through `SESSION-M`). Roadmap item #23 (executed -in session 0014.0) renamed every file to the zero-padded numeric -form via `git mv` so the audit trail shows file-was-renamed rather -than file-was-deleted-and-recreated. Initially the file-level rename -was filename-only — the bodies still read "Session I" / "Session M.1" -internally — but session 0018.0 also rewrote the bodies to use the -numeric form throughout, so cross-references inside a transcript -match the filename you'd browse to. The legacy mapping table -(`A → 0001`, …, `N → 0014`) lives in `SESSION-PROTOCOL.md` §1 on -the private-but-referenced `ohm-infra` working repo, in case you -encounter a stray legacy reference in older external links. +- **`ohm/`** — Open Human Model (the rfc-app deployment). +- **`ecomm/`** — Wiggleverse ecomm. -## How transcripts get added - -The pattern at the end of each session: the driver writes -`SESSION-NNNN.M-TRANSCRIPT---.md` to `~/git/ohm-infra/` -locally, the operator reviews, and the one-line publish script -copies the file into the matching `NNNN/` folder here and pushes: - -```bash -~/git/ohm-infra/scripts/publish-transcript.sh \ - SESSION-0017.0-TRANSCRIPT-2026-05-28T08-52--2026-05-28T10-30.md -``` - -The script is idempotent: re-running on an already-published -transcript no-ops; re-running on an updated transcript pushes the -diff with a commit message of the form `update SESSION-…md`. The -script also handles the folder placement — it parses the leading -`NNNN` from the filename and routes into the matching folder. - -## What this repo is not - -- **Not a place to discuss OHM.** Discussion lives on - [ohm.wiggleverse.org](https://ohm.wiggleverse.org) itself, per the - PR-less per-RFC discussion surface (rfc-app v0.5.0). Issues opened - here will likely go unanswered; the work is the corpus. -- **Not the canonical spec.** That lives in `rfc-app/SPEC.md` and - `ohm-rfc-app-flotilla/SPEC.md` on their respective repos under - `wiggleverse/`. Transcripts reference spec sections; the spec is - authoritative when the two disagree. -- **Not a curated retelling.** Beyond the audit pass documented in - `ohm-infra/TRANSCRIPT-PUBLISHING-PLAN.md` (kept private, no secret - bytes), nothing has been redacted. Wrong turns stay in. Operator - quirks and self-corrections stay in. - -## Related repos - -- [`wiggleverse/ohm-rfc`](https://git.wiggleverse.org/wiggleverse/ohm-rfc) - — the OHM content repo (RFCs, deployment pin, roadmap). -- [`ben.stull/rfc-app`](https://git.wiggleverse.org/ben.stull/rfc-app) - — the framework code OHM runs. -- [`wiggleverse/ohm-rfc-app-flotilla`](https://git.wiggleverse.org/wiggleverse/ohm-rfc-app-flotilla) - — the operator CLI for OHM deploys. - -## License - -[CC BY 4.0](./LICENSE). Copy, modify, redistribute freely; credit -the author. Same license as the OHM content repo. +The convention and tooling are the Wiggleverse Session Protocol +(`wgl-session-common` skill); each app declares its sessions home in its +`app.json` (schema: `wiggleverse/engineering/schemas/app.schema.json`). diff --git a/0001/SESSION-0001.0-TRANSCRIPT-2026-05-25T15-00--2026-05-25T17-01.md b/ohm/0001/SESSION-0001.0-TRANSCRIPT-2026-05-25T15-00--2026-05-25T17-01.md similarity index 100% rename from 0001/SESSION-0001.0-TRANSCRIPT-2026-05-25T15-00--2026-05-25T17-01.md rename to ohm/0001/SESSION-0001.0-TRANSCRIPT-2026-05-25T15-00--2026-05-25T17-01.md diff --git a/0002/SESSION-0002.0-TRANSCRIPT-2026-05-25T19-30--2026-05-25T21-30.md b/ohm/0002/SESSION-0002.0-TRANSCRIPT-2026-05-25T19-30--2026-05-25T21-30.md similarity index 100% rename from 0002/SESSION-0002.0-TRANSCRIPT-2026-05-25T19-30--2026-05-25T21-30.md rename to ohm/0002/SESSION-0002.0-TRANSCRIPT-2026-05-25T19-30--2026-05-25T21-30.md diff --git a/0003/SESSION-0003.0-TRANSCRIPT-2026-05-27T06-00--2026-05-27T09-44.md b/ohm/0003/SESSION-0003.0-TRANSCRIPT-2026-05-27T06-00--2026-05-27T09-44.md similarity index 100% rename from 0003/SESSION-0003.0-TRANSCRIPT-2026-05-27T06-00--2026-05-27T09-44.md rename to ohm/0003/SESSION-0003.0-TRANSCRIPT-2026-05-27T06-00--2026-05-27T09-44.md diff --git a/0004/SESSION-0004.0-TRANSCRIPT-2026-05-27T15-30--2026-05-27T16-47.md b/ohm/0004/SESSION-0004.0-TRANSCRIPT-2026-05-27T15-30--2026-05-27T16-47.md similarity index 100% rename from 0004/SESSION-0004.0-TRANSCRIPT-2026-05-27T15-30--2026-05-27T16-47.md rename to ohm/0004/SESSION-0004.0-TRANSCRIPT-2026-05-27T15-30--2026-05-27T16-47.md diff --git a/0005/SESSION-0005.0-TRANSCRIPT-2026-05-27T17-00--2026-05-27T18-40.md b/ohm/0005/SESSION-0005.0-TRANSCRIPT-2026-05-27T17-00--2026-05-27T18-40.md similarity index 100% rename from 0005/SESSION-0005.0-TRANSCRIPT-2026-05-27T17-00--2026-05-27T18-40.md rename to ohm/0005/SESSION-0005.0-TRANSCRIPT-2026-05-27T17-00--2026-05-27T18-40.md diff --git a/0006/SESSION-0006.0-TRANSCRIPT-2026-05-27T19-00--2026-05-27T19-21.md b/ohm/0006/SESSION-0006.0-TRANSCRIPT-2026-05-27T19-00--2026-05-27T19-21.md similarity index 100% rename from 0006/SESSION-0006.0-TRANSCRIPT-2026-05-27T19-00--2026-05-27T19-21.md rename to ohm/0006/SESSION-0006.0-TRANSCRIPT-2026-05-27T19-00--2026-05-27T19-21.md diff --git a/0007/SESSION-0007.0-TRANSCRIPT-2026-05-27T19-30--2026-05-27T19-45.md b/ohm/0007/SESSION-0007.0-TRANSCRIPT-2026-05-27T19-30--2026-05-27T19-45.md similarity index 100% rename from 0007/SESSION-0007.0-TRANSCRIPT-2026-05-27T19-30--2026-05-27T19-45.md rename to ohm/0007/SESSION-0007.0-TRANSCRIPT-2026-05-27T19-30--2026-05-27T19-45.md diff --git a/0008/SESSION-0008.0-TRANSCRIPT-2026-05-27T20-00--2026-05-27T22-40.md b/ohm/0008/SESSION-0008.0-TRANSCRIPT-2026-05-27T20-00--2026-05-27T22-40.md similarity index 100% rename from 0008/SESSION-0008.0-TRANSCRIPT-2026-05-27T20-00--2026-05-27T22-40.md rename to ohm/0008/SESSION-0008.0-TRANSCRIPT-2026-05-27T20-00--2026-05-27T22-40.md diff --git a/0009/SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md b/ohm/0009/SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md similarity index 100% rename from 0009/SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md rename to ohm/0009/SESSION-0009.0-TRANSCRIPT-2026-05-27T23-30--2026-05-28T03-15.md diff --git a/0010/SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md b/ohm/0010/SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md similarity index 100% rename from 0010/SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md rename to ohm/0010/SESSION-0010.0-TRANSCRIPT-2026-05-27T23-50--2026-05-28T03-20.md diff --git a/0011/SESSION-0011.0-TRANSCRIPT-2026-05-28T03-20--2026-05-28T03-55.md b/ohm/0011/SESSION-0011.0-TRANSCRIPT-2026-05-28T03-20--2026-05-28T03-55.md similarity index 100% rename from 0011/SESSION-0011.0-TRANSCRIPT-2026-05-28T03-20--2026-05-28T03-55.md rename to ohm/0011/SESSION-0011.0-TRANSCRIPT-2026-05-28T03-20--2026-05-28T03-55.md diff --git a/0012/SESSION-0012.0-TRANSCRIPT-2026-05-28T04-22--2026-05-28T05-17.md b/ohm/0012/SESSION-0012.0-TRANSCRIPT-2026-05-28T04-22--2026-05-28T05-17.md similarity index 100% rename from 0012/SESSION-0012.0-TRANSCRIPT-2026-05-28T04-22--2026-05-28T05-17.md rename to ohm/0012/SESSION-0012.0-TRANSCRIPT-2026-05-28T04-22--2026-05-28T05-17.md diff --git a/0013/SESSION-0013.0-TRANSCRIPT-2026-05-28T05-26--2026-05-28T06-50.md b/ohm/0013/SESSION-0013.0-TRANSCRIPT-2026-05-28T05-26--2026-05-28T06-50.md similarity index 100% rename from 0013/SESSION-0013.0-TRANSCRIPT-2026-05-28T05-26--2026-05-28T06-50.md rename to ohm/0013/SESSION-0013.0-TRANSCRIPT-2026-05-28T05-26--2026-05-28T06-50.md diff --git a/0013/SESSION-0013.1-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-40.md b/ohm/0013/SESSION-0013.1-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-40.md similarity index 100% rename from 0013/SESSION-0013.1-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-40.md rename to ohm/0013/SESSION-0013.1-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-40.md diff --git a/0013/SESSION-0013.2-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-37.md b/ohm/0013/SESSION-0013.2-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-37.md similarity index 100% rename from 0013/SESSION-0013.2-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-37.md rename to ohm/0013/SESSION-0013.2-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-37.md diff --git a/0013/SESSION-0013.3-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-58.md b/ohm/0013/SESSION-0013.3-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-58.md similarity index 100% rename from 0013/SESSION-0013.3-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-58.md rename to ohm/0013/SESSION-0013.3-TRANSCRIPT-2026-05-28T05-30--2026-05-28T05-58.md diff --git a/0014/SESSION-0014.0-TRANSCRIPT-2026-05-28T07-01--2026-05-28T08-25.md b/ohm/0014/SESSION-0014.0-TRANSCRIPT-2026-05-28T07-01--2026-05-28T08-25.md similarity index 100% rename from 0014/SESSION-0014.0-TRANSCRIPT-2026-05-28T07-01--2026-05-28T08-25.md rename to ohm/0014/SESSION-0014.0-TRANSCRIPT-2026-05-28T07-01--2026-05-28T08-25.md diff --git a/0014/SESSION-0014.1-TRANSCRIPT-2026-05-28T07-08--2026-05-28T07-40.md b/ohm/0014/SESSION-0014.1-TRANSCRIPT-2026-05-28T07-08--2026-05-28T07-40.md similarity index 100% rename from 0014/SESSION-0014.1-TRANSCRIPT-2026-05-28T07-08--2026-05-28T07-40.md rename to ohm/0014/SESSION-0014.1-TRANSCRIPT-2026-05-28T07-08--2026-05-28T07-40.md diff --git a/0015/SESSION-0015.0-TRANSCRIPT-2026-05-28T07-44--2026-05-28T08-28.md b/ohm/0015/SESSION-0015.0-TRANSCRIPT-2026-05-28T07-44--2026-05-28T08-28.md similarity index 100% rename from 0015/SESSION-0015.0-TRANSCRIPT-2026-05-28T07-44--2026-05-28T08-28.md rename to ohm/0015/SESSION-0015.0-TRANSCRIPT-2026-05-28T07-44--2026-05-28T08-28.md diff --git a/0017/SESSION-0017.0-TRANSCRIPT-2026-05-28T08-50--2026-05-28T09-22.md b/ohm/0017/SESSION-0017.0-TRANSCRIPT-2026-05-28T08-50--2026-05-28T09-22.md similarity index 100% rename from 0017/SESSION-0017.0-TRANSCRIPT-2026-05-28T08-50--2026-05-28T09-22.md rename to ohm/0017/SESSION-0017.0-TRANSCRIPT-2026-05-28T08-50--2026-05-28T09-22.md diff --git a/0017/SESSION-0017.1-TRANSCRIPT-2026-05-28T08-52--2026-05-28T09-07.md b/ohm/0017/SESSION-0017.1-TRANSCRIPT-2026-05-28T08-52--2026-05-28T09-07.md similarity index 100% rename from 0017/SESSION-0017.1-TRANSCRIPT-2026-05-28T08-52--2026-05-28T09-07.md rename to ohm/0017/SESSION-0017.1-TRANSCRIPT-2026-05-28T08-52--2026-05-28T09-07.md diff --git a/0017/SESSION-0017.2-TRANSCRIPT-2026-05-28T09-10--2026-05-28T09-15.md b/ohm/0017/SESSION-0017.2-TRANSCRIPT-2026-05-28T09-10--2026-05-28T09-15.md similarity index 100% rename from 0017/SESSION-0017.2-TRANSCRIPT-2026-05-28T09-10--2026-05-28T09-15.md rename to ohm/0017/SESSION-0017.2-TRANSCRIPT-2026-05-28T09-10--2026-05-28T09-15.md diff --git a/0018/SESSION-0018.0-TRANSCRIPT-2026-05-28T09-23--2026-05-28T11-02.md b/ohm/0018/SESSION-0018.0-TRANSCRIPT-2026-05-28T09-23--2026-05-28T11-02.md similarity index 100% rename from 0018/SESSION-0018.0-TRANSCRIPT-2026-05-28T09-23--2026-05-28T11-02.md rename to ohm/0018/SESSION-0018.0-TRANSCRIPT-2026-05-28T09-23--2026-05-28T11-02.md diff --git a/0021/SESSION-0021.0-TRANSCRIPT-2026-05-28T10-58--2026-05-28T11-20.md b/ohm/0021/SESSION-0021.0-TRANSCRIPT-2026-05-28T10-58--2026-05-28T11-20.md similarity index 100% rename from 0021/SESSION-0021.0-TRANSCRIPT-2026-05-28T10-58--2026-05-28T11-20.md rename to ohm/0021/SESSION-0021.0-TRANSCRIPT-2026-05-28T10-58--2026-05-28T11-20.md diff --git a/0022/SESSION-0022.0-TRANSCRIPT-2026-05-28T12-04--2026-05-28T13-53.md b/ohm/0022/SESSION-0022.0-TRANSCRIPT-2026-05-28T12-04--2026-05-28T13-53.md similarity index 100% rename from 0022/SESSION-0022.0-TRANSCRIPT-2026-05-28T12-04--2026-05-28T13-53.md rename to ohm/0022/SESSION-0022.0-TRANSCRIPT-2026-05-28T12-04--2026-05-28T13-53.md diff --git a/0022/SESSION-0022.1-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-28.md b/ohm/0022/SESSION-0022.1-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-28.md similarity index 100% rename from 0022/SESSION-0022.1-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-28.md rename to ohm/0022/SESSION-0022.1-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-28.md diff --git a/0022/SESSION-0022.2-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-18.md b/ohm/0022/SESSION-0022.2-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-18.md similarity index 100% rename from 0022/SESSION-0022.2-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-18.md rename to ohm/0022/SESSION-0022.2-TRANSCRIPT-2026-05-28T12-04--2026-05-28T12-18.md diff --git a/0024/SESSION-0024.0-TRANSCRIPT-2026-05-28T18-40--2026-05-28T20-05.md b/ohm/0024/SESSION-0024.0-TRANSCRIPT-2026-05-28T18-40--2026-05-28T20-05.md similarity index 100% rename from 0024/SESSION-0024.0-TRANSCRIPT-2026-05-28T18-40--2026-05-28T20-05.md rename to ohm/0024/SESSION-0024.0-TRANSCRIPT-2026-05-28T18-40--2026-05-28T20-05.md diff --git a/0025/SESSION-0025.0-TRANSCRIPT-2026-05-28T13-06--2026-05-28T13-30.md b/ohm/0025/SESSION-0025.0-TRANSCRIPT-2026-05-28T13-06--2026-05-28T13-30.md similarity index 100% rename from 0025/SESSION-0025.0-TRANSCRIPT-2026-05-28T13-06--2026-05-28T13-30.md rename to ohm/0025/SESSION-0025.0-TRANSCRIPT-2026-05-28T13-06--2026-05-28T13-30.md diff --git a/0026/SESSION-0026.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md b/ohm/0026/SESSION-0026.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md similarity index 100% rename from 0026/SESSION-0026.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md rename to ohm/0026/SESSION-0026.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md diff --git a/0027/SESSION-0027.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md b/ohm/0027/SESSION-0027.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md similarity index 100% rename from 0027/SESSION-0027.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md rename to ohm/0027/SESSION-0027.0-TRANSCRIPT-2026-05-28T13-46--INPROGRESS.md diff --git a/0028/SESSION-0028.0-TRANSCRIPT-2026-05-28T14-05--2026-05-28T14-32.md b/ohm/0028/SESSION-0028.0-TRANSCRIPT-2026-05-28T14-05--2026-05-28T14-32.md similarity index 100% rename from 0028/SESSION-0028.0-TRANSCRIPT-2026-05-28T14-05--2026-05-28T14-32.md rename to ohm/0028/SESSION-0028.0-TRANSCRIPT-2026-05-28T14-05--2026-05-28T14-32.md diff --git a/0029/SESSION-0029.0-TRANSCRIPT-2026-05-28T15-47--2026-05-28T16-29.md b/ohm/0029/SESSION-0029.0-TRANSCRIPT-2026-05-28T15-47--2026-05-28T16-29.md similarity index 100% rename from 0029/SESSION-0029.0-TRANSCRIPT-2026-05-28T15-47--2026-05-28T16-29.md rename to ohm/0029/SESSION-0029.0-TRANSCRIPT-2026-05-28T15-47--2026-05-28T16-29.md diff --git a/0030/SESSION-0030.0-TRANSCRIPT-2026-05-28T16-12--2026-05-28T18-41.md b/ohm/0030/SESSION-0030.0-TRANSCRIPT-2026-05-28T16-12--2026-05-28T18-41.md similarity index 100% rename from 0030/SESSION-0030.0-TRANSCRIPT-2026-05-28T16-12--2026-05-28T18-41.md rename to ohm/0030/SESSION-0030.0-TRANSCRIPT-2026-05-28T16-12--2026-05-28T18-41.md diff --git a/0031/SESSION-0031.0-TRANSCRIPT-2026-05-28T17-14--2026-05-28T19-42.md b/ohm/0031/SESSION-0031.0-TRANSCRIPT-2026-05-28T17-14--2026-05-28T19-42.md similarity index 100% rename from 0031/SESSION-0031.0-TRANSCRIPT-2026-05-28T17-14--2026-05-28T19-42.md rename to ohm/0031/SESSION-0031.0-TRANSCRIPT-2026-05-28T17-14--2026-05-28T19-42.md diff --git a/0032/SESSION-0032.0-TRANSCRIPT-2026-05-28T18-52--2026-05-28T19-13.md b/ohm/0032/SESSION-0032.0-TRANSCRIPT-2026-05-28T18-52--2026-05-28T19-13.md similarity index 100% rename from 0032/SESSION-0032.0-TRANSCRIPT-2026-05-28T18-52--2026-05-28T19-13.md rename to ohm/0032/SESSION-0032.0-TRANSCRIPT-2026-05-28T18-52--2026-05-28T19-13.md diff --git a/0033/SESSION-0033.0-TRANSCRIPT-2026-05-28T19-44--2026-05-28T20-14.md b/ohm/0033/SESSION-0033.0-TRANSCRIPT-2026-05-28T19-44--2026-05-28T20-14.md similarity index 100% rename from 0033/SESSION-0033.0-TRANSCRIPT-2026-05-28T19-44--2026-05-28T20-14.md rename to ohm/0033/SESSION-0033.0-TRANSCRIPT-2026-05-28T19-44--2026-05-28T20-14.md diff --git a/0034/SESSION-0034.0-TRANSCRIPT-2026-05-28T20-25--2026-05-28T20-31.md b/ohm/0034/SESSION-0034.0-TRANSCRIPT-2026-05-28T20-25--2026-05-28T20-31.md similarity index 100% rename from 0034/SESSION-0034.0-TRANSCRIPT-2026-05-28T20-25--2026-05-28T20-31.md rename to ohm/0034/SESSION-0034.0-TRANSCRIPT-2026-05-28T20-25--2026-05-28T20-31.md diff --git a/0035/SESSION-0035.0-TRANSCRIPT-2026-05-28T20-43--2026-05-28T20-57.md b/ohm/0035/SESSION-0035.0-TRANSCRIPT-2026-05-28T20-43--2026-05-28T20-57.md similarity index 100% rename from 0035/SESSION-0035.0-TRANSCRIPT-2026-05-28T20-43--2026-05-28T20-57.md rename to ohm/0035/SESSION-0035.0-TRANSCRIPT-2026-05-28T20-43--2026-05-28T20-57.md diff --git a/0036/SESSION-0036.0-TRANSCRIPT-2026-05-29T00-03--2026-05-29T01-17.md b/ohm/0036/SESSION-0036.0-TRANSCRIPT-2026-05-29T00-03--2026-05-29T01-17.md similarity index 100% rename from 0036/SESSION-0036.0-TRANSCRIPT-2026-05-29T00-03--2026-05-29T01-17.md rename to ohm/0036/SESSION-0036.0-TRANSCRIPT-2026-05-29T00-03--2026-05-29T01-17.md diff --git a/0037/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md b/ohm/0037/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md similarity index 100% rename from 0037/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md rename to ohm/0037/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md diff --git a/0038/SESSION-0038.0-TRANSCRIPT-2026-05-29T01-24--2026-05-29T02-09.md b/ohm/0038/SESSION-0038.0-TRANSCRIPT-2026-05-29T01-24--2026-05-29T02-09.md similarity index 100% rename from 0038/SESSION-0038.0-TRANSCRIPT-2026-05-29T01-24--2026-05-29T02-09.md rename to ohm/0038/SESSION-0038.0-TRANSCRIPT-2026-05-29T01-24--2026-05-29T02-09.md diff --git a/0039/SESSION-0039.0-TRANSCRIPT-2026-05-29T01-10--2026-05-29T02-26.md b/ohm/0039/SESSION-0039.0-TRANSCRIPT-2026-05-29T01-10--2026-05-29T02-26.md similarity index 100% rename from 0039/SESSION-0039.0-TRANSCRIPT-2026-05-29T01-10--2026-05-29T02-26.md rename to ohm/0039/SESSION-0039.0-TRANSCRIPT-2026-05-29T01-10--2026-05-29T02-26.md diff --git a/0040/SESSION-0040.0-TRANSCRIPT-2026-05-29T04-12--2026-05-29T05-43.md b/ohm/0040/SESSION-0040.0-TRANSCRIPT-2026-05-29T04-12--2026-05-29T05-43.md similarity index 100% rename from 0040/SESSION-0040.0-TRANSCRIPT-2026-05-29T04-12--2026-05-29T05-43.md rename to ohm/0040/SESSION-0040.0-TRANSCRIPT-2026-05-29T04-12--2026-05-29T05-43.md diff --git a/0041/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md b/ohm/0041/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md similarity index 100% rename from 0041/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md rename to ohm/0041/SESSION-0041.0-TRANSCRIPT-2026-05-29T05-45--2026-05-29T07-23.md diff --git a/0042/SESSION-0042.0-TRANSCRIPT-2026-05-29T06-51--2026-05-29T07-12.md b/ohm/0042/SESSION-0042.0-TRANSCRIPT-2026-05-29T06-51--2026-05-29T07-12.md similarity index 100% rename from 0042/SESSION-0042.0-TRANSCRIPT-2026-05-29T06-51--2026-05-29T07-12.md rename to ohm/0042/SESSION-0042.0-TRANSCRIPT-2026-05-29T06-51--2026-05-29T07-12.md diff --git a/0043/SESSION-0043.0-TRANSCRIPT-2026-05-29T07-26--2026-05-29T07-49.md b/ohm/0043/SESSION-0043.0-TRANSCRIPT-2026-05-29T07-26--2026-05-29T07-49.md similarity index 100% rename from 0043/SESSION-0043.0-TRANSCRIPT-2026-05-29T07-26--2026-05-29T07-49.md rename to ohm/0043/SESSION-0043.0-TRANSCRIPT-2026-05-29T07-26--2026-05-29T07-49.md diff --git a/0044/SESSION-0044.0-TRANSCRIPT-2026-05-29T07-27--2026-05-29T07-57.md b/ohm/0044/SESSION-0044.0-TRANSCRIPT-2026-05-29T07-27--2026-05-29T07-57.md similarity index 100% rename from 0044/SESSION-0044.0-TRANSCRIPT-2026-05-29T07-27--2026-05-29T07-57.md rename to ohm/0044/SESSION-0044.0-TRANSCRIPT-2026-05-29T07-27--2026-05-29T07-57.md diff --git a/0045/SESSION-0045.0-TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md b/ohm/0045/SESSION-0045.0-TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md similarity index 100% rename from 0045/SESSION-0045.0-TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md rename to ohm/0045/SESSION-0045.0-TRANSCRIPT-2026-05-29T21-26--INPROGRESS.md diff --git a/0046/SESSION-0046.0-TRANSCRIPT-2026-05-30T06-28--2026-05-30T11-01.md b/ohm/0046/SESSION-0046.0-TRANSCRIPT-2026-05-30T06-28--2026-05-30T11-01.md similarity index 100% rename from 0046/SESSION-0046.0-TRANSCRIPT-2026-05-30T06-28--2026-05-30T11-01.md rename to ohm/0046/SESSION-0046.0-TRANSCRIPT-2026-05-30T06-28--2026-05-30T11-01.md diff --git a/0047/SESSION-0047.0-TRANSCRIPT-2026-05-30T11-02--2026-05-30T12-47.md b/ohm/0047/SESSION-0047.0-TRANSCRIPT-2026-05-30T11-02--2026-05-30T12-47.md similarity index 100% rename from 0047/SESSION-0047.0-TRANSCRIPT-2026-05-30T11-02--2026-05-30T12-47.md rename to ohm/0047/SESSION-0047.0-TRANSCRIPT-2026-05-30T11-02--2026-05-30T12-47.md diff --git a/0048/SESSION-0048.0-TRANSCRIPT-2026-05-30T19-29--2026-05-31T07-25.md b/ohm/0048/SESSION-0048.0-TRANSCRIPT-2026-05-30T19-29--2026-05-31T07-25.md similarity index 100% rename from 0048/SESSION-0048.0-TRANSCRIPT-2026-05-30T19-29--2026-05-31T07-25.md rename to ohm/0048/SESSION-0048.0-TRANSCRIPT-2026-05-30T19-29--2026-05-31T07-25.md diff --git a/0049/SESSION-0049.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T17-37.md b/ohm/0049/SESSION-0049.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T17-37.md similarity index 100% rename from 0049/SESSION-0049.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T17-37.md rename to ohm/0049/SESSION-0049.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T17-37.md diff --git a/0050/SESSION-0050.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T12-00.md b/ohm/0050/SESSION-0050.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T12-00.md similarity index 100% rename from 0050/SESSION-0050.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T12-00.md rename to ohm/0050/SESSION-0050.0-TRANSCRIPT-2026-05-31T12-00--2026-05-31T12-00.md diff --git a/0051/SESSION-0051.0-TRANSCRIPT-2026-05-31T10-50--2026-05-31T11-13.md b/ohm/0051/SESSION-0051.0-TRANSCRIPT-2026-05-31T10-50--2026-05-31T11-13.md similarity index 100% rename from 0051/SESSION-0051.0-TRANSCRIPT-2026-05-31T10-50--2026-05-31T11-13.md rename to ohm/0051/SESSION-0051.0-TRANSCRIPT-2026-05-31T10-50--2026-05-31T11-13.md diff --git a/0052/SESSION-0052.0-TRANSCRIPT-2026-05-31T12-08--2026-05-31T20-42.md b/ohm/0052/SESSION-0052.0-TRANSCRIPT-2026-05-31T12-08--2026-05-31T20-42.md similarity index 100% rename from 0052/SESSION-0052.0-TRANSCRIPT-2026-05-31T12-08--2026-05-31T20-42.md rename to ohm/0052/SESSION-0052.0-TRANSCRIPT-2026-05-31T12-08--2026-05-31T20-42.md diff --git a/0053/SESSION-0053.0-TRANSCRIPT-2026-05-31T20-53--2026-06-01T03-02.md b/ohm/0053/SESSION-0053.0-TRANSCRIPT-2026-05-31T20-53--2026-06-01T03-02.md similarity index 100% rename from 0053/SESSION-0053.0-TRANSCRIPT-2026-05-31T20-53--2026-06-01T03-02.md rename to ohm/0053/SESSION-0053.0-TRANSCRIPT-2026-05-31T20-53--2026-06-01T03-02.md diff --git a/0054/SESSION-0054.0-TRANSCRIPT-2026-06-01T03-24--2026-06-01T03-25.md b/ohm/0054/SESSION-0054.0-TRANSCRIPT-2026-06-01T03-24--2026-06-01T03-25.md similarity index 100% rename from 0054/SESSION-0054.0-TRANSCRIPT-2026-06-01T03-24--2026-06-01T03-25.md rename to ohm/0054/SESSION-0054.0-TRANSCRIPT-2026-06-01T03-24--2026-06-01T03-25.md diff --git a/0055/SESSION-0055.0-TRANSCRIPT-2026-06-01T03-00--2026-06-01T03-35.md b/ohm/0055/SESSION-0055.0-TRANSCRIPT-2026-06-01T03-00--2026-06-01T03-35.md similarity index 100% rename from 0055/SESSION-0055.0-TRANSCRIPT-2026-06-01T03-00--2026-06-01T03-35.md rename to ohm/0055/SESSION-0055.0-TRANSCRIPT-2026-06-01T03-00--2026-06-01T03-35.md diff --git a/0056/SESSION-0056.0-TRANSCRIPT-2026-06-01T04-30--2026-06-01T05-30.md b/ohm/0056/SESSION-0056.0-TRANSCRIPT-2026-06-01T04-30--2026-06-01T05-30.md similarity index 100% rename from 0056/SESSION-0056.0-TRANSCRIPT-2026-06-01T04-30--2026-06-01T05-30.md rename to ohm/0056/SESSION-0056.0-TRANSCRIPT-2026-06-01T04-30--2026-06-01T05-30.md diff --git a/0057/SESSION-0057.0-TRANSCRIPT-2026-06-01T05-40--2026-06-01T06-00.md b/ohm/0057/SESSION-0057.0-TRANSCRIPT-2026-06-01T05-40--2026-06-01T06-00.md similarity index 100% rename from 0057/SESSION-0057.0-TRANSCRIPT-2026-06-01T05-40--2026-06-01T06-00.md rename to ohm/0057/SESSION-0057.0-TRANSCRIPT-2026-06-01T05-40--2026-06-01T06-00.md diff --git a/0058/SESSION-0058.0-TRANSCRIPT-2026-06-01T06-28--2026-06-01T06-52.md b/ohm/0058/SESSION-0058.0-TRANSCRIPT-2026-06-01T06-28--2026-06-01T06-52.md similarity index 100% rename from 0058/SESSION-0058.0-TRANSCRIPT-2026-06-01T06-28--2026-06-01T06-52.md rename to ohm/0058/SESSION-0058.0-TRANSCRIPT-2026-06-01T06-28--2026-06-01T06-52.md diff --git a/0059/SESSION-0059.0-TRANSCRIPT-2026-06-01T08-00--2026-06-01T11-00.md b/ohm/0059/SESSION-0059.0-TRANSCRIPT-2026-06-01T08-00--2026-06-01T11-00.md similarity index 100% rename from 0059/SESSION-0059.0-TRANSCRIPT-2026-06-01T08-00--2026-06-01T11-00.md rename to ohm/0059/SESSION-0059.0-TRANSCRIPT-2026-06-01T08-00--2026-06-01T11-00.md diff --git a/0060/SESSION-0060.0-TRANSCRIPT-2026-06-01T06-30--2026-06-01T10-16.md b/ohm/0060/SESSION-0060.0-TRANSCRIPT-2026-06-01T06-30--2026-06-01T10-16.md similarity index 100% rename from 0060/SESSION-0060.0-TRANSCRIPT-2026-06-01T06-30--2026-06-01T10-16.md rename to ohm/0060/SESSION-0060.0-TRANSCRIPT-2026-06-01T06-30--2026-06-01T10-16.md diff --git a/0061/SESSION-0061.0-TRANSCRIPT-2026-06-01T10-28--2026-06-01T22-25.md b/ohm/0061/SESSION-0061.0-TRANSCRIPT-2026-06-01T10-28--2026-06-01T22-25.md similarity index 100% rename from 0061/SESSION-0061.0-TRANSCRIPT-2026-06-01T10-28--2026-06-01T22-25.md rename to ohm/0061/SESSION-0061.0-TRANSCRIPT-2026-06-01T10-28--2026-06-01T22-25.md diff --git a/0062/SESSION-0062.0-TRANSCRIPT-2026-06-01T21-30--2026-06-01T22-58.md b/ohm/0062/SESSION-0062.0-TRANSCRIPT-2026-06-01T21-30--2026-06-01T22-58.md similarity index 100% rename from 0062/SESSION-0062.0-TRANSCRIPT-2026-06-01T21-30--2026-06-01T22-58.md rename to ohm/0062/SESSION-0062.0-TRANSCRIPT-2026-06-01T21-30--2026-06-01T22-58.md diff --git a/0063/SESSION-0063.0-TRANSCRIPT-2026-06-02T06-18--2026-06-02T09-11.md b/ohm/0063/SESSION-0063.0-TRANSCRIPT-2026-06-02T06-18--2026-06-02T09-11.md similarity index 100% rename from 0063/SESSION-0063.0-TRANSCRIPT-2026-06-02T06-18--2026-06-02T09-11.md rename to ohm/0063/SESSION-0063.0-TRANSCRIPT-2026-06-02T06-18--2026-06-02T09-11.md diff --git a/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md b/ohm/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md similarity index 100% rename from 0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md rename to ohm/0064/SESSION-0064.0-TRANSCRIPT-2026-06-02T06-00--2026-06-02T06-55.md diff --git a/0065/SESSION-0065.0-TRANSCRIPT-2026-06-03T02-30--2026-06-03T05-12.md b/ohm/0065/SESSION-0065.0-TRANSCRIPT-2026-06-03T02-30--2026-06-03T05-12.md similarity index 100% rename from 0065/SESSION-0065.0-TRANSCRIPT-2026-06-03T02-30--2026-06-03T05-12.md rename to ohm/0065/SESSION-0065.0-TRANSCRIPT-2026-06-03T02-30--2026-06-03T05-12.md diff --git a/LICENSE b/ohm/LICENSE similarity index 100% rename from LICENSE rename to ohm/LICENSE diff --git a/ohm/README.md b/ohm/README.md new file mode 100644 index 0000000..0543867 --- /dev/null +++ b/ohm/README.md @@ -0,0 +1,188 @@ +# ohm-session-history + +Full Claude Code session transcripts from the build of the +[Open Human Model](https://ohm.wiggleverse.org) — including the +infrastructure work that preceded it (Session 0001: the +`git.benstull.org` personal-Gitea buildout) and every OHM session +since. + +Canonical location: +[`git.wiggleverse.org/wiggleverse/ohm-session-history`](https://git.wiggleverse.org/wiggleverse/ohm-session-history). +There is no GitHub mirror. The same content is rendered on-site at +[`ohm.wiggleverse.org/docs/sessions`](https://ohm.wiggleverse.org/docs/sessions) +(live from rfc-app v0.19.0+). + + +## Where the record begins + +OHM started with two vibe-coded prototypes — exploratory passes the +operator built to figure out what the project wanted to be. Neither +prototype produced a session transcript; the discipline that produced +this record didn't exist yet, and the work was more "what does this +even feel like to use" than "ship a deployable version." + +The first draft of the framework spec +([`rfc-app/SPEC.md`](https://git.wiggleverse.org/ben.stull/rfc-app/src/branch/main/SPEC.md)) +was written off what those prototypes had taught the operator. From +that draft onward, the build switched to spec-driven development: +every session reads the spec, advances one feature, lands on OHM, and +records what happened. The transcripts here start at that point — not +at the very beginning of OHM's existence, but at the beginning of +OHM-as-spec-driven-work. + +The two vibe-coded prototypes are not represented here. If you're +trying to understand how OHM thinks, the spec is the primary text; +the transcripts are the day-to-day record of how the spec gets +extended in use. + + +## How OHM gets built + +OHM is built in the open in the literal sense. Every build session +runs in Claude Code, with one human operator (Ben Stull) and one +agent (Claude). The session has a goal, the goal gets executed, and +when the session closes a transcript captures what happened — every +decision, every wrong turn, every recovery, every spec correction. +The transcripts land here. + +The build follows a few binding rules that show up in every session: + +- **One feature per session, one commit per gesture.** Sessions don't + branch into half-finished work. Either it ships (tag + push + deploy + + verify) or it stays uncommitted until the next session picks it + up — but it doesn't live half-on, half-off in a branch nobody owns. +- **Paired-session discipline.** The operator gates irreversible + gestures (DNS edits, IAM changes, secret rotations, force pushes + to protected branches). The agent drafts, the operator commits. + Secret bytes never enter the conversation; per + `ohm-rfc-app-flotilla/SPEC.md` §3 invariant 1, the build pipeline + has no path through which a secret value can touch the model. +- **Parallel forked subagents for fan-out waves.** When a session + has independent shippable items (e.g., three roadmap items targeting + three separate rfc-app minor releases), the driver dispatches them + in parallel as subagent threads. Each subagent writes its own + subsession transcript (numbered `.1`, `.2`, …) and the driver folds + the cross-reference into the main session transcript. +- **Cross-repo coherence.** OHM is three repos in lockstep: the + framework code (`rfc-app`), the deployment content (`ohm-rfc`, + including the pin file that names which rfc-app version OHM serves), + and the operator CLI (`ohm-rfc-app-flotilla`). When a session ships + across all three, the transcript names all three commit SHAs in + the cut-state table. No ambiguity about what landed where. + + +## Why the transcripts are public + +The transcripts are the artifact, not a polished retelling. They +include the gestures that worked and the ones that did not, the +mistakes and their recoveries, the `§19.2` candidates surfaced and +deferred (the running ledger of "this deserves its own session +later"), and the running thread of what the operator and the agent +actually did with each other this turn. + +The lesson from `rfc-app/SPEC.md` §19.3 is that the build is the +artifact; the cleanup is dishonest. A redacted record reads as if +the wrong turns never happened, which makes the path look obvious +when in fact the choosing was the work. So no curation. If a +session hit a dead end, the dead end stays. If the operator violated +a hard rule and recovered, the violation stays and so does the +recovery. The only filter is `§3` invariant 1: no secret bytes, +ever. + +The transcripts are the cross-session driver brief. Future sessions +read the last session's transcript before opening — that's how +context survives the gap between sessions when the operator and +the agent are both fresh. The closing block of each transcript +includes a paste-ready prompt for the next session. + +Oh and Jan, your joke is in there somewhere. + + +## What's in the repo + +Layout: one folder per session, keyed by the 4-digit session number, +with the full `SESSION-NNNN.M-TRANSCRIPT---.md` filename +inside the folder (the `SESSION-` prefix is retained so files remain +self-identifying when shared as raw links). Subagent transcripts +(`.1`, `.2`, …) sit in the same folder as their parent driver +transcript. + +``` +README.md +sessions.json +0001/ + SESSION-0001.0-TRANSCRIPT-…md +0013/ + SESSION-0013.0-TRANSCRIPT-…md + SESSION-0013.1-TRANSCRIPT-…md + SESSION-0013.2-TRANSCRIPT-…md + SESSION-0013.3-TRANSCRIPT-…md +… +``` + +`sessions.json` is the title manifest — a flat JSON object keyed by +the 4-digit session number, with a human-readable title for each. +The on-site sessions browser at `ohm.wiggleverse.org/docs/sessions` +reads this file to render the nav. Subagent transcripts inherit +their parent session's title; the `.N` ordinal disambiguates rows +under the parent. + +Sessions 0001 through 0013 originally shipped under a letter-form +naming (`SESSION-A` through `SESSION-M`). Roadmap item #23 (executed +in session 0014.0) renamed every file to the zero-padded numeric +form via `git mv` so the audit trail shows file-was-renamed rather +than file-was-deleted-and-recreated. Initially the file-level rename +was filename-only — the bodies still read "Session I" / "Session M.1" +internally — but session 0018.0 also rewrote the bodies to use the +numeric form throughout, so cross-references inside a transcript +match the filename you'd browse to. The legacy mapping table +(`A → 0001`, …, `N → 0014`) lives in `SESSION-PROTOCOL.md` §1 on +the private-but-referenced `ohm-infra` working repo, in case you +encounter a stray legacy reference in older external links. + +## How transcripts get added + +The pattern at the end of each session: the driver writes +`SESSION-NNNN.M-TRANSCRIPT---.md` to `~/git/ohm-infra/` +locally, the operator reviews, and the one-line publish script +copies the file into the matching `NNNN/` folder here and pushes: + +```bash +~/git/ohm-infra/scripts/publish-transcript.sh \ + SESSION-0017.0-TRANSCRIPT-2026-05-28T08-52--2026-05-28T10-30.md +``` + +The script is idempotent: re-running on an already-published +transcript no-ops; re-running on an updated transcript pushes the +diff with a commit message of the form `update SESSION-…md`. The +script also handles the folder placement — it parses the leading +`NNNN` from the filename and routes into the matching folder. + +## What this repo is not + +- **Not a place to discuss OHM.** Discussion lives on + [ohm.wiggleverse.org](https://ohm.wiggleverse.org) itself, per the + PR-less per-RFC discussion surface (rfc-app v0.5.0). Issues opened + here will likely go unanswered; the work is the corpus. +- **Not the canonical spec.** That lives in `rfc-app/SPEC.md` and + `ohm-rfc-app-flotilla/SPEC.md` on their respective repos under + `wiggleverse/`. Transcripts reference spec sections; the spec is + authoritative when the two disagree. +- **Not a curated retelling.** Beyond the audit pass documented in + `ohm-infra/TRANSCRIPT-PUBLISHING-PLAN.md` (kept private, no secret + bytes), nothing has been redacted. Wrong turns stay in. Operator + quirks and self-corrections stay in. + +## Related repos + +- [`wiggleverse/ohm-rfc`](https://git.wiggleverse.org/wiggleverse/ohm-rfc) + — the OHM content repo (RFCs, deployment pin, roadmap). +- [`ben.stull/rfc-app`](https://git.wiggleverse.org/ben.stull/rfc-app) + — the framework code OHM runs. +- [`wiggleverse/ohm-rfc-app-flotilla`](https://git.wiggleverse.org/wiggleverse/ohm-rfc-app-flotilla) + — the operator CLI for OHM deploys. + +## License + +[CC BY 4.0](./LICENSE). Copy, modify, redistribute freely; credit +the author. Same license as the OHM content repo. diff --git a/sessions.json b/ohm/sessions.json similarity index 100% rename from sessions.json rename to ohm/sessions.json