You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: CoalBoard v1.3.2 — coalboardMode:off no longer silences self-update (board-audit)
Board-audit LOW (verify-triaged + 3-sub applied + reviewed, review=SHIP, 28 tests green):
the conductor returned early on boardOff, suppressing the SessionStart self-update check —
but coalboardMode (the board AND-gate) and updateMode (self-update) are orthogonal
off-switches. Now the board's UserPromptSubmit path is skipped when off while the
SessionStart self-update still fires per its own updateMode. + the companion test (had
encoded the bug).
Gate: build + verify + 28 tests PASS.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "coalboard",
3
-
"version": "1.3.1",
3
+
"version": "1.3.2",
4
4
"description": "CoalBoard — a diverse-lens consensus & debate board. Its primary auto-trigger is the error-not-allowed slice (security/crypto, migrations, high-precision math); convened manually it generalizes to any hard problem worth several perspectives. On a critical task, with consent, it spawns diverse epistemic lenses in parallel — empirical (live source-grounding), formal (logic), and a show-me skeptic — a judge synthesizes on VERIFIED inputs, an independent out-of-frame solver breaks ties, and the human signs off. Guarantees bounded cost (no whack-a-mole) and zero-breakage (staging); improves correctness without claiming a reliability number. Cross-agent (any subagent platform; Claude Code adds cost-optimized tiering). Zero-dependency, offline, no API keys.",
Copy file name to clipboardExpand all lines: CHANGELOG.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,15 @@
2
2
3
3
All notable changes to CoalBoard are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow SemVer (the canonical version lives in `.claude-plugin/plugin.json`).
4
4
5
+
## [1.3.2] — 2026-06-21
6
+
7
+
**PATCH** — board-audit fix (verify-triaged from the whole-Colliery nasa board); bugfix only.
8
+
9
+
### Fixed
10
+
-**`coalboardMode:off` no longer silences self-update.** The conductor returned early on `boardOff`, which also suppressed the SessionStart self-update check — but the board AND-gate (`coalboardMode`) and self-update (`updateMode`) are ORTHOGONAL (independent off-switches). Now the board's UserPromptSubmit path is skipped when off while the SessionStart self-update still fires per its own `updateMode`. (+ the companion test, which had encoded the bug.)
11
+
12
+
Gate: build + verify + 28 tests PASS.
13
+
5
14
## [1.3.1] — 2026-06-21
6
15
7
16
**PATCH**: report-context sharpen + doc sibling-consistency; no change to the board flow or config.
// stays silent (Phoenix #13 zero-noise — the hook is wired to SessionStart + UserPromptSubmit;
128
129
// never emit on an unexpected/unknown event).
129
130
if(event!=='SessionStart')return;
130
-
letmsg="[CoalBoard] Consensus board available. On an error-not-allowed task (security/crypto, DB/financial migration, high-precision math), WITH the user's consent, convene the board: diverse lenses debate in parallel -> a judge synthesizes on VERIFIED inputs -> staged to .coalboard/proposed/ -> the human signs off. Off ~90% of the time; never touches live files until verified + approved. Judge EVERY prompt by semantic INTENT, not only the English Layer-1 keywords -- a non-English or obfuscated critical task matches no keyword seed yet still warrants the board.";
131
+
// The board contract is gated by coalboardMode; self-update is ORTHOGONAL (its own off-switch
132
+
// is updateMode), so it still fires when the board is off — the two keys are independent.
133
+
letmsg=off ? '' : "[CoalBoard] Consensus board available. On an error-not-allowed task (security/crypto, DB/financial migration, high-precision math), WITH the user's consent, convene the board: diverse lenses debate in parallel -> a judge synthesizes on VERIFIED inputs -> staged to .coalboard/proposed/ -> the human signs off. Off ~90% of the time; never touches live files until verified + approved. Judge EVERY prompt by semantic INTENT, not only the English Layer-1 keywords -- a non-English or obfuscated critical task matches no keyword seed yet still warrants the board.";
131
134
if(updateDue(cfg)){
132
-
msg+=' [self-update due] Offer the /coalboard:update check (compare the latest git tag to the installed version, then offer `claude plugin update`). Consent-gated; the hook only scheduled it.';
135
+
msg+=(msg ? ' ' : '[CoalBoard] ')+'[self-update due] Offer the /coalboard:update check (compare the latest git tag to the installed version, then offer `claude plugin update`). Consent-gated; the hook only scheduled it.';
133
136
}
134
-
process.stdout.write(msg);
137
+
if(msg)process.stdout.write(msg);
135
138
}
136
139
137
140
try{main();}catch{/* Phoenix #4: fail-silent, never crash the host */}
Copy file name to clipboardExpand all lines: plugin/.claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
{
2
2
"name": "coalboard",
3
-
"version": "1.3.1",
3
+
"version": "1.3.2",
4
4
"description": "CoalBoard — a diverse-lens consensus & debate board. Its primary auto-trigger is the error-not-allowed slice (security/crypto, migrations, high-precision math); convened manually it generalizes to any hard problem worth several perspectives. On a critical task, with consent, it spawns diverse epistemic lenses in parallel — empirical (live source-grounding), formal (logic), and a show-me skeptic — a judge synthesizes on VERIFIED inputs, an independent out-of-frame solver breaks ties, and the human signs off. Guarantees bounded cost (no whack-a-mole) and zero-breakage (staging); improves correctness without claiming a reliability number. Cross-agent (any subagent platform; Claude Code adds cost-optimized tiering). Zero-dependency, offline, no API keys.",
// stays silent (Phoenix #13 zero-noise — the hook is wired to SessionStart + UserPromptSubmit;
128
129
// never emit on an unexpected/unknown event).
129
130
if(event!=='SessionStart')return;
130
-
letmsg="[CoalBoard] Consensus board available. On an error-not-allowed task (security/crypto, DB/financial migration, high-precision math), WITH the user's consent, convene the board: diverse lenses debate in parallel -> a judge synthesizes on VERIFIED inputs -> staged to .coalboard/proposed/ -> the human signs off. Off ~90% of the time; never touches live files until verified + approved. Judge EVERY prompt by semantic INTENT, not only the English Layer-1 keywords -- a non-English or obfuscated critical task matches no keyword seed yet still warrants the board.";
131
+
// The board contract is gated by coalboardMode; self-update is ORTHOGONAL (its own off-switch
132
+
// is updateMode), so it still fires when the board is off — the two keys are independent.
133
+
letmsg=off ? '' : "[CoalBoard] Consensus board available. On an error-not-allowed task (security/crypto, DB/financial migration, high-precision math), WITH the user's consent, convene the board: diverse lenses debate in parallel -> a judge synthesizes on VERIFIED inputs -> staged to .coalboard/proposed/ -> the human signs off. Off ~90% of the time; never touches live files until verified + approved. Judge EVERY prompt by semantic INTENT, not only the English Layer-1 keywords -- a non-English or obfuscated critical task matches no keyword seed yet still warrants the board.";
131
134
if(updateDue(cfg)){
132
-
msg+=' [self-update due] Offer the /coalboard:update check (compare the latest git tag to the installed version, then offer `claude plugin update`). Consent-gated; the hook only scheduled it.';
135
+
msg+=(msg ? ' ' : '[CoalBoard] ')+'[self-update due] Offer the /coalboard:update check (compare the latest git tag to the installed version, then offer `claude plugin update`). Consent-gated; the hook only scheduled it.';
133
136
}
134
-
process.stdout.write(msg);
137
+
if(msg)process.stdout.write(msg);
135
138
}
136
139
137
140
try{main();}catch{/* Phoenix #4: fail-silent, never crash the host */}
0 commit comments