harness-everything 0.47.1 → 0.47.3
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/ci.yml +14 -0
- package/CHANGELOG.md +18 -0
- package/benchmarks/issue290-pilot/README.md +199 -0
- package/benchmarks/issue290-pilot/analyze.py +299 -0
- package/benchmarks/issue290-pilot/analyze.test.py +146 -0
- package/benchmarks/issue290-pilot/check.py +19 -0
- package/benchmarks/issue290-pilot/evidence/archive.json +7 -0
- package/benchmarks/issue290-pilot/evidence/group-summary.json +684 -0
- package/benchmarks/issue290-pilot/evidence/inventory.json +3728 -0
- package/benchmarks/issue290-pilot/evidence/ledger.json +4644 -0
- package/benchmarks/issue290-pilot/evidence/replay/pairs.json +482 -0
- package/benchmarks/issue290-pilot/evidence/replay/provenance.json +24 -0
- package/benchmarks/issue290-pilot/evidence/replay/tables.md +37 -0
- package/benchmarks/issue290-pilot/evidence.tar.gz +0 -0
- package/benchmarks/issue290-pilot/export.py +110 -0
- package/benchmarks/issue290-pilot/export.test.py +65 -0
- package/benchmarks/issue290-pilot/fable-supplement.py +55 -0
- package/benchmarks/issue290-pilot/fixture.test.py +28 -0
- package/benchmarks/issue290-pilot/fixtures/polyglot/instructions.md +19 -0
- package/benchmarks/issue290-pilot/fixtures/polyglot/package.json +29 -0
- package/benchmarks/issue290-pilot/fixtures/polyglot/simple-linked-list.js +44 -0
- package/benchmarks/issue290-pilot/fixtures/polyglot/simple-linked-list.spec.js +131 -0
- package/benchmarks/issue290-pilot/fixtures/quixbugs/LICENSE +7 -0
- package/benchmarks/issue290-pilot/fixtures/quixbugs/cases.json +7 -0
- package/benchmarks/issue290-pilot/fixtures/quixbugs/find_in_sorted.py +31 -0
- package/benchmarks/issue290-pilot/fixtures/quixbugs/test_find_in_sorted.py +15 -0
- package/benchmarks/issue290-pilot/frozen-documents.json +41 -0
- package/benchmarks/issue290-pilot/grader.cjs +43 -0
- package/benchmarks/issue290-pilot/grader.test.cjs +10 -0
- package/benchmarks/issue290-pilot/hook.test.cjs +27 -0
- package/benchmarks/issue290-pilot/host-hook.cjs +35 -0
- package/benchmarks/issue290-pilot/metrics.test.py +131 -0
- package/benchmarks/issue290-pilot/preflight/amendment.md +32 -0
- package/benchmarks/issue290-pilot/preflight/environment.json +15 -0
- package/benchmarks/issue290-pilot/preflight/fable-amendment.md +20 -0
- package/benchmarks/issue290-pilot/preflight/fable-frozen-files.json +4 -0
- package/benchmarks/issue290-pilot/preflight/fable-infrastructure-amendment.md +27 -0
- package/benchmarks/issue290-pilot/preflight/fable-retry-frozen-files.json +4 -0
- package/benchmarks/issue290-pilot/preflight/fable-supplement-v1.py +47 -0
- package/benchmarks/issue290-pilot/preflight/frozen-files.json +18 -0
- package/benchmarks/issue290-pilot/preflight/graders.json +67 -0
- package/benchmarks/issue290-pilot/pricing-assumptions.json +29 -0
- package/benchmarks/issue290-pilot/protocol.json +32 -0
- package/benchmarks/issue290-pilot/read_metrics.py +166 -0
- package/benchmarks/issue290-pilot/replay.py +167 -0
- package/benchmarks/issue290-pilot/reporting.py +82 -0
- package/benchmarks/issue290-pilot/run.py +262 -0
- package/benchmarks/issue290-pilot/sources.json +10 -0
- package/benchmarks/issue290-pilot/verification/analyzer-tests.log +5 -0
- package/benchmarks/issue290-pilot/verification/final-gates.json +58 -0
- package/benchmarks/issue290-pilot/verification/fixture-tests.log +5 -0
- package/benchmarks/issue290-pilot/verification/gates.json +58 -0
- package/benchmarks/issue290-pilot/verification/npm-audit.json +84 -0
- package/benchmarks/issue290-pilot/verification/offline-correction.json +59 -0
- package/benchmarks/issue290-pilot/verification/post-report/helper-tests.log +22 -0
- package/benchmarks/issue290-pilot/verification/post-report/test-consistency.log +626 -0
- package/benchmarks/issue290-pilot/verification/post-report/test-references.log +6 -0
- package/benchmarks/issue290-pilot/verification/post-report/waza-tokens.log +710 -0
- package/benchmarks/issue290-pilot/verification/test-collision.log +28 -0
- package/benchmarks/issue290-pilot/verification/test-consistency.log +28 -0
- package/benchmarks/issue290-pilot/verification/test-docs-capabilities.log +131 -0
- package/benchmarks/issue290-pilot/verification/test-mechanism.log +1829 -0
- package/benchmarks/issue290-pilot/verification/test-mutations.log +16 -0
- package/benchmarks/issue290-pilot/verification/test-platform-compatibility.log +9 -0
- package/benchmarks/issue290-pilot/verification/test-plugin-openai.log +6 -0
- package/benchmarks/issue290-pilot/verification/test-plugin-submission.log +5 -0
- package/benchmarks/issue290-pilot/verification/test-references.log +6 -0
- package/benchmarks/issue290-pilot/verification/test-release.log +59 -0
- package/benchmarks/issue290-pilot/verification/test-repo-contract.log +5 -0
- package/benchmarks/issue290-pilot/verification/test-routing-invariants.log +785 -0
- package/benchmarks/issue290-pilot/verification/test-routing-skills.log +28 -0
- package/benchmarks/issue290-pilot/verification/test.log +3373 -0
- package/benchmarks/issue290-pilot/verification/verification-report.md +76 -0
- package/benchmarks/issue290-pilot/verification/waza-tokens.log +710 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/gates.json +26 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test-collision.log +8 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test-consistency.log +626 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test-mechanism.log +1693 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test-release.log +38 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test-routing-skills.log +44 -0
- package/benchmarks/issue290-pilot/verification/with-dependencies/test.log +3253 -0
- package/ci/lib/opencode-verification-loader.js +24 -0
- package/ci/mechanism-2p-opencode-v2-entrypoint.test.js +8 -1
- package/ci/mechanism-325-f3-derived-views.test.js +42 -2
- package/ci/mechanism-338-opencode-async.test.js +229 -0
- package/ci/mechanism-341-opencode-lane.test.js +14 -3
- package/ci/mechanism-36-verify-timeout.test.js +7 -168
- package/docs/platform-capabilities.md +8 -0
- package/harness-everything/SKILL.md +1 -1
- package/harness-everything/scripts/doc-check.js +5 -4
- package/hooks/scripts/lib/doc-reconciliation-provider.js +1 -1
- package/opencode-plugin/README.md +28 -30
- package/opencode-plugin/index.mjs +249 -112
- package/opencode-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
- package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-provider.js +1 -1
- package/plugins/harness-everything/plugin.json +1 -1
- package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
- package/plugins/harness-everything/skills/harness-everything/scripts/doc-check.js +5 -4
- package/sbom.cdx.json +7 -7
|
@@ -0,0 +1,1829 @@
|
|
|
1
|
+
|
|
2
|
+
> harness-everything@0.31.1 test:mechanism
|
|
3
|
+
> node ci/mechanism-test.js
|
|
4
|
+
|
|
5
|
+
=================================================
|
|
6
|
+
=== 🔧 Harness Mechanism Test Suite (VERIFICATION.md §2) ===
|
|
7
|
+
=================================================
|
|
8
|
+
|
|
9
|
+
Discovered 76 mechanism test suite(s):
|
|
10
|
+
- mechanism-2a-rule-of-3.test.js
|
|
11
|
+
- mechanism-2aa-codex-action-gate-policy.test.js
|
|
12
|
+
- mechanism-2ab-openai-plugin-sync-integrity.test.js
|
|
13
|
+
- mechanism-2ac-atomic-commit-check.test.js
|
|
14
|
+
- mechanism-2ad-action-gate-classifier-hardening.test.js
|
|
15
|
+
- mechanism-2af-worktree-isolation.test.js
|
|
16
|
+
- mechanism-2ag-router-worktree-contract.test.js
|
|
17
|
+
- mechanism-2ah-workflow-lifecycle.test.js
|
|
18
|
+
- mechanism-2ai-workspace-fingerprint-batch.test.js
|
|
19
|
+
- mechanism-2aj-waza-reference-adapter.test.js
|
|
20
|
+
- mechanism-2ak-contract-probe-adapter.test.js
|
|
21
|
+
- mechanism-2al-codex-hooks-compat.test.js
|
|
22
|
+
- mechanism-2am-observations-session-import.test.js
|
|
23
|
+
- mechanism-2am-openai-packaged-helper-runtime.test.js
|
|
24
|
+
- mechanism-2an-environment-detection-readonly.test.js
|
|
25
|
+
- mechanism-2an-workflow-obligations.test.js
|
|
26
|
+
- mechanism-2ao-plugin-sync.test.js
|
|
27
|
+
- mechanism-2ap-sbom.test.js
|
|
28
|
+
- mechanism-2aq-fable-stage-bindings.test.js
|
|
29
|
+
- mechanism-2ar-binding-resolution.test.js
|
|
30
|
+
- mechanism-2b-boundary-guard.test.js
|
|
31
|
+
- mechanism-2c-state-persist.test.js
|
|
32
|
+
- mechanism-2d-fact-audit.test.js
|
|
33
|
+
- mechanism-2e-scope-guard.test.js
|
|
34
|
+
- mechanism-2f-stop-gate.test.js
|
|
35
|
+
- mechanism-2g-platform-ignore.test.js
|
|
36
|
+
- mechanism-2h-installer-manifest.test.js
|
|
37
|
+
- mechanism-2i-crlf-frontmatter.test.js
|
|
38
|
+
- mechanism-2i-install-verification.test.js
|
|
39
|
+
- mechanism-2j-behavioral-runner.test.js
|
|
40
|
+
- mechanism-2j-fixture-entrypoints.test.js
|
|
41
|
+
- mechanism-2k-reference-check.test.js
|
|
42
|
+
- mechanism-2l-multi-agent-workspace.test.js
|
|
43
|
+
- mechanism-2m-self-repo-guard.test.js
|
|
44
|
+
- mechanism-2n-opencode-plugin.test.js
|
|
45
|
+
- mechanism-2o-state-home-isolation.test.js
|
|
46
|
+
- mechanism-2p-installer-links.test.js
|
|
47
|
+
- mechanism-2q-installer-global-shared-store.test.js
|
|
48
|
+
- mechanism-2r-uninstall-flags.test.js
|
|
49
|
+
- mechanism-2s-tdd-quality.test.js
|
|
50
|
+
- mechanism-2t-disclosure.test.js
|
|
51
|
+
- mechanism-2t-evidence-triage.test.js
|
|
52
|
+
- mechanism-2t-issue-20.test.js
|
|
53
|
+
- mechanism-2t-platform-skill-targets.test.js
|
|
54
|
+
- mechanism-2t-transcript-parser.test.js
|
|
55
|
+
- mechanism-2t-workspace-identity.test.js
|
|
56
|
+
- mechanism-2u-issue-42-regressions.test.js
|
|
57
|
+
- mechanism-2u-issue-44.test.js
|
|
58
|
+
- mechanism-2v-verifier-boundaries.test.js
|
|
59
|
+
- mechanism-2w-platform-compatibility.test.js
|
|
60
|
+
- mechanism-2x-release-automation.test.js
|
|
61
|
+
- mechanism-2x-release-commit-message.test.js
|
|
62
|
+
- mechanism-2y-release-tooling-compat.test.js
|
|
63
|
+
- mechanism-2z-claude-plugin-manifest.test.js
|
|
64
|
+
- mechanism-30-opencode-plugin-loadability.test.js
|
|
65
|
+
- mechanism-31-opencode-hardlock-evidence.test.js
|
|
66
|
+
- mechanism-32-paired-benchmark.test.js
|
|
67
|
+
- mechanism-33-issues-205-207.test.js
|
|
68
|
+
- mechanism-34-observations.test.js
|
|
69
|
+
- mechanism-34-worktree-submodule-reachability.test.js
|
|
70
|
+
- mechanism-35-verification-contract.test.js
|
|
71
|
+
- mechanism-packaging-bytecode.test.js
|
|
72
|
+
- mechanism-system-one-collect.test.js
|
|
73
|
+
- mechanism-system-one-contract.test.js
|
|
74
|
+
- mechanism-system-one-corpus.test.js
|
|
75
|
+
- mechanism-system-one-evaluation.test.js
|
|
76
|
+
- mechanism-system-one-install.test.js
|
|
77
|
+
- mechanism-system-one-intent.test.js
|
|
78
|
+
- mechanism-system-one-label.test.js
|
|
79
|
+
- mechanism-system-one-laya.test.js
|
|
80
|
+
- mechanism-system-one-ngram.test.js
|
|
81
|
+
- mechanism-system-one-provider.test.js
|
|
82
|
+
- mechanism-system-one-relevance.test.js
|
|
83
|
+
- mechanism-system-one-resident.test.js
|
|
84
|
+
- mechanism-system-one-router.test.js
|
|
85
|
+
- mechanism-system-one-train.test.js
|
|
86
|
+
|
|
87
|
+
-------------------------------------------------
|
|
88
|
+
|
|
89
|
+
▶️ Running test suite: mechanism-2a-rule-of-3.test.js
|
|
90
|
+
|
|
91
|
+
[2a] Rule of 3 circuit breaker...
|
|
92
|
+
✅ 2a-wiring. PostToolUseFailure invokes the Rule-of-3 tracker
|
|
93
|
+
✅ 2a-wiring. apply_patch is covered before and after execution
|
|
94
|
+
✅ 2a-three. exactly three matching failures arm zoom-out
|
|
95
|
+
[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!
|
|
96
|
+
The same failure signature has now occurred 3 times.
|
|
97
|
+
Error Signature: 84edbe719770818783c799972ef28e77
|
|
98
|
+
|
|
99
|
+
Mutating tools (Bash/PowerShell/Edit/Write/apply_patch) are locked - not because you
|
|
100
|
+
must wait for a human, but because you must stop drilling and rebuild the
|
|
101
|
+
full picture first. Do NOT ask the Human Partner yet.
|
|
102
|
+
|
|
103
|
+
ACTION REQUIRED (reflect first):
|
|
104
|
+
1. CEASE FIRE. No new fix attempts, no variations of the last one.
|
|
105
|
+
2. Load the 'zoom-out' skill and follow its Reflect & Fact-Check protocol.
|
|
106
|
+
3. Using READ-ONLY tools (Read/Grep/Glob - still available), re-verify the
|
|
107
|
+
assumption behind each failed attempt against the actual code/logs/docs.
|
|
108
|
+
4. Write your findings to '<TMP>/harness-mechanism-state-eJrIzZ/workspaces/harness-issue290-pilot-280af2ebc7c1/state/sessions/__mechanism_test__/zoom-out-report.md' (the ONLY write
|
|
109
|
+
allowed right now) with sections: ## Goal, ## Failed Attempts,
|
|
110
|
+
## Verified Facts, ## Diagnosis, ## Decision (ending RESUME: or ESCALATE:).
|
|
111
|
+
|
|
112
|
+
A valid report releases this breaker automatically. Escalate to the Human
|
|
113
|
+
Partner ONLY if your Decision concludes a genuinely human call is needed
|
|
114
|
+
(requirement conflict, architecture trade-off, destructive action, missing
|
|
115
|
+
access) - and then present options with a recommendation, not apologies.
|
|
116
|
+
✅ 2a-trip. third matching failure blocks mutation for reflection
|
|
117
|
+
✅ 2a-release. valid reflection releases breaker and resets count
|
|
118
|
+
[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!
|
|
119
|
+
The same failure signature has now occurred 3 times.
|
|
120
|
+
Error Signature: mech-test
|
|
121
|
+
|
|
122
|
+
Mutating tools (Bash/PowerShell/Edit/Write/apply_patch) are locked - not because you
|
|
123
|
+
must wait for a human, but because you must stop drilling and rebuild the
|
|
124
|
+
full picture first. Do NOT ask the Human Partner yet.
|
|
125
|
+
|
|
126
|
+
ACTION REQUIRED (reflect first):
|
|
127
|
+
1. CEASE FIRE. No new fix attempts, no variations of the last one.
|
|
128
|
+
2. Load the 'zoom-out' skill and follow its Reflect & Fact-Check protocol.
|
|
129
|
+
3. Using READ-ONLY tools (Read/Grep/Glob - still available), re-verify the
|
|
130
|
+
assumption behind each failed attempt against the actual code/logs/docs.
|
|
131
|
+
4. Write your findings to '<TMP>/harness-mechanism-state-eJrIzZ/workspaces/harness-issue290-pilot-280af2ebc7c1/state/sessions/__mechanism_test__/zoom-out-report.md' (the ONLY write
|
|
132
|
+
allowed right now) with sections: ## Goal, ## Failed Attempts,
|
|
133
|
+
## Verified Facts, ## Diagnosis, ## Decision (ending RESUME: or ESCALATE:).
|
|
134
|
+
|
|
135
|
+
A valid report releases this breaker automatically. Escalate to the Human
|
|
136
|
+
Partner ONLY if your Decision concludes a genuinely human call is needed
|
|
137
|
+
(requirement conflict, architecture trade-off, destructive action, missing
|
|
138
|
+
access) - and then present options with a recommendation, not apologies.
|
|
139
|
+
✅ 2a-repeat. later three-failure cycle requests another zoom-out, not permanent hard lock
|
|
140
|
+
✅ 2a-category. permission failures still use the same threshold of three
|
|
141
|
+
✅ 2a-category-two. two permission failures do not trip early
|
|
142
|
+
[CRITICAL] RULE OF 3 CIRCUIT BREAKER TRIGGERED!
|
|
143
|
+
The same failure signature has now occurred 3 times.
|
|
144
|
+
Error Signature: ca808a9df9b7d8c531929ca6ea04a324
|
|
145
|
+
|
|
146
|
+
Mutating tools (Bash/PowerShell/Edit/Write/apply_patch) are locked - not because you
|
|
147
|
+
must wait for a human, but because you must stop drilling and rebuild the
|
|
148
|
+
full picture first. Do NOT ask the Human Partner yet.
|
|
149
|
+
|
|
150
|
+
ACTION REQUIRED (reflect first):
|
|
151
|
+
1. CEASE FIRE. No new fix attempts, no variations of the last one.
|
|
152
|
+
2. Load the 'zoom-out' skill and follow its Reflect & Fact-Check protocol.
|
|
153
|
+
3. Using READ-ONLY tools (Read/Grep/Glob - still available), re-verify the
|
|
154
|
+
assumption behind each failed attempt against the actual code/logs/docs.
|
|
155
|
+
4. Write your findings to '<TMP>/harness-mechanism-state-eJrIzZ/workspaces/harness-issue290-pilot-280af2ebc7c1/state/sessions/__mechanism_test__/zoom-out-report.md' (the ONLY write
|
|
156
|
+
allowed right now) with sections: ## Goal, ## Failed Attempts,
|
|
157
|
+
## Verified Facts, ## Diagnosis, ## Decision (ending RESUME: or ESCALATE:).
|
|
158
|
+
|
|
159
|
+
A valid report releases this breaker automatically. Escalate to the Human
|
|
160
|
+
Partner ONLY if your Decision concludes a genuinely human call is needed
|
|
161
|
+
(requirement conflict, architecture trade-off, destructive action, missing
|
|
162
|
+
access) - and then present options with a recommendation, not apologies.
|
|
163
|
+
✅ 2a-category-three. third permission failure trips normally
|
|
164
|
+
✅ 2a-interleaved. unrelated success preserves the matching failure count
|
|
165
|
+
✅ 2a-interleaved-three. third matching failure still arms zoom-out after unrelated success
|
|
166
|
+
✅ 2a-resolved. same-operation success clears the resolved signature
|
|
167
|
+
|
|
168
|
+
▶️ Running test suite: mechanism-2aa-codex-action-gate-policy.test.js
|
|
169
|
+
PASS: Codex action-gate uses supported hard blocking, attributable PreToolUse entry evidence, and non-authorizing PermissionRequest observation.
|
|
170
|
+
|
|
171
|
+
▶️ Running test suite: mechanism-2ab-openai-plugin-sync-integrity.test.js
|
|
172
|
+
PASS: OpenAI/Codex plugin sync is idempotent, uses portable plugin placeholders, and preserves every referenced hook runtime file.
|
|
173
|
+
|
|
174
|
+
▶️ Running test suite: mechanism-2ac-atomic-commit-check.test.js
|
|
175
|
+
PASS: atomic commit check scopes edits to the workspace and suppresses clean-tree false nudges
|
|
176
|
+
|
|
177
|
+
▶️ Running test suite: mechanism-2ad-action-gate-classifier-hardening.test.js
|
|
178
|
+
PASS: destructive-command classifier covers confirmed bypasses while suppressing quoted-text false positives
|
|
179
|
+
|
|
180
|
+
▶️ Running test suite: mechanism-2af-worktree-isolation.test.js
|
|
181
|
+
PASS fixture repository initializes
|
|
182
|
+
PASS Tier-3 primary-tree mutation is not hard-blocked
|
|
183
|
+
PASS Tier-3 primary-tree mutation emits mandatory isolation disposition without blocking
|
|
184
|
+
PASS mutation-shaped shell command remains available
|
|
185
|
+
PASS mutation-shaped shell command receives the same isolation contract
|
|
186
|
+
PASS read-only discovery remains available
|
|
187
|
+
PASS linked worktree fixture creates
|
|
188
|
+
PASS linked-worktree mutation remains available
|
|
189
|
+
PASS cross-worktree target is reminder-only
|
|
190
|
+
PASS cross-worktree target emits scope/isolation guidance
|
|
191
|
+
PASS legacy blocked workflow state does not trap mutation
|
|
192
|
+
PASS legacy blocked state is surfaced as reminder
|
|
193
|
+
PASS corrupt workflow state fails open
|
|
194
|
+
PASS: worktree isolation is a semantic MUST disposition, not a cognitive lock
|
|
195
|
+
|
|
196
|
+
▶️ Running test suite: mechanism-2ag-router-worktree-contract.test.js
|
|
197
|
+
PASS: router major-workflow plan carries worktree isolation independently of multi-agent workspace state.
|
|
198
|
+
|
|
199
|
+
▶️ Running test suite: mechanism-2ah-workflow-lifecycle.test.js
|
|
200
|
+
PASS workflow guidance fixture is created
|
|
201
|
+
PASS hooks/scripts/workflow-gate.js malformed payload fails open
|
|
202
|
+
PASS hooks/scripts/workflow-stop-gate.js malformed payload fails open
|
|
203
|
+
PASS legacy exhausted state no longer blocks mutation
|
|
204
|
+
PASS legacy state is a reminder
|
|
205
|
+
PASS unproven shell is not iteration-blocked
|
|
206
|
+
PASS no mutation-probe state is created
|
|
207
|
+
PASS failed shell mutation tracking is fail-open
|
|
208
|
+
PASS failed-but-mutating shell advances edit freshness without fabricating verification
|
|
209
|
+
PASS missing verification does not block Stop
|
|
210
|
+
PASS missing verification emits reminder
|
|
211
|
+
PASS exec_command verification is fail-open
|
|
212
|
+
PASS #193 exec_command records lastVerifyAt
|
|
213
|
+
PASS resolved evidence never rewrites an explicit blocked workflow to satisfied
|
|
214
|
+
PASS: workflow guidance lifecycle (14 assertions)
|
|
215
|
+
PASS: packaged OpenAI workflow guidance mirrors source
|
|
216
|
+
|
|
217
|
+
▶️ Running test suite: mechanism-2ai-workspace-fingerprint-batch.test.js
|
|
218
|
+
PASS #169 batched fingerprint matches the legacy clean-worktree fingerprint
|
|
219
|
+
PASS #169 packaged plugin fingerprint matches canonical/legacy on a clean worktree
|
|
220
|
+
PASS #169 batched fingerprint matches legacy for dirty tracked + untracked content
|
|
221
|
+
PASS #169 packaged plugin batched fingerprint matches legacy dirty semantics
|
|
222
|
+
PASS #169 staging visible content does not change the workspace fingerprint
|
|
223
|
+
PASS #169 tracked deletion keeps legacy fingerprint semantics
|
|
224
|
+
PASS #169 1000-untracked-file fingerprint returns a valid digest
|
|
225
|
+
PASS #169 1000-untracked-file fingerprint stays below 5s regression ceiling (actual 36.4ms)
|
|
226
|
+
PASS #169 packaged plugin fingerprint remains byte-identical for 1000 untracked files
|
|
227
|
+
PASS #169 explicit fingerprint cap reports a structured conservative-fallback signal
|
|
228
|
+
PASS #169 large-workspace Tier-2 fixture routes normally
|
|
229
|
+
PASS #169 large-workspace Tier-2 fixture resolves requirements/workflow planning
|
|
230
|
+
PASS #169 large-workspace Tier-2 fixture starts after planning
|
|
231
|
+
PASS #169 >5000 observed paths degrade conservatively instead of blocking the shell call
|
|
232
|
+
PASS #190 shell admission no longer creates conservative budget/probe state
|
|
233
|
+
PASS: batched workspace fingerprint (15 assertions, 1000-file 36.4ms)
|
|
234
|
+
|
|
235
|
+
▶️ Running test suite: mechanism-2aj-waza-reference-adapter.test.js
|
|
236
|
+
PASS discovers the canonical Harness skill set
|
|
237
|
+
PASS adapter invokes Waza exactly once per canonical top-level skill
|
|
238
|
+
PASS Waza receives explicit canonical skill paths instead of recursive workspace discovery
|
|
239
|
+
PASS environment-detection placeholder reference is reachable: references/shell-syntax-rules.md
|
|
240
|
+
PASS environment-detection removes Waza orphan advisories for Harness-reachable references
|
|
241
|
+
PASS environment-detection reports the suppressed advisories explicitly
|
|
242
|
+
PASS environment-detection recomputes readiness without false local-orphan failures
|
|
243
|
+
PASS eval-harness placeholder reference is reachable: references/scoring-rubric.md
|
|
244
|
+
PASS eval-harness removes Waza orphan advisories for Harness-reachable references
|
|
245
|
+
PASS eval-harness reports the suppressed advisories explicitly
|
|
246
|
+
PASS eval-harness recomputes readiness without false local-orphan failures
|
|
247
|
+
PASS fable-discipline placeholder reference is reachable: references/discipline-rules.md
|
|
248
|
+
PASS fable-discipline removes Waza orphan advisories for Harness-reachable references
|
|
249
|
+
PASS fable-discipline reports the suppressed advisories explicitly
|
|
250
|
+
PASS fable-discipline recomputes readiness without false local-orphan failures
|
|
251
|
+
PASS fable-mode placeholder reference is reachable: references/profile-lookup.md
|
|
252
|
+
PASS fable-mode placeholder reference is reachable: references/model-matrix.md
|
|
253
|
+
PASS fable-mode removes Waza orphan advisories for Harness-reachable references
|
|
254
|
+
PASS fable-mode reports the suppressed advisories explicitly
|
|
255
|
+
PASS fable-mode recomputes readiness without false local-orphan failures
|
|
256
|
+
PASS find-skills placeholder reference is reachable: references/discovery-flow.md
|
|
257
|
+
PASS find-skills removes Waza orphan advisories for Harness-reachable references
|
|
258
|
+
PASS find-skills reports the suppressed advisories explicitly
|
|
259
|
+
PASS find-skills recomputes readiness without false local-orphan failures
|
|
260
|
+
PASS git-commit placeholder reference is reachable: references/commit-flow.md
|
|
261
|
+
PASS git-commit removes Waza orphan advisories for Harness-reachable references
|
|
262
|
+
PASS git-commit reports the suppressed advisories explicitly
|
|
263
|
+
PASS git-commit recomputes readiness without false local-orphan failures
|
|
264
|
+
PASS grill-me placeholder reference is reachable: references/grilling-playbook.md
|
|
265
|
+
PASS grill-me removes Waza orphan advisories for Harness-reachable references
|
|
266
|
+
PASS grill-me reports the suppressed advisories explicitly
|
|
267
|
+
PASS grill-me recomputes readiness without false local-orphan failures
|
|
268
|
+
PASS grill-with-docs placeholder reference is reachable: references/session-playbook.md
|
|
269
|
+
PASS grill-with-docs removes Waza orphan advisories for Harness-reachable references
|
|
270
|
+
PASS grill-with-docs reports the suppressed advisories explicitly
|
|
271
|
+
PASS grill-with-docs recomputes readiness without false local-orphan failures
|
|
272
|
+
PASS harness-everything placeholder reference is reachable: references/triage-and-tiers.md
|
|
273
|
+
PASS harness-everything removes Waza orphan advisories for Harness-reachable references
|
|
274
|
+
PASS harness-everything reports the suppressed advisories explicitly
|
|
275
|
+
PASS harness-everything recomputes readiness without false local-orphan failures
|
|
276
|
+
PASS improve-codebase-architecture placeholder reference is reachable: references/README.md
|
|
277
|
+
PASS improve-codebase-architecture removes Waza orphan advisories for Harness-reachable references
|
|
278
|
+
PASS improve-codebase-architecture reports the suppressed advisories explicitly
|
|
279
|
+
PASS improve-codebase-architecture recomputes readiness without false local-orphan failures
|
|
280
|
+
PASS install-cognitive-os placeholder reference is reachable: references/cognitive-loop.md
|
|
281
|
+
PASS install-cognitive-os removes Waza orphan advisories for Harness-reachable references
|
|
282
|
+
PASS install-cognitive-os reports the suppressed advisories explicitly
|
|
283
|
+
PASS install-cognitive-os recomputes readiness without false local-orphan failures
|
|
284
|
+
PASS multi-agent-workspace placeholder reference is reachable: references/orchestration.md
|
|
285
|
+
PASS multi-agent-workspace placeholder reference is reachable: references/architecture-guide.md
|
|
286
|
+
PASS multi-agent-workspace removes Waza orphan advisories for Harness-reachable references
|
|
287
|
+
PASS multi-agent-workspace reports the suppressed advisories explicitly
|
|
288
|
+
PASS multi-agent-workspace recomputes readiness without false local-orphan failures
|
|
289
|
+
PASS repo-docs placeholder reference is reachable: references/process-guide.md
|
|
290
|
+
PASS repo-docs removes Waza orphan advisories for Harness-reachable references
|
|
291
|
+
PASS repo-docs reports the suppressed advisories explicitly
|
|
292
|
+
PASS repo-docs recomputes readiness without false local-orphan failures
|
|
293
|
+
PASS rewrite-commits placeholder reference is reachable: references/workflow.md
|
|
294
|
+
PASS rewrite-commits removes Waza orphan advisories for Harness-reachable references
|
|
295
|
+
PASS rewrite-commits reports the suppressed advisories explicitly
|
|
296
|
+
PASS rewrite-commits recomputes readiness without false local-orphan failures
|
|
297
|
+
PASS security-review placeholder reference is reachable: references/security-checklist.md
|
|
298
|
+
PASS security-review removes Waza orphan advisories for Harness-reachable references
|
|
299
|
+
PASS security-review reports the suppressed advisories explicitly
|
|
300
|
+
PASS security-review recomputes readiness without false local-orphan failures
|
|
301
|
+
PASS self-evolve placeholder reference is reachable: references/memory-resolution.md
|
|
302
|
+
PASS self-evolve removes Waza orphan advisories for Harness-reachable references
|
|
303
|
+
PASS self-evolve reports the suppressed advisories explicitly
|
|
304
|
+
PASS self-evolve recomputes readiness without false local-orphan failures
|
|
305
|
+
PASS skill-creator placeholder reference is reachable: references/quality-checklist.md
|
|
306
|
+
PASS skill-creator removes Waza orphan advisories for Harness-reachable references
|
|
307
|
+
PASS skill-creator reports the suppressed advisories explicitly
|
|
308
|
+
PASS skill-creator recomputes readiness without false local-orphan failures
|
|
309
|
+
PASS skill-style placeholder reference is reachable: references/style-guide.md
|
|
310
|
+
PASS skill-style removes Waza orphan advisories for Harness-reachable references
|
|
311
|
+
PASS skill-style reports the suppressed advisories explicitly
|
|
312
|
+
PASS skill-style recomputes readiness without false local-orphan failures
|
|
313
|
+
PASS tdd placeholder reference is reachable: references/core-discipline.md
|
|
314
|
+
PASS tdd removes Waza orphan advisories for Harness-reachable references
|
|
315
|
+
PASS tdd reports the suppressed advisories explicitly
|
|
316
|
+
PASS tdd recomputes readiness without false local-orphan failures
|
|
317
|
+
PASS to-spec placeholder reference is reachable: references/process.md
|
|
318
|
+
PASS to-spec removes Waza orphan advisories for Harness-reachable references
|
|
319
|
+
PASS to-spec reports the suppressed advisories explicitly
|
|
320
|
+
PASS to-spec recomputes readiness without false local-orphan failures
|
|
321
|
+
PASS to-tickets placeholder reference is reachable: references/publishing-and-templates.md
|
|
322
|
+
PASS to-tickets removes Waza orphan advisories for Harness-reachable references
|
|
323
|
+
PASS to-tickets reports the suppressed advisories explicitly
|
|
324
|
+
PASS to-tickets recomputes readiness without false local-orphan failures
|
|
325
|
+
PASS todo-driven-workflow placeholder reference is reachable: references/execution-guide.md
|
|
326
|
+
PASS todo-driven-workflow removes Waza orphan advisories for Harness-reachable references
|
|
327
|
+
PASS todo-driven-workflow reports the suppressed advisories explicitly
|
|
328
|
+
PASS todo-driven-workflow recomputes readiness without false local-orphan failures
|
|
329
|
+
PASS using-git-worktrees placeholder reference is reachable: references/submodules-in-worktrees.md
|
|
330
|
+
PASS using-git-worktrees placeholder reference is reachable: references/workflow-details.md
|
|
331
|
+
PASS using-git-worktrees removes Waza orphan advisories for Harness-reachable references
|
|
332
|
+
PASS using-git-worktrees reports the suppressed advisories explicitly
|
|
333
|
+
PASS using-git-worktrees recomputes readiness without false local-orphan failures
|
|
334
|
+
PASS verification-loop placeholder reference is reachable: references/project-verification-contract.md
|
|
335
|
+
PASS verification-loop placeholder reference is reachable: references/verification-phases.md
|
|
336
|
+
PASS verification-loop removes Waza orphan advisories for Harness-reachable references
|
|
337
|
+
PASS verification-loop reports the suppressed advisories explicitly
|
|
338
|
+
PASS verification-loop recomputes readiness without false local-orphan failures
|
|
339
|
+
PASS verify-before-claim placeholder reference is reachable: references/verification-guide.md
|
|
340
|
+
PASS verify-before-claim removes Waza orphan advisories for Harness-reachable references
|
|
341
|
+
PASS verify-before-claim reports the suppressed advisories explicitly
|
|
342
|
+
PASS verify-before-claim recomputes readiness without false local-orphan failures
|
|
343
|
+
PASS zoom-out placeholder reference is reachable: references/circuit-breaker.md
|
|
344
|
+
PASS zoom-out removes Waza orphan advisories for Harness-reachable references
|
|
345
|
+
PASS zoom-out reports the suppressed advisories explicitly
|
|
346
|
+
PASS zoom-out recomputes readiness without false local-orphan failures
|
|
347
|
+
PASS at least one canonical skill uses the Harness placeholder reference contract
|
|
348
|
+
PASS adapter resolves canonical placeholder-orphan advisories
|
|
349
|
+
PASS fable-mode nested reference remains reachable: references/execution-phases.md
|
|
350
|
+
PASS fable-mode nested reference advisories are resolved through the reachable reference graph
|
|
351
|
+
PASS harness-everything nested reference remains reachable: references/router-workflow-plan.md
|
|
352
|
+
PASS harness-everything nested reference remains reachable: references/skill-registry.md
|
|
353
|
+
PASS harness-everything nested reference advisories are resolved through the reachable reference graph
|
|
354
|
+
PASS multi-agent-workspace nested reference remains reachable: references/agency-agents.md
|
|
355
|
+
PASS multi-agent-workspace nested reference advisories are resolved through the reachable reference graph
|
|
356
|
+
PASS skill-creator nested reference remains reachable: references/authoring-workflow.md
|
|
357
|
+
PASS skill-creator nested reference remains reachable: references/testing-workflow.md
|
|
358
|
+
PASS skill-creator nested reference remains reachable: references/quality-principles.md
|
|
359
|
+
PASS skill-creator nested reference remains reachable: references/dynamic-generation-contract.md
|
|
360
|
+
PASS skill-creator nested reference advisories are resolved through the reachable reference graph
|
|
361
|
+
PASS tdd nested reference remains reachable: references/quality-model.md
|
|
362
|
+
PASS tdd nested reference remains reachable: references/unit-testing.md
|
|
363
|
+
PASS tdd nested reference remains reachable: references/integration-testing.md
|
|
364
|
+
PASS tdd nested reference advisories are resolved through the reachable reference graph
|
|
365
|
+
PASS <skills-repo-root> existing target is a resolved Harness contract link
|
|
366
|
+
PASS generic runtime placeholder is classified as a template advisory
|
|
367
|
+
PASS unknown placeholder remains a real local-link problem
|
|
368
|
+
PASS existing repo-scope relative link is resolved by the Harness repository contract
|
|
369
|
+
PASS missing repo-scope relative link remains a hard local-link problem
|
|
370
|
+
PASS links inside generated-document templates remain visible template advisories
|
|
371
|
+
PASS network and generic-template findings do not masquerade as broken local links
|
|
372
|
+
PASS network and template findings are retained in separate advisory categories
|
|
373
|
+
PASS normalized readiness remains green when only false-orphan/network/template advisories remain
|
|
374
|
+
PASS non-link readiness failures remain explicit machine-readable blockers
|
|
375
|
+
PASS: Waza/Harness reference adapter (139 assertions across 26 skills)
|
|
376
|
+
|
|
377
|
+
▶️ Running test suite: mechanism-2ak-contract-probe-adapter.test.js
|
|
378
|
+
=== Contract Integrity Phase 3 Node Probe Adapter (#84) ===
|
|
379
|
+
PASS declared node-npm-v1 probe plan validates
|
|
380
|
+
PASS green baseline plus both explicit probes produces PROTECTED evidence
|
|
381
|
+
PASS env and exact-replace probes are killed only by expected contract failures
|
|
382
|
+
PASS adapter never mutates the source workspace
|
|
383
|
+
PASS probe report retains output hashes/evidence refs instead of project test output
|
|
384
|
+
PASS derived adapter evidence feeds the existing #84/#58 strict integrity gate
|
|
385
|
+
PASS green test run under a required probe is explicitly SURVIVED, never PASS
|
|
386
|
+
PASS green but weak suite cannot compensate 100 completeness with a surviving contract probe
|
|
387
|
+
PASS unrelated failing test output is INVALID and cannot be credited as a kill
|
|
388
|
+
PASS ambiguous exact-replace fallback fails closed without mutating source
|
|
389
|
+
PASS replace probe rejects symlink/junction escape without mutating outside the isolated workspace
|
|
390
|
+
PASS workspace copy rejects source symlinks/junctions before project code can mutate an outside target
|
|
391
|
+
PASS v1 adapter refuses to infer/install external dependencies
|
|
392
|
+
PASS non-green baseline blocks all protection claims
|
|
393
|
+
PASS probe plan rejects replace targets that escape the isolated workspace
|
|
394
|
+
PASS CLI returns exit 0 only for fully killed declared probes
|
|
395
|
+
PASS adapter documentation states exact supported scope and explicit non-support
|
|
396
|
+
|
|
397
|
+
PASS: #84 contract protection node adapter (0 failures)
|
|
398
|
+
|
|
399
|
+
▶️ Running test suite: mechanism-2al-codex-hooks-compat.test.js
|
|
400
|
+
|
|
401
|
+
[2al] Codex user-hook compatibility fallback (#122)...
|
|
402
|
+
PASS explicit install materializes compatibility entries
|
|
403
|
+
PASS install never changes Codex trust/config.toml state
|
|
404
|
+
PASS status verifies exact installed entry hashes and runtime tree
|
|
405
|
+
PASS status distinguishes installed hooks from Codex-trusted live capture
|
|
406
|
+
PASS existing unrelated user hooks and top-level metadata are preserved semantically
|
|
407
|
+
PASS every compatibility hook command resolves to the Harness-owned runtime copy
|
|
408
|
+
PASS compatibility entries use literal absolute runtime paths without shell-specific plugin expansion
|
|
409
|
+
PASS compatibility runtime is self-contained for hook and router dependencies
|
|
410
|
+
PASS reinstall/update is idempotent and does not duplicate hook entries
|
|
411
|
+
PASS update preserves user hooks added after the initial compatibility install
|
|
412
|
+
PASS modified Harness compatibility entry makes update fail closed without rewriting user config
|
|
413
|
+
PASS modified Harness compatibility entry makes uninstall fail closed rather than deleting user edits
|
|
414
|
+
PASS explicit uninstall removes exact Harness-owned entries without changing trust state
|
|
415
|
+
PASS uninstall preserves unrelated pre-existing and later-added user hooks
|
|
416
|
+
PASS uninstall leaves config.toml/trust state byte-identical
|
|
417
|
+
PASS uninstall removes Harness compatibility ownership manifest
|
|
418
|
+
PASS compatibility install can create a new hooks.json when none exists
|
|
419
|
+
PASS uninstall removes hooks.json only when Harness created it and no user entries remain
|
|
420
|
+
PASS compatibility runtime is copied from the verified installed marketplace source
|
|
421
|
+
PASS extra identical Harness hook is treated as user config drift, not silently deleted
|
|
422
|
+
PASS uninstall never recreates a user hooks.json that was removed after compatibility install
|
|
423
|
+
PASS byte-identical pre-existing user hooks are reused but never recorded as Harness-owned
|
|
424
|
+
PASS uninstall preserves byte-identical hooks that predated compatibility install
|
|
425
|
+
PASS forged manifest ownership fails closed without deleting a user hook
|
|
426
|
+
PASS failed manifest commit rolls hooks.json back byte-identically
|
|
427
|
+
PASS linked compatibility owner path cannot redirect writes outside Codex home
|
|
428
|
+
PASS malformed user hooks.json fails closed without replacement
|
|
429
|
+
PASS status clearly reports inactive observation capture when hooks are absent
|
|
430
|
+
PASS fallback derives from the current packaged hook manifest instead of maintaining a second manual hook inventory
|
|
431
|
+
|
|
432
|
+
PASS: #122 Codex compatibility fallback (0 failures)
|
|
433
|
+
|
|
434
|
+
▶️ Running test suite: mechanism-2am-observations-session-import.test.js
|
|
435
|
+
PASS: post-revision Codex session labels import as redacted, prompt-paired, idempotent observations.
|
|
436
|
+
|
|
437
|
+
▶️ Running test suite: mechanism-2am-openai-packaged-helper-runtime.test.js
|
|
438
|
+
OpenAI packaged helper runtime smoke test passed
|
|
439
|
+
|
|
440
|
+
▶️ Running test suite: mechanism-2an-environment-detection-readonly.test.js
|
|
441
|
+
Issue #213 verified: detection is read-only across six adapters, repair is explicit/idempotent, and OpenCode stays separate.
|
|
442
|
+
|
|
443
|
+
▶️ Running test suite: mechanism-2an-workflow-obligations.test.js
|
|
444
|
+
=== Issue #85 requirements-first workflow contract ===
|
|
445
|
+
PASS Tier 2 route persists successfully
|
|
446
|
+
PASS Tier 2 receives a preliminary iterative-single route
|
|
447
|
+
PASS selected Tier 2 workflow begins pending
|
|
448
|
+
PASS persisted workflow records semantic-contract mode rather than advisory-workflow
|
|
449
|
+
PASS Tier 2 immediately materializes a planning contract
|
|
450
|
+
PASS planning starts with decompose then compose
|
|
451
|
+
PASS requirements begin empty instead of being invented by the router
|
|
452
|
+
PASS router topology is recorded only as candidate strategy
|
|
453
|
+
PASS workflow start refuses to pretend planning is complete
|
|
454
|
+
PASS failed start leaves workflow pending
|
|
455
|
+
PASS unresolved planning does not hard-block ordinary tools
|
|
456
|
+
PASS Stop remains fail-open while planning is unresolved
|
|
457
|
+
PASS unresolved planning cannot silently become satisfied
|
|
458
|
+
PASS decomposition gap is visible
|
|
459
|
+
PASS workflow-composition gap is visible
|
|
460
|
+
PASS new single-agent plans cannot bypass active step typing
|
|
461
|
+
PASS requirements and workflow selection are recorded before execution
|
|
462
|
+
PASS requirement fragments are machine-readable
|
|
463
|
+
PASS workflow choice is explicitly confirmed after decomposition
|
|
464
|
+
PASS decompose obligation resolves from requirement fragments
|
|
465
|
+
PASS compose obligation resolves from workflow-selection evidence
|
|
466
|
+
PASS start activates the confirmed non-Fable workflow
|
|
467
|
+
PASS confirmed workflow becomes running
|
|
468
|
+
PASS planning contract advances to execution phase
|
|
469
|
+
PASS execution adds execute/verify without losing planning evidence
|
|
470
|
+
PASS execution obligation accepts bounded evidence-backed escape
|
|
471
|
+
PASS verification obligation cannot be escaped
|
|
472
|
+
PASS verification obligation can record explicit blocked evidence
|
|
473
|
+
PASS blocked obligation still reminds without trapping Stop
|
|
474
|
+
PASS blocked obligation keeps workflow unresolved rather than satisfied
|
|
475
|
+
PASS blocked verification remains visible
|
|
476
|
+
PASS verification can later resolve to pass with evidence
|
|
477
|
+
PASS behavior-change binding resolves before its active step passes
|
|
478
|
+
PASS behavior-change step advances after TDD binding resolution
|
|
479
|
+
PASS verification skill resolves only when the verification step becomes active
|
|
480
|
+
PASS verification step passes with objective evidence
|
|
481
|
+
PASS objective verification milestone is observed after the earlier mutation
|
|
482
|
+
PASS resolved workflow Stop remains fail-open
|
|
483
|
+
PASS planning + execution + verification allow satisfied
|
|
484
|
+
PASS satisfied workflow has no unresolved obligations
|
|
485
|
+
PASS Tier 2 route persists for active-step binding coverage
|
|
486
|
+
|
|
487
|
+
=== Binding declaration validation ===
|
|
488
|
+
PASS invalid requiredBindings null fixture route persists (typed)
|
|
489
|
+
PASS plan exits 2 for requiredBindings null (typed requirement)
|
|
490
|
+
PASS rejected requiredBindings null plan writes no stdout (typed)
|
|
491
|
+
PASS rejection identifies requiredBindings for null (typed requirement)
|
|
492
|
+
PASS rejected requiredBindings null plan leaves workflow state unchanged (typed)
|
|
493
|
+
PASS rejected requiredBindings null plan leaves obligation state unchanged (typed)
|
|
494
|
+
PASS invalid requiredBindings null fixture route persists (untyped)
|
|
495
|
+
PASS plan exits 2 for requiredBindings null (untyped requirement)
|
|
496
|
+
PASS rejected requiredBindings null plan writes no stdout (untyped)
|
|
497
|
+
PASS rejection identifies requiredBindings for null (untyped requirement)
|
|
498
|
+
PASS rejected requiredBindings null plan leaves workflow state unchanged (untyped)
|
|
499
|
+
PASS rejected requiredBindings null plan leaves obligation state unchanged (untyped)
|
|
500
|
+
PASS invalid requiredBindings object fixture route persists (typed)
|
|
501
|
+
PASS plan exits 2 for requiredBindings object (typed requirement)
|
|
502
|
+
PASS rejected requiredBindings object plan writes no stdout (typed)
|
|
503
|
+
PASS rejection identifies requiredBindings for object (typed requirement)
|
|
504
|
+
PASS rejected requiredBindings object plan leaves workflow state unchanged (typed)
|
|
505
|
+
PASS rejected requiredBindings object plan leaves obligation state unchanged (typed)
|
|
506
|
+
PASS invalid requiredBindings object fixture route persists (untyped)
|
|
507
|
+
PASS plan exits 2 for requiredBindings object (untyped requirement)
|
|
508
|
+
PASS rejected requiredBindings object plan writes no stdout (untyped)
|
|
509
|
+
PASS rejection identifies requiredBindings for object (untyped requirement)
|
|
510
|
+
PASS rejected requiredBindings object plan leaves workflow state unchanged (untyped)
|
|
511
|
+
PASS rejected requiredBindings object plan leaves obligation state unchanged (untyped)
|
|
512
|
+
PASS invalid requiredBindings string fixture route persists (typed)
|
|
513
|
+
PASS plan exits 2 for requiredBindings string (typed requirement)
|
|
514
|
+
PASS rejected requiredBindings string plan writes no stdout (typed)
|
|
515
|
+
PASS rejection identifies requiredBindings for string (typed requirement)
|
|
516
|
+
PASS rejected requiredBindings string plan leaves workflow state unchanged (typed)
|
|
517
|
+
PASS rejected requiredBindings string plan leaves obligation state unchanged (typed)
|
|
518
|
+
PASS invalid requiredBindings string fixture route persists (untyped)
|
|
519
|
+
PASS plan exits 2 for requiredBindings string (untyped requirement)
|
|
520
|
+
PASS rejected requiredBindings string plan writes no stdout (untyped)
|
|
521
|
+
PASS rejection identifies requiredBindings for string (untyped requirement)
|
|
522
|
+
PASS rejected requiredBindings string plan leaves workflow state unchanged (untyped)
|
|
523
|
+
PASS rejected requiredBindings string plan leaves obligation state unchanged (untyped)
|
|
524
|
+
PASS invalid requiredBindings boolean fixture route persists (typed)
|
|
525
|
+
PASS plan exits 2 for requiredBindings boolean (typed requirement)
|
|
526
|
+
PASS rejected requiredBindings boolean plan writes no stdout (typed)
|
|
527
|
+
PASS rejection identifies requiredBindings for boolean (typed requirement)
|
|
528
|
+
PASS rejected requiredBindings boolean plan leaves workflow state unchanged (typed)
|
|
529
|
+
PASS rejected requiredBindings boolean plan leaves obligation state unchanged (typed)
|
|
530
|
+
PASS invalid requiredBindings boolean fixture route persists (untyped)
|
|
531
|
+
PASS plan exits 2 for requiredBindings boolean (untyped requirement)
|
|
532
|
+
PASS rejected requiredBindings boolean plan writes no stdout (untyped)
|
|
533
|
+
PASS rejection identifies requiredBindings for boolean (untyped requirement)
|
|
534
|
+
PASS rejected requiredBindings boolean plan leaves workflow state unchanged (untyped)
|
|
535
|
+
PASS rejected requiredBindings boolean plan leaves obligation state unchanged (untyped)
|
|
536
|
+
PASS invalid requiredBindings number fixture route persists (typed)
|
|
537
|
+
PASS plan exits 2 for requiredBindings number (typed requirement)
|
|
538
|
+
PASS rejected requiredBindings number plan writes no stdout (typed)
|
|
539
|
+
PASS rejection identifies requiredBindings for number (typed requirement)
|
|
540
|
+
PASS rejected requiredBindings number plan leaves workflow state unchanged (typed)
|
|
541
|
+
PASS rejected requiredBindings number plan leaves obligation state unchanged (typed)
|
|
542
|
+
PASS invalid requiredBindings number fixture route persists (untyped)
|
|
543
|
+
PASS plan exits 2 for requiredBindings number (untyped requirement)
|
|
544
|
+
PASS rejected requiredBindings number plan writes no stdout (untyped)
|
|
545
|
+
PASS rejection identifies requiredBindings for number (untyped requirement)
|
|
546
|
+
PASS rejected requiredBindings number plan leaves workflow state unchanged (untyped)
|
|
547
|
+
PASS rejected requiredBindings number plan leaves obligation state unchanged (untyped)
|
|
548
|
+
PASS invalid optionalBindings null fixture route persists (typed)
|
|
549
|
+
PASS plan exits 2 for optionalBindings null (typed requirement)
|
|
550
|
+
PASS rejected optionalBindings null plan writes no stdout (typed)
|
|
551
|
+
PASS rejection identifies optionalBindings for null (typed requirement)
|
|
552
|
+
PASS rejected optionalBindings null plan leaves workflow state unchanged (typed)
|
|
553
|
+
PASS rejected optionalBindings null plan leaves obligation state unchanged (typed)
|
|
554
|
+
PASS invalid optionalBindings null fixture route persists (untyped)
|
|
555
|
+
PASS plan exits 2 for optionalBindings null (untyped requirement)
|
|
556
|
+
PASS rejected optionalBindings null plan writes no stdout (untyped)
|
|
557
|
+
PASS rejection identifies optionalBindings for null (untyped requirement)
|
|
558
|
+
PASS rejected optionalBindings null plan leaves workflow state unchanged (untyped)
|
|
559
|
+
PASS rejected optionalBindings null plan leaves obligation state unchanged (untyped)
|
|
560
|
+
PASS invalid optionalBindings object fixture route persists (typed)
|
|
561
|
+
PASS plan exits 2 for optionalBindings object (typed requirement)
|
|
562
|
+
PASS rejected optionalBindings object plan writes no stdout (typed)
|
|
563
|
+
PASS rejection identifies optionalBindings for object (typed requirement)
|
|
564
|
+
PASS rejected optionalBindings object plan leaves workflow state unchanged (typed)
|
|
565
|
+
PASS rejected optionalBindings object plan leaves obligation state unchanged (typed)
|
|
566
|
+
PASS invalid optionalBindings object fixture route persists (untyped)
|
|
567
|
+
PASS plan exits 2 for optionalBindings object (untyped requirement)
|
|
568
|
+
PASS rejected optionalBindings object plan writes no stdout (untyped)
|
|
569
|
+
PASS rejection identifies optionalBindings for object (untyped requirement)
|
|
570
|
+
PASS rejected optionalBindings object plan leaves workflow state unchanged (untyped)
|
|
571
|
+
PASS rejected optionalBindings object plan leaves obligation state unchanged (untyped)
|
|
572
|
+
PASS invalid optionalBindings string fixture route persists (typed)
|
|
573
|
+
PASS plan exits 2 for optionalBindings string (typed requirement)
|
|
574
|
+
PASS rejected optionalBindings string plan writes no stdout (typed)
|
|
575
|
+
PASS rejection identifies optionalBindings for string (typed requirement)
|
|
576
|
+
PASS rejected optionalBindings string plan leaves workflow state unchanged (typed)
|
|
577
|
+
PASS rejected optionalBindings string plan leaves obligation state unchanged (typed)
|
|
578
|
+
PASS invalid optionalBindings string fixture route persists (untyped)
|
|
579
|
+
PASS plan exits 2 for optionalBindings string (untyped requirement)
|
|
580
|
+
PASS rejected optionalBindings string plan writes no stdout (untyped)
|
|
581
|
+
PASS rejection identifies optionalBindings for string (untyped requirement)
|
|
582
|
+
PASS rejected optionalBindings string plan leaves workflow state unchanged (untyped)
|
|
583
|
+
PASS rejected optionalBindings string plan leaves obligation state unchanged (untyped)
|
|
584
|
+
PASS invalid optionalBindings boolean fixture route persists (typed)
|
|
585
|
+
PASS plan exits 2 for optionalBindings boolean (typed requirement)
|
|
586
|
+
PASS rejected optionalBindings boolean plan writes no stdout (typed)
|
|
587
|
+
PASS rejection identifies optionalBindings for boolean (typed requirement)
|
|
588
|
+
PASS rejected optionalBindings boolean plan leaves workflow state unchanged (typed)
|
|
589
|
+
PASS rejected optionalBindings boolean plan leaves obligation state unchanged (typed)
|
|
590
|
+
PASS invalid optionalBindings boolean fixture route persists (untyped)
|
|
591
|
+
PASS plan exits 2 for optionalBindings boolean (untyped requirement)
|
|
592
|
+
PASS rejected optionalBindings boolean plan writes no stdout (untyped)
|
|
593
|
+
PASS rejection identifies optionalBindings for boolean (untyped requirement)
|
|
594
|
+
PASS rejected optionalBindings boolean plan leaves workflow state unchanged (untyped)
|
|
595
|
+
PASS rejected optionalBindings boolean plan leaves obligation state unchanged (untyped)
|
|
596
|
+
PASS invalid optionalBindings number fixture route persists (typed)
|
|
597
|
+
PASS plan exits 2 for optionalBindings number (typed requirement)
|
|
598
|
+
PASS rejected optionalBindings number plan writes no stdout (typed)
|
|
599
|
+
PASS rejection identifies optionalBindings for number (typed requirement)
|
|
600
|
+
PASS rejected optionalBindings number plan leaves workflow state unchanged (typed)
|
|
601
|
+
PASS rejected optionalBindings number plan leaves obligation state unchanged (typed)
|
|
602
|
+
PASS invalid optionalBindings number fixture route persists (untyped)
|
|
603
|
+
PASS plan exits 2 for optionalBindings number (untyped requirement)
|
|
604
|
+
PASS rejected optionalBindings number plan writes no stdout (untyped)
|
|
605
|
+
PASS rejection identifies optionalBindings for number (untyped requirement)
|
|
606
|
+
PASS rejected optionalBindings number plan leaves workflow state unchanged (untyped)
|
|
607
|
+
PASS rejected optionalBindings number plan leaves obligation state unchanged (untyped)
|
|
608
|
+
PASS empty-array binding fixture route persists
|
|
609
|
+
PASS plan accepts omitted and explicit empty binding arrays
|
|
610
|
+
PASS omitted binding arrays remain empty after normalization
|
|
611
|
+
PASS explicit empty binding arrays remain empty after normalization
|
|
612
|
+
PASS normalized ordered steps are recorded in the existing requirements contract
|
|
613
|
+
PASS typed steps preserve request order
|
|
614
|
+
PASS behavior-change step materializes required TDD binding
|
|
615
|
+
PASS verification step owns its verification-loop binding
|
|
616
|
+
PASS commit step materializes required git-commit binding
|
|
617
|
+
PASS typed-step plan cannot omit the mandatory verification step
|
|
618
|
+
PASS start accepts a confirmed typed-step workflow
|
|
619
|
+
PASS start returns the first ordered step as active
|
|
620
|
+
PASS start returns concrete commands for resolving the active binding and passing the step
|
|
621
|
+
PASS review starts without TDD and surfaces only its optional binding
|
|
622
|
+
PASS active optional binding includes its load path
|
|
623
|
+
PASS start does not disclose future-step bindings
|
|
624
|
+
PASS future-step binding cannot be resolved before its step becomes active
|
|
625
|
+
PASS active step is persisted in workflow-obligations state
|
|
626
|
+
PASS typed-step workflows do not reintroduce global suggested-skill pushes
|
|
627
|
+
PASS active step cannot pass before surfaced optional bindings are resolved
|
|
628
|
+
PASS active optional binding can be loaded with evidence
|
|
629
|
+
PASS optional binding cannot be marked not-needed without evidence
|
|
630
|
+
PASS active optional binding can be marked not-needed with evidence
|
|
631
|
+
PASS review step can pass after its surfaced optional binding is resolved
|
|
632
|
+
PASS review advance returns only the behavior-change step and its required TDD binding
|
|
633
|
+
PASS behavior-change output includes its TDD path but keeps later bindings hidden
|
|
634
|
+
PASS behavior-change cannot pass before required TDD binding is resolved
|
|
635
|
+
PASS required TDD binding resolves with load evidence
|
|
636
|
+
PASS resolved behavior-change advances to the mandatory verification step
|
|
637
|
+
PASS verification binding is disclosed only when verification becomes active
|
|
638
|
+
PASS verification binding resolves at its own step
|
|
639
|
+
PASS verification step advances to commit only after its binding resolves
|
|
640
|
+
PASS commit binding is disclosed only when the commit step becomes active
|
|
641
|
+
PASS required git-commit binding resolves at the commit step
|
|
642
|
+
PASS advancing the last step leaves no active-step bindings
|
|
643
|
+
PASS completed typed steps resolve their aggregate execute and verify obligations with linked evidence
|
|
644
|
+
PASS all typed steps can satisfy the workflow without separate aggregate dispositions
|
|
645
|
+
PASS satisfied typed-step workflow has no unresolved obligations
|
|
646
|
+
PASS verification-only workflow route persists
|
|
647
|
+
PASS verification-only typed plan is accepted
|
|
648
|
+
PASS verification-only typed plan starts at its verification step
|
|
649
|
+
PASS empty typed execution group resolves as explicit verification-only evidence
|
|
650
|
+
PASS verification-only step resolves its required binding
|
|
651
|
+
PASS verification-only step passes with objective evidence
|
|
652
|
+
PASS verification-only workflow can satisfy without an execution step
|
|
653
|
+
PASS verification-only completion also resolves the aggregate verify obligation
|
|
654
|
+
PASS route persists for unknown-required-binding coverage
|
|
655
|
+
PASS unknown required binding is accepted into the auditable contract
|
|
656
|
+
PASS start surfaces rather than silently discarding an unknown required binding
|
|
657
|
+
PASS unknown required binding remains visible as pending/unavailable
|
|
658
|
+
PASS unknown required binding cannot be falsely marked loaded
|
|
659
|
+
PASS step with unknown required binding cannot pass
|
|
660
|
+
PASS unknown required binding does not hard-block ordinary tools
|
|
661
|
+
PASS missing binding keeps Stop fail-open while workflow remains unresolved
|
|
662
|
+
PASS Stop reports the unresolved unknown binding
|
|
663
|
+
PASS custom-reference workflow route persists
|
|
664
|
+
PASS step contracts accept an explicit skill/reference path
|
|
665
|
+
PASS custom reference path is normalized and disclosed only at its active step
|
|
666
|
+
PASS explicit reference binding can resolve with evidence
|
|
667
|
+
PASS active step can pass after its explicit reference binding is resolved
|
|
668
|
+
PASS unsafe-reference workflow route persists
|
|
669
|
+
PASS step bindings reject paths that traverse outside repository scope
|
|
670
|
+
PASS drive-reference workflow route persists
|
|
671
|
+
PASS step bindings reject Windows drive-relative paths
|
|
672
|
+
PASS second Tier 2 route persists for replan discriminator
|
|
673
|
+
PASS initial route records normalized knowledge signals
|
|
674
|
+
PASS post-decomposition workflow can be recomposed through the router contract
|
|
675
|
+
PASS recomposed workflow receives an explicit confirmed disposition
|
|
676
|
+
PASS requested and router-confirmed post-decomposition strategy are preserved
|
|
677
|
+
PASS recomposed plan becomes the pending execution contract
|
|
678
|
+
PASS strategy recomposition preserves the original knowledge signals
|
|
679
|
+
PASS recomposed workflow cannot become satisfied before its selected topology starts
|
|
680
|
+
PASS recomposed Fable topology proceeds to its native stage-contract requirement
|
|
681
|
+
PASS recomposed planning state still does not recreate a tool lock
|
|
682
|
+
PASS prohibition fixture routes successfully
|
|
683
|
+
PASS prohibited post-decomposition choice is evaluated by router policy
|
|
684
|
+
PASS original user prohibition survives recomposition
|
|
685
|
+
PASS requirements remain valid while only the prohibited workflow choice stays unresolved
|
|
686
|
+
PASS Tier 3 Fable candidate persists successfully
|
|
687
|
+
PASS Tier 3 keeps Fable as preliminary candidate
|
|
688
|
+
PASS Fable also requires requirements/workflow planning before stage execution
|
|
689
|
+
PASS Fable cannot enter stage execution before planning contract resolves
|
|
690
|
+
PASS Tier 1 route persists successfully
|
|
691
|
+
PASS clear bounded Tier 1 intent has no decomposition overhead
|
|
692
|
+
PASS Tier 1 direct Stop remains lightweight
|
|
693
|
+
PASS Tier 1 remains a minimal direct path
|
|
694
|
+
PASS #190 mutation-probe lock remains retired
|
|
695
|
+
PASS #190 hard budget state remains retired
|
|
696
|
+
|
|
697
|
+
PASS: issue #85 requirements-first workflow contract (0 failures)
|
|
698
|
+
|
|
699
|
+
▶️ Running test suite: mechanism-2ao-plugin-sync.test.js
|
|
700
|
+
Native plugin sync verified: absent plugins install, installed plugins update, and unknown state fails closed.
|
|
701
|
+
|
|
702
|
+
▶️ Running test suite: mechanism-2ap-sbom.test.js
|
|
703
|
+
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
|
|
704
|
+
CycloneDX SBOM verified: 123 lockfile components and npm pack inclusion.
|
|
705
|
+
|
|
706
|
+
▶️ Running test suite: mechanism-2aq-fable-stage-bindings.test.js
|
|
707
|
+
=== #297 Fable active-stage bindings ===
|
|
708
|
+
PASS post-tool check hook remains fail-open
|
|
709
|
+
PASS a successful check does not pass a stage while its declared bindings remain unresolved
|
|
710
|
+
PASS check success and unresolved binding status are recorded separately
|
|
711
|
+
PASS retained Fable notification shows the current stage
|
|
712
|
+
PASS retained Fable notification shows only current-stage bindings
|
|
713
|
+
PASS retained Fable notification hides future bindings and avoids repeating the full plan
|
|
714
|
+
PASS unresolved Fable bindings do not hard-block ordinary mutation tools
|
|
715
|
+
PASS unresolved Fable bindings do not hard-block Stop
|
|
716
|
+
PASS Stop exposes the binding gap without locking the workflow
|
|
717
|
+
PASS active required stage binding can be explicitly resolved
|
|
718
|
+
PASS resolving one binding does not pass the stage while an optional binding is undecided
|
|
719
|
+
PASS optional binding can be explicitly declined with evidence
|
|
720
|
+
PASS stage check remains callable after binding resolution
|
|
721
|
+
PASS successful stage check discloses the newly dependency-ready verifier binding
|
|
722
|
+
PASS stage passes only after check and binding dispositions both resolve
|
|
723
|
+
PASS passing stage retains correlated check evidence
|
|
724
|
+
PASS packaged skill binding resolves to the installed Harness skill at run preparation
|
|
725
|
+
PASS workspace reference binding resolves to the workspace file, not the Harness copy
|
|
726
|
+
PASS a declared stage path with no file is recorded as missing, not available
|
|
727
|
+
PASS a missing stage binding cannot be recorded as loaded
|
|
728
|
+
PASS: #297 Fable stage binding gate mechanics
|
|
729
|
+
|
|
730
|
+
▶️ Running test suite: mechanism-2ar-binding-resolution.test.js
|
|
731
|
+
=== PR #303 binding resolution ===
|
|
732
|
+
PASS Tier 2 route persists for declared-path coverage
|
|
733
|
+
PASS plan with a missing declared path is still recorded
|
|
734
|
+
PASS a declared path with no file is recorded as missing, not available
|
|
735
|
+
PASS a declared path that exists resolves to its readable file
|
|
736
|
+
PASS workflow starts with a visible missing binding
|
|
737
|
+
PASS a missing required binding cannot be marked loaded
|
|
738
|
+
PASS the failed load leaves the required binding visibly unavailable
|
|
739
|
+
PASS the step cannot pass while its required binding is unresolved
|
|
740
|
+
PASS an existing optional binding can be loaded
|
|
741
|
+
PASS repository/Claude plugin layout resolves tdd/SKILL.md at the package root
|
|
742
|
+
PASS Codex plugin package ships the binding resolver
|
|
743
|
+
PASS Codex plugin layout resolves tdd/SKILL.md under its skills/ root
|
|
744
|
+
PASS a path absent from workspace and package roots is missing
|
|
745
|
+
PASS fixture precondition: Harness ships docs/architecture.md
|
|
746
|
+
PASS a missing workspace reference does not resolve to the Harness package copy
|
|
747
|
+
PASS a skill id naming its own SKILL.md still resolves from the package
|
|
748
|
+
PASS a registered id at an unregistered path is treated as a workspace reference
|
|
749
|
+
PASS Tier 2 route persists in a client workspace
|
|
750
|
+
PASS client plan declares a workspace reference that collides with a Harness file
|
|
751
|
+
PASS step flow records the colliding workspace reference as missing
|
|
752
|
+
PASS client workflow starts
|
|
753
|
+
PASS step flow cannot load the Harness copy as the workspace reference
|
|
754
|
+
PASS stage flow records the colliding workspace reference as missing
|
|
755
|
+
PASS router runs against a workspace with a generated-skill manifest
|
|
756
|
+
PASS matching self-evolved skill surfaces as a metadata-only id
|
|
757
|
+
PASS router does not disclose the generated skill path or text
|
|
758
|
+
PASS unrelated prompts do not surface the generated skill
|
|
759
|
+
PASS Tier 2 route persists in the generated-skill workspace
|
|
760
|
+
PASS a step can declare the generated skill id as a binding
|
|
761
|
+
PASS the generated binding is not disclosed before its step is active
|
|
762
|
+
PASS built-in TDD binding resolves from the package root outside the Harness repo
|
|
763
|
+
PASS the generated binding becomes available with its SKILL.md once its step is active
|
|
764
|
+
PASS the active generated binding can be loaded
|
|
765
|
+
|
|
766
|
+
PASS: PR #303 binding resolution (0 failures)
|
|
767
|
+
|
|
768
|
+
▶️ Running test suite: mechanism-2b-boundary-guard.test.js
|
|
769
|
+
|
|
770
|
+
[2b] Boundary reminder...
|
|
771
|
+
✅ 2b. Large read emits a reminder but remains available
|
|
772
|
+
|
|
773
|
+
▶️ Running test suite: mechanism-2c-state-persist.test.js
|
|
774
|
+
|
|
775
|
+
[2c] State persistence (WAL)...
|
|
776
|
+
✅ 2c. Failing Bash call is recorded as status=failed
|
|
777
|
+
✅ 2c. Claude-shaped PostToolUse without exitCode clears failed state even with stderr diagnostics
|
|
778
|
+
✅ 2c. Numeric non-zero exit still records failure on hosts that report exit codes
|
|
779
|
+
✅ 2c. Numeric zero exit still clears failure state
|
|
780
|
+
✅ 2c. PostToolUseFailure remains authoritative without numeric exitCode
|
|
781
|
+
|
|
782
|
+
▶️ Running test suite: mechanism-2d-fact-audit.test.js
|
|
783
|
+
|
|
784
|
+
[2d] Fact-audit reminder...
|
|
785
|
+
✅ 2d. tier-router.js reads {"prompt":...} from stdin and emits FACT-AUDIT REMINDER
|
|
786
|
+
|
|
787
|
+
▶️ Running test suite: mechanism-2e-scope-guard.test.js
|
|
788
|
+
|
|
789
|
+
[2e] Subagent scope reminder...
|
|
790
|
+
✅ 2e. Scope drift is reported without blocking
|
|
791
|
+
|
|
792
|
+
▶️ Running test suite: mechanism-2f-stop-gate.test.js
|
|
793
|
+
|
|
794
|
+
[2f] Verification reminders...
|
|
795
|
+
✅ 2f. Unverified dirty Stop emits reminder and exits 0
|
|
796
|
+
✅ 2f. Stop reminder creates no lock/throttle state
|
|
797
|
+
✅ 2f. Observed verification can mark workflow satisfied
|
|
798
|
+
✅ 2f. Missing verification is reminder-only
|
|
799
|
+
✅ 2f. Missing verification does not create blocked state
|
|
800
|
+
|
|
801
|
+
▶️ Running test suite: mechanism-2g-platform-ignore.test.js
|
|
802
|
+
|
|
803
|
+
[2g] Platform ignore patterns / Gitignore matching...
|
|
804
|
+
✅ 2g. getIgnorePatterns returns ONLY Harness skills
|
|
805
|
+
✅ 2g. isMatch returns true for parent folder match (Claude)
|
|
806
|
+
✅ 2g. isMatch returns true for exact match of harness skill (Claude)
|
|
807
|
+
✅ 2g. getIgnorePatterns returns ONLY Harness skills (Cursor)
|
|
808
|
+
✅ 2g. isMatch returns true for parent folder match (Cursor)
|
|
809
|
+
|
|
810
|
+
▶️ Running test suite: mechanism-2h-installer-manifest.test.js
|
|
811
|
+
|
|
812
|
+
[2h] Installer manifest and skill bookkeeping...
|
|
813
|
+
✅ 2h. readManifest returns fallback structure when file does not exist
|
|
814
|
+
✅ 2h. recordSkillInstall successfully records skill information
|
|
815
|
+
✅ 2h. recordGeneratedSkill successfully records generated skill with triggers
|
|
816
|
+
✅ 2h. removeGeneratedSkill removes generated skill correctly
|
|
817
|
+
✅ 2h. isHarnessSkillDir detects Harness author correctly
|
|
818
|
+
✅ 2h. isHarnessSkillDir detects author under metadata: (spec format)
|
|
819
|
+
✅ 2h. isHarnessSkillDir returns false for foreign authors
|
|
820
|
+
✅ 2h. removeSkillFromManifest cleans up or unlinks empty manifest
|
|
821
|
+
⚠️ Preserved existing agent without overwrite: <HARNESS_SOURCE>/.mechanism-test-manifest-ws/agents/fable-orchestrator.md
|
|
822
|
+
✅ Installed agent: test-agents/fable-verifier.md
|
|
823
|
+
✅ Installed agent: test-agents/fable-worker-haiku.md
|
|
824
|
+
✅ Installed agent: test-agents/fable-worker-sonnet.md
|
|
825
|
+
✅ 2h. Fable agents are manifest tracked without overwriting a conflicting file
|
|
826
|
+
✅ 2h. Removing Fable agents removes only tracked files and manifest state
|
|
827
|
+
⚠️ Preserved existing agent without overwrite: <HARNESS_SOURCE>/.mechanism-test-manifest-ws/agents/fable-orchestrator.md
|
|
828
|
+
⚠️ Preserved pre-existing identical agent without claiming ownership: <HARNESS_SOURCE>/.mechanism-test-manifest-ws/agents/fable-verifier.md
|
|
829
|
+
✅ Installed agent: test-agents/fable-worker-haiku.md
|
|
830
|
+
✅ Installed agent: test-agents/fable-worker-sonnet.md
|
|
831
|
+
✅ 2h. Pre-existing identical agent is not claimed as Harness-owned
|
|
832
|
+
✅ 2h. Pre-existing identical agent survives tracked-agent removal
|
|
833
|
+
|
|
834
|
+
▶️ Running test suite: mechanism-2i-crlf-frontmatter.test.js
|
|
835
|
+
❌ 2i-setup. Test harness error: ENOENT: no such file or directory, lstat '<HARNESS_SOURCE>/node_modules'
|
|
836
|
+
❌ Test suite failed: mechanism-2i-crlf-frontmatter.test.js
|
|
837
|
+
|
|
838
|
+
▶️ Running test suite: mechanism-2i-install-verification.test.js
|
|
839
|
+
|
|
840
|
+
[2i] Installed version and skill-tree verification...
|
|
841
|
+
✅ 2i. matching version and tree pass
|
|
842
|
+
✅ 2i. modified installed skill is reported stale
|
|
843
|
+
✅ 2i. old package version is reported stale
|
|
844
|
+
✅ 2i. legacy install without a manifest is reported stale
|
|
845
|
+
|
|
846
|
+
▶️ Running test suite: mechanism-2j-behavioral-runner.test.js
|
|
847
|
+
|
|
848
|
+
[2j] Behavioral runner argv integrity...
|
|
849
|
+
✅ 2j. opencode receives the complete prompt as one argv value
|
|
850
|
+
✅ 2j. claude receives the complete prompt as one argv value
|
|
851
|
+
✅ 2j. Claude baseline excludes user customizations
|
|
852
|
+
✅ 2j. Claude treatment keeps only project/local customizations
|
|
853
|
+
✅ 2j. Claude emits parseable verbose stream JSON
|
|
854
|
+
✅ 2j. behavioral workspace builder accepts a valid nested fixture through the public execution contract
|
|
855
|
+
✅ 2j. behavioral fixtures reject traversal for the expected boundary reason
|
|
856
|
+
✅ 2j. fixture setup runs via Node in the generated workspace
|
|
857
|
+
✅ 2j. setup failure is classified as fixture-error before any model session
|
|
858
|
+
✅ 2j. worktree/submodule setup creates the real #243 topology before model execution
|
|
859
|
+
✅ 2j. fixture errors remain distinct aggregate infrastructure failures
|
|
860
|
+
|
|
861
|
+
▶️ Running test suite: mechanism-2j-fixture-entrypoints.test.js
|
|
862
|
+
Fixture entrypoints: paired baseline/treatment and plugin execute setup; failures skip installation/model and are excluded from scores.
|
|
863
|
+
|
|
864
|
+
▶️ Running test suite: mechanism-2k-reference-check.test.js
|
|
865
|
+
|
|
866
|
+
[2k] Skill reference checker negative control...
|
|
867
|
+
✅ 2k. dangling executable reference fails
|
|
868
|
+
✅ 2k. existing executable reference passes
|
|
869
|
+
✅ 2k. bare skill-local paths fail the explicit marker rule
|
|
870
|
+
✅ 2k. explicit skill-local paths pass
|
|
871
|
+
✅ 2k. <this-skill-dir>/ is authoritative and never falls back to the repo root
|
|
872
|
+
✅ 2k. <this-skill-dir>/ resolves under the skill itself
|
|
873
|
+
✅ 2k. <this-skill-dir>/../ reaches a sibling
|
|
874
|
+
✅ 2k. unknown placeholder fails instead of being skipped
|
|
875
|
+
✅ 2k. <workspace>/ paths are skipped, not resolved locally
|
|
876
|
+
|
|
877
|
+
▶️ Running test suite: mechanism-2l-multi-agent-workspace.test.js
|
|
878
|
+
|
|
879
|
+
[2l] Multi-agent workspace integration...
|
|
880
|
+
✅ 2l. skill contract names global runtime and resolved document writes
|
|
881
|
+
✅ 2l. grill fallback names committable document paths
|
|
882
|
+
✅ 2l. missing agency source is explicit and still scaffolds core workspace
|
|
883
|
+
✅ 2l. root CONTEXT-MAP takes precedence for every document zone
|
|
884
|
+
✅ 2l. projectDocs paths are explicit and do not become inferred paths
|
|
885
|
+
✅ 2l. existing repository document folders are inferred
|
|
886
|
+
✅ 2l. legacy authored records migrate to the resolved repository path
|
|
887
|
+
✅ 2l. migration conflicts preserve both existing files and legacy source
|
|
888
|
+
✅ 2l. migration rejects duplicate destinations before copying or deleting records
|
|
889
|
+
✅ 2l. document paths reject junction escapes from the workspace
|
|
890
|
+
✅ 2l. legacy migration rejects a linked source before copying or deleting outside files
|
|
891
|
+
✅ 2l. installed router template resolves paths into global runtime
|
|
892
|
+
✅ 2l. an explicitly missing agency source fails clearly
|
|
893
|
+
✅ 2l. fixture source selects metadata and records a verified handoff
|
|
894
|
+
✅ 2l. repeated scaffold is idempotent
|
|
895
|
+
✅ 2l. installed indexer runs independently and lists selected specialist
|
|
896
|
+
✅ 2l. indexer uses explicit manifest/output paths without depth inference
|
|
897
|
+
✅ 2l. indexer fails clearly when its manifest is missing
|
|
898
|
+
✅ 2l. unsupported platform fails explicitly
|
|
899
|
+
✅ 2l. duplicate agent names fail before writing output
|
|
900
|
+
✅ 2l. empty division fails before writing output
|
|
901
|
+
✅ 2l. unsafe division path is rejected before reading outside source
|
|
902
|
+
✅ 2l. source revision drift requires an explicit override
|
|
903
|
+
|
|
904
|
+
▶️ Running test suite: mechanism-2m-self-repo-guard.test.js
|
|
905
|
+
|
|
906
|
+
[2m] Self-repo guard identifies the harness repo by identity, not path...
|
|
907
|
+
✅ 2m. isHarnessRepo() recognises a harness checkout
|
|
908
|
+
✅ 2m. isHarnessRepo() rejects an unrelated project
|
|
909
|
+
✅ 2m. isHarnessRepo() is false when package.json is absent
|
|
910
|
+
✅ 2m. bootstrap run out-of-tree against a harness checkout advises no repair
|
|
911
|
+
✅ 2m. bootstrap still advises repair for an unrelated project (guard is not blanket suppression)
|
|
912
|
+
✅ 2m. self-heal reports an unmarked AGENTS.md as present-without-block, not missing
|
|
913
|
+
|
|
914
|
+
▶️ Running test suite: mechanism-2n-opencode-plugin.test.js
|
|
915
|
+
|
|
916
|
+
[2n] opencode enforcement plugin: real hook API and firing behavior...
|
|
917
|
+
✅ 2n. the repository inventory manifest exists
|
|
918
|
+
✅ 2n. every standalone hook file on disk is declared in the inventory manifest
|
|
919
|
+
✅ 2n. every declared inventory hook path exists on disk
|
|
920
|
+
✅ 2n. no standalone hook is declared more than once
|
|
921
|
+
✅ 2n. the plugin ships as a single self-contained module (installable by copying one file)
|
|
922
|
+
✅ 2n. exports exactly the hooks it uses (tool.execute.before/after, event)
|
|
923
|
+
✅ 2n. non-edit tools do not mark verification pending
|
|
924
|
+
✅ 2n. an edit tool call marks verification pending
|
|
925
|
+
✅ 2n. a passing verification on session.idle clears pending state
|
|
926
|
+
✅ 2n. no follow-up prompt is sent when verification passes
|
|
927
|
+
✅ 2n. two failures on the same signature: still allowed, not yet tripped
|
|
928
|
+
✅ 2n. each failed verification sends exactly one follow-up prompt
|
|
929
|
+
✅ 2n. 3rd failure on the same signature forces reflection
|
|
930
|
+
✅ 2n. the forced-reflection prompt says to reflect
|
|
931
|
+
✅ 2n. pending reflection blocks another code edit
|
|
932
|
+
✅ 2n. pending reflection still allows read tools
|
|
933
|
+
✅ 2n. the forced-reflection prompt names a verifiable artifact token
|
|
934
|
+
✅ 2n. a directive outside the Decision section does not complete reflection
|
|
935
|
+
✅ 2n. apply_patch reflection completes the lifecycle, resets the signature count, and persists lastReflection
|
|
936
|
+
✅ 2n. repeated idle does not duplicate verification or follow-up prompts
|
|
937
|
+
✅ 2n. apply_patch is allowed to write a pending reflection artifact
|
|
938
|
+
✅ 2n. apply_patch output args complete a pending reflection
|
|
939
|
+
✅ 2n. mixed apply_patch cannot bypass a pending reflection
|
|
940
|
+
✅ 2n. first post-reflection failure starts again at count=1
|
|
941
|
+
✅ 2n. no permanent post-reflection hard lock remains
|
|
942
|
+
✅ 2n. a second session has an independent breaker stream
|
|
943
|
+
Harness: ignoring corrupt circuit-breaker state at "<HARNESS_SOURCE>/.mechanism-test-opencode-home/.agents/harness-everything/workspaces/.mechanism-test-opencode-workspace-fbcc9c3c68d0/state/sessions/corrupt/circuit-breaker.json" and starting fresh.
|
|
944
|
+
✅ 2n. corrupt breaker state fails open instead of becoming a cognitive lock
|
|
945
|
+
✅ 2n. failed prompt delivery remains retryable
|
|
946
|
+
✅ 2n. next idle retries the saved follow-up exactly once
|
|
947
|
+
✅ 2n. session.created resets only the current session state
|
|
948
|
+
✅ 2n. a reset session can edit again
|
|
949
|
+
✅ 2n. dot and dotdot session IDs never escape the sessions root
|
|
950
|
+
✅ 2n. resetting an unsafe session cannot delete an outside sentinel
|
|
951
|
+
✅ 2n. resetting s1 leaves the independent s2 state
|
|
952
|
+
✅ 2n. legacy flat state migrates into the workspace-keyed root
|
|
953
|
+
✅ 2n. hook state stayed inside the redirected HOME
|
|
954
|
+
|
|
955
|
+
▶️ Running test suite: mechanism-2o-state-home-isolation.test.js
|
|
956
|
+
|
|
957
|
+
[2o] State-home isolation: runtime state never scatters into cwd (issue #42)...
|
|
958
|
+
✅ 2o. harness-state.js creates zero files in a non-git nested dir
|
|
959
|
+
✅ 2o. ...and the session dir lands under the global state home instead
|
|
960
|
+
✅ 2o. model-selector.js (zero-walk before the fix) creates zero files in a non-git nested dir
|
|
961
|
+
✅ 2o. ...and its audit log lands under the same global state/ stream as harness-state.js
|
|
962
|
+
✅ 2o. scaffold.js with no --workspace resolves to the repo root from a nested dir
|
|
963
|
+
✅ 2o. ...and does not scatter runtime files into the repository or nested invocation directory
|
|
964
|
+
✅ 2o. harness-state.js walks up to the repo root from a nested in-repo dir, not the nested dir
|
|
965
|
+
✅ 2o. ...and its state dir is under the global home, not under the git fixture at all
|
|
966
|
+
✅ 2o. pre-existing scattered state migrates into the new global location
|
|
967
|
+
✅ 2o. ...and the old in-repo location is gone afterward
|
|
968
|
+
|
|
969
|
+
▶️ Running test suite: mechanism-2p-installer-links.test.js
|
|
970
|
+
|
|
971
|
+
[2p] Canonical-store link/copy install + link-aware uninstall (issue #49)...
|
|
972
|
+
✅ Installed skill: .claude/skills/tdd/ (symlink -> ../../.agents/skills/tdd)
|
|
973
|
+
✅ Installed skill: .cursor/skills/tdd/ (symlink -> ../../.agents/skills/tdd)
|
|
974
|
+
✅ 2p. both platform targets are real links (symlink/junction), not physical copies
|
|
975
|
+
✅ 2p. the canonical copy itself is a physical directory, not a link
|
|
976
|
+
✅ 2p. content is readable through the link and matches source
|
|
977
|
+
✅ 2p. manifest records kind + canonicalPath for a linked entry
|
|
978
|
+
✅ 2p. getInstalledSkills lists exactly the 2 linked entries, not the canonical dir as a 3rd
|
|
979
|
+
✅ 2p. removing one link deletes only that link, canonical copy survives (still referenced)
|
|
980
|
+
✅ 2p. removing the LAST link also removes the now-orphaned canonical copy
|
|
981
|
+
✅ Installed skill: .codex/skills/tdd/
|
|
982
|
+
✅ 2p. --copy mode installs a physical directory, not a link
|
|
983
|
+
✅ 2p. --copy mode manifest entry has no kind/canonicalPath
|
|
984
|
+
✅ 2p. --copy mode entry uninstalls cleanly
|
|
985
|
+
✅ Installed skill: .continue/skills/tdd/ (symlink -> ../../.agents/skills/tdd)
|
|
986
|
+
✅ 2p. a dangling link is still detected as present (pathPresent) even though its target is gone
|
|
987
|
+
✅ 2p. getInstalledSkills still surfaces the dangling link for cleanup
|
|
988
|
+
✅ 2p. removeSkill cleans up the dangling link and its manifest row
|
|
989
|
+
✅ 2p. a pre-#49 manifest entry (no kind/canonicalPath) is still discovered
|
|
990
|
+
✅ 2p. a pre-#49 entry uninstalls cleanly with no canonical-store side effects
|
|
991
|
+
|
|
992
|
+
▶️ Running test suite: mechanism-2q-installer-global-shared-store.test.js
|
|
993
|
+
|
|
994
|
+
[2q] Global scope: canonical store reuses the pre-existing shared ~/.agents/skills (issue #49)...
|
|
995
|
+
✅ 2q. global installer works from a non-git directory
|
|
996
|
+
✅ 2q. global canonical dir IS the pre-existing shared ~/.agents/skills path, not a new location
|
|
997
|
+
✅ Installed skill: ~/.agents/skills/tdd/
|
|
998
|
+
✅ Installed skill: ~/.claude/skills/tdd/ (symlink -> ../../.agents/skills/tdd)
|
|
999
|
+
✅ 2q. the shared target (cursor/codex/continue/copilot/hermes stand-in) gets the PHYSICAL copy, not a link to itself
|
|
1000
|
+
✅ 2q. Claude's separate global target links into the shared store instead of duplicating it
|
|
1001
|
+
✅ 2q. the shared-store manifest entry records a plain copy (no kind/canonicalPath)
|
|
1002
|
+
✅ 2q. removing Claude's link leaves the shared store intact (still independently in use)
|
|
1003
|
+
✅ Installed skill: ~/.claude/skills/tdd/ (symlink -> ../../.agents/skills/tdd)
|
|
1004
|
+
✅ 2q. (setup) Claude re-linked to the shared store
|
|
1005
|
+
✅ 2q. removing the shared store directly also sweeps Claude's now-dangling dependent link
|
|
1006
|
+
|
|
1007
|
+
▶️ Running test suite: mechanism-2r-uninstall-flags.test.js
|
|
1008
|
+
|
|
1009
|
+
[2r] Uninstall CLI flag handling: no silent no-op, combined local+global (issue #48)...
|
|
1010
|
+
✅ 2r. bare uninstall with no TTY exits non-zero instead of silently succeeding
|
|
1011
|
+
✅ 2r. ...and prints a hint about the flags to pass
|
|
1012
|
+
✅ 2r. ...and actually removed nothing (settings.json + skill both still present)
|
|
1013
|
+
✅ 2r. `uninstall --local --skills` exits 0
|
|
1014
|
+
✅ 2r. ...and actually removed the local skill
|
|
1015
|
+
✅ 2r. `uninstall --local --global --skills` exits 0
|
|
1016
|
+
✅ 2r. ...local skill removed
|
|
1017
|
+
✅ 2r. ...AND global skill removed in the SAME run
|
|
1018
|
+
✅ 2r. first run (--local only) exits 0
|
|
1019
|
+
✅ 2r. ...and leaves the skill in place as requested
|
|
1020
|
+
✅ 2r. second run (--skills) exits 0
|
|
1021
|
+
✅ 2r. ...and this time removes the skill left over from the first run
|
|
1022
|
+
|
|
1023
|
+
▶️ Running test suite: mechanism-2s-tdd-quality.test.js
|
|
1024
|
+
|
|
1025
|
+
[2s] TDD quality evidence gate (issue #58)...
|
|
1026
|
+
✅ 2s. fixture catalog covers every required outcome
|
|
1027
|
+
✅ 2s. complete profile-routed evidence passes with a 100 score
|
|
1028
|
+
✅ 2s. report publishes the canonical weights and pass threshold
|
|
1029
|
+
✅ 2s. integration score follows the canonical weighted formula exactly
|
|
1030
|
+
✅ 2s. every requirement must declare its selected test profile
|
|
1031
|
+
✅ 2s. only unit and integration profiles are accepted
|
|
1032
|
+
✅ 2s. unit evidence may mark integration determinism N/A with a reason
|
|
1033
|
+
✅ 2s. unit score renormalizes only the applicable canonical weights
|
|
1034
|
+
✅ 2s. integration evidence cannot bypass repeated determinism checks
|
|
1035
|
+
✅ 2s. report exposes raw counts, percentages, and mandatory gates
|
|
1036
|
+
✅ 2s. missing an applicable input class is rejected
|
|
1037
|
+
✅ 2s. incomplete output validation is rejected
|
|
1038
|
+
✅ 2s. failed unexpected-input behavior is rejected
|
|
1039
|
+
✅ 2s. untested and skipped error paths are rejected and visible
|
|
1040
|
+
✅ 2s. unequal repeated integration output is rejected
|
|
1041
|
+
✅ 2s. implementation/source mismatches fail
|
|
1042
|
+
✅ 2s. source defects are reported separately without inventing a mismatch
|
|
1043
|
+
✅ 2s. unresolved authoritative source conflicts fail
|
|
1044
|
+
✅ 2s. inferred expectations remain explicit and traceable
|
|
1045
|
+
✅ 2s. N/A declarations without a written reason are rejected
|
|
1046
|
+
✅ 2s. reasoned N/A stays visible and does not lower applicable scores
|
|
1047
|
+
✅ 2s. explicitly source-backed volatile fields may be normalized
|
|
1048
|
+
✅ 2s. malformed evidence fails closed
|
|
1049
|
+
✅ 2s. incomplete deterministic side-effect evidence is rejected
|
|
1050
|
+
✅ 2s. duplicate requirement IDs are rejected
|
|
1051
|
+
✅ 2s. CLI emits per-requirement human scores and structured JSON
|
|
1052
|
+
✅ 2s. CLI returns exit 1 and writes structured JSON for a valid FAIL report
|
|
1053
|
+
✅ 2s. CLI returns exit 2 for malformed JSON
|
|
1054
|
+
✅ 2s. shipped PASS evidence is executable
|
|
1055
|
+
|
|
1056
|
+
▶️ Running test suite: mechanism-2t-disclosure.test.js
|
|
1057
|
+
|
|
1058
|
+
[2t] Progressive-disclosure negative controls...
|
|
1059
|
+
✅ 2t. complete disclosure surface passes
|
|
1060
|
+
✅ 2t. missing workflow pairing fails
|
|
1061
|
+
✅ 2t. missing Mermaid coverage fails
|
|
1062
|
+
✅ 2t. empty Mermaid transition fails
|
|
1063
|
+
✅ 2t. dashes inside a node label do not fake a transition
|
|
1064
|
+
✅ 2t. wildcard Deep dive requires a matching file
|
|
1065
|
+
✅ 2t. wildcard Deep dive resolves a matching file
|
|
1066
|
+
✅ 2t. Deep dive traversal stays inside the package
|
|
1067
|
+
✅ 2t. dangling Deep dive pointer fails
|
|
1068
|
+
✅ 2t. Mermaid inside SKILL.md fails
|
|
1069
|
+
✅ 2t. missing references directory fails
|
|
1070
|
+
✅ 2t. orphan workflow document fails
|
|
1071
|
+
|
|
1072
|
+
▶️ Running test suite: mechanism-2t-evidence-triage.test.js
|
|
1073
|
+
Behavioral evidence-triage regressions passed.
|
|
1074
|
+
|
|
1075
|
+
▶️ Running test suite: mechanism-2t-issue-20.test.js
|
|
1076
|
+
|
|
1077
|
+
[2t] Issue #20 regression coverage...
|
|
1078
|
+
✅ 2t. behavioral YAML parsing preserves block scalars under CRLF
|
|
1079
|
+
✅ 2t. opencode plugin runner validate command exits successfully
|
|
1080
|
+
✅ 2t. routing check gracefully skips when waza is unavailable
|
|
1081
|
+
✅ 2t. description collision gate fails closed on malformed YAML
|
|
1082
|
+
❌ 2t. negative controls execute real gates and pass
|
|
1083
|
+
exit 1
|
|
1084
|
+
real gate: description-collision.js exited 1
|
|
1085
|
+
✅ description-collision rejects duplicate descriptions
|
|
1086
|
+
|
|
1087
|
+
Negative control results: 1 passed, 4 failed
|
|
1088
|
+
|
|
1089
|
+
❌ consistency-check rejects malformed frontmatter
|
|
1090
|
+
consistency-check.js failed without the expected diagnostic:
|
|
1091
|
+
|
|
1092
|
+
node:internal/modules/cjs/loader:1459
|
|
1093
|
+
throw err;
|
|
1094
|
+
^
|
|
1095
|
+
|
|
1096
|
+
Error: Cannot find module 'js-yaml'
|
|
1097
|
+
Require stack:
|
|
1098
|
+
- <HARNESS_SOURCE>/ci/consistency-check.js
|
|
1099
|
+
at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
|
|
1100
|
+
at defaultResolveImpl (node:internal/modules/cjs/loader:1066:19)
|
|
1101
|
+
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1071:22)
|
|
1102
|
+
at Module._load (node:internal/modules/cjs/loader:1242:25)
|
|
1103
|
+
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
|
1104
|
+
at Module.require (node:internal/modules/cjs/loader:1556:12)
|
|
1105
|
+
at require (node:internal/modules/helpers:152:16)
|
|
1106
|
+
at Object.<anonymous> (<HARNESS_SOURCE>/ci/consistency-check.js:18:14)
|
|
1107
|
+
at Module._compile (node:internal/modules/cjs/loader:1812:14)
|
|
1108
|
+
at Object..js (node:internal/modules/cjs/loader:1943:10) {
|
|
1109
|
+
code: 'MODULE_NOT_FOUND',
|
|
1110
|
+
requireStack: [
|
|
1111
|
+
'<HARNESS_SOURCE>/ci/consistency-check.js'
|
|
1112
|
+
]
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
Node.js v24.14.1
|
|
1116
|
+
|
|
1117
|
+
❌ consistency-check rejects a missing frontmatter delimiter
|
|
1118
|
+
consistency-check.js failed without the expected diagnostic:
|
|
1119
|
+
|
|
1120
|
+
node:internal/modules/cjs/loader:1459
|
|
1121
|
+
throw err;
|
|
1122
|
+
^
|
|
1123
|
+
|
|
1124
|
+
Error: Cannot find module 'js-yaml'
|
|
1125
|
+
Require stack:
|
|
1126
|
+
- <HARNESS_SOURCE>/ci/consistency-check.js
|
|
1127
|
+
at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
|
|
1128
|
+
at defaultResolveImpl (node:internal/modules/cjs/loader:1066:19)
|
|
1129
|
+
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1071:22)
|
|
1130
|
+
at Module._load (node:internal/modules/cjs/loader:1242:25)
|
|
1131
|
+
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
|
1132
|
+
at Module.require (node:internal/modules/cjs/loader:1556:12)
|
|
1133
|
+
at require (node:internal/modules/helpers:152:16)
|
|
1134
|
+
at Object.<anonymous> (<HARNESS_SOURCE>/ci/consistency-check.js:18:14)
|
|
1135
|
+
at Module._compile (node:internal/modules/cjs/loader:1812:14)
|
|
1136
|
+
at Object..js (node:internal/modules/cjs/loader:1943:10) {
|
|
1137
|
+
code: 'MODULE_NOT_FOUND',
|
|
1138
|
+
requireStack: [
|
|
1139
|
+
'<HARNESS_SOURCE>/ci/consistency-check.js'
|
|
1140
|
+
]
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
Node.js v24.14.1
|
|
1144
|
+
|
|
1145
|
+
❌ consistency-check rejects an over-budget skill
|
|
1146
|
+
consistency-check.js failed without the expected diagnostic:
|
|
1147
|
+
|
|
1148
|
+
node:internal/modules/cjs/loader:1459
|
|
1149
|
+
throw err;
|
|
1150
|
+
^
|
|
1151
|
+
|
|
1152
|
+
Error: Cannot find module 'js-yaml'
|
|
1153
|
+
Require stack:
|
|
1154
|
+
- <HARNESS_SOURCE>/ci/consistency-check.js
|
|
1155
|
+
at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
|
|
1156
|
+
at defaultResolveImpl (node:internal/modules/cjs/loader:1066:19)
|
|
1157
|
+
at resolveForCJSWithHooks (node:internal/modules/cjs/loader:1071:22)
|
|
1158
|
+
at Module._load (node:internal/modules/cjs/loader:1242:25)
|
|
1159
|
+
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
|
1160
|
+
at Module.require (node:internal/modules/cjs/loader:1556:12)
|
|
1161
|
+
at require (node:internal/modules/helpers:152:16)
|
|
1162
|
+
at Object.<anonymous> (<HARNESS_SOURCE>/ci/consistency-check.js:18:14)
|
|
1163
|
+
at Module._compile (node:internal/modules/cjs/loader:1812:14)
|
|
1164
|
+
at Object..js (node:internal/modules/cjs/loader:1943:10) {
|
|
1165
|
+
code: 'MODULE_NOT_FOUND',
|
|
1166
|
+
requireStack: [
|
|
1167
|
+
'<HARNESS_SOURCE>/ci/consistency-check.js'
|
|
1168
|
+
]
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
Node.js v24.14.1
|
|
1172
|
+
|
|
1173
|
+
❌ normal repository passes the exercised gates
|
|
1174
|
+
consistency-check failed (exit 1)
|
|
1175
|
+
|
|
1176
|
+
❌ Test suite failed: mechanism-2t-issue-20.test.js
|
|
1177
|
+
|
|
1178
|
+
▶️ Running test suite: mechanism-2t-platform-skill-targets.test.js
|
|
1179
|
+
|
|
1180
|
+
[2t] Platform-native skill targets + install ownership safety (issue #80)...
|
|
1181
|
+
✅ 2t. codex local target matches the installer contract
|
|
1182
|
+
✅ Installed skill: .agents/skills/tdd/
|
|
1183
|
+
✅ 2t. codex local --copy writes a readable SKILL.md
|
|
1184
|
+
✅ 2t. continue global target matches the installer contract
|
|
1185
|
+
✅ Installed skill: ~/.continue/skills/tdd/
|
|
1186
|
+
✅ 2t. continue global --copy writes a readable SKILL.md
|
|
1187
|
+
✅ 2t. hermes local target matches the installer contract
|
|
1188
|
+
✅ Installed skill: .agents/skills/tdd/
|
|
1189
|
+
✅ 2t. hermes local --copy writes a readable SKILL.md
|
|
1190
|
+
✅ 2t. hermes global target matches the installer contract
|
|
1191
|
+
✅ Installed skill: ~/.hermes/skills/tdd/
|
|
1192
|
+
✅ 2t. hermes global --copy writes a readable SKILL.md
|
|
1193
|
+
✅ 2t. Continue native global manifest is discoverable
|
|
1194
|
+
✅ 2t. Hermes native global manifest is discoverable
|
|
1195
|
+
✅ 2t. native global skill scopes use the protected global sentinel
|
|
1196
|
+
ℹ️ Hermes global skills install to ~/.hermes/skills/. Project advisory context remains project-scoped via .hermes.md.
|
|
1197
|
+
✅ 2t. Hermes global install writes an owned detection marker
|
|
1198
|
+
✅ 2t. Hermes global uninstall removes its detection marker
|
|
1199
|
+
✅ 2t. malformed Claude settings fail closed
|
|
1200
|
+
✅ 2t. malformed Claude settings remain byte-for-byte unchanged
|
|
1201
|
+
✅ 2t. Continue refuses to overwrite a user-owned harness.md
|
|
1202
|
+
✅ 2t. Continue collision leaves original bytes unchanged
|
|
1203
|
+
✅ 2t. copilot global install refuses a user-owned fixed prompt file
|
|
1204
|
+
✅ 2t. copilot global uninstall preserves non-Harness file
|
|
1205
|
+
✅ 2t. codex global install refuses a user-owned fixed prompt file
|
|
1206
|
+
✅ 2t. codex global uninstall preserves non-Harness file
|
|
1207
|
+
|
|
1208
|
+
▶️ Running test suite: mechanism-2t-transcript-parser.test.js
|
|
1209
|
+
|
|
1210
|
+
[2t] Structured behavioral transcript parser...
|
|
1211
|
+
✅ 2t. Claude stream is parsed
|
|
1212
|
+
✅ 2t. Claude trace keeps assistant text and tool input
|
|
1213
|
+
✅ 2t. Claude trace excludes tool output
|
|
1214
|
+
✅ 2t. Claude preserves result metadata
|
|
1215
|
+
✅ 2t. Claude correlates completed tool evidence
|
|
1216
|
+
✅ 2t. Permission denial is evidence
|
|
1217
|
+
✅ 2t. Denial grader passes only denied evidence
|
|
1218
|
+
✅ 2t. Oral command mention has no attempted tool
|
|
1219
|
+
✅ 2t. Oral command prose cannot satisfy trace execution evidence
|
|
1220
|
+
✅ 2t. Existing opencode JSONL remains supported
|
|
1221
|
+
✅ 2t. Duplicate opencode tool events are one call
|
|
1222
|
+
✅ 2t. Opencode tool output never enters trace
|
|
1223
|
+
✅ 2t. Explicit IDs coalesce only by their ID
|
|
1224
|
+
✅ 2t. Out-of-order result and call events coalesce by ID
|
|
1225
|
+
✅ 2t. Output text cannot masquerade as permission denial
|
|
1226
|
+
✅ 2t. Truncated CRLF stream is inconclusive
|
|
1227
|
+
✅ 2t. Partial execution evidence is inconclusive
|
|
1228
|
+
✅ 2t. Legacy JSON keeps readable final text
|
|
1229
|
+
✅ 2t. Legacy JSON does not claim tool visibility
|
|
1230
|
+
✅ 2t. Unavailable evidence is inconclusive
|
|
1231
|
+
✅ 2t. Auto detection preserves legacy JSON
|
|
1232
|
+
✅ 2t. Legacy final prose cannot produce a definitive trace grade
|
|
1233
|
+
✅ 2t. Claude user-event text is not agent trace
|
|
1234
|
+
✅ 2t. {"type":"tool_executed","command":"npm test"} does not match another completed command
|
|
1235
|
+
✅ 2t. {"type":"tool_executed","command":"rm -rf /"} does not match another completed command
|
|
1236
|
+
✅ 2t. {"type":"tool_executed","tool":"npm test"} does not match another completed command
|
|
1237
|
+
✅ 2t. Command targets reject extra arguments
|
|
1238
|
+
✅ 2t. top-level tool calls and results remain structured evidence
|
|
1239
|
+
✅ 2t. structured trace preserves tool-before-text event order
|
|
1240
|
+
✅ 2t. bare patch filenames count as edits for after_edit grading
|
|
1241
|
+
✅ 2t. runner trace keeps bare patch, bash, then final text order
|
|
1242
|
+
✅ 2t. Tool input qualifiers do not match unrelated TodoWrite state
|
|
1243
|
+
✅ 2t. Behavioral cases do not retain the obsolete #52 trace limitation
|
|
1244
|
+
✅ 2t. Non-definitive arm cannot produce effectiveness
|
|
1245
|
+
✅ 2t. Session errors cannot produce effectiveness
|
|
1246
|
+
✅ 2t. Inconclusive pairs are excluded from effectiveness aggregates
|
|
1247
|
+
✅ 2t. Missing tool counts preserve a null delta
|
|
1248
|
+
|
|
1249
|
+
▶️ Running test suite: mechanism-2t-workspace-identity.test.js
|
|
1250
|
+
|
|
1251
|
+
[2t] Session-stable workspace identity and standalone fable audit...
|
|
1252
|
+
PASS SessionStart binds the repository root
|
|
1253
|
+
PASS same session stays bound after entering a nested directory
|
|
1254
|
+
PASS same session stays bound after entering a scratch directory
|
|
1255
|
+
PASS same session stays bound after entering a nested repository
|
|
1256
|
+
PASS explicit workspace context outranks inherited workspace environment
|
|
1257
|
+
PASS resume SessionStart keeps the existing binding
|
|
1258
|
+
PASS explicit identity reset permits a deliberate rebind
|
|
1259
|
+
PASS identity reset persists the new binding for later cwd changes
|
|
1260
|
+
PASS host/session identity binds the first host workspace
|
|
1261
|
+
PASS same host/session stays bound after a nested-repository cwd change
|
|
1262
|
+
PASS hostless follow-up reuses an unambiguous host/session binding
|
|
1263
|
+
PASS different hosts may bind the same session id independently
|
|
1264
|
+
PASS ambiguous hostless identity falls back to explicit context
|
|
1265
|
+
PASS hooks can resolve state from a bound session after cwd changes
|
|
1266
|
+
PASS standalone fable audit runs after install
|
|
1267
|
+
PASS standalone fable audit follows its session binding across cwd changes
|
|
1268
|
+
PASS migration keeps conflicting sources available for recovery
|
|
1269
|
+
PASS migration merges independent platform sources even when one conflicts
|
|
1270
|
+
PASS migration preserves unsupported symlink entries
|
|
1271
|
+
PASS migration retry completes after the conflict is resolved
|
|
1272
|
+
|
|
1273
|
+
▶️ Running test suite: mechanism-2u-issue-42-regressions.test.js
|
|
1274
|
+
|
|
1275
|
+
[2u] Issue #42 adversarial regressions...
|
|
1276
|
+
PASS 2u. no-context non-git calls do not adopt either invocation directory
|
|
1277
|
+
PASS 2u. no-context non-git calls use one stable unbound workspace key
|
|
1278
|
+
PASS 2u. scaffold refuses to infer a workspace outside git instead of writing locally
|
|
1279
|
+
PASS 2u. evaluate refuses to write a report without a resolved workspace
|
|
1280
|
+
PASS 2u. persist-memory refuses to write project memory without a resolved workspace
|
|
1281
|
+
PASS 2u. eval-harness/scripts/evaluate.js has no bare process.cwd fallback
|
|
1282
|
+
PASS 2u. multi-agent-workspace/scripts/scaffold.js has no bare process.cwd fallback
|
|
1283
|
+
PASS 2u. self-evolve/scripts/persist-memory.js has no bare process.cwd fallback
|
|
1284
|
+
PASS 2u. self-evolve/scripts/register-dynamic-skill.js has no bare process.cwd fallback
|
|
1285
|
+
PASS 2u. security-review/scripts/audit-secrets.js has no bare process.cwd fallback
|
|
1286
|
+
PASS 2u. to-spec/scripts/check-project-docs.js has no bare process.cwd fallback
|
|
1287
|
+
PASS 2u. find-skills reads its cache from HARNESS_STATE_HOME
|
|
1288
|
+
PASS 2u. find-skills does not create the legacy OS-temp cache
|
|
1289
|
+
PASS 2u. standalone fable calls from unrelated non-git dirs share one unbound audit stream
|
|
1290
|
+
PASS 2u. git fixture initialized for migration checks
|
|
1291
|
+
PASS 2u. legacy .harness/multi-agent state moves under the global workspace state
|
|
1292
|
+
PASS 2u. opencode merges flat legacy state even when the target directory exists
|
|
1293
|
+
All issue-42 regression checks passed.
|
|
1294
|
+
|
|
1295
|
+
▶️ Running test suite: mechanism-2u-issue-44.test.js
|
|
1296
|
+
|
|
1297
|
+
[2u] Issue #44 release metadata regression checks...
|
|
1298
|
+
✅ 2u. fable-mode carries stable release metadata
|
|
1299
|
+
✅ 2u. fable-mode/execution-guardrails inherits the parent version
|
|
1300
|
+
✅ 2u. fable-mode/fable-haiku inherits the parent version
|
|
1301
|
+
✅ 2u. fable-mode/fable-opus inherits the parent version
|
|
1302
|
+
✅ 2u. fable-mode/fable-sonnet inherits the parent version
|
|
1303
|
+
✅ 2u. todo-driven-workflow carries stable release metadata
|
|
1304
|
+
✅ 2u. changelog records the Issue #44 disclosure policy
|
|
1305
|
+
|
|
1306
|
+
▶️ Running test suite: mechanism-2v-verifier-boundaries.test.js
|
|
1307
|
+
|
|
1308
|
+
[2v] Verifier boundary contracts...
|
|
1309
|
+
✅ 2v. a normal nested path is inside its physical boundary
|
|
1310
|
+
✅ 2v. lexical parent traversal is rejected
|
|
1311
|
+
✅ 2v. a junction/symlink inside the boundary cannot escape it
|
|
1312
|
+
✅ 2v. a missing leaf reached through a link is rejected before writing
|
|
1313
|
+
✅ 2v. a link component is rejected even when its target stays inside the boundary
|
|
1314
|
+
✅ 2v. Windows path casing does not change containment
|
|
1315
|
+
✅ 2v. exact commands match after harmless whitespace normalization
|
|
1316
|
+
✅ 2v. invalid boundary arguments use a stable error code
|
|
1317
|
+
✅ 2v. a command containing the expected text is not an exact match
|
|
1318
|
+
✅ 2v. extra command arguments are not silently accepted
|
|
1319
|
+
✅ 2v. argv commands compare each argument exactly
|
|
1320
|
+
✅ 2v. a real node script invocation can use a basename expectation
|
|
1321
|
+
✅ 2v. a non-launcher mention cannot satisfy a script expectation
|
|
1322
|
+
✅ 2v. patch parser returns every touched path
|
|
1323
|
+
✅ 2v. a multi-file patch is authorized only when every path is allowed
|
|
1324
|
+
✅ 2v. one unrelated path rejects the whole patch
|
|
1325
|
+
✅ 2v. traversal paths are never authorized even when allowlisted
|
|
1326
|
+
|
|
1327
|
+
▶️ Running test suite: mechanism-2w-platform-compatibility.test.js
|
|
1328
|
+
OpenAI skill bundle: <TMP>/harness-2w-submission-76600.zip
|
|
1329
|
+
Files: 196
|
|
1330
|
+
SHA256: 90b8fec6511ae9d4d72d2646dd4f4ae6a0d95397aecc83920d5d851a9abdebf8
|
|
1331
|
+
Manifest: <TMP>/harness-2w-submission-76600.manifest.json
|
|
1332
|
+
Platform compatibility verified: official-source matrix, installer targets, package manifests, and public bundle boundaries.
|
|
1333
|
+
|
|
1334
|
+
▶️ Running test suite: mechanism-2x-release-automation.test.js
|
|
1335
|
+
Release automation contract verified: stable SemVer rules, full manifest lockstep, changed-skill versioning, drift detection, idempotency, and fail-before-write behavior.
|
|
1336
|
+
|
|
1337
|
+
▶️ Running test suite: mechanism-2x-release-commit-message.test.js
|
|
1338
|
+
node:internal/modules/cjs/loader:1459
|
|
1339
|
+
throw err;
|
|
1340
|
+
^
|
|
1341
|
+
|
|
1342
|
+
Error: Cannot find module '@commitlint/cli/package.json'
|
|
1343
|
+
Require stack:
|
|
1344
|
+
- <HARNESS_SOURCE>/ci/mechanism-2x-release-commit-message.test.js
|
|
1345
|
+
at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
|
|
1346
|
+
at require.resolve (node:internal/modules/helpers:163:19)
|
|
1347
|
+
at Object.<anonymous> (<HARNESS_SOURCE>/ci/mechanism-2x-release-commit-message.test.js:36:39)
|
|
1348
|
+
at Module._compile (node:internal/modules/cjs/loader:1812:14)
|
|
1349
|
+
at Object..js (node:internal/modules/cjs/loader:1943:10)
|
|
1350
|
+
at Module.load (node:internal/modules/cjs/loader:1533:32)
|
|
1351
|
+
at Module._load (node:internal/modules/cjs/loader:1335:12)
|
|
1352
|
+
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
|
1353
|
+
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
|
|
1354
|
+
at node:internal/main/run_main_module:33:47 {
|
|
1355
|
+
code: 'MODULE_NOT_FOUND',
|
|
1356
|
+
requireStack: [
|
|
1357
|
+
'<HARNESS_SOURCE>/ci/mechanism-2x-release-commit-message.test.js'
|
|
1358
|
+
]
|
|
1359
|
+
}
|
|
1360
|
+
|
|
1361
|
+
Node.js v24.14.1
|
|
1362
|
+
❌ Test suite failed: mechanism-2x-release-commit-message.test.js
|
|
1363
|
+
|
|
1364
|
+
▶️ Running test suite: mechanism-2y-release-tooling-compat.test.js
|
|
1365
|
+
Release tooling compatibility verified: generator 14 is paired with conventionalcommits 9.x, and the v10 regression is rejected.
|
|
1366
|
+
|
|
1367
|
+
▶️ Running test suite: mechanism-2z-claude-plugin-manifest.test.js
|
|
1368
|
+
PASS: Claude plugin manifest, marketplace, 26 skills, 4 agents, and 29 hook commands are internally consistent.
|
|
1369
|
+
|
|
1370
|
+
▶️ Running test suite: mechanism-30-opencode-plugin-loadability.test.js
|
|
1371
|
+
✅ 30. real install statement produces a byte-identical .js/.ts-discoverable file; non-allowlisted filenames and content mutations fail
|
|
1372
|
+
|
|
1373
|
+
▶️ Running test suite: mechanism-31-opencode-hardlock-evidence.test.js
|
|
1374
|
+
|
|
1375
|
+
[31] opencode live Rule-of-3 reflection evidence contract...
|
|
1376
|
+
✅ 31. complete attributed reflection/re-trip evidence passes
|
|
1377
|
+
✅ 31. evidence fails when the installed plugin hash differs from the canonical source hash
|
|
1378
|
+
✅ 31. reflection gate fails if the blocked marker reached the filesystem
|
|
1379
|
+
✅ 31. current evidence rejects the retired hardLock field
|
|
1380
|
+
✅ 31. evidence fails without a second Rule-of-3 reflection request
|
|
1381
|
+
✅ 31. evidence fails when no structured edit was attempted during reflectionPending
|
|
1382
|
+
✅ 31. evidence fails without the preserved first reflection artifact
|
|
1383
|
+
|
|
1384
|
+
▶️ Running test suite: mechanism-32-paired-benchmark.test.js
|
|
1385
|
+
|
|
1386
|
+
[32] paired behavioral benchmark contract...
|
|
1387
|
+
✅ 32. a paired study cannot start without a predeclared minimum effect
|
|
1388
|
+
✅ 32. an explicit model is required so both arms share the same model contract
|
|
1389
|
+
✅ 32. plugin-enforcement is not generalized beyond the currently attributed OpenCode surface
|
|
1390
|
+
✅ 32. skill-text control contains no Harness skill or plugin
|
|
1391
|
+
✅ 32. skill-text treatment installs the named skill without installing hooks/plugin enforcement
|
|
1392
|
+
✅ 32. plugin experiment holds skill text constant and changes only enforcement installation
|
|
1393
|
+
✅ 32. lesson-retrieval case requires a valid accepted-lesson fixture contract
|
|
1394
|
+
✅ 32. lesson-retrieval is an explicit paired effect type rather than being disguised as skill-text
|
|
1395
|
+
✅ 32. lesson memory store stays outside both agent workspaces
|
|
1396
|
+
✅ 32. both arms execute the same scoped retrieval while only treatment receives the context
|
|
1397
|
+
✅ 32. attributed lesson-retrieval pair is includable only with constant skill text and identical retrieval set
|
|
1398
|
+
✅ 32. mismatched memory retrieval set excludes the pair instead of counting it as lesson effect
|
|
1399
|
+
✅ 32. treatment without the untrusted-memory boundary is excluded from causal evidence
|
|
1400
|
+
✅ 32. changed lesson exposure text invalidates the predeclared pair contract
|
|
1401
|
+
✅ 32. malformed lesson provenance is rejected before any live model call
|
|
1402
|
+
✅ 32. a correctly isolated skill-text pair is includable
|
|
1403
|
+
✅ 32. actual model mismatch excludes the pair instead of counting it as behavior
|
|
1404
|
+
✅ 32. plugin pair is includable only when preflight, hash, constant skill text, and per-arm attribution agree
|
|
1405
|
+
✅ 32. missing live plugin attribution is infrastructure/inconclusive, not a behavioral result
|
|
1406
|
+
✅ 32. summary excludes infrastructure outcomes and reports paired transitions
|
|
1407
|
+
✅ 32. paired effect is derived from within-pair transitions and carries a deterministic uncertainty interval
|
|
1408
|
+
✅ 32. repeated runs remain separate samples and expose per-case variance instead of overwriting
|
|
1409
|
+
✅ 32. cost and execution overhead are reported separately from correctness
|
|
1410
|
+
✅ 32. exact discordant-pair statistic is available without turning it into an unpaired pass-rate verdict
|
|
1411
|
+
✅ 32. the predeclared practical threshold is retained in the summary decision contract
|
|
1412
|
+
|
|
1413
|
+
▶️ Running test suite: mechanism-33-issues-205-207.test.js
|
|
1414
|
+
PASS #205 docker verifier resolves one canonical session state directory
|
|
1415
|
+
PASS #205 docker verifier does not seed or read the legacy repo-relative state directory
|
|
1416
|
+
PASS #205 docker verifier routes all state checks through STATE_DIR
|
|
1417
|
+
PASS #206 architecture keeps loop-awareness numeric guidance explicitly non-mandatory
|
|
1418
|
+
PASS #206 architecture does not describe retired loop budgets as enforcement
|
|
1419
|
+
PASS #207 commitlint aligns subject-case with repository Conventional Commit history
|
|
1420
|
+
node:internal/modules/cjs/loader:1459
|
|
1421
|
+
throw err;
|
|
1422
|
+
^
|
|
1423
|
+
|
|
1424
|
+
Error: Cannot find module '@commitlint/cli/package.json'
|
|
1425
|
+
Require stack:
|
|
1426
|
+
- <HARNESS_SOURCE>/ci/mechanism-33-issues-205-207.test.js
|
|
1427
|
+
at Module._resolveFilename (node:internal/modules/cjs/loader:1456:15)
|
|
1428
|
+
at require.resolve (node:internal/modules/helpers:163:19)
|
|
1429
|
+
at Object.<anonymous> (<HARNESS_SOURCE>/ci/mechanism-33-issues-205-207.test.js:43:35)
|
|
1430
|
+
at Module._compile (node:internal/modules/cjs/loader:1812:14)
|
|
1431
|
+
at Object..js (node:internal/modules/cjs/loader:1943:10)
|
|
1432
|
+
at Module.load (node:internal/modules/cjs/loader:1533:32)
|
|
1433
|
+
at Module._load (node:internal/modules/cjs/loader:1335:12)
|
|
1434
|
+
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
|
|
1435
|
+
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
|
|
1436
|
+
at node:internal/main/run_main_module:33:47 {
|
|
1437
|
+
code: 'MODULE_NOT_FOUND',
|
|
1438
|
+
requireStack: [
|
|
1439
|
+
'<HARNESS_SOURCE>/ci/mechanism-33-issues-205-207.test.js'
|
|
1440
|
+
]
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
Node.js v24.14.1
|
|
1444
|
+
❌ Test suite failed: mechanism-33-issues-205-207.test.js
|
|
1445
|
+
|
|
1446
|
+
▶️ Running test suite: mechanism-34-observations.test.js
|
|
1447
|
+
PASS label line parses and validates
|
|
1448
|
+
PASS redaction removes email addresses and home paths
|
|
1449
|
+
PASS commands are classified without keeping their text
|
|
1450
|
+
PASS detailed appends distinguish duplicates and bounded lock timeouts
|
|
1451
|
+
PASS tier comes from the self-report, owner review overrides, behavior only flags contradictions
|
|
1452
|
+
PASS Claude Code turn: prompt, behavior and label are recorded
|
|
1453
|
+
PASS second turn keeps the previous final message; missing label is recorded, not fatal
|
|
1454
|
+
PASS Codex turn: final message from the rollout transcript, apply_patch counted
|
|
1455
|
+
PASS Claude transcript fallback when the Stop payload has no message
|
|
1456
|
+
PASS opt-out writes nothing; malformed input fails open
|
|
1457
|
+
PASS exporter derives labels, splits by time and reports agreement
|
|
1458
|
+
PASS exporter can select post-cutoff rows with self-reported labels for training
|
|
1459
|
+
PASS review page lists disagreements blind and owner decisions override
|
|
1460
|
+
PASS transcript fallback reads only the current turn
|
|
1461
|
+
PASS concurrent tool hooks keep every event
|
|
1462
|
+
PASS expired text is neither exported nor reviewed, and old session text is dropped
|
|
1463
|
+
PASS expiring a record keeps a shared text blob that an active record still uses
|
|
1464
|
+
PASS failed tool attempts are not counted as writes or loads
|
|
1465
|
+
PASS owner review overrides context dependence, explicit false included
|
|
1466
|
+
PASS resuming an expired unfinished turn does not renew its text
|
|
1467
|
+
PASS resuming an unfinished turn inside the window keeps its text and original deadline
|
|
1468
|
+
PASS module and runner prefixes are classified by what they run
|
|
1469
|
+
PASS the label contract is the router output's last section and covers every turn
|
|
1470
|
+
PASS router/self agreement counts only turns where the router chose a tier
|
|
1471
|
+
PASS label slips seen live: unknown intents dropped, unterminated final line accepted
|
|
1472
|
+
PASS Codex router hook returns its contract as JSON additionalContext
|
|
1473
|
+
PASS hooks are registered for both hosts and the contract asks for the label line
|
|
1474
|
+
system-one observation tests passed
|
|
1475
|
+
|
|
1476
|
+
▶️ Running test suite: mechanism-34-worktree-submodule-reachability.test.js
|
|
1477
|
+
Worktree submodule reachability: detached, named-unpublished, uninitialized, and unmerged gitlinks fail safely; primary/remote reachability and no-submodule controls pass.
|
|
1478
|
+
|
|
1479
|
+
▶️ Running test suite: mechanism-35-verification-contract.test.js
|
|
1480
|
+
Issue #242 verification contract: taxonomy, discovery, execution safety, multi-root scope, hook recognition, and Stop evidence verified.
|
|
1481
|
+
Issue #306 host cwd wrapper: validated prelude recognition, negative chaining/injection/out-of-root cases, contract governance, canonical/packaged parity, and hook-to-Stop replay verified.
|
|
1482
|
+
|
|
1483
|
+
▶️ Running test suite: mechanism-packaging-bytecode.test.js
|
|
1484
|
+
✔ PK-01 skills installer copy and submission file walk skip Python bytecode (2.065083ms)
|
|
1485
|
+
✔ PK-02 plugin sync does not mirror bytecode from the canonical tree (98.051167ms)
|
|
1486
|
+
✔ PK-03 Python tests do not write bytecode into the source tree (2014.263041ms)
|
|
1487
|
+
ℹ tests 3
|
|
1488
|
+
ℹ suites 0
|
|
1489
|
+
ℹ pass 3
|
|
1490
|
+
ℹ fail 0
|
|
1491
|
+
ℹ cancelled 0
|
|
1492
|
+
ℹ skipped 0
|
|
1493
|
+
ℹ todo 0
|
|
1494
|
+
ℹ duration_ms 2117.099333
|
|
1495
|
+
|
|
1496
|
+
▶️ Running test suite: mechanism-system-one-collect.test.js
|
|
1497
|
+
✔ S1-C101 each source yields only owner-typed text (10.754291ms)
|
|
1498
|
+
✔ S1-C106 only interactive Codex sessions count, and VS Code terminal notifications are dropped (3.05975ms)
|
|
1499
|
+
✔ S1-C102 filters, redaction and deduplication (0.241125ms)
|
|
1500
|
+
✔ S1-C103 prompts that near-duplicate a holdout prompt are dropped (0.889042ms)
|
|
1501
|
+
✔ S1-C107 every holdout guards against leakage: the defaults cover the tier and intent holdouts, and --holdout repeats (34.597708ms)
|
|
1502
|
+
✔ S1-C104 splits are stable per family and near 15% validation (3.278542ms)
|
|
1503
|
+
✔ S1-C105 CLI writes a deterministic local dataset outside the repository (84.986042ms)
|
|
1504
|
+
ℹ tests 7
|
|
1505
|
+
ℹ suites 0
|
|
1506
|
+
ℹ pass 7
|
|
1507
|
+
ℹ fail 0
|
|
1508
|
+
ℹ cancelled 0
|
|
1509
|
+
ℹ skipped 0
|
|
1510
|
+
ℹ todo 0
|
|
1511
|
+
ℹ duration_ms 140.585792
|
|
1512
|
+
|
|
1513
|
+
▶️ Running test suite: mechanism-system-one-contract.test.js
|
|
1514
|
+
✔ S1-C01 complete response, no mutation and repeatability (1.045959ms)
|
|
1515
|
+
✔ S1-C02 rejected input partitions and byte boundaries (3.252584ms)
|
|
1516
|
+
✔ S1-C03 complete output validation and no raw-data leakage (0.356458ms)
|
|
1517
|
+
✔ S1-C04 abstention and policy boundaries (0.186625ms)
|
|
1518
|
+
ℹ tests 4
|
|
1519
|
+
ℹ suites 0
|
|
1520
|
+
ℹ pass 4
|
|
1521
|
+
ℹ fail 0
|
|
1522
|
+
ℹ cancelled 0
|
|
1523
|
+
ℹ skipped 0
|
|
1524
|
+
ℹ todo 0
|
|
1525
|
+
ℹ duration_ms 7.362375
|
|
1526
|
+
|
|
1527
|
+
▶️ Running test suite: mechanism-system-one-corpus.test.js
|
|
1528
|
+
✔ S1-K01 an unreviewed draft assembles into a valid corpus that cannot pass the review gate (1.699083ms)
|
|
1529
|
+
✔ S1-K02 accept, relabel and reject apply exactly; the reviewer gold wins (0.229917ms)
|
|
1530
|
+
✔ S1-K03 a decision for changed prompt text is stale and never counts as review (0.517209ms)
|
|
1531
|
+
✔ S1-K04 malformed reviews are rejected instead of silently applied (0.357708ms)
|
|
1532
|
+
✔ S1-K05 draft validation: exact fields, unique ids and prompts, known sources, no private data (0.203208ms)
|
|
1533
|
+
✔ S1-K06 the gate passes only with >=200 reviewed cases and >=50 per language (7.071416ms)
|
|
1534
|
+
✔ S1-K07 CLI builds a corpus file and fails closed on invalid input (95.597125ms)
|
|
1535
|
+
✔ S1-K08 the committed holdout draft meets size, language, class and length requirements (3.808375ms)
|
|
1536
|
+
✔ S1-K09 the committed reviewed holdout is reproducible from owner decisions and meets the gate (4.150292ms)
|
|
1537
|
+
ℹ tests 9
|
|
1538
|
+
ℹ suites 0
|
|
1539
|
+
ℹ pass 9
|
|
1540
|
+
ℹ fail 0
|
|
1541
|
+
ℹ cancelled 0
|
|
1542
|
+
ℹ skipped 0
|
|
1543
|
+
ℹ todo 0
|
|
1544
|
+
ℹ duration_ms 116.42925
|
|
1545
|
+
|
|
1546
|
+
▶️ Running test suite: mechanism-system-one-evaluation.test.js
|
|
1547
|
+
✔ S1-E01 exact paired metrics, no promotion from fixtures or cold timing (1.615959ms)
|
|
1548
|
+
✔ S1-E02 corpus completeness, family leakage and no duplicated prompts (0.846709ms)
|
|
1549
|
+
✔ S1-E03 missing/extra/invalid predictions cannot silently improve scores (0.864042ms)
|
|
1550
|
+
✔ S1-E06 repeatability compares the full score vector, not only top-2 summaries (0.203416ms)
|
|
1551
|
+
✔ S1-E04 zero coverage and wrong accepted predictions fail quality gates (0.140833ms)
|
|
1552
|
+
✔ S1-E05 real evaluation CLI repeats with only documented timing volatility (66.484208ms)
|
|
1553
|
+
✔ S1-E07 source provenance gate requires the pinned cua_s1 revision (0.465542ms)
|
|
1554
|
+
✔ S1-E09 an ngram source passes provenance only with a verified artifact (0.227125ms)
|
|
1555
|
+
✔ S1-E08 the accepted-precision gate is the owner advisory 85% (0.502833ms)
|
|
1556
|
+
ℹ tests 9
|
|
1557
|
+
ℹ suites 0
|
|
1558
|
+
ℹ pass 9
|
|
1559
|
+
ℹ fail 0
|
|
1560
|
+
ℹ cancelled 0
|
|
1561
|
+
ℹ skipped 0
|
|
1562
|
+
ℹ todo 0
|
|
1563
|
+
ℹ duration_ms 73.976333
|
|
1564
|
+
|
|
1565
|
+
▶️ Running test suite: mechanism-system-one-install.test.js
|
|
1566
|
+
✔ S1-I01 pins stay consistent with the provider contract (0.610833ms)
|
|
1567
|
+
✔ S1-I02 interpreter selection accepts only the upstream-supported Python range (0.360167ms)
|
|
1568
|
+
✔ S1-I03 argument parsing is explicit and rejects ambiguous input (0.25775ms)
|
|
1569
|
+
✔ S1-I04 downloads are verified before an atomic write; a valid file is reused (1.361792ms)
|
|
1570
|
+
✔ S1-I06 child command output goes to stderr so stdout stays machine-readable JSON (87.632167ms)
|
|
1571
|
+
✔ S1-I05 dry run prints the pinned plan and changes nothing, repeatably (70.670708ms)
|
|
1572
|
+
ℹ tests 6
|
|
1573
|
+
ℹ suites 0
|
|
1574
|
+
ℹ pass 6
|
|
1575
|
+
ℹ fail 0
|
|
1576
|
+
ℹ cancelled 0
|
|
1577
|
+
ℹ skipped 0
|
|
1578
|
+
ℹ todo 0
|
|
1579
|
+
ℹ duration_ms 163.273875
|
|
1580
|
+
|
|
1581
|
+
▶️ Running test suite: mechanism-system-one-intent.test.js
|
|
1582
|
+
✔ S1-I01 the intent catalog is the owner's fixed list, frozen, beside the tier catalog (0.972541ms)
|
|
1583
|
+
✔ S1-I02 the evaluator scores an intent corpus over the intent labels only (1.579042ms)
|
|
1584
|
+
✔ S1-I03 the corpus assembler builds an intent holdout from its own draft and reviews (0.827542ms)
|
|
1585
|
+
✔ S1-I04 the labeler labels intent from the intent document with the intent labels only (0.667917ms)
|
|
1586
|
+
✔ S1-I05 graded agreement follows the owner's grades and is symmetric (0.100917ms)
|
|
1587
|
+
✔ S1-I07 intent calibration uses graded precision and picks a secondary threshold on validation (4.040042ms)
|
|
1588
|
+
﹣ S1-I08 the ngram trainer trains the intent stage with soft targets (skipped without torch) (25.421083ms) # torch not installed
|
|
1589
|
+
✔ S1-I09 the manifest carries an optional secondary threshold that decide never sees (0.482333ms)
|
|
1590
|
+
✔ S1-I10 the evaluator grades accepted intent predictions and reports family consistency (0.365083ms)
|
|
1591
|
+
✔ S1-I11 the evaluation CLI scores an intent holdout with a majority-class baseline (29.789459ms)
|
|
1592
|
+
✔ S1-I06 family consistency counts families of two or more that share one primary (0.090334ms)
|
|
1593
|
+
✔ S1-I12 the labeler asks for tie-free relevance scores and derives the bands from them (0.724958ms)
|
|
1594
|
+
﹣ S1-I13 the ngram trainer learns scored intent labels as per-intent targets (skipped without torch) (25.129ms) # torch not installed
|
|
1595
|
+
✔ S1-I14 low-scoring labels go to a second model, which replaces them unless it fails (0.449083ms)
|
|
1596
|
+
✔ S1-I15 scaled labels read the scores relative to the top, and only lagging margins escalate (0.563417ms)
|
|
1597
|
+
ℹ tests 15
|
|
1598
|
+
ℹ suites 0
|
|
1599
|
+
ℹ pass 13
|
|
1600
|
+
ℹ fail 0
|
|
1601
|
+
ℹ cancelled 0
|
|
1602
|
+
ℹ skipped 2
|
|
1603
|
+
ℹ todo 0
|
|
1604
|
+
ℹ duration_ms 93.992667
|
|
1605
|
+
|
|
1606
|
+
▶️ Running test suite: mechanism-system-one-label.test.js
|
|
1607
|
+
✔ S1-L01 the instructions carry the owner rules from the corpus document and every item (0.541167ms)
|
|
1608
|
+
✔ S1-L02 a batch reply must label every index exactly once with a known label (0.345625ms)
|
|
1609
|
+
✔ S1-L03 invalid replies are retried once, persistent failures are recorded, never partially accepted, and runs resume (0.962708ms)
|
|
1610
|
+
✔ S1-L06 the codex engine runs one stateless exec per batch and reads the schema-checked last message (45.442791ms)
|
|
1611
|
+
✔ S1-L04 holdout agreement reports overall, per-class recall and confusion (0.238125ms)
|
|
1612
|
+
✔ S1-L05 CLI labels through the configured command, resumes, checks the holdout and refuses repository output (231.56025ms)
|
|
1613
|
+
ℹ tests 6
|
|
1614
|
+
ℹ suites 0
|
|
1615
|
+
ℹ pass 6
|
|
1616
|
+
ℹ fail 0
|
|
1617
|
+
ℹ cancelled 0
|
|
1618
|
+
ℹ skipped 0
|
|
1619
|
+
ℹ todo 0
|
|
1620
|
+
ℹ duration_ms 281.47425
|
|
1621
|
+
|
|
1622
|
+
▶️ Running test suite: mechanism-system-one-laya.test.js
|
|
1623
|
+
✔ S1-L01 the Laya dense labeler contract holds without model weights (66.328791ms)
|
|
1624
|
+
✔ S1-L02 the Laya calibration contract holds without model weights (39.113917ms)
|
|
1625
|
+
✔ S1-L03 the Laya soft-target exporter contract holds without model weights (53.931333ms)
|
|
1626
|
+
✔ S1-L04 the single-device trainer contract holds (torch parts skip without torch) (42.493667ms)
|
|
1627
|
+
✔ S1-L05 the fine-tuned provider bridge contract holds without model weights (54.370083ms)
|
|
1628
|
+
✔ S1-L06 the per-intent Bernoulli contract holds without model weights (38.137292ms)
|
|
1629
|
+
ℹ tests 6
|
|
1630
|
+
ℹ suites 0
|
|
1631
|
+
ℹ pass 6
|
|
1632
|
+
ℹ fail 0
|
|
1633
|
+
ℹ cancelled 0
|
|
1634
|
+
ℹ skipped 0
|
|
1635
|
+
ℹ todo 0
|
|
1636
|
+
ℹ duration_ms 297.21425
|
|
1637
|
+
|
|
1638
|
+
▶️ Running test suite: mechanism-system-one-ngram.test.js
|
|
1639
|
+
✔ S1-N01 fnv1a32 matches the published test vectors (0.352583ms)
|
|
1640
|
+
✔ S1-N02 featurization follows the pinned rules (0.652542ms)
|
|
1641
|
+
✔ S1-N03 the Python trainer and the Node provider produce identical features (26.683667ms)
|
|
1642
|
+
✔ S1-N04 the ngram transport scores in process with the Phase 0 response shape (2.534333ms)
|
|
1643
|
+
✔ S1-N05 any artifact mismatch is provider-config and never scores (4.908917ms)
|
|
1644
|
+
✔ S1-N06 manifest rules: ngram needs a .bin and no python; other transports still need python (0.612917ms)
|
|
1645
|
+
✔ S1-N08 the evaluator records ngram samples warm and verifies the artifact as provenance (91.216291ms)
|
|
1646
|
+
﹣ S1-N07 a real ngram training run produces an artifact the provider scores (skipped without torch) (25.700958ms) # torch not installed
|
|
1647
|
+
ℹ tests 8
|
|
1648
|
+
ℹ suites 0
|
|
1649
|
+
ℹ pass 7
|
|
1650
|
+
ℹ fail 0
|
|
1651
|
+
ℹ cancelled 0
|
|
1652
|
+
ℹ skipped 1
|
|
1653
|
+
ℹ todo 0
|
|
1654
|
+
ℹ duration_ms 155.288041
|
|
1655
|
+
|
|
1656
|
+
▶️ Running test suite: mechanism-system-one-provider.test.js
|
|
1657
|
+
✔ S1-P01 real IPC exact input/output repeated in clean child processes (40.908625ms)
|
|
1658
|
+
✔ S1-P02 unavailable, timeout, output bounds, malformed output and repeatability (1102.805208ms)
|
|
1659
|
+
✔ S1-P03 trusted manifest validation (0.460333ms)
|
|
1660
|
+
✔ S1-P04 Python artifact validation and byte-limit rejection without ML dependency (2007.3345ms)
|
|
1661
|
+
✔ S1-P05 runtime/source provenance is recorded, and a missing or mismatched revision stays visible (90.557459ms)
|
|
1662
|
+
ℹ tests 5
|
|
1663
|
+
ℹ suites 0
|
|
1664
|
+
ℹ pass 5
|
|
1665
|
+
ℹ fail 0
|
|
1666
|
+
ℹ cancelled 0
|
|
1667
|
+
ℹ skipped 0
|
|
1668
|
+
ℹ todo 0
|
|
1669
|
+
ℹ duration_ms 3244.934208
|
|
1670
|
+
|
|
1671
|
+
▶️ Running test suite: mechanism-system-one-relevance.test.js
|
|
1672
|
+
✔ S1-R01 independent intents fire on their own thresholds (0.8045ms)
|
|
1673
|
+
✔ S1-R02 silence abstains and unclassified never fires (0.146375ms)
|
|
1674
|
+
✔ S1-R03 the simplex rule does not apply to relevance vectors (0.188208ms)
|
|
1675
|
+
✔ S1-R04 malformed relevance inputs fail closed (0.335084ms)
|
|
1676
|
+
✔ S1-R05 relevance grading reports micro, macro, cardinality and abstain (0.754916ms)
|
|
1677
|
+
✔ S1-R06 relevance gates follow the reviewed promotion contract (0.240708ms)
|
|
1678
|
+
ℹ tests 6
|
|
1679
|
+
ℹ suites 0
|
|
1680
|
+
ℹ pass 6
|
|
1681
|
+
ℹ fail 0
|
|
1682
|
+
ℹ cancelled 0
|
|
1683
|
+
ℹ skipped 0
|
|
1684
|
+
ℹ todo 0
|
|
1685
|
+
ℹ duration_ms 4.725
|
|
1686
|
+
|
|
1687
|
+
▶️ Running test suite: mechanism-system-one-resident.test.js
|
|
1688
|
+
✔ S1-RS00 Windows Node 23 and 24 shutdown compatibility boundary (0.453542ms)
|
|
1689
|
+
✔ S1-RS01 manifest transport fields and digest-bound file names (1.115208ms)
|
|
1690
|
+
✔ S1-RS02 cold start never blocks, spawns once, then serves warm repeatable scores (458.426958ms)
|
|
1691
|
+
✔ S1-RS03 stale state is removed and replaced; a wrong token is rejected without respawn (441.314333ms)
|
|
1692
|
+
✔ S1-RS04 a slow server times out within the deadline and is not respawned (1418.694084ms)
|
|
1693
|
+
✔ S1-RS05 startup failure is visible and throttled instead of respawning every prompt (114.519542ms)
|
|
1694
|
+
✔ S1-RS06 provider dispatch uses the real adapter and reports a missing ML runtime (177.391208ms)
|
|
1695
|
+
✔ S1-RS07 operator CLI reports status and stops a running server (356.66625ms)
|
|
1696
|
+
✔ S1-RS08 an executable that cannot spawn is recorded as a visible, throttled failure (1.2595ms)
|
|
1697
|
+
✔ S1-RS09 a corrupted state file never leaves an orphan server behind (554.667334ms)
|
|
1698
|
+
✔ S1-RS10 scoreAsync matches the sync client and keeps every start/failure mapping (427.488333ms)
|
|
1699
|
+
✔ S1-RS10b scoreAsync removes refused state, restarts once, and times out slow servers (1405.562084ms)
|
|
1700
|
+
✔ S1-RS10c provider.scoreAsync dispatches by transport with the sync result shapes (471.94375ms)
|
|
1701
|
+
✔ S1-RS11 the hook entry pre-scores over async IPC: it still scores when worker threads cannot start (570.717209ms)
|
|
1702
|
+
✔ S1-RS12 the evaluator times the async path: no worker thread per warm score (532.578417ms)
|
|
1703
|
+
✔ S1-RS13 manifest acceptance thresholds are validated, carried by scored results and applied by the evaluator (1103.076625ms)
|
|
1704
|
+
✔ S1-RS14 resident transport names its adapter and stays inside the scripts dir (0.991709ms)
|
|
1705
|
+
✔ S1-RS15 repeated teardown waits for resident PID and removes every fixture (2445.689375ms)
|
|
1706
|
+
ℹ tests 18
|
|
1707
|
+
ℹ suites 0
|
|
1708
|
+
ℹ pass 18
|
|
1709
|
+
ℹ fail 0
|
|
1710
|
+
ℹ cancelled 0
|
|
1711
|
+
ℹ skipped 0
|
|
1712
|
+
ℹ todo 0
|
|
1713
|
+
ℹ duration_ms 10486.546959
|
|
1714
|
+
|
|
1715
|
+
▶️ Running test suite: mechanism-system-one-router.test.js
|
|
1716
|
+
✔ S1-R01 off/shadow/prefer and rollback (1.229333ms)
|
|
1717
|
+
✔ S1-R02 explicit precedence, abstention and every failure leave fallback intact (0.249542ms)
|
|
1718
|
+
✔ S1-R03 real CLI/kernel off parity and shadow failure repeated (209.908291ms)
|
|
1719
|
+
✔ S1-R04 integrated accepted route preserves policy and explicit model choice (8.022833ms)
|
|
1720
|
+
✔ S1-R05 structural floor: a scorer can raise but never lower a deterministic macro/multi-task tier (1.8205ms)
|
|
1721
|
+
✔ S1-R07 a scored result with calibrated acceptance thresholds decides with them (0.164083ms)
|
|
1722
|
+
✔ S1-R06 prescoreTier: off loads nothing; a matching request reuses the async result; mismatch and failure keep sync semantics (0.527792ms)
|
|
1723
|
+
ℹ tests 7
|
|
1724
|
+
ℹ suites 0
|
|
1725
|
+
ℹ pass 7
|
|
1726
|
+
ℹ fail 0
|
|
1727
|
+
ℹ cancelled 0
|
|
1728
|
+
ℹ skipped 0
|
|
1729
|
+
ℹ todo 0
|
|
1730
|
+
ℹ duration_ms 224.883542
|
|
1731
|
+
|
|
1732
|
+
▶️ Running test suite: mechanism-system-one-train.test.js
|
|
1733
|
+
✔ S1-T01 trainer data handling is exercised without torch (32.254458ms)
|
|
1734
|
+
✔ S1-T02 a validation row is accepted only above both thresholds and never as unclassified (0.225542ms)
|
|
1735
|
+
✔ S1-T03 calibration maximizes coverage subject to accepted precision on validation only (26.350458ms)
|
|
1736
|
+
✔ S1-T06 the default calibration target is the owner advisory 85% (21.360458ms)
|
|
1737
|
+
✔ S1-T04 calibration CLI reads validation scores and writes thresholds (55.267292ms)
|
|
1738
|
+
﹣ S1-T05 a real tiny training run produces a checkpoint the adapter loads (skipped without torch) (22.873708ms) # torch/cua_s1 not installed; mechanism tests above still run
|
|
1739
|
+
ℹ tests 6
|
|
1740
|
+
ℹ suites 0
|
|
1741
|
+
ℹ pass 5
|
|
1742
|
+
ℹ fail 0
|
|
1743
|
+
ℹ cancelled 0
|
|
1744
|
+
ℹ skipped 1
|
|
1745
|
+
ℹ todo 0
|
|
1746
|
+
ℹ duration_ms 160.793458
|
|
1747
|
+
|
|
1748
|
+
=================================================
|
|
1749
|
+
Mechanism Test Summary
|
|
1750
|
+
=================================================
|
|
1751
|
+
✅ mechanism-2a-rule-of-3.test.js [PASSED]
|
|
1752
|
+
✅ mechanism-2aa-codex-action-gate-policy.test.js [PASSED]
|
|
1753
|
+
✅ mechanism-2ab-openai-plugin-sync-integrity.test.js [PASSED]
|
|
1754
|
+
✅ mechanism-2ac-atomic-commit-check.test.js [PASSED]
|
|
1755
|
+
✅ mechanism-2ad-action-gate-classifier-hardening.test.js [PASSED]
|
|
1756
|
+
✅ mechanism-2af-worktree-isolation.test.js [PASSED]
|
|
1757
|
+
✅ mechanism-2ag-router-worktree-contract.test.js [PASSED]
|
|
1758
|
+
✅ mechanism-2ah-workflow-lifecycle.test.js [PASSED]
|
|
1759
|
+
✅ mechanism-2ai-workspace-fingerprint-batch.test.js [PASSED]
|
|
1760
|
+
✅ mechanism-2aj-waza-reference-adapter.test.js [PASSED]
|
|
1761
|
+
✅ mechanism-2ak-contract-probe-adapter.test.js [PASSED]
|
|
1762
|
+
✅ mechanism-2al-codex-hooks-compat.test.js [PASSED]
|
|
1763
|
+
✅ mechanism-2am-observations-session-import.test.js [PASSED]
|
|
1764
|
+
✅ mechanism-2am-openai-packaged-helper-runtime.test.js [PASSED]
|
|
1765
|
+
✅ mechanism-2an-environment-detection-readonly.test.js [PASSED]
|
|
1766
|
+
✅ mechanism-2an-workflow-obligations.test.js [PASSED]
|
|
1767
|
+
✅ mechanism-2ao-plugin-sync.test.js [PASSED]
|
|
1768
|
+
✅ mechanism-2ap-sbom.test.js [PASSED]
|
|
1769
|
+
✅ mechanism-2aq-fable-stage-bindings.test.js [PASSED]
|
|
1770
|
+
✅ mechanism-2ar-binding-resolution.test.js [PASSED]
|
|
1771
|
+
✅ mechanism-2b-boundary-guard.test.js [PASSED]
|
|
1772
|
+
✅ mechanism-2c-state-persist.test.js [PASSED]
|
|
1773
|
+
✅ mechanism-2d-fact-audit.test.js [PASSED]
|
|
1774
|
+
✅ mechanism-2e-scope-guard.test.js [PASSED]
|
|
1775
|
+
✅ mechanism-2f-stop-gate.test.js [PASSED]
|
|
1776
|
+
✅ mechanism-2g-platform-ignore.test.js [PASSED]
|
|
1777
|
+
✅ mechanism-2h-installer-manifest.test.js [PASSED]
|
|
1778
|
+
❌ mechanism-2i-crlf-frontmatter.test.js [FAILED]
|
|
1779
|
+
✅ mechanism-2i-install-verification.test.js [PASSED]
|
|
1780
|
+
✅ mechanism-2j-behavioral-runner.test.js [PASSED]
|
|
1781
|
+
✅ mechanism-2j-fixture-entrypoints.test.js [PASSED]
|
|
1782
|
+
✅ mechanism-2k-reference-check.test.js [PASSED]
|
|
1783
|
+
✅ mechanism-2l-multi-agent-workspace.test.js [PASSED]
|
|
1784
|
+
✅ mechanism-2m-self-repo-guard.test.js [PASSED]
|
|
1785
|
+
✅ mechanism-2n-opencode-plugin.test.js [PASSED]
|
|
1786
|
+
✅ mechanism-2o-state-home-isolation.test.js [PASSED]
|
|
1787
|
+
✅ mechanism-2p-installer-links.test.js [PASSED]
|
|
1788
|
+
✅ mechanism-2q-installer-global-shared-store.test.js [PASSED]
|
|
1789
|
+
✅ mechanism-2r-uninstall-flags.test.js [PASSED]
|
|
1790
|
+
✅ mechanism-2s-tdd-quality.test.js [PASSED]
|
|
1791
|
+
✅ mechanism-2t-disclosure.test.js [PASSED]
|
|
1792
|
+
✅ mechanism-2t-evidence-triage.test.js [PASSED]
|
|
1793
|
+
❌ mechanism-2t-issue-20.test.js [FAILED]
|
|
1794
|
+
✅ mechanism-2t-platform-skill-targets.test.js [PASSED]
|
|
1795
|
+
✅ mechanism-2t-transcript-parser.test.js [PASSED]
|
|
1796
|
+
✅ mechanism-2t-workspace-identity.test.js [PASSED]
|
|
1797
|
+
✅ mechanism-2u-issue-42-regressions.test.js [PASSED]
|
|
1798
|
+
✅ mechanism-2u-issue-44.test.js [PASSED]
|
|
1799
|
+
✅ mechanism-2v-verifier-boundaries.test.js [PASSED]
|
|
1800
|
+
✅ mechanism-2w-platform-compatibility.test.js [PASSED]
|
|
1801
|
+
✅ mechanism-2x-release-automation.test.js [PASSED]
|
|
1802
|
+
❌ mechanism-2x-release-commit-message.test.js [FAILED]
|
|
1803
|
+
✅ mechanism-2y-release-tooling-compat.test.js [PASSED]
|
|
1804
|
+
✅ mechanism-2z-claude-plugin-manifest.test.js [PASSED]
|
|
1805
|
+
✅ mechanism-30-opencode-plugin-loadability.test.js [PASSED]
|
|
1806
|
+
✅ mechanism-31-opencode-hardlock-evidence.test.js [PASSED]
|
|
1807
|
+
✅ mechanism-32-paired-benchmark.test.js [PASSED]
|
|
1808
|
+
❌ mechanism-33-issues-205-207.test.js [FAILED]
|
|
1809
|
+
✅ mechanism-34-observations.test.js [PASSED]
|
|
1810
|
+
✅ mechanism-34-worktree-submodule-reachability.test.js [PASSED]
|
|
1811
|
+
✅ mechanism-35-verification-contract.test.js [PASSED]
|
|
1812
|
+
✅ mechanism-packaging-bytecode.test.js [PASSED]
|
|
1813
|
+
✅ mechanism-system-one-collect.test.js [PASSED]
|
|
1814
|
+
✅ mechanism-system-one-contract.test.js [PASSED]
|
|
1815
|
+
✅ mechanism-system-one-corpus.test.js [PASSED]
|
|
1816
|
+
✅ mechanism-system-one-evaluation.test.js [PASSED]
|
|
1817
|
+
✅ mechanism-system-one-install.test.js [PASSED]
|
|
1818
|
+
✅ mechanism-system-one-intent.test.js [PASSED]
|
|
1819
|
+
✅ mechanism-system-one-label.test.js [PASSED]
|
|
1820
|
+
✅ mechanism-system-one-laya.test.js [PASSED]
|
|
1821
|
+
✅ mechanism-system-one-ngram.test.js [PASSED]
|
|
1822
|
+
✅ mechanism-system-one-provider.test.js [PASSED]
|
|
1823
|
+
✅ mechanism-system-one-relevance.test.js [PASSED]
|
|
1824
|
+
✅ mechanism-system-one-resident.test.js [PASSED]
|
|
1825
|
+
✅ mechanism-system-one-router.test.js [PASSED]
|
|
1826
|
+
✅ mechanism-system-one-train.test.js [PASSED]
|
|
1827
|
+
-------------------------------------------------
|
|
1828
|
+
❌ 4 mechanism test suite(s) FAILED.
|
|
1829
|
+
=================================================
|