gossipcat 0.6.6 → 0.6.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/HANDBOOK.md CHANGED
@@ -90,9 +90,7 @@ If you see a review agent claiming a "timing order bug" here, it is fabricated.
90
90
 
91
91
  ### 7. The reward loop reads `snapshot.status` back in `skill-loader.ts`
92
92
 
93
- Skills with `status: 'failed'`, `status: 'silent_skill'`, or `status: 'inconclusive' && regressed_from_passed_at != null` (drift-demoted) are filtered out at `loadSkills()` injection time. Skills with `passed`, `pending`, `insufficient_evidence`, `flagged_for_manual_review`, or organically-inconclusive (no `regressed_from_passed_at`) are injected normally. This closes the RL loop — verdict → policy update — in a single place.
94
-
95
- The drift-demoted clause was added with the drift detector (invariant #11). The condition is dual: `status === 'inconclusive'` AND `regressed_from_passed_at` present. Organic inconclusive (the standard "ran the evidence window without a confident verdict" state) still injects — only the "was passed, then regressed" state is quarantined.
93
+ Skills with `status: 'failed'`, `status: 'silent_skill'`, or `status: 'inconclusive' && regressed_from_passed_at != null` (drift-demoted by invariant #11) are filtered out at `loadSkills()` injection time. Skills with `passed`, `pending`, `insufficient_evidence`, `flagged_for_manual_review`, or organically-inconclusive (no `regressed_from_passed_at`) are injected normally. This closes the RL loop — verdict → policy update — in a single place.
96
94
 
97
95
  **Do not** add a second filter site. Filtering is a read-only operation at load-for-injection time; frontmatter is never mutated.
98
96
 
@@ -161,6 +159,16 @@ A **warning is useless** here: it ships in the *same* MCP response packet as the
161
159
 
162
160
  **Do NOT** "fix" this by auto-promoting `sequential` → `worktree`: worktree always forks a fresh branch from the base, which silently discards prior work when the task is a *revision to an existing branch* (see `feedback_worktree_dispatch_branch_divergence`). The caller must choose `worktree` (fresh isolation) or `scoped` (orchestrator-committed) explicitly. The predicate gates on the `-implementer` suffix for the same reason as invariant #10. Consensus: `974a1bb2-de854fb4`.
163
161
 
162
+ ### 14. The orchestrator is a scored pseudo-agent — preconditions only, never decisions
163
+
164
+ PR #629 gave the orchestrator its own signals under `agentId: 'orchestrator'`. Three dispatch-hygiene **preconditions** fire from `runDispatchPreconditionGuard` / `runMidFlightCheck` (`orchestrator-precondition-runner.ts`):
165
+
166
+ - **`dispatched_stale_base`** — the dispatch base diverged from `origin/master`. `detectStaleBase` (`orchestrator-preconditions.ts`) is a 4-way merge-base partition: `fresh`; `behind_origin` (HEAD ⊂ origin); `ahead_of_origin` (origin ⊂ HEAD — a clean branch strictly ahead, **`stale:false`, emits NOTHING**, the normal review-on-branch case); `branched_pre_merge` (true divergence). Only the two `stale:true` reasons emit.
167
+ - **`referenced_unreadable_path`** — a dispatch task names a spec/context path the agent can't read (gitignored-in-worktree or missing).
168
+ - **`mid_flight_fixup`** — a commit landed on the branch during Phase 2 cross-review (detected at collect-synthesis).
169
+
170
+ **Two load-bearing rules.** (1) All three are registered in `OPERATIONAL_SIGNAL_NAMES` (`consensus-types.ts`) → `signal_class: 'operational'` → **EXCLUDED from accuracy scoring** (`performance-reader.ts` `readSignals` keeps only `consensus`/`impl`). They are telemetry, not a score — a noisy precondition never dents an agent score. (2) **Score preconditions, not decisions** — only mechanically-falsifiable dispatch-state failures qualify; never judgment calls. The companion **`ask_back()`** tool re-engages an agent after `hallucination_caught` for a first-person root-cause → `.gossip/fabrication-introspections.jsonl`. Full history: `project_orchestrator_signal_pipeline` memory; `ahead_of_origin` fix consensus `124a9ba4-ca5645e4`.
171
+
164
172
  ---
165
173
 
166
174
  ## Operator playbook (for orchestrator LLMs)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gossipcat",
3
- "version": "0.6.6",
3
+ "version": "0.6.8",
4
4
  "description": "Multi-agent orchestration for Claude Code — parallel review, consensus, adaptive dispatch",
5
5
  "mcpName": "io.github.ataberk-xyz/gossipcat",
6
6
  "repository": {
@@ -34,7 +34,7 @@
34
34
  "test": "jest --config jest.config.base.js",
35
35
  "clean": "rm -rf packages/*/dist apps/*/dist dist-mcp/ dist-dashboard/",
36
36
  "postinstall": "node scripts/postinstall.js",
37
- "build:mcp": "rm -rf dist-mcp && npx esbuild apps/cli/src/mcp-server-sdk.ts --bundle --platform=node --target=node22 --outfile=dist-mcp/mcp-server.js --external:bufferutil --external:utf-8-validate --tsconfig=tsconfig.json && cp -r packages/orchestrator/src/default-skills dist-mcp/default-skills && cp -r packages/orchestrator/src/default-rules dist-mcp/default-rules && cp -r assets dist-mcp/assets && mkdir -p dist-mcp/data && cp data/archetypes.json dist-mcp/data/archetypes.json && chmod +x dist-mcp/mcp-server.js && chmod +x dist-mcp/assets/hooks/worktree-sandbox.sh && chmod +x dist-mcp/assets/hooks/discipline/*.sh",
37
+ "build:mcp": "rm -rf dist-mcp && npx esbuild apps/cli/src/mcp-server-sdk.ts --bundle --platform=node --target=node22 --outfile=dist-mcp/mcp-server.js --external:bufferutil --external:utf-8-validate --external:re2 --tsconfig=tsconfig.json && cp -r packages/orchestrator/src/default-skills dist-mcp/default-skills && cp -r packages/orchestrator/src/default-rules dist-mcp/default-rules && cp -r assets dist-mcp/assets && mkdir -p dist-mcp/data && cp data/archetypes.json dist-mcp/data/archetypes.json && chmod +x dist-mcp/mcp-server.js && chmod +x dist-mcp/assets/hooks/worktree-sandbox.sh && chmod +x dist-mcp/assets/hooks/discipline/*.sh",
38
38
  "build:dashboard": "cd packages/dashboard-v2 && npx vite build --outDir ../../dist-dashboard --emptyOutDir",
39
39
  "prepublishOnly": "npm run build:all && npm run build:mcp && npm run build:dashboard",
40
40
  "gossipcat": "npx ts-node -r tsconfig-paths/register -P tsconfig.json apps/cli/src/index.ts",
@@ -55,6 +55,7 @@
55
55
  "dependencies": {
56
56
  "@clack/prompts": "^1.1.0",
57
57
  "@modelcontextprotocol/sdk": "^1.27.1",
58
+ "re2": "^1.25.0",
58
59
  "tsconfig-paths": "^4.2.0",
59
60
  "ws": "^8.20.1"
60
61
  },