harness-everything 0.30.0 → 0.30.2

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.
Files changed (40) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +13 -0
  4. package/ci/fable-mode-test.js +16 -0
  5. package/ci/prompt-contract-regressions.test.js +60 -0
  6. package/docs/workflows/fable-mode.md +7 -0
  7. package/docs/workflows/skill-style.md +4 -4
  8. package/fable-mode/SKILL.md +1 -1
  9. package/fable-mode/agents/fable-orchestrator.md +4 -4
  10. package/fable-mode/agents/fable-worker-haiku.md +5 -6
  11. package/fable-mode/agents/fable-worker-sonnet.md +6 -6
  12. package/fable-mode/execution-guardrails/SKILL.md +5 -3
  13. package/fable-mode/execution-guardrails/references/guardrail-rules.md +12 -8
  14. package/fable-mode/fable-haiku/SKILL.md +1 -1
  15. package/fable-mode/fable-opus/SKILL.md +1 -1
  16. package/fable-mode/fable-sonnet/SKILL.md +1 -1
  17. package/harness-everything/SKILL.md +1 -1
  18. package/harness-everything/scripts/kernel-router-core.js +0 -1
  19. package/harness-everything/scripts/kernel-router.js +0 -1
  20. package/opencode-plugin/plugin.json +1 -1
  21. package/package.json +2 -2
  22. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  23. package/plugins/harness-everything/plugin.json +1 -1
  24. package/plugins/harness-everything/skills/fable-mode/SKILL.md +1 -1
  25. package/plugins/harness-everything/skills/fable-mode/agents/fable-orchestrator.md +4 -4
  26. package/plugins/harness-everything/skills/fable-mode/agents/fable-worker-haiku.md +5 -6
  27. package/plugins/harness-everything/skills/fable-mode/agents/fable-worker-sonnet.md +6 -6
  28. package/plugins/harness-everything/skills/fable-mode/execution-guardrails/SKILL.md +5 -3
  29. package/plugins/harness-everything/skills/fable-mode/execution-guardrails/references/guardrail-rules.md +12 -8
  30. package/plugins/harness-everything/skills/fable-mode/fable-haiku/SKILL.md +1 -1
  31. package/plugins/harness-everything/skills/fable-mode/fable-opus/SKILL.md +1 -1
  32. package/plugins/harness-everything/skills/fable-mode/fable-sonnet/SKILL.md +1 -1
  33. package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
  34. package/plugins/harness-everything/skills/harness-everything/scripts/kernel-router-core.js +0 -1
  35. package/plugins/harness-everything/skills/harness-everything/scripts/kernel-router.js +0 -1
  36. package/plugins/harness-everything/skills/skill-style/SKILL.md +2 -2
  37. package/plugins/harness-everything/skills/skill-style/references/style-guide.md +5 -5
  38. package/sbom.cdx.json +7 -7
  39. package/skill-style/SKILL.md +2 -2
  40. package/skill-style/references/style-guide.md +5 -5
@@ -10,7 +10,7 @@
10
10
  "name": "harness-everything",
11
11
  "source": "./",
12
12
  "description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
