Merge feature/workbench-w5-gates-receipts into unify/skills-20261112

Conflict in queue.py cmd_hold: kept the light-footprint aliases and per-kind stats, added W5's gated() call; W5's qualified() signature is gone and was unused below.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Veen-BirkenbachandClaude Opus 5.5 committed 2026-11-12 16:23:19 +00:00
commit f7c585d56e
9 files changed
+1035 -99

No files matched your search

+11
View File
@@ -387,6 +387,17 @@ class TestWatchCommands(unittest.TestCase):
self.assertTrue(state.exists(), "the hook hung in the mirror before it wrote the stage")
self.assertEqual(json.loads(state.read_text(encoding="utf-8"))["stage"], "ok")
def test_watch_keeps_the_gate_receipts_and_the_recorded_parents(self):
self._quiet_disk()
names = ("gate-receipts.jsonl", "gate-parents.jsonl")
for name in names:
(self.root / name).write_text('{"id": "r1"}\n', encoding="utf-8")
payload = json.dumps({"session_id": "s1", "hook_event_name": "PostToolUse"})
self.assertEqual(self._run("watch", stdin=payload).returncode, 0)
for name in names:
kept = self.base / ".local" / "state" / "agents-council" / name
self.assertEqual(kept.read_text(encoding="utf-8"), '{"id": "r1"}\n')
def test_watch_skips_the_mirror_round_while_its_lock_is_held(self):
self._quiet_disk().write_text('{"id": "a"}\n', encoding="utf-8")
kept = self.base / ".local" / "state" / "agents-council" / "queue-history.jsonl"