harness-everything 0.38.0 → 0.40.0

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 (79) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +79 -63
  4. package/CHANGELOG.md +32 -0
  5. package/benchmarks/results/reviews/pr353-r6-2026-10-22/README.md +76 -0
  6. package/benchmarks/results/reviews/pr353-r6-2026-10-22/a-reviews-b.md +191 -0
  7. package/benchmarks/results/reviews/pr353-r6-2026-10-22/b-reviews-a.md +100 -0
  8. package/benchmarks/results/reviews/pr353-r6-2026-10-22/baseline-probes.log +47 -0
  9. package/benchmarks/results/reviews/pr353-r6-2026-10-22/bom-red.log +85 -0
  10. package/benchmarks/results/reviews/pr353-r6-2026-10-22/bom-transition.txt +25 -0
  11. package/benchmarks/results/reviews/pr353-r6-2026-10-22/coordinator-probes.txt +84 -0
  12. package/benchmarks/results/reviews/pr353-r6-2026-10-22/cross-suite.txt +18 -0
  13. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-bom.log +3 -0
  14. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-consistency.log.gz +0 -0
  15. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-core.log +198 -0
  16. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-probes.log +27 -0
  17. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-producer.log +83 -0
  18. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-review.md +89 -0
  19. package/benchmarks/results/reviews/pr353-r6-2026-10-22/final-transitions.log +5 -0
  20. package/benchmarks/results/reviews/pr353-r6-2026-10-22/implementation-a.md +166 -0
  21. package/benchmarks/results/reviews/pr353-r6-2026-10-22/implementation-b.md +264 -0
  22. package/benchmarks/results/reviews/pr353-r6-2026-10-22/logs.sha256 +15 -0
  23. package/benchmarks/results/reviews/pr353-r6-2026-10-22/peer-a-probe.log +62 -0
  24. package/benchmarks/results/reviews/pr353-r6-2026-10-22/peer-a-probe.txt +313 -0
  25. package/benchmarks/results/reviews/pr353-r6-2026-10-22/peer-b-probe.log +51 -0
  26. package/benchmarks/results/reviews/pr353-r6-2026-10-22/peer-b-probe.txt +94 -0
  27. package/benchmarks/results/reviews/pr353-r6-2026-10-22/semantic-transitions.txt +25 -0
  28. package/benchmarks/results/reviews/pr353-r6-2026-10-22/source.sha256 +9 -0
  29. package/benchmarks/results/reviews/pr353-r6-2026-10-22/tests-a-on-b-core.log +201 -0
  30. package/benchmarks/results/reviews/pr353-r6-2026-10-22/tests-a-on-b-producer.log +82 -0
  31. package/benchmarks/results/reviews/pr353-r6-2026-10-22/tests-b-on-a-core.log +197 -0
  32. package/benchmarks/results/reviews/pr353-r6-2026-10-22/tests-b-on-a-producer.log +82 -0
  33. package/benchmarks/results/reviews/pr353-r6-2026-10-22/verify-all.log.gz +0 -0
  34. package/benchmarks/results/reviews/pr353-r6-2026-10-22/verify-gate-summary.json +22 -0
  35. package/ci/fixtures/doc-obligations/reconciliation-s2a/harness.js +489 -0
  36. package/ci/fixtures/doc-obligations/reconciliation-s2a/vectors.json +617 -0
  37. package/ci/mechanism-325-3b-s2a-core.test.js +840 -0
  38. package/ci/mechanism-325-3b-s2a-producer.test.js +564 -0
  39. package/code-review/SKILL.md +3 -3
  40. package/code-review/references/review-playbook.md +4 -0
  41. package/code-review/templates/finding.template.md +6 -0
  42. package/docs/doc-workflow-reconciliation.md +357 -0
  43. package/evals/zoom-out/tasks/negative-first-edge-case-review.yaml +16 -0
  44. package/evals/zoom-out/tasks/positive-repair-loop.yaml +15 -0
  45. package/harness-everything/SKILL.md +1 -1
  46. package/harness-everything/scripts/project-docs-resolver.js +42 -8
  47. package/harness-everything/scripts/routing-keywords.json +4 -0
  48. package/hooks/scripts/lib/doc-reconciliation-core.js +280 -0
  49. package/hooks/scripts/lib/doc-reconciliation-events.js +141 -0
  50. package/hooks/scripts/lib/doc-reconciliation-producer.js +206 -0
  51. package/multi-agent-workspace/SKILL.md +1 -1
  52. package/multi-agent-workspace/scripts/project-docs-resolver.js +42 -8
  53. package/opencode-plugin/plugin.json +1 -1
  54. package/package.json +2 -1
  55. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  56. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-core.js +280 -0
  57. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-events.js +141 -0
  58. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-producer.js +206 -0
  59. package/plugins/harness-everything/plugin.json +1 -1
  60. package/plugins/harness-everything/skills/code-review/SKILL.md +3 -3
  61. package/plugins/harness-everything/skills/code-review/references/review-playbook.md +4 -0
  62. package/plugins/harness-everything/skills/code-review/templates/finding.template.md +6 -0
  63. package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
  64. package/plugins/harness-everything/skills/harness-everything/scripts/project-docs-resolver.js +42 -8
  65. package/plugins/harness-everything/skills/harness-everything/scripts/routing-keywords.json +4 -0
  66. package/plugins/harness-everything/skills/multi-agent-workspace/SKILL.md +1 -1
  67. package/plugins/harness-everything/skills/multi-agent-workspace/scripts/project-docs-resolver.js +42 -8
  68. package/plugins/harness-everything/skills/to-spec/SKILL.md +1 -1
  69. package/plugins/harness-everything/skills/to-spec/scripts/project-docs-resolver.js +42 -8
  70. package/plugins/harness-everything/skills/zoom-out/SKILL.md +4 -3
  71. package/plugins/harness-everything/skills/zoom-out/references/circuit-breaker.md +7 -0
  72. package/plugins/harness-everything/skills/zoom-out/templates/zoom-out-report.template.md +4 -2
  73. package/sbom.cdx.json +7 -7
  74. package/scripts/errors-sync.js +90 -0
  75. package/to-spec/SKILL.md +1 -1
  76. package/to-spec/scripts/project-docs-resolver.js +42 -8
  77. package/zoom-out/SKILL.md +4 -3
  78. package/zoom-out/references/circuit-breaker.md +7 -0
  79. package/zoom-out/templates/zoom-out-report.template.md +4 -2