13
- "version": "0.30.0",
13
+ "version": "0.30.2",
14
14
  "author": {
15
15
  "name": "Miya Daniel"
16
16
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "harness-everything",
3
3
  "description": "Harness OS: an orchestrated agent operating system — tier routing, circuit breaker guardrails, verification gates, WAL session memory, and self-evolving workspace rules.",
4
- "version": "0.30.0",
4
+ "version": "0.30.2",
5
5
  "author": {
6
6
  "name": "Miya Daniel"
7
7
  },
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## [0.30.2](https://github.com/dyphn1/Harness-everything/compare/v0.30.1...v0.30.2) (2026-10-01)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **prompts:** remove stale and duplicate guidance ([e8c326b](https://github.com/dyphn1/Harness-everything/commit/e8c326b687e6bac3e8fa3531376ea66371445406))
10
+
11
+ ## [0.30.1](https://github.com/dyphn1/Harness-everything/compare/v0.30.0...v0.30.1) (2026-10-01)
12
+
13
+ ### Bug Fixes
14
+
15
+ * **fable:** keep minor warnings reporting-only ([28d01e6](https://github.com/dyphn1/Harness-everything/commit/28d01e62acd223ca7506fe721204f29dc94518b8))
16
+ * **fable:** restore guardrail markdown spacing ([7daff05](https://github.com/dyphn1/Harness-everything/commit/7daff054ba39b9e28ddcc4a3a2441b0f6f448d22))
17
+
5
18
  ## [0.30.0](https://github.com/dyphn1/Harness-everything/compare/v0.29.0...v0.30.0) (2026-09-28)
6
19
 
7
20
  ### Features
@@ -107,6 +107,22 @@ assert.match(ordinaryTier2.stdout, /RECOMMENDED TIER: Tier 2/);
107
107
  assert.doesNotMatch(ordinaryTier2.stdout, /REQUESTED FABLE MODEL MODE/);
108
108
  assert.doesNotMatch(ordinaryTier2.stdout, /fable-opus\/SKILL\.md/);
109
109
 
110
+ const warningBatchContract = '**Warning batching.** Collect minor concerns and list them together in the next natural report or handoff; their count alone MUST NOT stop, pause, or return the worker/stage. An independently material, confirmed concern may stop the current stage and be surfaced immediately.';
111
+ for (const rel of [
112
+ 'fable-mode/agents/fable-worker-haiku.md',
113
+ 'fable-mode/agents/fable-worker-sonnet.md',
114
+ 'fable-mode/agents/fable-orchestrator.md',
115
+ 'fable-mode/execution-guardrails/SKILL.md',
116
+ ]) {
117
+ const prompt = fs.readFileSync(path.join(root, rel), 'utf8').replace(/\s+/g, ' ');
118
+ assert.ok(prompt.includes(warningBatchContract), `${rel} must keep minor-concern batching reporting-only`);
119
+ assert.doesNotMatch(
120
+ prompt,
121
+ /minor concerns.{0,200}stop and surface all at once before continuing/i,
122
+ `${rel} must not introduce a warning-count stop condition`
123
+ );
124
+ }
125
+
110
126
  const auditLines = fs.readFileSync(auditFile, 'utf8').trim().split(/\r?\n/).filter(Boolean);
111
127
  assert.strictEqual(auditLines.length, 5);
112
128
  for (const line of auditLines) {
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ const assert = require('assert');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const { spawnSync } = require('child_process');
7
+
8
+ const ROOT = path.resolve(__dirname, '..');
9
+ function read(rel) {
10
+ return fs.readFileSync(path.join(ROOT, rel), 'utf8');
11
+ }
12
+
13
+ // #268: model aliases evolve, so worker prompts must encode behavior rather
14
+ // than generation-specific personality/failure claims.
15
+ const workerPairs = [
16
+ ['fable-mode/agents/fable-worker-haiku.md', 'plugins/harness-everything/skills/fable-mode/agents/fable-worker-haiku.md'],
17
+ ['fable-mode/agents/fable-worker-sonnet.md', 'plugins/harness-everything/skills/fable-mode/agents/fable-worker-sonnet.md'],
18
+ ];
19
+ for (const [canonical, packaged] of workerPairs) {
20
+ const body = read(canonical);
21
+ assert.ok(!/\b(?:Haiku|Sonnet)'s known failure\b/i.test(body), canonical + ' must not carry generation-specific failure traits');
22
+ assert.strictEqual(read(packaged), body, canonical + ' packaged mirror must match');
23
+ }
24
+ assert.ok(/named check is not optional/i.test(read(workerPairs[0][0])), 'Haiku worker keeps the verification behavior');
25
+ assert.ok(/A check\s+you did not run did not pass/i.test(read(workerPairs[1][0])), 'Sonnet worker keeps the verification behavior');
26
+
27
+ // #270: skill-style requires the elements, not one global physical order.
28
+ const skillStyle = read('skill-style/SKILL.md');
29
+ for (const marker of ['# Skill Style', '## Skill Contract', '## USE FOR:', '## DO NOT USE FOR:', '## Core Rules']) {
30
+ assert.ok(skillStyle.includes(marker), 'skill-style keeps required element: ' + marker);
31
+ }
32
+ for (const rel of [
33
+ 'skill-style/SKILL.md',
34
+ 'plugins/harness-everything/skills/skill-style/SKILL.md',
35
+ 'docs/workflows/skill-style.md',
36
+ 'skill-style/references/style-guide.md',
37
+ 'plugins/harness-everything/skills/skill-style/references/style-guide.md',
38
+ ]) {
39
+ const body = read(rel);
40
+ assert.ok(!/MUST include, in order:/i.test(body), rel + ' must not require the retired global section order');
41
+ assert.ok(!/Include in order:/i.test(body), rel + ' must not describe the retired global section order');
42
+ assert.ok(!/includes in order:/i.test(body), rel + ' must not checklist the retired global section order');
43
+ assert.ok(!/reorder the file to title, introduction, Skill Contract, usage, and actionable rules/i.test(body), rel + ' must not prescribe the retired global section order');
44
+ }
45
+ assert.ok(/section order MAY vary/i.test(skillStyle), 'skill-style explicitly permits readability-driven section ordering');
46
+
47
+ // #272: preserve one detailed checkpoint plus the invariant; remove duplicate
48
+ // restatements from later sections of the same router injection.
49
+ const kernel = path.join(ROOT, 'harness-everything/scripts/kernel-router.js');
50
+ const routed = spawnSync(process.execPath, [kernel, 'add a login endpoint with tests and update the implementation'], {
51
+ cwd: ROOT,
52
+ encoding: 'utf8',
53
+ });
54
+ assert.strictEqual(routed.status, 0, routed.stderr || 'kernel router must exit successfully');
55
+ assert.ok(routed.stdout.includes('Suggestion evaluation: MANDATORY.'), 'checkpoint keeps the detailed suggestion-resolution rule');
56
+ assert.ok(routed.stdout.includes('evaluate-suggestions-before-skip:'), 'semantic invariant remains emitted');
57
+ assert.ok(!routed.stdout.includes('Read-before-skip:'), 'workflow-skill footer must not duplicate suggestion resolution');
58
+ assert.ok(!routed.stdout.includes('Every suggested skill MUST resolve applicability.'), 'semantic-contract footer must not duplicate suggestion resolution');
59
+
60
+ console.log('PASS: prompt contract regressions');
@@ -76,6 +76,13 @@ flowchart TD
76
76
  Check -->|Pass| Handoff[Compact evidence + handoff]
77
77
  ```
78
78
 
79
+ Minor-concern batching is **not** a stage transition. Workers keep producing and
80
+ verifying the assigned artifact and include accumulated minor concerns in the next
81
+ natural report/handoff; the number of minor concerns alone never stops or returns a
82
+ worker. A material confirmed blocker may stop the current stage immediately. Repeated
83
+ matching execution failures use the separate Rule-of-3 path: zoom out, reflect, then
84
+ `RESUME` on a new approach or `ESCALATE` when a real decision is required.
85
+
79
86
  At most two full replans are allowed before unresolved blockers are escalated rather than hidden behind endless restructuring.
80
87
 
81
88
  ## 5. Completion Boundary
@@ -11,8 +11,8 @@ Source of truth: `skill-style/SKILL.md`.
11
11
  ```mermaid
12
12
  graph TD
13
13
  TriggerEdit["Trigger: creating, reviewing, or refactoring a Harness SKILL.md"] --> FrontAccurate["Keep frontmatter accurate and description routeable"]
14
- FrontAccurate --> OrderCheck["Include in order: title, introduction, Skill Contract, usage, actionable rules"]
15
- OrderCheck --> ImperativeGate["Use imperative language and name the enforcing command or gate"]
14
+ FrontAccurate --> SectionCheck["Cover purpose, Skill Contract, usage/applicability, and actionable rules; order may vary"]
15
+ SectionCheck --> ImperativeGate["Use imperative language and name the enforcing command or gate"]
16
16
  ImperativeGate --> OverlapCheck["Avoid overlap with OS-layer routing or domain expertise"]
17
17
  OverlapCheck --> ConsistencyGate["Gate: npm run test:consistency plus style-guide review"]
18
18
  ConsistencyGate --> ConciseOut["Output: concise, complete, non-overlapping SKILL.md"]
@@ -44,12 +44,12 @@ graph LR
44
44
 
45
45
  ## 3. Real-World Use Case
46
46
 
47
- An author drafts a new `backup-restore` SKILL.md and runs a style pass. They tighten the frontmatter description for routing, reorder the file to title, introduction, Skill Contract, usage, and actionable rules, rewrite vague advice in imperative language naming `npm run test:consistency` as the gate, remove duplicated routing already owned elsewhere, and check `skill-style/references/style-guide.md`. Intent interviewing and prompt testing are handed to `skill-creator/SKILL.md` per the Core Rules.
47
+ An author drafts a new `backup-restore` SKILL.md and runs a style pass. They tighten the frontmatter description for routing, check that the skill purpose, Skill Contract, usage/applicability, and actionable rules are all present without forcing a global section order, rewrite vague advice in imperative language naming `npm run test:consistency` as the gate, remove duplicated routing already owned elsewhere, and check `skill-style/references/style-guide.md`. Intent interviewing and prompt testing are handed to `skill-creator/SKILL.md` per the Core Rules.
48
48
 
49
49
  ## 4. Verification Check
50
50
 
51
51
  - [ ] Frontmatter accurate and description routeable
52
- - [ ] File includes in order: title, introduction, Skill Contract, usage, and actionable rules
52
+ - [ ] File covers the skill purpose, Skill Contract, usage/applicability, and actionable rules; section order may vary
53
53
  - [ ] Imperative language used with the enforcing command or gate named (`npm run test:consistency` plus style-guide review)
54
54
  - [ ] No overlap with OS-layer routing or domain expertise; catalog overlap checked
55
55
  - [ ] Tone, formatting, and progressive disclosure standardized per `skill-style/references/style-guide.md`
@@ -4,7 +4,7 @@ description: "Stage large, multi-source or multi-session tasks through a written
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode (v3)
@@ -152,10 +152,10 @@ hasn't been confirmed present. Absence of evidence is not the finding; web
152
152
  silence is never grounds for a warning against the user's firsthand information.
153
153
  Confirm, then flag.
154
154
 
155
- **Warning threshold.** Keep a running count of minor concerns. At three
156
- accumulated (unless the briefing sets a different number), stop and surface all
157
- at once before continuing. An independently material, confirmed concern does not
158
- wait for the threshold.
155
+ **Warning batching.** Collect minor concerns and list them together in the next
156
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
157
+ worker/stage. An independently material, confirmed concern may stop the current
158
+ stage and be surfaced immediately.
159
159
 
160
160
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
161
161
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -19,8 +19,7 @@ Rules, in order:
19
19
  3. **Verify — tightened for this tier.** Run the named check from your briefing
20
20
  and include its output. NO artifact may be reported unverified without naming
21
21
  what check was impossible and why — a bare "unverified" is itself a failure.
22
- Haiku's known failure is skipping verification under time pressure; the check
23
- is not optional.
22
+ The named check is not optional.
24
23
  4. **Escalate instead of improvising.** If the assignment turns out to need
25
24
  judgment or synthesis (conflicting sources, ambiguous spec, design choices),
26
25
  stop and return the specific blocker — recommend fable-worker-sonnet. Do not
@@ -41,10 +40,10 @@ Grep, diff, run it, or check the source directly. Never report a problem that
41
40
  hasn't been confirmed present. Absence of evidence is not the finding. Confirm,
42
41
  then flag.
43
42
 
44
- **Warning threshold.** Keep a running count of minor concerns. At three
45
- accumulated (unless the briefing sets a different number), stop and surface all
46
- at once before continuing. An independently material, confirmed concern does not
47
- wait for the threshold.
43
+ **Warning batching.** Collect minor concerns and list them together in the next
44
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
45
+ worker/stage. An independently material, confirmed concern may stop the current
46
+ stage and be surfaced immediately.
48
47
 
49
48
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
50
49
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -19,8 +19,8 @@ Rules of the loop, in order:
19
19
  do not build it.
20
20
  3. **Verify with the named check.** Your briefing states the pass condition. Run
21
21
  it — the actual command, diff, or read-back — and include the output in your
22
- report. Sonnet's known failure is substituting "looks right" for the check
23
- that can fail; do not do that. A check you did not run did not pass. If the
22
+ report. Do not substitute "looks right" for a check that can fail. A check
23
+ you did not run did not pass. If the
24
24
  check is impossible, say exactly what was impossible and why, and mark the
25
25
  artifact unverified.
26
26
  4. **Report format:** artifact path, check command, check output, confirmed
@@ -42,10 +42,10 @@ hasn't been confirmed present. Absence of evidence is not the finding; web
42
42
  silence is never grounds for a warning against the user's firsthand information.
43
43
  Confirm, then flag.
44
44
 
45
- **Warning threshold.** Keep a running count of minor concerns. At three
46
- accumulated (unless the briefing sets a different number), stop and surface all
47
- at once before continuing. An independently material, confirmed concern does not
48
- wait for the threshold.
45
+ **Warning batching.** Collect minor concerns and list them together in the next
46
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
47
+ worker/stage. An independently material, confirmed concern may stop the current
48
+ stage and be surfaced immediately.
49
49
 
50
50
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
51
51
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -7,7 +7,7 @@ description: >-
7
7
  license: Apache-2.0
8
8
  metadata:
9
9
  author: Miya Daniel
10
- version: 0.16.3
10
+ version: 0.30.2
11
11
  ---
12
12
 
13
13
  # Execution Guardrails
@@ -17,7 +17,7 @@ metadata:
17
17
  | Component | Spec |
18
18
  | :--- | :--- |
19
19
  | **Trigger / Input** | Turn raising a warning or performing search-and-replace edits. |
20
- | **Expected Output** | Verified warnings; batched caveats (3-item threshold); corruption-checked edits. |
20
+ | **Expected Output** | Verified warnings; batched caveats without count-based stops; corruption-checked edits. |
21
21
  | **State Mutations** | None — governs execution quality for file-editing turns. |
22
22
  | **Enforcement Gate** | Verify before flagging; validate edits post-write. |
23
23
 
@@ -35,9 +35,11 @@ metadata:
35
35
  ## Core Rules
36
36
 
37
37
  1. **Verify before flag** — Confirm a problem exists before reporting it. Never convert absence of evidence into a warning.
38
- 2. **Warning threshold** — Batch minor concerns; surface them together at three (default). Material concerns do not wait.
38
+ 2. **Warning batching.** Collect minor concerns and list them together in the next natural report or handoff; their count alone MUST NOT stop, pause, or return the worker/stage. An independently material, confirmed concern may stop the current stage and be surfaced immediately.
39
39
  3. **Find-and-replace safety** — Prefer structured edit tools over shell `sed`; anchor with unique context or `\bword\b` boundaries; verify file integrity post-edit. Never replace-all blindly.
40
40
 
41
+ Repeated matching execution failures remain governed by Rule-of-3 / `zoom-out`; warning batching never substitutes for that recovery path.
42
+
41
43
  These rules are always-on, even when `fable-mode`'s staged loop is not running.
42
44
 
43
45
  Deep dive: <this-skill-dir>/references/guardrail-rules.md
@@ -26,17 +26,21 @@ attempted and where it failed — not a vague appeal to difficulty.
26
26
 
27
27
  ## 2. Warning threshold
28
28
 
29
- Across any run, minor concerns accumulate that aren't worth halting on individually.
30
- Keep a running count. At the threshold — **default three, tunable if the user sets a
31
- different number** — stop and surface all of them to the user at once before continuing.
29
+ Across any run, minor concerns accumulate that are not worth interrupting execution
30
+ for individually. Keep a running count. At the threshold — **default three, tunable if
31
+ the user sets a different number** — batch them for the next natural report or handoff.
32
+ The threshold changes presentation only: it MUST NOT stop, pause, return, or otherwise
33
+ end a worker/stage by count alone.
32
34
 
33
- Rationale: three small things pointing the same direction usually mean one real problem
34
- worth a decision. Below threshold, keep working; a drip of trivial caveats is noise.
35
- At threshold, batch them — one interruption with full context beats three fragmentary
36
- ones.
35
+ Rationale: three small things pointing the same direction are easier to evaluate as one
36
+ batch. Below threshold, keep working; a drip of trivial caveats is noise. At threshold,
37
+ keep working and preserve the batch for the report instead of creating a second circuit
38
+ breaker.
37
39
 
38
40
  A concern that independently meets the verify-before-flag bar and is material on its own
39
- does not wait for the threshold. The threshold governs minor concerns only.
41
+ may stop the current stage and be surfaced immediately. Repeated matching execution
42
+ failures are governed separately by Rule-of-3 -> zoom-out -> RESUME/ESCALATE. The
43
+ warning threshold governs minor-concern reporting only.
40
44
 
41
45
  ## 3. Find-and-replace safety
42
46
 
@@ -4,7 +4,7 @@ description: "Run staged fable work on Haiku for bulk mechanical tasks with expl
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Haiku
@@ -4,7 +4,7 @@ description: "Run staged fable orchestration on Opus for cross-stage synthesis,
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Opus
@@ -4,7 +4,7 @@ description: "Run staged fable work on Sonnet for non-trivial implementation, re
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Sonnet
@@ -4,7 +4,7 @@ description: "Route software/project work through Harness: classify tier/topolog
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.30.0
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Harness Everything
@@ -194,7 +194,6 @@ function printKernelContract(plan) {
194
194
  emitted.add(skill);
195
195
  if (skill === 'fable-mode') emitted.add('fable-discipline');
196
196
  }
197
- console.log(' - Read-before-skip: MUST evaluate every suggested skill entry before omission. If applicable, MUST follow its core contract; adopting one suggestion does not waive resolution of the others.');
198
197
  if (plan.strategy && plan.strategy.startsWith('fable-')) {
199
198
  console.log(' - Fable is not a universal pipeline, but a selected Fable topology must be entered and resolved before completion.');
200
199
  }
@@ -151,7 +151,6 @@ function run(raw) {
151
151
  if (plan.strategySelection === 'selected') {
152
152
  console.log(' - Selected-topology required obligations are semantic MUSTs; implementation technique and local tactics MAY adapt.');
153
153
  console.log(' - Before claiming completion, MUST resolve required workflow evidence and objective verification, or report an explicit blocked/degraded disposition.');
154
- console.log(' - Every suggested skill MUST resolve applicability. If applicable, follow its core contract; if not-applicable, keep a flow-grounded reason.');
155
154
  console.log(' - Tier 3 / Fable broad mutation MUST resolve isolation: verified linked worktree or explicit degraded fallback. Missing isolation is not a Harness lock.');
156
155
  console.log(' - Escape is only for genuinely uncovered declared scope with evidence; it does not erase covered MUST obligations.');
157
156
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "harness-enforcement",
3
3
  "description": "Repository inventory for the opencode enforcement plugin and its standalone helper",
4
- "version": "0.30.0",
4
+ "version": "0.30.2",
5
5
  "runtime": "index.mjs",
6
6
  "hooks": {
7
7
  "verify": "hooks/verify.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-everything",
3
- "version": "0.30.0",
3
+ "version": "0.30.2",
4
4
  "description": "Harness OS: An Orchestrated Agent Operating System for AI-driven Development",
5
5
  "main": "harness-everything/scripts/bootstrap.js",
6
6
  "bin": {
@@ -17,7 +17,7 @@
17
17
  "repo:contract": "node scripts/repository-contract.js",
18
18
  "docs:sync": "node scripts/sync-current-docs.js",
19
19
  "test:repo-contract": "node ci/repository-contract.test.js",
20
- "test:consistency": "node ci/consistency-check.js && node ci/doc-capability-consistency.test.js && node ci/repository-contract.test.js && node ci/mechanism-2ao-plugin-sync.test.js",
20
+ "test:consistency": "node ci/consistency-check.js && node ci/doc-capability-consistency.test.js && node ci/repository-contract.test.js && node ci/mechanism-2ao-plugin-sync.test.js && node ci/prompt-contract-regressions.test.js",
21
21
  "test:docs:capabilities": "node ci/doc-capability-consistency.test.js",
22
22
  "test:references": "node ci/reference-check.js",
23
23
  "test:release": "node ci/release-consistency-check.js && node ci/mechanism-2x-release-automation.test.js && node ci/mechanism-2x-release-commit-message.test.js && node ci/mechanism-2ap-sbom.test.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harness-everything",
3
- "version": "0.30.0",
3
+ "version": "0.30.2",
4
4
  "description": "Invariant-first engineering harness for routing, verification, and failure recovery while preserving agent autonomy.",
5
5
  "author": {
6
6
  "name": "Miya Daniel",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "harness-everything",
4
- "version": "0.30.0",
4
+ "version": "0.30.2",
5
5
  "description": "Invariant-first engineering harness for routing, verification, and failure recovery while preserving agent autonomy.",
6
6
  "author": {
7
7
  "name": "Miya Daniel",
@@ -4,7 +4,7 @@ description: "Stage large, multi-source or multi-session tasks through a written
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode (v3)
@@ -152,10 +152,10 @@ hasn't been confirmed present. Absence of evidence is not the finding; web
152
152
  silence is never grounds for a warning against the user's firsthand information.
153
153
  Confirm, then flag.
154
154
 
155
- **Warning threshold.** Keep a running count of minor concerns. At three
156
- accumulated (unless the briefing sets a different number), stop and surface all
157
- at once before continuing. An independently material, confirmed concern does not
158
- wait for the threshold.
155
+ **Warning batching.** Collect minor concerns and list them together in the next
156
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
157
+ worker/stage. An independently material, confirmed concern may stop the current
158
+ stage and be surfaced immediately.
159
159
 
160
160
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
161
161
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -19,8 +19,7 @@ Rules, in order:
19
19
  3. **Verify — tightened for this tier.** Run the named check from your briefing
20
20
  and include its output. NO artifact may be reported unverified without naming
21
21
  what check was impossible and why — a bare "unverified" is itself a failure.
22
- Haiku's known failure is skipping verification under time pressure; the check
23
- is not optional.
22
+ The named check is not optional.
24
23
  4. **Escalate instead of improvising.** If the assignment turns out to need
25
24
  judgment or synthesis (conflicting sources, ambiguous spec, design choices),
26
25
  stop and return the specific blocker — recommend fable-worker-sonnet. Do not
@@ -41,10 +40,10 @@ Grep, diff, run it, or check the source directly. Never report a problem that
41
40
  hasn't been confirmed present. Absence of evidence is not the finding. Confirm,
42
41
  then flag.
43
42
 
44
- **Warning threshold.** Keep a running count of minor concerns. At three
45
- accumulated (unless the briefing sets a different number), stop and surface all
46
- at once before continuing. An independently material, confirmed concern does not
47
- wait for the threshold.
43
+ **Warning batching.** Collect minor concerns and list them together in the next
44
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
45
+ worker/stage. An independently material, confirmed concern may stop the current
46
+ stage and be surfaced immediately.
48
47
 
49
48
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
50
49
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -19,8 +19,8 @@ Rules of the loop, in order:
19
19
  do not build it.
20
20
  3. **Verify with the named check.** Your briefing states the pass condition. Run
21
21
  it — the actual command, diff, or read-back — and include the output in your
22
- report. Sonnet's known failure is substituting "looks right" for the check
23
- that can fail; do not do that. A check you did not run did not pass. If the
22
+ report. Do not substitute "looks right" for a check that can fail. A check
23
+ you did not run did not pass. If the
24
24
  check is impossible, say exactly what was impossible and why, and mark the
25
25
  artifact unverified.
26
26
  4. **Report format:** artifact path, check command, check output, confirmed
@@ -42,10 +42,10 @@ hasn't been confirmed present. Absence of evidence is not the finding; web
42
42
  silence is never grounds for a warning against the user's firsthand information.
43
43
  Confirm, then flag.
44
44
 
45
- **Warning threshold.** Keep a running count of minor concerns. At three
46
- accumulated (unless the briefing sets a different number), stop and surface all
47
- at once before continuing. An independently material, confirmed concern does not
48
- wait for the threshold.
45
+ **Warning batching.** Collect minor concerns and list them together in the next
46
+ natural report or handoff; their count alone MUST NOT stop, pause, or return the
47
+ worker/stage. An independently material, confirmed concern may stop the current
48
+ stage and be surfaced immediately.
49
49
 
50
50
  **Find-and-replace safety.** Anchor substring replaces on word boundaries
51
51
  (`\bword\b`, never bare `word` — a bare `edge` replace mangles `Ledger`). Prefer
@@ -7,7 +7,7 @@ description: >-
7
7
  license: Apache-2.0
8
8
  metadata:
9
9
  author: Miya Daniel
10
- version: 0.16.3
10
+ version: 0.30.2
11
11
  ---
12
12
 
13
13
  # Execution Guardrails
@@ -17,7 +17,7 @@ metadata:
17
17
  | Component | Spec |
18
18
  | :--- | :--- |
19
19
  | **Trigger / Input** | Turn raising a warning or performing search-and-replace edits. |
20
- | **Expected Output** | Verified warnings; batched caveats (3-item threshold); corruption-checked edits. |
20
+ | **Expected Output** | Verified warnings; batched caveats without count-based stops; corruption-checked edits. |
21
21
  | **State Mutations** | None — governs execution quality for file-editing turns. |
22
22
  | **Enforcement Gate** | Verify before flagging; validate edits post-write. |
23
23
 
@@ -35,9 +35,11 @@ metadata:
35
35
  ## Core Rules
36
36
 
37
37
  1. **Verify before flag** — Confirm a problem exists before reporting it. Never convert absence of evidence into a warning.
38
- 2. **Warning threshold** — Batch minor concerns; surface them together at three (default). Material concerns do not wait.
38
+ 2. **Warning batching.** Collect minor concerns and list them together in the next natural report or handoff; their count alone MUST NOT stop, pause, or return the worker/stage. An independently material, confirmed concern may stop the current stage and be surfaced immediately.
39
39
  3. **Find-and-replace safety** — Prefer structured edit tools over shell `sed`; anchor with unique context or `\bword\b` boundaries; verify file integrity post-edit. Never replace-all blindly.
40
40
 
41
+ Repeated matching execution failures remain governed by Rule-of-3 / `zoom-out`; warning batching never substitutes for that recovery path.
42
+
41
43
  These rules are always-on, even when `fable-mode`'s staged loop is not running.
42
44
 
43
45
  Deep dive: <this-skill-dir>/references/guardrail-rules.md
@@ -26,17 +26,21 @@ attempted and where it failed — not a vague appeal to difficulty.
26
26
 
27
27
  ## 2. Warning threshold
28
28
 
29
- Across any run, minor concerns accumulate that aren't worth halting on individually.
30
- Keep a running count. At the threshold — **default three, tunable if the user sets a
31
- different number** — stop and surface all of them to the user at once before continuing.
29
+ Across any run, minor concerns accumulate that are not worth interrupting execution
30
+ for individually. Keep a running count. At the threshold — **default three, tunable if
31
+ the user sets a different number** — batch them for the next natural report or handoff.
32
+ The threshold changes presentation only: it MUST NOT stop, pause, return, or otherwise
33
+ end a worker/stage by count alone.
32
34
 
33
- Rationale: three small things pointing the same direction usually mean one real problem
34
- worth a decision. Below threshold, keep working; a drip of trivial caveats is noise.
35
- At threshold, batch them — one interruption with full context beats three fragmentary
36
- ones.
35
+ Rationale: three small things pointing the same direction are easier to evaluate as one
36
+ batch. Below threshold, keep working; a drip of trivial caveats is noise. At threshold,
37
+ keep working and preserve the batch for the report instead of creating a second circuit
38
+ breaker.
37
39
 
38
40
  A concern that independently meets the verify-before-flag bar and is material on its own
39
- does not wait for the threshold. The threshold governs minor concerns only.
41
+ may stop the current stage and be surfaced immediately. Repeated matching execution
42
+ failures are governed separately by Rule-of-3 -> zoom-out -> RESUME/ESCALATE. The
43
+ warning threshold governs minor-concern reporting only.
40
44
 
41
45
  ## 3. Find-and-replace safety
42
46
 
@@ -4,7 +4,7 @@ description: "Run staged fable work on Haiku for bulk mechanical tasks with expl
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Haiku
@@ -4,7 +4,7 @@ description: "Run staged fable orchestration on Opus for cross-stage synthesis,
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Opus
@@ -4,7 +4,7 @@ description: "Run staged fable work on Sonnet for non-trivial implementation, re
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.16.3
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Fable Mode — Sonnet
@@ -4,7 +4,7 @@ description: "Route software/project work through Harness: classify tier/topolog
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.30.0
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Harness Everything
@@ -194,7 +194,6 @@ function printKernelContract(plan) {
194
194
  emitted.add(skill);
195
195
  if (skill === 'fable-mode') emitted.add('fable-discipline');
196
196
  }
197
- console.log(' - Read-before-skip: MUST evaluate every suggested skill entry before omission. If applicable, MUST follow its core contract; adopting one suggestion does not waive resolution of the others.');
198
197
  if (plan.strategy && plan.strategy.startsWith('fable-')) {
199
198
  console.log(' - Fable is not a universal pipeline, but a selected Fable topology must be entered and resolved before completion.');
200
199
  }
@@ -151,7 +151,6 @@ function run(raw) {
151
151
  if (plan.strategySelection === 'selected') {
152
152
  console.log(' - Selected-topology required obligations are semantic MUSTs; implementation technique and local tactics MAY adapt.');
153
153
  console.log(' - Before claiming completion, MUST resolve required workflow evidence and objective verification, or report an explicit blocked/degraded disposition.');
154
- console.log(' - Every suggested skill MUST resolve applicability. If applicable, follow its core contract; if not-applicable, keep a flow-grounded reason.');
155
154
  console.log(' - Tier 3 / Fable broad mutation MUST resolve isolation: verified linked worktree or explicit degraded fallback. Missing isolation is not a Harness lock.');
156
155
  console.log(' - Escape is only for genuinely uncovered declared scope with evidence; it does not erase covered MUST obligations.');
157
156
  }
@@ -4,7 +4,7 @@ description: Apply Harness style guidelines when writing or refactoring SKILL.md
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.4.0
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Skill Style
@@ -34,7 +34,7 @@ Apply the Harness writing standard when creating or refactoring `SKILL.md` files
34
34
  ## Core Rules
35
35
 
36
36
  1. MUST keep frontmatter accurate and the description routeable.
37
- 2. MUST include, in order: title, introduction, Skill Contract, usage, and actionable rules.
37
+ 2. MUST cover the skill purpose, Skill Contract, usage/applicability, and actionable rules; section order MAY vary for readability and routeability.
38
38
  3. MUST use imperative language and name the enforcing command or gate.
39
39
  4. MUST avoid overlap with OS-layer routing or domain expertise.
40
40
  5. For intent interviews, drafting, and prompt tests, load `<skills-repo-root>/skill-creator/SKILL.md`.
@@ -3,12 +3,12 @@
3
3
  When you need to create a new Skill or refactor an existing one, strictly adhere to the writing style in this document to ensure all Skills seamlessly integrate into the `harness-everything` routing system and are mathematically enforced by scripts.
4
4
 
5
5
  ## 1. Structured Definition
6
- Every Skill file (`SKILL.md`) MUST contain the following standard structure:
6
+ Every Skill file (`SKILL.md`) MUST cover the following elements. Their relative order MAY vary when that improves routing clarity or readability; do not treat this list as a global section-order contract:
7
7
 
8
- 1. **Title & Introduction**: Clearly state the purpose of this Skill.
9
- 2. **📋 Skill Contract (CRITICAL)**: A strict Markdown table defining inputs, outputs, state mutations, and script gates. This replaces vague prose.
10
- 3. **Triggers / Usage**: Explicitly tell the system when this skill applies.
11
- 4. **Core Rules / Action List**: Specific, actionable commands tied to Terminal Scripts. Avoid vague suggestions.
8
+ - **Title & Purpose**: Clearly state the purpose of this Skill.
9
+ - **📋 Skill Contract (CRITICAL)**: A strict Markdown table defining inputs, outputs, state mutations, and script gates. This replaces vague prose.
10
+ - **Triggers / Usage**: Explicitly tell the system when this skill applies.
11
+ - **Core Rules / Action List**: Specific, actionable commands tied to Terminal Scripts. Avoid vague suggestions.
12
12
 
13
13
  ### 📋 The Skill Contract Format
14
14
  Every SKILL.md MUST include this table exactly:
package/sbom.cdx.json CHANGED
@@ -2,23 +2,23 @@
2
2
  "$schema": "https://cyclonedx.org/schema/bom-1.7.schema.json",
3
3
  "bomFormat": "CycloneDX",
4
4
  "specVersion": "1.7",
5
- "serialNumber": "urn:uuid:facf3456-428b-56a4-a538-e7ecb4ac28ca",
5
+ "serialNumber": "urn:uuid:609a39f1-97ad-59d5-a8ef-97f1b6da412b",
6
6
  "version": 1,
7
7
  "metadata": {
8
- "timestamp": "2026-09-28T02:02:14.749Z",
8
+ "timestamp": "2026-10-01T02:54:31.907Z",
9
9
  "tools": [
10
10
  {
11
11
  "vendor": "Harness Everything",
12
12
  "name": "generate-sbom.js",
13
- "version": "0.30.0"
13
+ "version": "0.30.2"
14
14
  }
15
15
  ],
16
16
  "component": {
17
17
  "type": "application",
18
- "bom-ref": "pkg:npm/harness-everything@0.30.0",
18
+ "bom-ref": "pkg:npm/harness-everything@0.30.2",
19
19
  "name": "harness-everything",
20
- "version": "0.30.0",
21
- "purl": "pkg:npm/harness-everything@0.30.0"
20
+ "version": "0.30.2",
21
+ "purl": "pkg:npm/harness-everything@0.30.2"
22
22
  }
23
23
  },
24
24
  "components": [
@@ -1999,7 +1999,7 @@
1999
1999
  ]
2000
2000
  },
2001
2001
  {
2002
- "ref": "pkg:npm/harness-everything@0.30.0",
2002
+ "ref": "pkg:npm/harness-everything@0.30.2",
2003
2003
  "dependsOn": [
2004
2004
  "pkg:npm/%40commitlint/cli@19.8.1",
2005
2005
  "pkg:npm/%40commitlint/config-conventional@19.8.1",
@@ -4,7 +4,7 @@ description: Apply Harness style guidelines when writing or refactoring SKILL.md
4
4
  license: Apache-2.0
5
5
  metadata:
6
6
  author: Miya Daniel
7
- version: 0.4.0
7
+ version: 0.30.2
8
8
  ---
9
9
 
10
10
  # Skill Style
@@ -34,7 +34,7 @@ Apply the Harness writing standard when creating or refactoring `SKILL.md` files
34
34
  ## Core Rules
35
35
 
36
36
  1. MUST keep frontmatter accurate and the description routeable.
37
- 2. MUST include, in order: title, introduction, Skill Contract, usage, and actionable rules.
37
+ 2. MUST cover the skill purpose, Skill Contract, usage/applicability, and actionable rules; section order MAY vary for readability and routeability.
38
38
  3. MUST use imperative language and name the enforcing command or gate.
39
39
  4. MUST avoid overlap with OS-layer routing or domain expertise.
40
40
  5. For intent interviews, drafting, and prompt tests, load `<skills-repo-root>/skill-creator/SKILL.md`.
@@ -3,12 +3,12 @@
3
3
  When you need to create a new Skill or refactor an existing one, strictly adhere to the writing style in this document to ensure all Skills seamlessly integrate into the `harness-everything` routing system and are mathematically enforced by scripts.
4
4
 
5
5
  ## 1. Structured Definition
6
- Every Skill file (`SKILL.md`) MUST contain the following standard structure:
6
+ Every Skill file (`SKILL.md`) MUST cover the following elements. Their relative order MAY vary when that improves routing clarity or readability; do not treat this list as a global section-order contract:
7
7
 
8
- 1. **Title & Introduction**: Clearly state the purpose of this Skill.
9
- 2. **📋 Skill Contract (CRITICAL)**: A strict Markdown table defining inputs, outputs, state mutations, and script gates. This replaces vague prose.
10
- 3. **Triggers / Usage**: Explicitly tell the system when this skill applies.
11
- 4. **Core Rules / Action List**: Specific, actionable commands tied to Terminal Scripts. Avoid vague suggestions.
8
+ - **Title & Purpose**: Clearly state the purpose of this Skill.
9
+ - **📋 Skill Contract (CRITICAL)**: A strict Markdown table defining inputs, outputs, state mutations, and script gates. This replaces vague prose.
10
+ - **Triggers / Usage**: Explicitly tell the system when this skill applies.
11
+ - **Core Rules / Action List**: Specific, actionable commands tied to Terminal Scripts. Avoid vague suggestions.
12
12
 
13
13
  ### 📋 The Skill Contract Format
14
14
  Every SKILL.md MUST include this table exactly: