Collaborator pass: loop driver, recipe catalog, rulings (stages 5-8) #1084

Closed
opened 2026-10-17 15:24:17 +00:00 by jared · 2 comments
Owner

Problem

bin/collaborator-pass (#1083) measures, joins, classifies, and traces. The loop stops there. Stages 5 to 8 do not exist: prescribe one recipe per cluster from a closed catalog, record a ruling, dispatch through the os-sdlc pipeline, re-measure, and stop at diminishing returns. Without them the collaborator pass still needs a human to read findings.yml and decide.

Reproduce

n/a: new tooling.

Approach

Design settled with Jared on 2026-10-17. Each stage: one input artifact, one output artifact, one tier.

  1. Prescribe: one cluster in, one recipe out as YAML from a closed catalog: preserve whole object, introduce parameter object, build once at the entry, move method to owner, rename. Judgment tier, sonnet with the catalog; opus when two recipes fit.
  2. Rule: accept, amend, reject, recorded in a rulings file under docs/crc/os-sdlc/. Jared first, then os-me prediction, then unattended.
  3. Dispatch: one ticket per accepted recipe through /os-sdlc:implement.
  4. Re-measure: run the signals again; stop a shape when a round changes its signal by less than a set fraction or every remaining finding is ruled expected.

Required work: none beyond the acceptance criteria.

Orchestrator work: /os-adr:find on docs/crc and the pipeline entry before the first edit; the recipe catalog grows by rulings, never by edits without one.

Acceptance criteria

  1. Given findings.yml from #1083, when the prescriber runs on the top cluster, then it emits one recipe from the catalog with target files and an expected signal delta.
  2. Given a recipe, when it is ruled accepted, then the rulings file carries the ruling and a ticket exists on the tracker.
  3. Given two consecutive measurements of one shape with a delta under the configured fraction, when the driver runs, then it marks the shape stopped and moves to the next.

Non-goals

No class in lib is corrected under this ticket. The crc command family pilot is its own ticket.

Origin

  • Trigger: session 2026-10-17 collaborator pass design; #1083 built stages 1-4.
  • Improvised this session: none
  • Chain: no unattended loop ← stages 5-8 not built ← DESIGN (docs/crc/PLAN.md Phase 7a)
  • Root candidate: this ticket
  • Where: plugins/os-sdlc/lib/os_sdlc/collaborator_pass.rb
  • Session: f1eaf768-77b4-48c7-afde-b0344f519273
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/f1eaf768-77b4-48c7-afde-b0344f519273.jsonl
## Problem `bin/collaborator-pass` (#1083) measures, joins, classifies, and traces. The loop stops there. Stages 5 to 8 do not exist: prescribe one recipe per cluster from a closed catalog, record a ruling, dispatch through the os-sdlc pipeline, re-measure, and stop at diminishing returns. Without them the collaborator pass still needs a human to read findings.yml and decide. ## Reproduce n/a: new tooling. ## Approach Design settled with Jared on 2026-10-17. Each stage: one input artifact, one output artifact, one tier. 1. Prescribe: one cluster in, one recipe out as YAML from a closed catalog: preserve whole object, introduce parameter object, build once at the entry, move method to owner, rename. Judgment tier, sonnet with the catalog; opus when two recipes fit. 2. Rule: accept, amend, reject, recorded in a rulings file under docs/crc/os-sdlc/. Jared first, then os-me prediction, then unattended. 3. Dispatch: one ticket per accepted recipe through /os-sdlc:implement. 4. Re-measure: run the signals again; stop a shape when a round changes its signal by less than a set fraction or every remaining finding is ruled expected. Required work: none beyond the acceptance criteria. Orchestrator work: /os-adr:find on docs/crc and the pipeline entry before the first edit; the recipe catalog grows by rulings, never by edits without one. ## Acceptance criteria 1. Given findings.yml from #1083, when the prescriber runs on the top cluster, then it emits one recipe from the catalog with target files and an expected signal delta. 2. Given a recipe, when it is ruled accepted, then the rulings file carries the ruling and a ticket exists on the tracker. 3. Given two consecutive measurements of one shape with a delta under the configured fraction, when the driver runs, then it marks the shape stopped and moves to the next. ## Non-goals No class in lib is corrected under this ticket. The crc command family pilot is its own ticket. ## Origin - Trigger: session 2026-10-17 collaborator pass design; #1083 built stages 1-4. - Improvised this session: none - Chain: no unattended loop ← stages 5-8 not built ← DESIGN (docs/crc/PLAN.md Phase 7a) - Root candidate: this ticket - Where: plugins/os-sdlc/lib/os_sdlc/collaborator_pass.rb - Session: f1eaf768-77b4-48c7-afde-b0344f519273 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/f1eaf768-77b4-48c7-afde-b0344f519273.jsonl
Author
Owner

Work started 2026-10-17 in worktree ticket-1084, same AFK session that shipped #1083. Verdicts in stage 6 come from /os-me:predict and are recorded as by=predicted while Jared is away.

Work started 2026-10-17 in worktree ticket-1084, same AFK session that shipped #1083. Verdicts in stage 6 come from /os-me:predict and are recorded as by=predicted while Jared is away.
Author
Owner

Resolution

Done: Stages 5-8 built as bin/collaborator-pass subcommands (measure --runs, prescribe-brief, validate-recipe, ticket-body, record-ruling, stop-check), the recipe catalog, RecipeCheck rules, rulings TSV, per-shape stop rule, stable copied_entry subjects, and the /os-sdlc:collaborator-pass loop skill with its prescriber prompt.

Evidence: Commits 4b6cdac8 and 661f8546 merged to main. Suite 2023 runs, 0 failures. Rubocop clean on all collaborator-pass files. Smoke: prescribe-brief on the real run for root+run_dir produced a brief with 9 sites, excerpts, jobs, and 3 catalog entries.

Follow-ups: #1087 nested Struct attributed to the outer constant in ParameterTally (skeptic CREATE). The loop's first iteration runs next in this session on #1086. Skill lint advisories (length 120/100, unassigned step owners) left as is; none.

## Resolution **Done:** Stages 5-8 built as bin/collaborator-pass subcommands (measure --runs, prescribe-brief, validate-recipe, ticket-body, record-ruling, stop-check), the recipe catalog, RecipeCheck rules, rulings TSV, per-shape stop rule, stable copied_entry subjects, and the /os-sdlc:collaborator-pass loop skill with its prescriber prompt. **Evidence:** Commits 4b6cdac8 and 661f8546 merged to main. Suite 2023 runs, 0 failures. Rubocop clean on all collaborator-pass files. Smoke: prescribe-brief on the real run for root+run_dir produced a brief with 9 sites, excerpts, jobs, and 3 catalog entries. **Follow-ups:** #1087 nested Struct attributed to the outer constant in ParameterTally (skeptic CREATE). The loop's first iteration runs next in this session on #1086. Skill lint advisories (length 120/100, unassigned step owners) left as is; none.
jared closed this issue 2026-10-17 15:48:05 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#1084
No description provided.