@@ -0,0 +1,617 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "phase": "325-3b-S2a",
4
+ "description": "S2a RED vectors. Expected MUST sets are validated against the existing unchanged derive API (doc-obligations.js) at suite time and by the R2a run; regression pins are the current outputs of the unchanged deriveDocFacts, deriveDocObligations and checkDocObligations on the fixed inputs named here. Flips apply to one property of the eligible positive vector (event mutators) or re-capture the producer from a changed input while keeping the old accepted events (recapture mutators). Expected codes are the S2a reason codes from docs/doc-workflow-reconciliation.md; where the spec table admits two codes for one flip, both are listed and the choice is recorded in the report.",
5
+ "deriveConfig": "ci/fixtures/doc-obligations/derive/config.json",
6
+ "identityFields": [
7
+ "workspaceId",
8
+ "sessionId",
9
+ "workflowId",
10
+ "workflowRevision",
11
+ "taskId",
12
+ "taskScopeDigest",
13
+ "baselineDigest",
14
+ "candidateDigest",
15
+ "configDigest",
16
+ "prdRoot"
17
+ ],
18
+ "vectors": {
19
+ "normative": {
20
+ "description": "Normative PRD change with approval missing. quality-review is supplied by an approving review; the other three applicable MUSTs (doc-lint, link-check, conflict-check) are supplied by complete execution records, because the unchanged checker satisfies only quality-review through the review lane.",
21
+ "deriveCase": "missing-approval",
22
+ "expectedMustIds": [
23
+ "doc-change:conflict-check",
24
+ "doc-change:doc-lint",
25
+ "doc-change:link-check",
26
+ "doc-change:quality-review"
27
+ ],
28
+ "eventKindByMust": {
29
+ "doc-change:doc-lint": "execution",
30
+ "doc-change:link-check": "execution",
31
+ "doc-change:quality-review": "review",
32
+ "doc-change:conflict-check": "execution"
33
+ }
34
+ },
35
+ "nonnormative": {
36
+ "description": "Non-normative governed reference prose: quality-review and conflict-check are not applicable, so review is not forced.",
37
+ "deriveCase": "docs-only",
38
+ "expectedMustIds": [
39
+ "doc-change:doc-lint",
40
+ "doc-change:link-check"
41
+ ],
42
+ "eventKindByMust": {
43
+ "doc-change:doc-lint": "execution",
44
+ "doc-change:link-check": "execution"
45
+ }
46
+ },
47
+ "code-only": {
48
+ "description": "Code change with no REQ-citing test: requirement-sync is unknown (a MUST) and must stay unresolved.",
49
+ "deriveCase": "code-only",
50
+ "expectedMustIds": [
51
+ "doc-change:requirement-sync"
52
+ ],
53
+ "unknownMustIds": [
54
+ "doc-change:requirement-sync"
55
+ ]
56
+ },
57
+ "nondocument": {
58
+ "description": "Non-code, non-governed asset change: no applicable or unknown document MUST, so legacy and never verified.",
59
+ "files": {
60
+ "base": {
61
+ "assets/notes.txt": "Release notes draft.\n"
62
+ },
63
+ "candidate": {
64
+ "assets/notes.txt": "Release notes draft, revised.\n"
65
+ }
66
+ },
67
+ "expectedMustIds": []
68
+ },
69
+ "a08": {
70
+ "description": "A08 maps: non-document baseline (assets/notes.txt) and a candidate that revises the asset and adds the normative PRD. The expected set is the five MUSTs derived from these maps by unchanged deriveDocObligations; outline-confirmation is applicable because the PRD is new.",
71
+ "files": {
72
+ "base": {
73
+ "assets/notes.txt": "Release notes draft.\n"
74
+ },
75
+ "candidate": {
76
+ "assets/notes.txt": "Release notes draft, revised.\n",
77
+ "docs/prd/graph.md": "---\nid: \"PRD-GRPH-001\"\nrevision: 1\nstatus: \"effective\"\ndrafted_by: \"Alice Example\"\neffective_at: \"2026-10-17T00:01:00Z\"\napproval:\n by: \"Bob Independent\"\n at: \"2026-10-17T00:00:00Z\"\n ref: \"https://approvals.example.invalid/PRD-GRPH-001\"\n role: \"human\"\n content_digest: \"sha256:c5bc6c8aa29b39198eec91b7af210a946896d9b7975b9c72540ddd4a4bfb37ea\"\n---\n# Graph\n\n### REQ-GRPH-001\n\nThe router records one or more topologies per task.\n\nAcceptance: one or more topologies are recorded.\n"
78
+ }
79
+ },
80
+ "expectedMustIds": [
81
+ "doc-change:conflict-check",
82
+ "doc-change:doc-lint",
83
+ "doc-change:link-check",
84
+ "doc-change:outline-confirmation",
85
+ "doc-change:quality-review"
86
+ ],
87
+ "eventKindByMust": {
88
+ "doc-change:doc-lint": "execution",
89
+ "doc-change:link-check": "execution",
90
+ "doc-change:conflict-check": "execution",
91
+ "doc-change:outline-confirmation": "execution",
92
+ "doc-change:quality-review": "review"
93
+ }
94
+ }
95
+ },
96
+ "fixedTask": {
97
+ "taskId": "task-s2a-001",
98
+ "requirements": [
99
+ {
100
+ "id": "req-docs",
101
+ "stepType": "doc-change",
102
+ "summary": "Update the PRD REQ text",
103
+ "acceptance": "normative PRD text is reviewed",
104
+ "bindings": []
105
+ },
106
+ {
107
+ "id": "req-verify",
108
+ "stepType": "verification",
109
+ "summary": "Verify the PRD change",
110
+ "acceptance": "objective doc checks are recorded",
111
+ "bindings": [
112
+ {
113
+ "id": "verification-loop"
114
+ }
115
+ ]
116
+ }
117
+ ]
118
+ },
119
+ "fixedWorkflow": {
120
+ "workflowId": "wf-s2a-001",
121
+ "workflowRevision": 2,
122
+ "sessionId": "session-s2a-001"
123
+ },
124
+ "principals": {
125
+ "author": "author-principal",
126
+ "executor": "executor-principal",
127
+ "reviewer": "reviewer-principal"
128
+ },
129
+ "flips": [
130
+ {
131
+ "id": "tuple-workspaceId",
132
+ "kind": "event",
133
+ "mutator": "identityField:workspaceId",
134
+ "expect": [
135
+ "identity-mismatch"
136
+ ]
137
+ },
138
+ {
139
+ "id": "tuple-sessionId",
140
+ "kind": "event",
141
+ "mutator": "identityField:sessionId",
142
+ "expect": [
143
+ "identity-mismatch"
144
+ ]
145
+ },
146
+ {
147
+ "id": "tuple-workflowId",
148
+ "kind": "event",
149
+ "mutator": "identityField:workflowId",
150
+ "expect": [
151
+ "identity-mismatch"
152
+ ]
153
+ },
154
+ {
155
+ "id": "tuple-workflowRevision",
156
+ "kind": "event",
157
+ "mutator": "identityField:workflowRevision",
158
+ "expect": [
159
+ "identity-mismatch"
160
+ ]
161
+ },
162
+ {
163
+ "id": "tuple-taskId",
164
+ "kind": "event",
165
+ "mutator": "identityField:taskId",
166
+ "expect": [
167
+ "identity-mismatch"
168
+ ]
169
+ },
170
+ {
171
+ "id": "tuple-taskScopeDigest",
172
+ "kind": "event",
173
+ "mutator": "identityField:taskScopeDigest",
174
+ "expect": [
175
+ "identity-mismatch"
176
+ ]
177
+ },
178
+ {
179
+ "id": "tuple-baselineDigest",
180
+ "kind": "event",
181
+ "mutator": "identityField:baselineDigest",
182
+ "expect": [
183
+ "identity-mismatch"
184
+ ]
185
+ },
186
+ {
187
+ "id": "tuple-candidateDigest",
188
+ "kind": "event",
189
+ "mutator": "identityField:candidateDigest",
190
+ "expect": [
191
+ "identity-mismatch"
192
+ ]
193
+ },
194
+ {
195
+ "id": "tuple-configDigest",
196
+ "kind": "event",
197
+ "mutator": "identityField:configDigest",
198
+ "expect": [
199
+ "identity-mismatch",
200
+ "config-capture-mismatch"
201
+ ]
202
+ },
203
+ {
204
+ "id": "tuple-prdRoot",
205
+ "kind": "event",
206
+ "mutator": "identityField:prdRoot",
207
+ "expect": [
208
+ "unsupported-prd-root",
209
+ "identity-mismatch"
210
+ ]
211
+ },
212
+ {
213
+ "id": "tuple-prdSetDigestSubstituted",
214
+ "kind": "event",
215
+ "mutator": "prdSetDigestAsCandidate",
216
+ "expect": [
217
+ "identity-mismatch"
218
+ ]
219
+ },
220
+ {
221
+ "id": "recapture-task-requirements-narrowed",
222
+ "kind": "recapture",
223
+ "mutator": "recapture:requirementsNarrowed",
224
+ "expect": [
225
+ "identity-mismatch"
226
+ ]
227
+ },
228
+ {
229
+ "id": "recapture-task-acceptance-changed",
230
+ "kind": "recapture",
231
+ "mutator": "recapture:acceptanceChanged",
232
+ "expect": [
233
+ "identity-mismatch"
234
+ ]
235
+ },
236
+ {
237
+ "id": "recapture-task-binding-changed",
238
+ "kind": "recapture",
239
+ "mutator": "recapture:bindingChanged",
240
+ "expect": [
241
+ "identity-mismatch"
242
+ ]
243
+ },
244
+ {
245
+ "id": "recapture-task-id-changed",
246
+ "kind": "recapture",
247
+ "mutator": "recapture:taskId",
248
+ "expect": [
249
+ "identity-mismatch"
250
+ ]
251
+ },
252
+ {
253
+ "id": "recapture-workflow-revision",
254
+ "kind": "recapture",
255
+ "mutator": "recapture:workflowRevision",
256
+ "expect": [
257
+ "identity-mismatch"
258
+ ]
259
+ },
260
+ {
261
+ "id": "source-config-bytes",
262
+ "kind": "recapture",
263
+ "mutator": "recapture:configBytesReformatted",
264
+ "expect": [
265
+ "config-capture-mismatch",
266
+ "identity-mismatch"
267
+ ]
268
+ },
269
+ {
270
+ "id": "active-host-selection",
271
+ "kind": "recapture",
272
+ "mutator": "recapture:activeHostChanged",
273
+ "expect": [
274
+ "config-capture-mismatch",
275
+ "identity-mismatch"
276
+ ]
277
+ },
278
+ {
279
+ "id": "author-is-reviewer",
280
+ "kind": "event",
281
+ "mutator": "reviewerIsAuthor",
282
+ "expect": [
283
+ "review-not-independent"
284
+ ]
285
+ },
286
+ {
287
+ "id": "executor-is-reviewer",
288
+ "kind": "event",
289
+ "mutator": "reviewerIsExecutor",
290
+ "expect": [
291
+ "review-not-independent"
292
+ ]
293
+ },
294
+ {
295
+ "id": "independence-unknown",
296
+ "kind": "event",
297
+ "mutator": "independentOfMissing",
298
+ "expect": [
299
+ "review-not-independent"
300
+ ]
301
+ },
302
+ {
303
+ "id": "exit-null",
304
+ "kind": "event",
305
+ "mutator": "exitNull",
306
+ "expect": [
307
+ "event-invalid"
308
+ ]
309
+ },
310
+ {
311
+ "id": "exit-noninteger",
312
+ "kind": "event",
313
+ "mutator": "exitString",
314
+ "expect": [
315
+ "event-invalid"
316
+ ]
317
+ },
318
+ {
319
+ "id": "exit-nonzero",
320
+ "kind": "event",
321
+ "mutator": "exitNonzero",
322
+ "expect": [
323
+ "result-not-pass",
324
+ "event-invalid"
325
+ ]
326
+ },
327
+ {
328
+ "id": "exit-signal",
329
+ "kind": "event",
330
+ "mutator": "signalSet",
331
+ "expect": [
332
+ "result-not-pass",
333
+ "event-invalid"
334
+ ]
335
+ },
336
+ {
337
+ "id": "capability-unrelated-command",
338
+ "kind": "event",
339
+ "mutator": "capabilityUnrelated",
340
+ "expect": [
341
+ "capability-mismatch"
342
+ ]
343
+ },
344
+ {
345
+ "id": "path-coverage-narrowed",
346
+ "kind": "event",
347
+ "mutator": "pathsNarrowed",
348
+ "expect": [
349
+ "scope-mismatch"
350
+ ]
351
+ },
352
+ {
353
+ "id": "baseline-artifact-digest",
354
+ "kind": "event",
355
+ "mutator": "artifactDigestWrong",
356
+ "expect": [
357
+ "artifact-mismatch"
358
+ ]
359
+ },
360
+ {
361
+ "id": "destination-digest-wrong",
362
+ "kind": "event",
363
+ "mutator": "artifactDigestWrong",
364
+ "expect": [
365
+ "artifact-mismatch"
366
+ ]
367
+ },
368
+ {
369
+ "id": "rename-other-tree-bytes",
370
+ "kind": "recapture",
371
+ "mutator": "recapture:otherTreeBytes",
372
+ "expect": [
373
+ "identity-mismatch",
374
+ "artifact-mismatch"
375
+ ]
376
+ },
377
+ {
378
+ "id": "deleted-path-as-empty-file",
379
+ "kind": "recapture",
380
+ "mutator": "recapture:emptyFileDeleted",
381
+ "expect": [
382
+ "identity-mismatch",
383
+ "artifact-mismatch"
384
+ ],
385
+ "setup": "emptyExtra",
386
+ "description": "Base holds assets/extra.txt with content and the candidate keeps it as an empty file, so the base is eligible for the normative MUSTs. The re-capture deletes the path; a deleted tombstone and an empty file must produce different identities. A deleted governed file is not used because deleting it derives unknown MUSTs."
387
+ },
388
+ {
389
+ "id": "mode-drift",
390
+ "kind": "recapture",
391
+ "mutator": "recapture:modeDrift",
392
+ "expect": [
393
+ "identity-mismatch"
394
+ ]
395
+ },
396
+ {
397
+ "id": "approve-verdict-rejected",
398
+ "kind": "event",
399
+ "mutator": "verdictReject",
400
+ "expect": [
401
+ "event-invalid",
402
+ "result-not-pass"
403
+ ]
404
+ },
405
+ {
406
+ "id": "approve-summary-empty",
407
+ "kind": "event",
408
+ "mutator": "summaryEmpty",
409
+ "expect": [
410
+ "event-invalid"
411
+ ]
412
+ },
413
+ {
414
+ "id": "duplicate-event",
415
+ "kind": "event",
416
+ "mutator": "eventDuplicated",
417
+ "expect": [
418
+ "event-duplicate"
419
+ ]
420
+ },
421
+ {
422
+ "id": "conflicting-event",
423
+ "kind": "event",
424
+ "mutator": "eventConflicting",
425
+ "expect": [
426
+ "event-conflict"
427
+ ]
428
+ },
429
+ {
430
+ "id": "duplicate-result",
431
+ "kind": "core",
432
+ "mutator": "resultDuplicated",
433
+ "expect": [
434
+ "result-duplicate"
435
+ ]
436
+ },
437
+ {
438
+ "id": "stale-review",
439
+ "kind": "event",
440
+ "mutator": "providerStale",
441
+ "expect": [
442
+ "event-stale"
443
+ ]
444
+ },
445
+ {
446
+ "id": "origin-expired",
447
+ "kind": "origin",
448
+ "mutator": "originExpired",
449
+ "expect": [
450
+ "origin-unavailable"
451
+ ]
452
+ },
453
+ {
454
+ "id": "origin-missing",
455
+ "kind": "origin",
456
+ "mutator": "originMissing",
457
+ "expect": [
458
+ "origin-unavailable"
459
+ ]
460
+ },
461
+ {
462
+ "id": "forged-copied-journal",
463
+ "kind": "event",
464
+ "mutator": "journalCopied",
465
+ "expect": [
466
+ "origin-untrusted"
467
+ ]
468
+ },
469
+ {
470
+ "id": "omitted-must",
471
+ "kind": "event",
472
+ "mutator": "omitOneMust",
473
+ "expect": [
474
+ "result-missing"
475
+ ]
476
+ }
477
+ ],
478
+ "a14": {
479
+ "contextAdvancesDuringCapture": {
480
+ "taskIdAfter": "task-s2a-002",
481
+ "expect": [
482
+ "snapshot-changed"
483
+ ]
484
+ },
485
+ "statusOnlyProgressIgnored": {
486
+ "requirementStatusChanged": "pass",
487
+ "expectTaskScopeDigestUnchanged": true
488
+ }
489
+ },
490
+ "pins": {
491
+ "normative": {
492
+ "deriveFactsSha256": "c78d208ccba00c5e47bd5d72abc595b05f7f340a005da0a14b598cd5c4743437",
493
+ "deriveObligationsSha256": "5ff5fcfe1edaf939a2b8b526b2bff131de1253319f3cbe97b3c4c60f75480deb",
494
+ "checkerResultsSha256": "3a55b457ee4f8eb918fcfeda1f12236e57817d0fd4db185799ffb73b9c162b9a",
495
+ "mustApplicability": [
496
+ [
497
+ "doc-change:doc-lint",
498
+ "applicable"
499
+ ],
500
+ [
501
+ "doc-change:link-check",
502
+ "applicable"
503
+ ],
504
+ [
505
+ "doc-change:derived-regenerate",
506
+ "N/A"
507
+ ],
508
+ [
509
+ "doc-change:quality-review",
510
+ "applicable"
511
+ ],
512
+ [
513
+ "doc-change:conflict-check",
514
+ "applicable"
515
+ ],
516
+ [
517
+ "doc-change:requirement-sync",
518
+ "N/A"
519
+ ]
520
+ ]
521
+ },
522
+ "nonnormative": {
523
+ "deriveFactsSha256": "72659ade94266aa542198aed0ada2dfa243297520f70e40b86b5896592d8a457",
524
+ "deriveObligationsSha256": "ece5929fd7bec6d836312dbc2b90c4c8eabc7f82fc1b49605f7f342b9eb7071d",
525
+ "checkerResultsSha256": "74a20d2e250c40c7dfad7025bfcad080345667e7d558a33f615452c40597854d",
526
+ "mustApplicability": [
527
+ [
528
+ "doc-change:doc-lint",
529
+ "applicable"
530
+ ],
531
+ [
532
+ "doc-change:link-check",
533
+ "applicable"
534
+ ],
535
+ [
536
+ "doc-change:derived-regenerate",
537
+ "N/A"
538
+ ],
539
+ [
540
+ "doc-change:quality-review",
541
+ "N/A"
542
+ ],
543
+ [
544
+ "doc-change:conflict-check",
545
+ "N/A"
546
+ ],
547
+ [
548
+ "doc-change:requirement-sync",
549
+ "N/A"
550
+ ]
551
+ ]
552
+ },
553
+ "code-only": {
554
+ "deriveFactsSha256": "1134fae14ea8f888f12f5dff1bd32b8a2788ba09e91299e7ce3d2a9dc81d0d1f",
555
+ "deriveObligationsSha256": "b8ece9008764bad6e015d99252dd73570164684b768449d89d4ff0de98def44e",
556
+ "checkerResultsSha256": "3080bfcaafb7f330f4d26f4087a60a9a76c7a5154b7581209fc26e365333edcb",
557
+ "mustApplicability": [
558
+ [
559
+ "doc-change:doc-lint",
560
+ "N/A"
561
+ ],
562
+ [
563
+ "doc-change:link-check",
564
+ "N/A"
565
+ ],
566
+ [
567
+ "doc-change:derived-regenerate",
568
+ "N/A"
569
+ ],
570
+ [
571
+ "doc-change:quality-review",
572
+ "N/A"
573
+ ],
574
+ [
575
+ "doc-change:conflict-check",
576
+ "N/A"
577
+ ],
578
+ [
579
+ "doc-change:requirement-sync",
580
+ "unknown"
581
+ ]
582
+ ]
583
+ },
584
+ "nondocument": {
585
+ "deriveFactsSha256": "5ba5a35c74165a94deff0e935799f93b7d5efa1eb554e4fad9717560e0828d43",
586
+ "deriveObligationsSha256": "0cfb1cbd5ebb220a3c174d716dcba67c46b0d58e87bfebf0a930e8e0be9f843b",
587
+ "checkerResultsSha256": "25026cdafe353e58bdc3a74e8b1db6feb1a2f180f9cce04f81527e96d57c251a",
588
+ "mustApplicability": [
589
+ [
590
+ "doc-change:doc-lint",
591
+ "N/A"
592
+ ],
593
+ [
594
+ "doc-change:link-check",
595
+ "N/A"
596
+ ],
597
+ [
598
+ "doc-change:derived-regenerate",
599
+ "N/A"
600
+ ],
601
+ [
602
+ "doc-change:quality-review",
603
+ "N/A"
604
+ ],
605
+ [
606
+ "doc-change:conflict-check",
607
+ "N/A"
608
+ ],
609
+ [
610
+ "doc-change:requirement-sync",
611
+ "N/A"
612
+ ]
613
+ ]
614
+ }
615
+ },
616
+ "pinNote": "sha256 of stable JSON (sorted keys) of the current unchanged outputs; recorded at R2a RED."
617
+ }