harness-everything 0.41.3 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +18 -0
  4. package/benchmarks/results/codex-pr-metadata-2026-10-26/README.md +68 -0
  5. package/benchmarks/results/codex-pr-metadata-2026-10-26/green-final.log +162 -0
  6. package/benchmarks/results/codex-pr-metadata-2026-10-26/green.log +158 -0
  7. package/benchmarks/results/codex-pr-metadata-2026-10-26/live-installed-runtime-rejection.json +31 -0
  8. package/benchmarks/results/codex-pr-metadata-2026-10-26/luna-action-family-cross-product.js +143 -0
  9. package/benchmarks/results/codex-pr-metadata-2026-10-26/luna-action-family-cross-product.log +7 -0
  10. package/benchmarks/results/codex-pr-metadata-2026-10-26/luna-codex-action-gate-prehook-smoke.js +78 -0
  11. package/benchmarks/results/codex-pr-metadata-2026-10-26/luna-codex-action-gate-prehook-smoke.log +8 -0
  12. package/benchmarks/results/codex-pr-metadata-2026-10-26/luna-review.md +151 -0
  13. package/benchmarks/results/codex-pr-metadata-2026-10-26/original-rejection.json +31 -0
  14. package/benchmarks/results/codex-pr-metadata-2026-10-26/red.log +158 -0
  15. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-descriptor-green.log +192 -0
  16. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-descriptor-red.log +192 -0
  17. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-family-green.log +206 -0
  18. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-family-red.log +206 -0
  19. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-hints-green.log +174 -0
  20. package/benchmarks/results/codex-pr-metadata-2026-10-26/review-hints-red.log +174 -0
  21. package/benchmarks/results/codex-pr-metadata-2026-10-26/verification.md +31 -0
  22. package/benchmarks/results/doc-evidence-e1/README.md +68 -0
  23. package/benchmarks/results/doc-evidence-e1/evidence.json +360 -0
  24. package/benchmarks/results/doc-evidence-e1/pilot-report.json +175 -0
  25. package/benchmarks/results/h1-provider-independence-qualification/README.md +95 -0
  26. package/benchmarks/results/live-host/opencode-d1-d2-2026-10-25/README.md +30 -0
  27. package/benchmarks/results/live-host/opencode-d1-d2-2026-10-25/evidence.json +128 -0
  28. package/ci/action-gate.test.js +86 -0
  29. package/ci/mechanism-2aa-codex-action-gate-policy.test.js +47 -0
  30. package/ci/mechanism-325-3b-h1-qualification.test.js +206 -0
  31. package/ci/mechanism-341-opencode-lane.test.js +465 -0
  32. package/ci/mechanism-task-git-authorization.test.js +12 -0
  33. package/docs/codex-action-gate.md +27 -1
  34. package/docs/doc-workflow-reconciliation.md +4 -3
  35. package/docs/document-lifecycle.md +3 -3
  36. package/docs/platform-capabilities.md +8 -2
  37. package/hooks/scripts/action-gate.js +35 -8
  38. package/hooks/scripts/lib/doc-reconciliation-pilot.js +40 -10
  39. package/hooks/scripts/lib/doc-reconciliation-provider.js +159 -11
  40. package/hooks/scripts/workflow-stop-gate.js +4 -1
  41. package/opencode-plugin/index.mjs +77 -5
  42. package/opencode-plugin/plugin.json +1 -1
  43. package/package.json +1 -1
  44. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  45. package/plugins/harness-everything/hooks/scripts/action-gate.js +35 -8
  46. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-pilot.js +40 -10
  47. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-provider.js +159 -11
  48. package/plugins/harness-everything/hooks/scripts/workflow-stop-gate.js +4 -1
  49. package/plugins/harness-everything/plugin.json +1 -1
  50. package/sbom.cdx.json +7 -7
