Epic A: Spec blocker decisions #1

Closed
opened 2026-10-28 05:26:53 +00:00 by jacisjake · 1 comment
jacisjake commented 2026-10-28 05:26:53 +00:00 (Migrated from github.com)

Part of: docs/SCOPE.md (S1) Depends on: none

Objective

Close the five decisions that gate all chatroom code: how message kinds get tagged, what stops a nudge loop, when multiple claims on one task are valid, what happens to the Sentry and Elder roles, and what Jev's unexercised question types (score, noul) actually do on our key. After this epic, a developer can start Epic B and C without asking Smokey anything.

Context a stranger needs

  • CHATROOM_SPEC.md section 13 lists the open questions; questions 2 (custom Jev labels) is already answered in JEV_STRATEGIES.md line 15. The rest are Smokey's calls, per the spec's [decided] convention: only he decides, agents propose.
  • Decisions get recorded by editing CHATROOM_SPEC.md (strike the question, write the decision, mark [decided YYYY-MM-DD]) and, where they touch the contract, EVENTS.md. Contracts-first is a hard rule (CLAUDE.md section 9): EVENTS.md changes before server or UI code.
  • Terminology (docs/SCOPE.md): several crows taking one task is conspiracy (noun, never a verb); the collective is alluded to only as "so many crows" — the word "murder" is never stated in chatroom copy, docs, UI or new payloads. The pipeline's legacy "murder" constant is grandfathered until A4 retires the roles that use it.
  • Today's Jev client (jev.go) only sends two choice questions with one global 0.7 threshold (CROWS_JEV_THRESHOLD). JEV_STRATEGIES.md strategies 3 and 4 assume score and noul work and assume three confidence bands per question — unverified.
  • Unit tests use a fake HTTP server pattern — see TestClassifyAgainstFakeServer in jev_test.go. A live probe test must t.Skip() when TYPESAFE_API_KEY is unset.

Out of scope for this epic

Any chatroom server/UI code. Renaming the pipeline's murder constant. Building the ledger.

Plan of record

  • #3 — Decide message-kind tagging method
  • #4 — Define the nudge-loop guardrail spec
  • #5 — Define the claim-class rule (conspiracy vs solo/split)
  • #6 — Decide Sentry/Elder fate in the chatroom
  • #7 — Probe Jev score and noul; add escape option to mode

Definition of done

CHATROOM_SPEC.md section 13 has no open questions left except names (1) and the calibration-history question (6); each closed question shows a [decided YYYY-MM-DD] line. JEV_STRATEGIES.md has a note with real probe output for score/noul. go test -race is green including the new Jev tests.

Part of: docs/SCOPE.md (S1) Depends on: none ## Objective Close the five decisions that gate all chatroom code: how message kinds get tagged, what stops a nudge loop, when multiple claims on one task are valid, what happens to the Sentry and Elder roles, and what Jev's unexercised question types (`score`, `noul`) actually do on our key. After this epic, a developer can start Epic B and C without asking Smokey anything. ## Context a stranger needs - `CHATROOM_SPEC.md` section 13 lists the open questions; questions 2 (custom Jev labels) is already answered in `JEV_STRATEGIES.md` line 15. The rest are Smokey's calls, per the spec's `[decided]` convention: only he decides, agents propose. - Decisions get recorded by editing `CHATROOM_SPEC.md` (strike the question, write the decision, mark `[decided YYYY-MM-DD]`) and, where they touch the contract, `EVENTS.md`. Contracts-first is a hard rule (`CLAUDE.md` section 9): `EVENTS.md` changes before server or UI code. - Terminology (docs/SCOPE.md): several crows taking one task is **conspiracy** (noun, never a verb); the collective is alluded to only as **"so many crows"** — the word "murder" is never stated in chatroom copy, docs, UI or new payloads. The pipeline's legacy `"murder"` constant is grandfathered until A4 retires the roles that use it. - Today's Jev client (`jev.go`) only sends two `choice` questions with one global 0.7 threshold (`CROWS_JEV_THRESHOLD`). `JEV_STRATEGIES.md` strategies 3 and 4 assume `score` and `noul` work and assume three confidence bands per question — unverified. - Unit tests use a fake HTTP server pattern — see `TestClassifyAgainstFakeServer` in `jev_test.go`. A live probe test must `t.Skip()` when `TYPESAFE_API_KEY` is unset. ## Out of scope for this epic Any chatroom server/UI code. Renaming the pipeline's `murder` constant. Building the ledger. ## Plan of record - [x] #3 — Decide message-kind tagging method - [x] #4 — Define the nudge-loop guardrail spec - [x] #5 — Define the claim-class rule (conspiracy vs solo/split) - [x] #6 — Decide Sentry/Elder fate in the chatroom - [x] #7 — Probe Jev score and noul; add escape option to mode ## Definition of done `CHATROOM_SPEC.md` section 13 has no open questions left except names (1) and the calibration-history question (6); each closed question shows a `[decided YYYY-MM-DD]` line. `JEV_STRATEGIES.md` has a note with real probe output for `score`/`noul`. `go test -race` is green including the new Jev tests.
jacisjake commented 2026-10-28 05:59:11 +00:00 (Migrated from github.com)

Definition of done verified 2026-10-27: all 5 tasks closed; section 13 open items are exactly names (1) and calibration history (6); probe results recorded in JEV_STRATEGIES.md; go test -race green on main (798052a).

Definition of done verified 2026-10-27: all 5 tasks closed; section 13 open items are exactly names (1) and calibration history (6); probe results recorded in JEV_STRATEGIES.md; go test -race green on main (798052a).
Sign in to join this conversation.