From e8ee38be8a753d8a22902ed840247e890666b80e Mon Sep 17 00:00:00 2001 From: Daniel Ochoa Date: Thu, 22 Oct 2026 10:11:17 -0500 Subject: [PATCH 01/13] fix(vibe): encode the 2026-10-22 fleet lessons - Questions carry a default and a deadline (session-questions.mjs --default, --deadline-minutes and the If no answer by line); the recovery pass resumes an idle Codex writer on its default once the deadline passes, never for a flag, copy, destructive, credential or scope question. watch.sh exits with HEARTBEAT every 30 quiet minutes and board.mjs status fails with WATCHER-MISSING. Writers' questions once sat unread for seven hours overnight. - fleet.sh refuses a prompt with Done: claims and no Re-verify: line; the takeover prompt makes the new writer re-verify each claim. - migration-publish.mjs refuses a push that adds a migration with no recorded test, or per-row work with no measured scale test; the environment worker runs it before every push and handoff runs the same check. - Handoff's spec-change rule blocks an edit to an existing spec with no dated human source; rulings-check.mjs --criteria-before blocks a ticket version that rewords or drops a criterion no ruling amends. - executed-check.mjs --kind ticket refuses DONE with unchecked criteria; the ticket worker, cl-execute and cl-sweep run it and status-audit.mjs reads each merged or DONE child's body. - shepherd.mjs stops on a review thread the writer has not answered last; it shares pr-threads.mjs with board.mjs. - vibe 1.0.76 and its changelog. Testing: node --test on each changed suite and pytest on the vibe contracts; each new check shown failing with its fix removed. Full suites run on a second machine. Risks: vibe questions other than flag, copy, destructive, credential or scope ones now need a default and a deadline; status-audit needs the body of every merged or DONE child. --- CHANGELOG.md | 13 +++ plugins/vibe/.claude-plugin/plugin.json | 2 +- plugins/vibe/.codex-plugin/plugin.json | 2 +- .../vibe/agents/vibe-environment-worker.md | 7 +- .../vibe/agents/vibe-guardrails-reviewer.md | 3 +- plugins/vibe/agents/vibe-ticket-worker.md | 8 +- .../references/monitoring-merge-completion.md | 4 +- .../cl-sweep/references/open-pr-lifecycle.md | 4 +- .../vibe/skills/codex-fleet-monitor/SKILL.md | 4 + .../codex-fleet-monitor/scripts/recover.mjs | 49 +++++++++- .../scripts/recover.test.mjs | 27 ++++++ .../codex-fleet-monitor/scripts/watch.sh | 15 ++-- .../scripts/watcher.test.mjs | 11 +++ .../vibe/skills/fleet-orchestrator/SKILL.md | 7 +- .../references/templates.md | 6 +- .../fleet-orchestrator/scripts/board.mjs | 27 +++--- .../fleet-orchestrator/scripts/board.test.mjs | 14 +++ .../scripts/codex-session.mjs | 7 ++ .../scripts/codex-session.test.mjs | 11 +++ .../scripts/status-audit.mjs | 47 +++++++--- .../scripts/status-audit.test.mjs | 28 ++++-- plugins/vibe/skills/handoff/SKILL.md | 5 +- .../skills/handoff/scripts/criteria-audit.mjs | 28 +++++- .../skills/handoff/scripts/diff-rules.mjs | 7 ++ .../handoff/scripts/diff-rules.test.mjs | 36 +++++++- .../skills/handoff/scripts/executed-check.mjs | 36 ++++++-- .../handoff/scripts/executed-check.test.mjs | 37 +++++++- .../skills/handoff/scripts/rulings-check.mjs | 27 ++++-- .../handoff/scripts/rulings-check.test.mjs | 14 ++- .../skills/handoff/scripts/spec-rules.mjs | 36 ++++++++ plugins/vibe/skills/vibe/SKILL.md | 5 +- .../vibe/skills/vibe/references/guardrails.md | 8 +- .../skills/vibe/scripts/migration-publish.mjs | 89 +++++++++++++++++++ .../vibe/scripts/migration-publish.test.mjs | 62 +++++++++++++ .../vibe/skills/vibe/scripts/pr-threads.mjs | 25 ++++++ .../skills/vibe/scripts/session-questions.mjs | 40 ++++++++- .../vibe/scripts/session-questions.test.mjs | 35 ++++++-- plugins/vibe/skills/vibe/scripts/shepherd.mjs | 24 ++++- .../skills/vibe/scripts/shepherd.test.mjs | 22 ++++- .../python/test_vibe_1076_lessons_contract.py | 68 ++++++++++++++ 40 files changed, 800 insertions(+), 100 deletions(-) create mode 100644 plugins/vibe/skills/handoff/scripts/spec-rules.mjs create mode 100644 plugins/vibe/skills/vibe/scripts/migration-publish.mjs create mode 100644 plugins/vibe/skills/vibe/scripts/migration-publish.test.mjs create mode 100644 plugins/vibe/skills/vibe/scripts/pr-threads.mjs create mode 100644 plugins/vibe/tools/python/test_vibe_1076_lessons_contract.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 0041d172..effb2f3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ All notable changes to the claude-plugins project will be documented in this fil The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Entries are listed newest-first; each plugin section is treated as released when merged to `main`. +### vibe v1.0.76 + +The six open lessons from the 2026-10-22 fleet run, each with a mechanical check. + +#### Added +- Questions carry a default and a deadline: `session-questions.mjs ask` needs `--default` and `--deadline-minutes` and returns the `If no answer by