@@ -0,0 +1,360 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "clientDate": "2026-10-25",
4
+ "classification": "retained-nonqualifying-live-observations",
5
+ "publicReproduction": "LOCAL_ONLY: raw Claude transcripts, hook payloads, and state journals remain private under /tmp/harness-e1-2026-10-25; hashes are recorded below",
6
+ "productBaseline": "25c4a8478d5617d1e803940951876bb3ae1ecb37",
7
+ "package": {
8
+ "hostPluginVersion": "0.42.0",
9
+ "stagedTrackedFiles": 1754,
10
+ "hooksJsonSha256": "e3c711dce8d8cebaad1ea433febf4d2de2d4a3a03e514024657544d3e0c1304e",
11
+ "docCheckJsSha256": "da5e51a763eda6680afb63ee781b566253df9d358eec1e65436786c9ecebbbdb"
12
+ },
13
+ "host": {
14
+ "engine": "Claude Code 2.1.310",
15
+ "model": "claude-sonnet-5-5",
16
+ "provider": "firstParty",
17
+ "platform": "macOS 26.6.2 arm64",
18
+ "node": "v26.12.1",
19
+ "npm": "11.20.0",
20
+ "pilotSwitch": "HARNESS_DOC_RECONCILIATION_PILOT=1",
21
+ "stateHome": "process-local /tmp/harness-e1-2026-10-25/state-run1 and state-run2; no user-global config or credentials changed"
22
+ },
23
+ "providerFallbackContext": {
24
+ "classification": "operational readiness context only; all observations are non-qualifying for E1",
25
+ "openCodeFreePrimary": {
26
+ "requestedModel": "glm-5.3-flash-free",
27
+ "observed": "free usage limit reached",
28
+ "e1Qualifying": false
29
+ },
30
+ "openCodeOpenAIFallback": {
31
+ "requestedModel": "openai/gpt-6-luna#xhigh",
32
+ "observed": "configured credential rejected; no model response",
33
+ "causeBeyondRejection": "UNKNOWN",
34
+ "credentialTextRetained": false,
35
+ "credentialChanged": false,
36
+ "e1Qualifying": false
37
+ },
38
+ "nvidiaProbe": {
39
+ "requestedModel": "nvidia/z-ai/glm-5.3",
40
+ "observed": "no output within 58 seconds while another NVIDIA call was active",
41
+ "cause": "UNKNOWN; contention, network/backend delay, and provider/model configuration were not isolated",
42
+ "e1Qualifying": false
43
+ },
44
+ "codexLunaWorkerProbe": {
45
+ "model": "gpt-5.6-luna",
46
+ "effort": "xhigh",
47
+ "mode": "read-only, ephemeral",
48
+ "observed": "READY; 12,665 reported tokens",
49
+ "interpretation": "worker-path availability only; not the Claude subject or E1 evidence",
50
+ "e1Qualifying": false
51
+ },
52
+ "claudeSubject": {
53
+ "version": "2.1.310",
54
+ "auth": "first-party login present",
55
+ "usedFor": ["O1", "O2"]
56
+ },
57
+ "diagnosticSha256": "b918e70720a2d2d3ec77ddc343fa411e332e328202da2ff3bd1d145c235d320d",
58
+ "diagnosticPath": "LOCAL_ONLY:/tmp/harness-provider-diagnostic.md"
59
+ },
60
+ "invocations": {
61
+ "stagePlugin": "node scripts/stage-claude-plugin.js /tmp/harness-e1-2026-10-25/plugin",
62
+ "O1DocCheck": "node \"/tmp/harness-e1-2026-10-25/plugin/harness-everything/scripts/doc-check.js\" check --workspace \"/Users/daniel.chang/Desktop/Skills/Harness-everything/.worktrees/341-e1-decision-evidence\" --config .agents/harness-everything/project-docs.json --changed-path docs/doc-workflow-reconciliation.md",
63
+ "O2DocCheck": "node \"/tmp/harness-e1-2026-10-25/plugin/harness-everything/scripts/doc-check.js\" check --workspace \"/Users/daniel.chang/Desktop/Skills/Harness-everything/.worktrees/341-e1-decision-evidence\" --config .agents/harness-everything/project-docs.json --changed-path docs/doc-workflow-reconciliation.md --changed-path docs/document-lifecycle.md",
64
+ "pilotLaunchProfile": "HARNESS_DOC_RECONCILIATION_PILOT=1 HARNESS_STATE_HOME=<isolated /tmp state> claude -p <captured prompt> --plugin-dir /tmp/harness-e1-2026-10-25/plugin --settings /tmp/harness-e1-2026-10-25/capture-settings.json --agents <doc-reviewer tools Read,Grep> --allowedTools <scoped workflow step/binding, doc-check and shasum commands> --session-id <fresh UUID> --setting-sources project,local --output-format stream-json --verbose --include-hook-events",
65
+ "privatePromptFiles": [
66
+ { "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/run2-prompt.txt", "sha256": "c39e402eeec2780e2c058f9e9db28b6e1b3be0df2a3343dff2f07c32db760256" },
67
+ { "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/run2-resume-prompt.txt", "sha256": "6bc61c5ad87b8e0e2e310357917eac4a01f04262bfc3e30fd4e4cd0ae144efb0" },
68
+ { "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/run2-final-review-prompt.txt", "sha256": "77343d6f2f41168325ce2c7ff0804b66548df20510eaef6f22ea748f17ed6fe0" },
69
+ { "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/run2-current-review-prompt.txt", "sha256": "ab5e488f438c44ce553674e1f44e5a794f143cd000b3c50ebb9bcc940795e3a7" }
70
+ ]
71
+ },
72
+ "task": {
73
+ "summary": "Clarify whether E1 observation attempts have started and align current E1 status wording across the governed reconciliation reference and lifecycle contract.",
74
+ "baselineFileSha256": {
75
+ "docs/doc-workflow-reconciliation.md": "9db9d74ad32d1ddbce87dd9377c2e4f0af3db817c0528b053a4d3f25fa7eecac",
76
+ "docs/document-lifecycle.md": "5abb45d8c95322e41bc074548d6f0cee736079fb79e608ad50130311c6afb745"
77
+ },
78
+ "hostObservedCandidateSha256": {
79
+ "docs/doc-workflow-reconciliation.md": "9c293ae530b96f7618be7363c148565fd4efd32df9aea462b7122d3586817c6f",
80
+ "docs/document-lifecycle.md": "503ef6d29fd1859d94659affe3b8bca2e3f61cda077640d7afe26a0ececf2a85"
81
+ },
82
+ "finalPublicationSha256": {
83
+ "docs/doc-workflow-reconciliation.md": "9c293ae530b96f7618be7363c148565fd4efd32df9aea462b7122d3586817c6f",
84
+ "docs/document-lifecycle.md": "d66f5731b7ef3f261eb052824e64d24c7b946d743f96d92f7349770468f2713c"
85
+ },
86
+ "baselineCommit": "25c4a8478d5617d1e803940951876bb3ae1ecb37",
87
+ "candidateCommitStatus": "uncommitted worktree candidate; HEAD remains the pinned baseline; worker made no git writes",
88
+ "finalChangedPaths": [
89
+ "docs/doc-workflow-reconciliation.md",
90
+ "docs/document-lifecycle.md"
91
+ ]
92
+ },
93
+ "preRegistration": {
94
+ "initialExpectation": {
95
+ "doc-lint": "pass",
96
+ "link-check": "pass",
97
+ "note": "This initial prediction was wrong for doc-lint; the config declares no domains. Later expectations were corrected before the typed workflow run."
98
+ },
99
+ "typedWorkflowExpectation": {
100
+ "doc-lint": "partial",
101
+ "link-check": "partial when document-lifecycle.md is included because it is not governed",
102
+ "verification": "withhold PASS; any MUST PASS is a hard blocker"
103
+ }
104
+ },
105
+ "observations": [
106
+ {
107
+ "id": "O1",
108
+ "kind": "live documentation edit and direct registered check",
109
+ "classification": "NON-QUALIFYING",
110
+ "expected": {
111
+ "doc-lint": "pass",
112
+ "link-check": "pass"
113
+ },
114
+ "actual": {
115
+ "doc-lint": "partial",
116
+ "doc-lintSkipped": "no domains declared; bare <DOMAIN>-NNN references are not checked",
117
+ "link-check": "pass",
118
+ "linksChecked": 11,
119
+ "brokenLinks": 0
120
+ },
121
+ "decision": "Claude judged the opening 'E1 has not started' wording ambiguous and changed one status sentence to distinguish OPEN/insufficient exposure from the non-qualifying D1/D2 attempts.",
122
+ "workflow": {
123
+ "route": "Tier 1",
124
+ "typedWorkflow": false,
125
+ "pilotReportPresent": false,
126
+ "completionObserved": false
127
+ },
128
+ "reasonNonQualifying": "The session did not enter a typed workflow or produce a runtime reconciliation report; the direct checker run is exposure only."
129
+ },
130
+ {
131
+ "id": "O2",
132
+ "kind": "live typed review and verification attempt",
133
+ "classification": "NON-QUALIFYING",
134
+ "workflow": {
135
+ "tier": 2,
136
+ "strategy": "iterative-single",
137
+ "state": "running",
138
+ "baselineCommit": "25c4a8478d5617d1e803940951876bb3ae1ecb37",
139
+ "reviewStep": "pass recorded with a stale artifact hash before the S2 gate wording was restored",
140
+ "verificationStep": "pending"
141
+ },
142
+ "reviewSequence": [
143
+ {
144
+ "verdict": "reject",
145
+ "reason": "The line 9 correction conflicted with three remaining current-status sentences.",
146
+ "reviewerTools": "Read plus Bash; the host principal later appears in the runtime reviewer-not-independent diagnostic.",
147
+ "artifactSha256": "f83ccf60458e264e96c0aed5210d38409824ecbd9aa687766ac38ca5a92f65a2"
148
+ },
149
+ {
150
+ "verdict": "approve",
151
+ "reason": "The status copies agreed, but the review occurred before the S2 entry-gate wording was restored.",
152
+ "reviewerTools": "Read/Grep",
153
+ "artifactSha256": "337eb62cc4963980253d98a3d8f2f3a8e3b9610f940a7375d65b88f37baef00b"
154
+ },
155
+ {
156
+ "verdict": "approve",
157
+ "reason": "Current E1 statuses agree; D1/D2 remain non-qualifying; S2 entry gate remains; no GO/benefit claim; link resolves.",
158
+ "reviewerTools": "Read/Grep only",
159
+ "artifactSha256": {
160
+ "docs/doc-workflow-reconciliation.md": "9c293ae530b96f7618be7363c148565fd4efd32df9aea462b7122d3586817c6f",
161
+ "docs/document-lifecycle.md": "503ef6d29fd1859d94659affe3b8bca2e3f61cda077640d7afe26a0ececf2a85"
162
+ }
163
+ }
164
+ ],
165
+ "actual": {
166
+ "doc-lint": "partial",
167
+ "doc-lintSkipped": "no domains declared; bare <DOMAIN>-NNN references are not checked",
168
+ "link-check": "partial",
169
+ "linksChecked": 11,
170
+ "brokenLinks": 0,
171
+ "linkCheckSkipped": "docs/document-lifecycle.md is not governed",
172
+ "verificationStepPass": "withheld; exit 2; document verification pending: S1 grants no document credit",
173
+ "pilotCredit": false,
174
+ "pilotStatus": "unresolved",
175
+ "creditedCapabilities": [],
176
+ "acceptedRefs": []
177
+ },
178
+ "runtimeDiagnostics": [
179
+ "partial-coverage: doc-lint earns no credit",
180
+ "partial-coverage: link-check earns no credit",
181
+ "reviewer-not-independent",
182
+ "scope-mismatch",
183
+ "artifact-mismatch",
184
+ "event-conflict",
185
+ "result-missing",
186
+ "missing-path-coverage"
187
+ ],
188
+ "reasonNonQualifying": "The active workflow did not complete and the runtime withheld doc verification. Its report retained earlier reviewer identity and artifact/scope conflicts; this record does not infer a root cause beyond those diagnostics."
189
+ }
190
+ ],
191
+ "caseCoverage": [
192
+ {
193
+ "case": "doc-lint with no configured domains",
194
+ "expected": "initially predicted pass; corrected expectation partial",
195
+ "actual": "partial",
196
+ "interpretation": "Coverage limitation; no false rejection claim."
197
+ },
198
+ {
199
+ "case": "link-check for the governed reconciliation reference",
200
+ "expected": "pass",
201
+ "actual": "pass for the single-path O1 run; 11 checked, 0 broken"
202
+ },
203
+ {
204
+ "case": "link-check when the ungoverned lifecycle contract is included",
205
+ "expected": "partial",
206
+ "actual": "partial; 11 checked, 0 broken; document-lifecycle.md skipped as not governed"
207
+ },
208
+ {
209
+ "case": "verification PASS with partial coverage",
210
+ "expected": "withhold PASS",
211
+ "actual": "withheld, exit 2; runtime pilotCredit=false",
212
+ "falseMustPass": false
213
+ },
214
+ {
215
+ "case": "review independence and freshness after correction",
216
+ "expected": "current digest-bound review must be distinct from author/executors",
217
+ "actual": "current reviewer approved the final hashes, while the runtime report still records reviewer-not-independent, scope-mismatch, artifact-mismatch and event-conflict; no quality-review reference was accepted"
218
+ }
219
+ ],
220
+ "retainedArtifacts": {
221
+ "pilotReport": "pilot-report.json",
222
+ "privateLocalFiles": [
223
+ {
224
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/session.stream.jsonl",
225
+ "sha256": "fb5502f2389aa14ef3a3c8a520bd337342515eff7026b7047ee10a68dbc512b7"
226
+ },
227
+ {
228
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/session-run2.stream.jsonl",
229
+ "sha256": "17960620b3f487ab57526e91eb0ada3c619b24a82f6d29ac86398df24bc7542d"
230
+ },
231
+ {
232
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/session-run2-continuation.stream.jsonl",
233
+ "sha256": "981e7d3dad70e30ef371696f15da5364a81d66b7b6723ea76f4c7b32d1a9d7cc"
234
+ },
235
+ {
236
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/session-run2-finalreview.stream.jsonl",
237
+ "sha256": "b092cf19237c4a5402f96b570b049d240186869937cd4b6dbffb5be602ce6186"
238
+ },
239
+ {
240
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/session-run2-current-review.stream.jsonl",
241
+ "sha256": "d9b97ab2f3d1e5ed433a369724fd7737507d48bf06a90c25506298e9ddc3724f"
242
+ },
243
+ {
244
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/hooks.raw.jsonl",
245
+ "sha256": "774bf7a009c4f5f5e1b29bf965364c0015fb408091cdefdc40f21a1955120383"
246
+ },
247
+ {
248
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/capture-wrapper.js",
249
+ "sha256": "e50832909aad985e954472a3fd93e3121863eef3a16f234919282c25f3889aa4"
250
+ },
251
+ {
252
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/capture-settings.json",
253
+ "sha256": "6b4f83d6a946a5461d1af4b7cae0e1c680ff88043e51d2bb8805c6a3d3ad9669"
254
+ },
255
+ {
256
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/state-run1/workspaces/.../doc-reconciliation-capture.json",
257
+ "sha256": "fb36e1e341a91eb3ae74d5572708da39effc3788ab3a676565e77cccec1a83cc"
258
+ },
259
+ {
260
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/state-run2/workspaces/.../doc-reconciliation-capture.json",
261
+ "sha256": "923b4df9d0081ea2106b78343b7dc6eccb441e3de7e019e82f53a3a7158e0d07"
262
+ },
263
+ {
264
+ "path": "LOCAL_ONLY:/tmp/harness-e1-2026-10-25/state-run2/workspaces/.../doc-reconciliation-pilot.json",
265
+ "sha256": "ec18e0f5b2ddee298127de9b740f30af63ccb5700d77de1285a15ad6d4bfd3c1"
266
+ }
267
+ ],
268
+ "sanitizedWrapperEventCounts": {
269
+ "sessionRun1": 8,
270
+ "sessionRun2": 53,
271
+ "duplicateEventToolKeys": 0
272
+ }
273
+ },
274
+ "publicationCorrection": {
275
+ "path": "docs/document-lifecycle.md",
276
+ "coldReviewedPublicationSha256": "0807eab467eb7c9f8d9592cb6c0426d82d76c6187a655529334c529e30db183a",
277
+ "change": "The Phase 3c row now says H1 preparation only (#373); full H1-H4 and paired-task evaluation remain pending. The table heading clarifies that 2026-10-20 is the original checkpoint and only Phase 3b/3c status was updated on 2026-10-25.",
278
+ "source": "https://github.com/dyphn1/Harness-everything/pull/373 and benchmarks/results/h1-provider-independence-qualification/README.md; cold Luna xhigh review",
279
+ "relationToE1Observation": "Source-traced documentation update after the host observations; not a host-run E1 cycle and does not change any E1 gate."
280
+ },
281
+ "verification": {
282
+ "gitDiffCheck": "PASS",
283
+ "verifyAllFastInitial": "INTERRUPTED (exit 143) after mechanism-2i setup failed: node_modules was absent; incomplete failure inventory",
284
+ "npmCi": "PASS: npm ci --ignore-scripts added 106 packages and audited 107; npm reported 1 moderate vulnerability; no lockfile change",
285
+ "verifyAllFastRerun": "NOT RUN BY WORKER per coordinator; full verification supersedes it",
286
+ "fullVerifyAll": {
287
+ "status": "PASS",
288
+ "passed": 13,
289
+ "failed": 0,
290
+ "unchecked": 3,
291
+ "runtime": "Node v24.22.1 on darwin",
292
+ "optionalWaza": "PASS",
293
+ "log": "LOCAL_ONLY:/tmp/harness-e1-final-verification-node24.log",
294
+ "logSha256": "cb2c783c0913a72a39c7b03aa179dc6317d90439ad49bdfa15a143ee96e9a530"
295
+ },
296
+ "uncheckedDetails": [
297
+ "Node 22 self-regression execution smoke test not requested; CI runtime-floor job covers it",
298
+ "Node 22 installer roundtrip execution smoke test not requested",
299
+ "Node 22 dependency install (npm ci) is covered by the CI runtime-floor job and was not replicated locally"
300
+ ],
301
+ "windowsAndCI": "UNCHECKED; no remote CI matrix result in this local gate log"
302
+ },
303
+ "executionCost": {
304
+ "O1": {
305
+ "hostResultDurationMs": 18139,
306
+ "hostResultTurns": 6,
307
+ "reportedOutputTokens": 1815,
308
+ "reportedCostUsd": 0.1259958,
309
+ "journalUniqueToolUseIds": 5,
310
+ "editToolCalls": 1
311
+ },
312
+ "O2": {
313
+ "latestHostResultDurationMs": 37486,
314
+ "reportedSessionOutputTokens": 21297,
315
+ "reportedSessionCostUsd": 1.0581192,
316
+ "journalUniqueToolUseIds": 26,
317
+ "journalPostToolUseFailures": 4,
318
+ "note": "Host-reported cost/token values are cumulative for the resumed session, not isolated per-resume increments."
319
+ },
320
+ "rawHookPayloads": {
321
+ "O1": 8,
322
+ "O2": 53,
323
+ "duplicateSessionEventToolKeys": 0
324
+ },
325
+ "documentationCorrections": {
326
+ "E1StatusRows": 4,
327
+ "separatePhase3cStatusRow": 1,
328
+ "historicalCheckpointHeadingClarification": 1,
329
+ "sourceCodeFiles": 0,
330
+ "testsAdded": 0
331
+ },
332
+ "hostReviewerRuns": 3,
333
+ "coordinatorInterventionCount": "UNKNOWN; not instrumented as a metric",
334
+ "endToEndWallClock": "UNKNOWN; not measured across preparation, review, and final reporting"
335
+ },
336
+ "nextMinimalItem": "No product-code fix is justified by this exposure. A future qualifying cycle needs an owner-approved truthful project domain configuration so doc-lint can reach complete coverage, all changed paths to be governed for link-check, and a fresh Read/Grep-only reviewer principal. Do not infer domains or add governance paths without an explicit owner decision.",
337
+ "qualification": {
338
+ "qualifyingE1Cycles": 0,
339
+ "qualifyingE1CyclesStatus": "COLD_REVIEW: O1/O2 non-qualifying; E1 OPEN/UNCHECKED; no formal GO/REVISE/NO-GO",
340
+ "nonQualifyingObservations": 2,
341
+ "e1Go": false,
342
+ "behaviorBenefit": false,
343
+ "consumerExpansion": false,
344
+ "pairedH1H4Evidence": false,
345
+ "independentColdReview": {
346
+ "reviewer": "Luna xhigh",
347
+ "status": "DONE; the review findings were applied to the publication bytes and hashes separated from the O2 observed candidate",
348
+ "evidenceLayer": "source-traced correspondence against raw host records",
349
+ "checks": [
350
+ "raw/public artifact hashes matched",
351
+ "O1/O2 wrapper event counts matched at 8 and 53",
352
+ "zero duplicate event/tool keys",
353
+ "credential scan clean"
354
+ ],
355
+ "publicationReview": "Cold review found the Phase 3c row/date-heading inconsistencies at lifecycle SHA 0807eab4; the requested heading clarification was applied afterward. Final publication SHA d66f5731 is recorded separately and was not the hash checked during that cold review.",
356
+ "adjudication": "qualifying E1 cycles=0; O1/O2 non-qualifying; verification withholding correct; no false MUST PASS or false rejection; E1 remains OPEN/UNCHECKED; no formal GO/REVISE/NO-GO; no gate closure"
357
+ },
358
+ "disposition": "Observation record only; no E1 GO/REVISE/NO-GO decision claimed"
359
+ }
360
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "reportOrigin": "runtime",
4
+ "pilotStatus": "unresolved",
5
+ "pilotCredit": false,
6
+ "identity": null,
7
+ "expectedMustIds": [
8
+ "doc-change:doc-lint",
9
+ "doc-change:link-check"
10
+ ],
11
+ "results": [],
12
+ "unsatisfied": [
13
+ {
14
+ "obligationId": "doc-change:doc-lint",
15
+ "state": "pending",
16
+ "reasonCode": "producer-unavailable"
17
+ },
18
+ {
19
+ "obligationId": "doc-change:link-check",
20
+ "state": "pending",
21
+ "reasonCode": "producer-unavailable"
22
+ },
23
+ {
24
+ "obligationId": "origin",
25
+ "state": "pending",
26
+ "reasonCode": "partial-coverage"
27
+ },
28
+ {
29
+ "obligationId": "origin",
30
+ "state": "pending",
31
+ "reasonCode": "partial-coverage"
32
+ },
33
+ {
34
+ "obligationId": "origin",
35
+ "state": "pending",
36
+ "reasonCode": "partial-coverage"
37
+ },
38
+ {
39
+ "obligationId": "origin",
40
+ "state": "pending",
41
+ "reasonCode": "partial-coverage"
42
+ },
43
+ {
44
+ "obligationId": "origin",
45
+ "state": "pending",
46
+ "reasonCode": "partial-coverage"
47
+ },
48
+ {
49
+ "obligationId": "doc-change:link-check",
50
+ "state": "pending",
51
+ "reasonCode": "artifact-mismatch"
52
+ },
53
+ {
54
+ "obligationId": "doc-change:link-check",
55
+ "state": "pending",
56
+ "reasonCode": "artifact-mismatch"
57
+ },
58
+ {
59
+ "obligationId": "origin",
60
+ "state": "pending",
61
+ "reasonCode": "reviewer-not-independent"
62
+ },
63
+ {
64
+ "obligationId": "doc-change:doc-lint",
65
+ "state": "pending",
66
+ "reasonCode": "result-missing"
67
+ },
68
+ {
69
+ "obligationId": "doc-change:link-check",
70
+ "state": "pending",
71
+ "reasonCode": "result-missing"
72
+ }
73
+ ],
74
+ "diagnostics": [
75
+ {
76
+ "code": "partial-coverage",
77
+ "message": "partial coverage",
78
+ "reason": "partial-coverage: doc-lint is partial; partial coverage earns no credit",
79
+ "obligationId": null
80
+ },
81
+ {
82
+ "code": "partial-coverage",
83
+ "message": "partial coverage",
84
+ "reason": "partial-coverage: doc-lint is partial; partial coverage earns no credit",
85
+ "obligationId": null
86
+ },
87
+ {
88
+ "code": "partial-coverage",
89
+ "message": "partial coverage",
90
+ "reason": "partial-coverage: doc-lint is partial; partial coverage earns no credit",
91
+ "obligationId": null
92
+ },
93
+ {
94
+ "code": "partial-coverage",
95
+ "message": "partial coverage",
96
+ "reason": "partial-coverage: link-check is partial; partial coverage earns no credit",
97
+ "obligationId": null
98
+ },
99
+ {
100
+ "code": "partial-coverage",
101
+ "message": "partial coverage",
102
+ "reason": "partial-coverage: link-check is partial; partial coverage earns no credit",
103
+ "obligationId": null
104
+ },
105
+ {
106
+ "code": "artifact-mismatch",
107
+ "message": "artifact mismatch",
108
+ "reference": "PostToolUse:2026-10-25T11:45:21.510Z:53133:1#link-check",
109
+ "obligationId": "doc-change:link-check"
110
+ },
111
+ {
112
+ "code": "artifact-mismatch",
113
+ "message": "artifact mismatch",
114
+ "reference": "PostToolUse:2026-10-25T11:45:21.510Z:53133:1#link-check",
115
+ "obligationId": "doc-change:link-check"
116
+ },
117
+ {
118
+ "code": "reviewer-not-independent",
119
+ "message": "reviewer not independent",
120
+ "reason": "reviewer-not-independent: the reviewer agent_id equals an executor principal; not independent",
121
+ "obligationId": null
122
+ },
123
+ {
124
+ "code": "scope-mismatch",
125
+ "message": "scope mismatch",
126
+ "reference": "SubagentStop:2026-10-25T11:51:05.061Z:58824:1#quality-review",
127
+ "obligationId": "doc-change:quality-review"
128
+ },
129
+ {
130
+ "code": "artifact-mismatch",
131
+ "message": "artifact mismatch",
132
+ "reference": "SubagentStop:2026-10-25T11:51:05.061Z:58824:1#quality-review",
133
+ "obligationId": "doc-change:quality-review"
134
+ },
135
+ {
136
+ "code": "event-conflict",
137
+ "message": "event conflict",
138
+ "reference": "SubagentStop:2026-10-25T11:53:36.777Z:65484:1#quality-review",
139
+ "obligationId": "doc-change:quality-review"
140
+ },
141
+ {
142
+ "code": "scope-mismatch",
143
+ "message": "scope mismatch",
144
+ "reference": "SubagentStop:2026-10-25T11:53:36.777Z:65484:1#quality-review",
145
+ "obligationId": "doc-change:quality-review"
146
+ },
147
+ {
148
+ "code": "result-missing",
149
+ "message": "result missing",
150
+ "obligationId": "doc-change:doc-lint"
151
+ },
152
+ {
153
+ "code": "result-missing",
154
+ "message": "result missing",
155
+ "obligationId": "doc-change:link-check"
156
+ },
157
+ {
158
+ "code": "missing-path-coverage",
159
+ "obligationId": "doc-change:doc-lint",
160
+ "message": "no observed record is bound to path docs/doc-workflow-reconciliation.md with the current candidate and baseline digests"
161
+ },
162
+ {
163
+ "code": "missing-path-coverage",
164
+ "obligationId": "doc-change:link-check",
165
+ "message": "no observed record is bound to path docs/doc-workflow-reconciliation.md with the current candidate and baseline digests"
166
+ },
167
+ {
168
+ "code": "missing-path-coverage",
169
+ "obligationId": "doc-change:prose-reminder",
170
+ "message": "no observed record is bound to path docs/doc-workflow-reconciliation.md with the current candidate and baseline digests"
171
+ }
172
+ ],
173
+ "creditedCapabilities": [],
174
+ "acceptedRefs": []
175
+ }
@@ -0,0 +1,95 @@
1
+ # H1 provider-independence qualification (preparation)
2
+
3
+ This directory records the bounded #325 H1 preparation/non-interference qualification scope. It is preparation evidence only; it is not full H1, Phase 3c, E1, paired evidence, benefit evidence, or #320 promotion.
4
+
5
+ ## Scope
6
+
7
+ - H1 preparation/non-interference only.
8
+ - `suggestDocProviders` is called as an independent side input. Suggestions and provider identity are never passed to the F4 consumer, workflow, binding, or reconciliation path.
9
+ - No runtime, shared harness, package, manifest, lockfile, fixture JSON, or issue edits are part of this qualification.
10
+ - The registered F4 evidence and executor remain the only evidence path: executor `f4-pos-body-edit-session`; provenance `claude-code-capture:<captureId>`.
11
+
12
+ ## Matrix
13
+
14
+ Cross product: 3 provider inputs × 2 evidence modes × 2 distributions = 12 cells.
15
+
16
+ Provider inputs:
17
+
18
+ - A: only `fixture-lint-a` metadata; expected exactly the A suggestion.
19
+ - B: only `fixture-lint-b` metadata; expected exactly the B suggestion.
20
+ - Omitted: no provider metadata; expected `suggestions: []` and one unavailable `doc-lint` record.
21
+
22
+ Evidence modes:
23
+
24
+ - Valid evidence: actual registered doc-check `hostRun` and correlated `PostToolUse` capture.
25
+ - Zero evidence: same F4-POS-body-edit task definition and loaded `verification-loop` binding, with only `lint-run` and `post-lint` removed.
26
+
27
+ Distributions: `source` and `packaged`.
28
+
29
+ ## Fixed expected full applicable MUST objects
30
+
31
+ - `{id:"doc-change:doc-lint", capability:"doc-lint", strength:"MUST", applicability:"applicable", scope:{paths:["docs/a.md"]}, acceptance:"Run document lifecycle lint for every changed governed document."}`
32
+ - `{id:"doc-change:link-check", capability:"link-check", strength:"MUST", applicability:"applicable", scope:{paths:["docs/a.md"]}, acceptance:"Check in-repository links for every changed governed document."}`
33
+
34
+ `expectedMustIds` must equal those IDs. The pilot runtime report `results` field is empty and is not asserted. A non-blocking missing-path-coverage diagnostic for the SHOULD `prose-reminder` is expected; diagnostics are not asserted empty.
35
+
36
+ ## Asserted fields
37
+
38
+ Valid evidence cells assert:
39
+
40
+ - `reportOrigin: runtime`
41
+ - `expectedMustIds` exact
42
+ - no unsatisfied MUSTs
43
+ - `creditedCapabilities` and accepted refs for both capabilities
44
+ - `pilotCredit: true`, `pilotStatus: credited`
45
+ - verification step pass
46
+ - Stop exit `0`, workflow state `satisfied`
47
+
48
+ Zero evidence cells assert:
49
+
50
+ - both MUSTs remain expected and unsatisfied
51
+ - `creditedCapabilities` and `acceptedRefs` empty
52
+ - `pilotCredit: false`, `pilotStatus: unresolved`
53
+ - verification step pending
54
+ - Stop exit `0`, workflow state `running` (not satisfied)
55
+
56
+ ## Test approach and execution
57
+
58
+ This is an integration qualification because each F4 cell crosses real child processes, filesystem state, hook entries, and workflow disposition. Expectations come from #325 H1 and the fixed F4 fixture. The existing valid-evidence and zero-evidence cases are positive and negative controls; this does not manufacture a runtime-bug RED or authorize runtime edits.
59
+
60
+ | Command | Result |
61
+ |---|---|
62
+ | `node ci/mechanism-325-3b-h1-qualification.test.js` | 36 PASS, 0 FAIL, 0 INFRA; all 12 matrix cells and source/package MUST derivations passed |
63
+ | Initial `npm run verify:all -- --fast` | 3 PASS, 2 FAIL, 11 UNCHECKED. Environment preflight failure: this worktree had no node_modules; self-regression lacked node_modules and the #341 C2 AST checker/mutation controls reported AST_PARSER_UNAVAILABLE. This is not counted as a product defect. |
64
+ | Focused dependency controls after installation | Node 24.22.1: mechanism-2i-crlf-frontmatter passed; mechanism-341-boundary-enforcement passed all C1/C2 controls; npm run test:mutations passed 113 mutants and 2 source probe suites. |
65
+ | Final `npm run verify:all` | Node 24.22.1: 13 PASS, 0 FAIL, 3 UNCHECKED. The unchecked items are Node 22 self-regression smoke, Node 22 installer roundtrip, and npm ci under Node 22. No CI or live-host evidence is claimed. |
66
+
67
+ The initial fast run was retained as the environment-preflight result and was not rerun. After confirming the missing dependencies with npm ls and resolving pinned acorn/acorn-walk, the full verification gate passed. Dependencies were installed with npm ci --ignore-scripts; the only package lifecycle script is prepare: husky install.
68
+
69
+ ## Next acceptance packet (preparation only)
70
+
71
+ The current H1 run is preparation: provider A/B/omitted are tested as side inputs, never as inputs to the F4 consumer. It does not complete H1 or any Phase 3c gate. Keep the existing contracts in [document-lifecycle.md](../../../docs/document-lifecycle.md) authoritative.
72
+
73
+ | Gate | Remaining evidence | Required positive and negative result |
74
+ |---|---|---|
75
+ | H1 | Exercise provider A, B and omitted through the same active workflow consumer, and use a valid alternate executor that is independent of the suggestion. | Expected MUSTs stay byte-for-byte identical; valid alternate evidence satisfies the applicable MUST; omitted or zero evidence does not. |
76
+ | H2 | Capture active-step provider metadata and actual skill/content reads at each step, including an unrelated/future provider control. | Only active-step metadata is exposed; no unrelated or future `SKILL.md` content is read or injected. |
77
+ | H3 | Complete the adversarial matrix in `docs/document-lifecycle.md` § Phase 3b minimum trust boundary / Phase 3c H3 validation, on source and packaged legs. | Every listed fabricated, missing, stale, substituted, forged, unsupported, replayed, unsupported-waiver or contradictory MUST stays unsatisfied; the current independently produced evidence control passes; zero false MUST PASS. |
78
+ | H4 | Compose docs-only, docs+code, REQ-citing assertions, typo-only, code-only uncertainty, missing independent approval and waiver cases. | Each case has the expected obligation union and explicit `unknown`/`unavailable` outcomes where evidence is missing. |
79
+
80
+ Existing focused commands are `node ci/mechanism-325-3b-h1-qualification.test.js`, `node ci/mechanism-325-3a-doc-evidence.test.js`, `node ci/mechanism-325-f4-trust-boundary.test.js` and `node ci/mechanism-325-3a-cross.test.js`. They are mechanism evidence only; a green replay does not replace the host traces or paired real-task evidence above.
81
+
82
+ ## Paired real-task protocol
83
+
84
+ Use the owner-registered five task families from [#320's paired-evaluation decision](https://github.com/dyphn1/Harness-everything/issues/320#issuecomment-6230246258): typo-only ADR context; normative PRD revision with approval; mixed code/docs change; REQ-tagged assertion change with valid/invalid waiver; broken derived/link evidence with unavailable verifier.
85
+
86
+ | Arm | Pinned commit | Condition |
87
+ |---|---|---|
88
+ | Baseline | Accepted [#327](https://github.com/dyphn1/Harness-everything/pull/327) merge `d9ff242c1fca1b308e4a9c3b55af257f12c44a82` | Current documentation workflow before the #326/#325 consumer slices. |
89
+ | Treatment | [#358](https://github.com/dyphn1/Harness-everything/pull/358) merge `550f1a24d327df7022ef3b32b6fe5409c5a7873b` | Includes declared-only #326 step type, #325 Phase 3a and limited Phase 3b consumer; set `HARNESS_DOC_RECONCILIATION_PILOT=1`. |
90
+
91
+ These are the comparison pins in the owner protocol. Measure baseline first; freeze task snapshots, rubric and baseline-derived threshold before inspecting treatment outcomes. Record host/model/effort/permissions and use fresh comparable contexts with counterbalanced pairs. An optional OFF run on the treatment commit can isolate switch overhead, but it is not the accepted #327 baseline; report the extra pilot-hook startup overhead separately.
92
+
93
+ For every arm retain the task/prompt and base/candidate hashes, commit, host/model/runtime and package versions, expected obligations, actual report, independent adjudication, task outcome, false MUST pass/rejection, audit/compatibility findings, correction effort, tokens, elapsed time, tool calls, retries, interventions, failure overhead and uncertainty. Judge task success/failure first; report successful-task cost separately from failed-run cost. The existing generic paired runner does not implement this doc-workflow treatment; do not record its other effects as #325 paired evidence.
94
+
95
+ **Status:** this protocol is preparation, not a run. The current H1 test results above remain the only evidence recorded here; #341 E1 is open with insufficient adjudicated exposure, and complete H1–H4, paired benefit and #320 promotion remain unchecked.