add 0037/SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T02-27.md + replace placeholder/variant SESSION-0037.0-TRANSCRIPT-2026-05-28T23-20--2026-05-29T00-12.md
This commit is contained in:
@@ -1,238 +0,0 @@
|
|||||||
# Session 0037.0 — Transcript
|
|
||||||
|
|
||||||
> Date: 2026-05-28 → 2026-05-29 (spanned midnight, PST implied)
|
|
||||||
> Goal: Operator-driven philosophy session — pressure-test the OHM
|
|
||||||
> thesis, then capture the architecture it produced as deployment
|
|
||||||
> content. No rfc-app release.
|
|
||||||
>
|
|
||||||
> Outcome: **Two `ohm-rfc` content docs shipped + deployed to OHM.**
|
|
||||||
> `PHILOSOPHY.md` reframed off the model-training story onto
|
|
||||||
> "software is built operationalizing OHM concepts"; new
|
|
||||||
> `OPERATIONAL-MODEL.md` captures the concept→mechanic operational
|
|
||||||
> layer + its governance. Live at https://ohm.wiggleverse.org/api/philosophy.
|
|
||||||
> No version bump (content, not framework).
|
|
||||||
>
|
|
||||||
> Notes:
|
|
||||||
> - This session did **not** run the start-gesture claim; ID 0037 was
|
|
||||||
> claimed at session end (the §83/§7 fallback). Start time is
|
|
||||||
> **approximate** (best estimate from the conversation + the content
|
|
||||||
> commit at 2026-05-29T00-05).
|
|
||||||
> - A **parallel session (0036.0)** pushed a ROADMAP-reconcile commit
|
|
||||||
> onto `ben.stull/ohm-rfc` main on top of this session's content
|
|
||||||
> commit; the fast-forward was clean (no conflict).
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Pre-session state
|
|
||||||
|
|
||||||
- **OHM live**: rfc-app v0.29.0, deploys.id=40, healthy
|
|
||||||
(`/api/health` → `{"version":"0.29.0","status":"ok"}`).
|
|
||||||
- **ohm-rfc pin** (`.rfc-app-version`): 0.29.0.
|
|
||||||
- **ohm-rfc HEAD** at session open: `02d22fe` (ROADMAP #18 flotilla
|
|
||||||
v1.3.0 webhook verb, Session 0035.0). Working tree clean.
|
|
||||||
- **Live `/api/philosophy`**: served the original `PHILOSOPHY.md`
|
|
||||||
("Large language models work brilliantly with programming
|
|
||||||
languages…") — the model-training-framed version.
|
|
||||||
- The operator opened with a roadmap question, which became an
|
|
||||||
extended design conversation about what OHM is *for*.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Turn-by-turn arc
|
|
||||||
|
|
||||||
### Arc 1 — Roadmap status read
|
|
||||||
|
|
||||||
Operator asked "what's left in the roadmap." Read `ohm-rfc/ROADMAP.md`
|
|
||||||
(2245 lines) end-to-end + the version-targets table. Reported: the
|
|
||||||
Phase A–E feature arc (#1–#16) is shipped; what remains is a tail —
|
|
||||||
#22 (pro-consent copy, waiting on operator-drafted + counsel-reviewed
|
|
||||||
text), #21 Part A (Amplitude audit, waiting on real-world data),
|
|
||||||
#18/#20 ops follow-throughs (bounce wiring, DMARC ramp), the
|
|
||||||
naming-alignment arc (#33, plus #34 to formally close), and two
|
|
||||||
screenshot-gated polish slices (#31b, #25-followup). Flagged that the
|
|
||||||
#27/v0.24.0 row read stale against the 0.29.0 pin (it has since been
|
|
||||||
reconciled — see Arc 5's note on the parallel 0036.0 commit).
|
|
||||||
|
|
||||||
### Arc 2 — "Is OHM a good idea?" → the thesis
|
|
||||||
|
|
||||||
Operator asked for a genuine opinion, then supplied the thesis: an
|
|
||||||
**ethical social and content platform** ("wiggling through the
|
|
||||||
world") where interaction and machine-use serve the humans involved,
|
|
||||||
and where **defining the concepts** (informed consent, etc.) drives
|
|
||||||
the engagement model. Pressure-tested it: the real insight is that
|
|
||||||
existing platforms run on *implicit* definitions ("engagement =
|
|
||||||
clicks") and that's the source of harm; making the definitions
|
|
||||||
explicit and prior to the mechanics is the principled move. Pushed on
|
|
||||||
three risks: (1) the gap between a definition and a mechanic is where
|
|
||||||
the difficulty/harm lives; (2) left-brain/right-brain is a
|
|
||||||
credibility liability if treated as load-bearing; (3) governance —
|
|
||||||
who defines, and the self-selection of RFC-writers.
|
|
||||||
|
|
||||||
### Arc 3 — Operational RFCs (the architecture crystallizes)
|
|
||||||
|
|
||||||
Operator: "we also need RFCs for the operational model, not just
|
|
||||||
concepts." This closed the gap from Arc 2. Settled the shape:
|
|
||||||
**two RFC kinds** — concept RFCs (declarative contract) and
|
|
||||||
operational RFCs (mechanic, must cite the concept it serves, carries
|
|
||||||
a validation/sunset clause). Traceability makes "is this ethical?"
|
|
||||||
checkable. Then operator: "these are specs for mechanics, but people
|
|
||||||
collaborate on them — not 'XYZ PM owns the spec.'" Settled the
|
|
||||||
governance edge: collaboration ≠ unowned; the real artifact is the
|
|
||||||
**ratification procedure**; the concept layer is the spine that keeps
|
|
||||||
disputes from being bikeshedding; keep accountability locatable
|
|
||||||
(distributed authorship + recorded ratification). Open question left
|
|
||||||
deliberately: the tie-break when two co-authors both argue their
|
|
||||||
mechanic serves the concept.
|
|
||||||
|
|
||||||
### Arc 4 — Capturing it as docs
|
|
||||||
|
|
||||||
Operator asked whether to add this beside the philosophy doc or weave
|
|
||||||
it in. Recommended **separate doc + one-line bridge** (different
|
|
||||||
altitude, different maturity, introduces a second RFC kind). Wrote
|
|
||||||
`ohm-rfc/OPERATIONAL-MODEL.md` and added a forward-pointer inside
|
|
||||||
`PHILOSOPHY.md`'s "How the framework operationalizes this" section.
|
|
||||||
Operator then made two corrections that reshaped `PHILOSOPHY.md`
|
|
||||||
itself:
|
|
||||||
1. "It's not just models trained on OHM — software is *built using*
|
|
||||||
OHM concepts." Added a "Two ways a system can consume OHM"
|
|
||||||
section to `OPERATIONAL-MODEL.md` naming software-construction as
|
|
||||||
load-bearing, model-grounding as the bonus.
|
|
||||||
2. "We shouldn't talk about model training here at all." Confirmed
|
|
||||||
scope via question → "drop training, keep co-authoring." Rewrote
|
|
||||||
`PHILOSOPHY.md`: opening, three-panel diagram, "asymmetry",
|
|
||||||
"code's dictionary", and the humility note recast from
|
|
||||||
"models trained on OHM → wiser output" to "software built on
|
|
||||||
undefined human concepts → harm; define them so software is built
|
|
||||||
right." **Kept verbatim**: the human+machine co-authoring
|
|
||||||
mechanism, the POSIX/IETF/HTTP standards analogy, the three-part
|
|
||||||
definition (meaning/relationships/protocol), the close.
|
|
||||||
|
|
||||||
### Arc 5 — Commit + deploy
|
|
||||||
|
|
||||||
Committed both docs to `ohm-rfc` main (`9a4277c`), pushed to `origin`
|
|
||||||
(`ben/ohm-rfc`, a Gitea redirect to `ben.stull/ohm-rfc` — same repo;
|
|
||||||
the username was renamed). Then traced the **actual content-deploy
|
|
||||||
path**, which is non-obvious:
|
|
||||||
|
|
||||||
- `PHILOSOPHY.md` is deployment-side rich content read from a **VM
|
|
||||||
file** (`PHILOSOPHY_PATH=/opt/ohm-rfc-app/meta-content/PHILOSOPHY.md`),
|
|
||||||
**not** baked by `flotilla deploy` (nothing in flotilla syncs
|
|
||||||
`meta-content/`; deploy only pulls rfc-app code at the pin).
|
|
||||||
- The VM's `meta-content` is a clone of `ben.stull/ohm-rfc`, but it
|
|
||||||
was **frozen at an ancient commit** (`eae9dc5`, pin 0.2.1 era) —
|
|
||||||
never pulled since early bootstrap. Working tree clean on `main`.
|
|
||||||
- `git pull --ff-only` on the VM clone (as `ohm-rfc-app`, via IAP SSH)
|
|
||||||
fast-forwarded it. It landed on `6cf7e41` — **a parallel session
|
|
||||||
0036.0 had pushed a ROADMAP reconcile on top of `9a4277c`**; clean
|
|
||||||
FF, my content included underneath.
|
|
||||||
- The backend caches `PHILOSOPHY.md` in-process (`philosophy.load()`
|
|
||||||
fills a module `_cache`; `refresh()` exists but **nothing calls
|
|
||||||
it** — the "periodic re-read" in the docstring is not wired). So a
|
|
||||||
pull alone didn't update the live API. **Restarted
|
|
||||||
`ohm-rfc-app.service`** (targeted, not a full `flotilla deploy`,
|
|
||||||
since deploy wouldn't touch `meta-content`).
|
|
||||||
- Verified: `/api/health` → 0.29.0 ok; `/api/philosophy` now serves
|
|
||||||
the rewritten philosophy ("Software that touches programming
|
|
||||||
concepts works…").
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Cut state (end of session)
|
|
||||||
|
|
||||||
| | |
|
|
||||||
| --- | --- |
|
|
||||||
| ohm-rfc | `9a4277c` (this session's content) — now under remote tip `6cf7e41` (0036.0's ROADMAP reconcile FF'd on top). Pushed to `origin`/`ben.stull`. |
|
|
||||||
| ohm-rfc local checkout | behind remote by 0036.0's commit (not pulled locally — parallel session active; see plate). |
|
|
||||||
| OHM live | deploys.id=40, v0.29.0, healthy. `meta-content` clone advanced `eae9dc5`→`6cf7e41`; `ohm-rfc-app.service` restarted. |
|
|
||||||
| ohm-rfc pin | 0.29.0 (unchanged — content-only session). |
|
|
||||||
| /api/philosophy | ✅ serving the rewritten `PHILOSOPHY.md`. |
|
|
||||||
|
|
||||||
| Item | Status |
|
|
||||||
| --- | --- |
|
|
||||||
| `PHILOSOPHY.md` reframe (de-model-training) | ✅ shipped + deployed (no version) |
|
|
||||||
| `OPERATIONAL-MODEL.md` new doc | ✅ shipped to repo + VM; ⚠️ not surfaced on-site (no route serves it; the `./OPERATIONAL-MODEL.md` link in the rendered philosophy will 404) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §19.2 candidates surfaced
|
|
||||||
|
|
||||||
1. **`meta-content` is not synced by any gesture.** The VM's
|
|
||||||
`/opt/ohm-rfc-app/meta-content` clone had drifted ~27 minor
|
|
||||||
versions behind `ben.stull/ohm-rfc` and was only updated tonight by
|
|
||||||
a hand `git pull`. There is no flotilla verb, deploy phase, or hook
|
|
||||||
that refreshes deployment rich content. Candidate: a
|
|
||||||
`flotilla content sync <deployment>` verb (pull meta-content +
|
|
||||||
restart, or hit a refresh endpoint), so `PHILOSOPHY.md`/`DOCS.md`
|
|
||||||
edits don't require a manual IAP-SSH `git pull` + `systemctl
|
|
||||||
restart`.
|
|
||||||
2. **`philosophy.refresh()` / `docs.refresh()` are dead code.** The
|
|
||||||
in-process cache is only cleared by process restart; the documented
|
|
||||||
"reconciler sweep calls `force=True`" has no caller. Either wire a
|
|
||||||
periodic refresh (so content edits go live on a cadence without a
|
|
||||||
restart) or delete the dead `refresh()` + fix the docstring. A
|
|
||||||
`POST /api/philosophy/refresh` (owner-gated) would let #1's verb
|
|
||||||
avoid a full service restart.
|
|
||||||
3. **`OPERATIONAL-MODEL.md` has no on-site home.** Only
|
|
||||||
`PHILOSOPHY.md` (and `DOCS.md`) have read routes. The new sibling
|
|
||||||
doc's intra-philosophy link 404s in the rendered page. Candidate:
|
|
||||||
a generic meta-content doc route, or fold the operational-model
|
|
||||||
content into the `/docs` surface, or add it to the SPEC-style doc
|
|
||||||
browser shipped in #30.
|
|
||||||
4. **Repo-identity drift bit again (relates to #33).** `ben/ohm-rfc`
|
|
||||||
vs `ben.stull/ohm-rfc` (redirect, OK) and the overlay's
|
|
||||||
`META_REPO=ohm-meta` (a *third* repo, `wiggleverse/ohm-meta`, whose
|
|
||||||
`PHILOSOPHY.md` differs and is unused because the `PHILOSOPHY_PATH`
|
|
||||||
file override wins). The naming-alignment arc (#33) should resolve
|
|
||||||
which repo is canonical for deployment content and retire the
|
|
||||||
unused `ohm-meta` path or make it the real source.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## What lands on the operator's plate
|
|
||||||
|
|
||||||
1. **Read the two docs** — `ohm-rfc/PHILOSOPHY.md` (rewritten) and
|
|
||||||
`ohm-rfc/OPERATIONAL-MODEL.md` (new). The philosophy is live; the
|
|
||||||
operational-model doc is the design capture of tonight's
|
|
||||||
conversation. Pull `ohm-rfc` locally to get `6cf7e41` (the local
|
|
||||||
checkout is behind by 0036.0's commit).
|
|
||||||
2. **Decide if `OPERATIONAL-MODEL.md` should be surfaced on-site**
|
|
||||||
(§19.2 candidate 3) — today it's repo + VM only.
|
|
||||||
3. **The open governance tie-break** (Arc 3) is unanswered by design
|
|
||||||
— "when two co-authors both argue their mechanic serves the cited
|
|
||||||
concept, what breaks the tie?" The answer *is* the platform's
|
|
||||||
governance model and should be settled consciously, likely as the
|
|
||||||
first operational RFC.
|
|
||||||
4. **left-brain/right-brain caution** (Arc 2): hold as a frame under
|
|
||||||
test, not a poured foundation, or it undercuts the rigor pitch.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Prompt the operator can paste into the next Claude Code session
|
|
||||||
|
|
||||||
```
|
|
||||||
You are an OHM driver session. Reserve your own session ID
|
|
||||||
(~/git/ohm-infra/scripts/claim-session-id.sh --start <now>) — the number
|
|
||||||
is advisory. Read ohm-rfc/ROADMAP.md + its "Operating instructions" block.
|
|
||||||
|
|
||||||
Recent context (Session 0037.0, 2026-05-28→29): a content-only session
|
|
||||||
rewrote ohm-rfc/PHILOSOPHY.md off the model-training framing onto
|
|
||||||
"software is built operationalizing OHM concepts," and added a new
|
|
||||||
ohm-rfc/OPERATIONAL-MODEL.md capturing the concept→mechanic operational
|
|
||||||
layer + its governance. Both are committed (9a4277c, under remote tip
|
|
||||||
6cf7e41 after parallel session 0036.0's ROADMAP reconcile) and the
|
|
||||||
philosophy is LIVE (pulled the VM meta-content clone + restarted
|
|
||||||
ohm-rfc-app.service). OHM is on v0.29.0, deploys.id=40, healthy.
|
|
||||||
|
|
||||||
Deployment-content gotcha worth fixing: PHILOSOPHY.md/DOCS.md are served
|
|
||||||
from the VM's /opt/ohm-rfc-app/meta-content git clone, which NO gesture
|
|
||||||
syncs — it had drifted to a 0.2.1-era commit. The backend caches the
|
|
||||||
file in-process and refresh() is never called, so updating content needs
|
|
||||||
a hand `git -C meta-content pull` + `systemctl restart ohm-rfc-app`
|
|
||||||
(via IAP SSH). Consider a `flotilla content sync` verb (§19.2 candidate).
|
|
||||||
|
|
||||||
Open roadmap tail: #22 (pro-consent copy, needs operator+counsel text),
|
|
||||||
#21 Part A (Amplitude audit, needs real-world data), #18/#20 ops
|
|
||||||
follow-throughs (bounce wiring, DMARC ramp), #33/#34 naming alignment,
|
|
||||||
#31b + #25-followup (screenshot-gated polish). No core features remain.
|
|
||||||
Pick one, or ask the operator what's next.
|
|
||||||
```
|
|
||||||
@@ -0,0 +1,261 @@
|
|||||||
|
# Session 0037.0 — Transcript
|
||||||
|
|
||||||
|
> Date: 2026-05-28 → 2026-05-29 (spanned midnight, PST implied)
|
||||||
|
> Goal: Operator-driven philosophy session that grew into shipping
|
||||||
|
> content + a framework doc release. No rfc-app feature code change.
|
||||||
|
>
|
||||||
|
> Outcome: **Three things shipped + deployed to OHM.**
|
||||||
|
> (1) `ohm-rfc/PHILOSOPHY.md` reframed off the model-training story onto
|
||||||
|
> "software is built operationalizing OHM concepts"; new
|
||||||
|
> `ohm-rfc/OPERATIONAL-MODEL.md` capturing the concept→mechanic
|
||||||
|
> operational layer + its governance.
|
||||||
|
> (2) `OPERATIONAL-MODEL.md` surfaced on-site at
|
||||||
|
> `/docs/specs/operational-model` (deploys.id=41) via the existing
|
||||||
|
> configurable specs surface — no rfc-app code change.
|
||||||
|
> (3) `rfc-app v0.30.0` — the user guide (`DOCS.md`, `/docs/user-guide`)
|
||||||
|
> brought back in sync with the shipped app after ~23 versions of drift
|
||||||
|
> (deploys.id=42). Pin 0.29.0 → 0.30.0.
|
||||||
|
>
|
||||||
|
> Notes:
|
||||||
|
> - This session did **not** run the start-gesture claim; ID 0037 was
|
||||||
|
> claimed at session end (the §83/§7 fallback). Start time is
|
||||||
|
> **approximate**.
|
||||||
|
> - **Re-finalized** (this is the second publish). The first publish
|
||||||
|
> covered Arcs 1–5 (the philosophy doc work); Arcs 6–7 + the v0.30.0
|
||||||
|
> release landed after and are folded in here.
|
||||||
|
> - The shared-checkout / parallel-session hazard recurred (Arc 6) — a
|
||||||
|
> concurrent session's uncommitted `ROADMAP.md` blocked a pull; handled
|
||||||
|
> per the worktree-for-parallel-git discipline.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pre-session state
|
||||||
|
|
||||||
|
- **OHM live**: rfc-app v0.29.0, deploys.id=40, healthy.
|
||||||
|
- **ohm-rfc pin**: 0.29.0. **ohm-rfc HEAD**: `02d22fe` (Session 0035.0).
|
||||||
|
- **Live `/api/philosophy`**: the original model-training-framed
|
||||||
|
`PHILOSOPHY.md`.
|
||||||
|
- The operator opened with a roadmap question that became an extended
|
||||||
|
design conversation about what OHM is *for*.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Turn-by-turn arc
|
||||||
|
|
||||||
|
### Arc 1 — Roadmap status read
|
||||||
|
|
||||||
|
Read `ROADMAP.md` end-to-end; reported the Phase A–E feature arc
|
||||||
|
(#1–#16) shipped and the remaining tail (#22 consent copy, #21A
|
||||||
|
Amplitude audit, #18/#20 ops, #33/#34 naming, #31b/#25 polish). Flagged
|
||||||
|
the #27/v0.24.0 row as reading stale against the 0.29.0 pin.
|
||||||
|
|
||||||
|
### Arc 2 — "Is OHM a good idea?" → the thesis
|
||||||
|
|
||||||
|
Operator supplied the thesis: an **ethical social and content platform**
|
||||||
|
("wiggling through the world") where defining the concepts (informed
|
||||||
|
consent, etc.) drives the engagement model. Pressure-tested it: the real
|
||||||
|
insight is that existing platforms run on *implicit* definitions
|
||||||
|
("engagement = clicks") and that's the source of harm. Pushed on three
|
||||||
|
risks: the definition→mechanic gap, left/right-brain as a credibility
|
||||||
|
liability, and the who-defines governance/legitimacy problem.
|
||||||
|
|
||||||
|
### Arc 3 — Operational RFCs (the architecture crystallizes)
|
||||||
|
|
||||||
|
Operator: "we also need RFCs for the operational model, not just
|
||||||
|
concepts." Settled the shape: **two RFC kinds** — concept (declarative
|
||||||
|
contract) and operational (mechanic; must cite the concept it serves;
|
||||||
|
carries a validation/sunset clause). Traceability makes "is this
|
||||||
|
ethical?" checkable. Then the governance edge: collaboration ≠ unowned;
|
||||||
|
the real artifact is the **ratification procedure**; the concept layer is
|
||||||
|
the spine; keep accountability locatable. Left open deliberately: the
|
||||||
|
tie-break when two co-authors both argue their mechanic serves the
|
||||||
|
concept.
|
||||||
|
|
||||||
|
### Arc 4 — Capturing it as docs
|
||||||
|
|
||||||
|
Recommended a **separate doc + one-line bridge** over weaving in. Wrote
|
||||||
|
`OPERATIONAL-MODEL.md` + a forward-pointer in `PHILOSOPHY.md`. Two
|
||||||
|
operator corrections reshaped `PHILOSOPHY.md`: (1) "software is *built
|
||||||
|
using* OHM concepts, not just models trained on it" → added the
|
||||||
|
"Two ways a system can consume OHM" section; (2) "drop model training
|
||||||
|
entirely" → confirmed scope ("drop training, keep co-authoring") and
|
||||||
|
rewrote the opening, three-panel diagram, asymmetry, code's-dictionary,
|
||||||
|
and humility note. Kept verbatim: the human+machine co-authoring
|
||||||
|
mechanism and the POSIX/IETF/HTTP analogy.
|
||||||
|
|
||||||
|
### Arc 5 — Commit + deploy of the philosophy reframe
|
||||||
|
|
||||||
|
Committed both docs (`9a4277c`), pushed `origin`. Traced the non-obvious
|
||||||
|
content-deploy path: `PHILOSOPHY.md` is served from the VM file at
|
||||||
|
`PHILOSOPHY_PATH=/opt/ohm-rfc-app/meta-content/PHILOSOPHY.md` (a clone of
|
||||||
|
`ben.stull/ohm-rfc`), **not** baked by `flotilla deploy`. The clone was
|
||||||
|
frozen at an ancient commit (`eae9dc5`, pin 0.2.1 era) and never pulled.
|
||||||
|
`git pull --ff-only` on the VM (IAP SSH) fast-forwarded it (landing on
|
||||||
|
`6cf7e41` — parallel session 0036.0's ROADMAP reconcile sat on top of my
|
||||||
|
commit). The backend caches the file (`philosophy.load()`; `refresh()`
|
||||||
|
exists but is **never called**), so a restart was needed —
|
||||||
|
`systemctl restart ohm-rfc-app.service`. Verified `/api/philosophy`
|
||||||
|
served the rewrite. *(First transcript publish happened here.)*
|
||||||
|
|
||||||
|
### Arc 6 — Operational model on the live site (deploys.id=41)
|
||||||
|
|
||||||
|
Operator: "add operational model to the live site." Found the clean path
|
||||||
|
with **no rfc-app code change**: the `/docs/specs/<name>` surface
|
||||||
|
(`backend/app/docs_specs.py`, from roadmap #30) renders arbitrary
|
||||||
|
markdown fetched at runtime from a Gitea raw URL, configured by the
|
||||||
|
`OHM_DOCS_SPECS` overlay var (default = rfc-app SPEC + flotilla SPEC).
|
||||||
|
|
||||||
|
Hit the **shared-checkout hazard**: the `ohm-rfc` checkout had a parallel
|
||||||
|
session's uncommitted `ROADMAP.md` (its new item #35, operator RFC
|
||||||
|
authoring). Set up an isolated worktree for the one-file philosophy-link
|
||||||
|
fix, then the operator said "hang tight while that session finishes" —
|
||||||
|
cleaned up the worktree and **paused**. Once the operator confirmed the
|
||||||
|
other session pushed, resumed on the now-clean checkout:
|
||||||
|
- Fixed the `PHILOSOPHY.md` forward-pointer from a relative
|
||||||
|
`./OPERATIONAL-MODEL.md` (404s in the rendered page) to the route
|
||||||
|
`/docs/specs/operational-model` (`d79ce46`); symmetric fix in
|
||||||
|
`OPERATIONAL-MODEL.md` → `/philosophy` (`5861e9e`).
|
||||||
|
- `flotilla overlay set OHM_DOCS_SPECS` = the two default SPECs + the
|
||||||
|
operational-model entry (raw URL on `ben.stull/ohm-rfc`). Confirmed the
|
||||||
|
JSON value round-trips correctly through flotilla's always-quoting
|
||||||
|
`.env` materializer (`_escape_env_value`) + python-dotenv.
|
||||||
|
- VM `meta-content` pull (for the philosophy link) + `flotilla deploy`
|
||||||
|
(id=41, v0.29.0 redeploy materializing the new env + restart).
|
||||||
|
- Verified: `/api/docs/specs/manifest` lists "OHM Operational Model";
|
||||||
|
`/docs/specs/operational-model` serves the body; the philosophy link
|
||||||
|
resolves.
|
||||||
|
|
||||||
|
### Arc 7 — User-guide drift review + rfc-app v0.30.0 (deploys.id=42)
|
||||||
|
|
||||||
|
Operator: "review the user guide and update anything if it's drifted."
|
||||||
|
The framework user guide is `rfc-app/DOCS.md`, served at
|
||||||
|
`/docs/user-guide` from the **deployed tag** (no `DOCS_PATH` override).
|
||||||
|
Fanned out 3 read-only Explore agents over `rfc-app` (auth flow; propose
|
||||||
|
+ contribute surfaces; roles/admin/notifications), each cited to code, to
|
||||||
|
ground the rewrite and avoid trading old drift for new.
|
||||||
|
|
||||||
|
Finding: the guide is **mostly accurate** — roles, branches, PRs,
|
||||||
|
graduation, AI-in-chat, and the full notifications system (inbox, badges,
|
||||||
|
toasts, the four email categories, digest, quiet hours, watch states) are
|
||||||
|
all genuinely shipped, not aspirational. Drift was concentrated:
|
||||||
|
- **"Signing in"** still described the pre-OTC email *allowlist*. Rewrote
|
||||||
|
for email + one-time-code (v0.7.0), optional passcode (v0.10.0),
|
||||||
|
trust-device 30d (v0.11.0), optional Turnstile (v0.12.0, deployment-
|
||||||
|
gated), and the beta-request → `pending` → admin-`granted` gate
|
||||||
|
(v0.8.0), plus admin-create + invite-claim (v0.17.0). Allowlist is
|
||||||
|
vestigial (empty by default).
|
||||||
|
- **"Proposing a new RFC"**: four → five fields (optional use-case #26;
|
||||||
|
AI tag-suggestion disclosure #27).
|
||||||
|
- **"Roles & permissions"**: added the `pending` state.
|
||||||
|
- New **"Invitations, cross-references, and contribution requests"**
|
||||||
|
(#12 owner invites; #28 auto-link / create-RFC / ask-to-contribute).
|
||||||
|
- New **"Privacy and cookies"** (#11 / #13).
|
||||||
|
|
||||||
|
Shipped as **rfc-app v0.30.0** (docs-only minor): `VERSION` +
|
||||||
|
`frontend/package.json` bumped (lockfile `version` left at its existing
|
||||||
|
stale 0.24.0 — `npm ci` checks the dep tree, not the project version, and
|
||||||
|
prior releases did the same), CHANGELOG entry, commit `1558cc3`, tag
|
||||||
|
`v0.30.0` pushed to **origin + benstull** (the VM deploys from the
|
||||||
|
mirror). Pin `0.29.0 → 0.30.0` (`edf4a85`). `flotilla deploy` id=42,
|
||||||
|
`/api/health` → 0.30.0. Verified the live guide reflects all sections and
|
||||||
|
the stale allowlist text is gone.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cut state (end of session)
|
||||||
|
|
||||||
|
| | |
|
||||||
|
| --- | --- |
|
||||||
|
| ohm-rfc | HEAD `edf4a85` (pin 0.30.0). Content commits this session: `9a4277c` (philosophy reframe + OPERATIONAL-MODEL.md), `d79ce46` + `5861e9e` (cross-link fixes). Pushed `origin`. |
|
||||||
|
| rfc-app | **v0.30.0** (`1558cc3`) on main; tag pushed `origin` + `benstull`. Docs-only (DOCS.md + VERSION + package.json + CHANGELOG). |
|
||||||
|
| OHM live | deploys.id=**42**, v0.30.0, healthy. (id=41 was the v0.29.0 redeploy that materialized the `OHM_DOCS_SPECS` env for the operational-model surface.) |
|
||||||
|
| ohm-rfc pin | 0.30.0. |
|
||||||
|
| /api/philosophy | rewritten philosophy + route cross-link. |
|
||||||
|
| /docs/specs/operational-model | live ("OHM Operational Model"). |
|
||||||
|
| /docs/user-guide | v0.30.0 updated guide. |
|
||||||
|
|
||||||
|
| Item | Status |
|
||||||
|
| --- | --- |
|
||||||
|
| PHILOSOPHY.md reframe + OPERATIONAL-MODEL.md | ✅ shipped + deployed (no version) |
|
||||||
|
| OPERATIONAL-MODEL.md on-site (/docs/specs) | ✅ shipped + deployed (id=41) |
|
||||||
|
| rfc-app v0.30.0 — user-guide drift sync | ✅ shipped + deployed (id=42) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## §19.2 candidates surfaced
|
||||||
|
|
||||||
|
1. **`meta-content` is not synced by any gesture.** The VM's
|
||||||
|
`/opt/ohm-rfc-app/meta-content` clone (source for `PHILOSOPHY_PATH`)
|
||||||
|
had drifted ~27 minor versions and was only updated by a hand
|
||||||
|
`git pull` this session. Candidate: a `flotilla content sync
|
||||||
|
<deployment>` verb (pull meta-content + restart / hit a refresh
|
||||||
|
endpoint).
|
||||||
|
2. **`philosophy.refresh()` / `docs.refresh()` are dead code.** The
|
||||||
|
in-process cache is only cleared by process restart; the documented
|
||||||
|
"reconciler sweep calls `force=True`" has no caller. Wire a periodic
|
||||||
|
refresh or delete the dead code + fix the docstring.
|
||||||
|
3. **Two homes for deployment docs, two update mechanics.**
|
||||||
|
`PHILOSOPHY.md` is served from the meta-content file (updates via
|
||||||
|
meta-content pull + restart); `DOCS.md` is served from the **deployed
|
||||||
|
rfc-app tag** (updates require a release + deploy, as v0.30.0 did).
|
||||||
|
The generic `/docs/specs` surface (`OHM_DOCS_SPECS`) is a third path —
|
||||||
|
runtime gitea-raw fetch with a 5-min TTL, no deploy needed. Worth a
|
||||||
|
short note in DEPLOYMENTS.md so the next operator knows which lever
|
||||||
|
updates which doc. (The operational-model doc rides `/docs/specs` and
|
||||||
|
thus updates with no deploy — but lands under the "Specs" nav label,
|
||||||
|
a slight semantic stretch; a dedicated companion route would need a
|
||||||
|
framework code change.)
|
||||||
|
4. **Shared-checkout / parallel-session hazard recurred** (Arc 6). A
|
||||||
|
concurrent session's uncommitted `ROADMAP.md` blocked a pull;
|
||||||
|
reinforces the worktree-for-parallel-git discipline for any hands-on
|
||||||
|
git in the shared checkout while other sessions run.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What lands on the operator's plate
|
||||||
|
|
||||||
|
1. **The open governance tie-break** (Arc 3) is unanswered by design —
|
||||||
|
"when two co-authors both argue their mechanic serves the cited
|
||||||
|
concept, what breaks the tie?" That answer *is* the platform's
|
||||||
|
governance model; settle it consciously, likely as the first
|
||||||
|
operational RFC.
|
||||||
|
2. **left-brain/right-brain caution** (Arc 2): hold as a frame under
|
||||||
|
test, not a poured foundation.
|
||||||
|
3. **Roadmap item #35** (operator RFC authoring from a Claude Code
|
||||||
|
session) was added to `ROADMAP.md` by a parallel session, not this
|
||||||
|
one — noted here only so the cross-session record is coherent.
|
||||||
|
4. Nothing else pending — all three deliverables shipped + verified.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prompt the operator can paste into the next Claude Code session
|
||||||
|
|
||||||
|
```
|
||||||
|
You are an OHM driver session. Reserve your own session ID
|
||||||
|
(~/git/ohm-infra/scripts/claim-session-id.sh --start <now>) — the number
|
||||||
|
is advisory. Read ohm-rfc/ROADMAP.md + its "Operating instructions" block.
|
||||||
|
|
||||||
|
Recent context (Session 0037.0, 2026-05-28→29): a content + docs session.
|
||||||
|
OHM is now on rfc-app v0.30.0 (deploys.id=42, healthy). Shipped:
|
||||||
|
(1) ohm-rfc/PHILOSOPHY.md reframed off model-training onto "software is
|
||||||
|
built operationalizing OHM concepts"; new ohm-rfc/OPERATIONAL-MODEL.md
|
||||||
|
(concept→mechanic operational layer + governance), live at
|
||||||
|
/docs/specs/operational-model; (2) rfc-app v0.30.0 — the /docs/user-guide
|
||||||
|
(DOCS.md) brought back in sync with the shipped app (sign-in/OTC, propose
|
||||||
|
use-case field, pending state, invitations, cross-references, privacy).
|
||||||
|
|
||||||
|
Deployment-content levers to know:
|
||||||
|
- PHILOSOPHY.md → VM meta-content git clone (PHILOSOPHY_PATH); NO gesture
|
||||||
|
syncs it (it had drifted to 0.2.1). Update = `git -C meta-content pull`
|
||||||
|
+ `systemctl restart ohm-rfc-app` via IAP SSH. (§19.2: a `flotilla
|
||||||
|
content sync` verb would fix this.)
|
||||||
|
- DOCS.md → served from the deployed rfc-app tag; update = release+deploy.
|
||||||
|
- /docs/specs/<name> → runtime gitea-raw fetch, configured by the
|
||||||
|
OHM_DOCS_SPECS overlay, 5-min TTL, no deploy needed.
|
||||||
|
|
||||||
|
Open roadmap tail: #22 (consent copy, needs operator+counsel text), #21
|
||||||
|
Part A (Amplitude audit, needs real-world data), #18/#20 ops follow-
|
||||||
|
throughs, #33/#34 naming alignment, #31b + #25-followup polish, and the
|
||||||
|
new #35 (operator RFC authoring). No core features remain. Pick one, or
|
||||||
|
ask the operator what's next.
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user