project-tiny-context-harness 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +40 -32
  2. package/assets/README.md +141 -60
  3. package/assets/README.zh-CN.md +48 -40
  4. package/assets/agents/AGENTS_CORE.md +16 -12
  5. package/assets/context_templates/architecture.md +5 -5
  6. package/assets/context_templates/area.md +5 -5
  7. package/assets/context_templates/global.md +6 -6
  8. package/assets/context_templates/screen-contract.md +18 -18
  9. package/assets/github/harness.yml +2 -2
  10. package/assets/skills/context_development_engineer/SKILL.md +7 -5
  11. package/assets/skills/context_full_project_export/SKILL.md +42 -42
  12. package/assets/skills/context_uiux_design/SKILL.md +27 -13
  13. package/assets/skills/design-resource-authoring/SKILL.md +7 -7
  14. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +12 -12
  15. package/assets/skills/design-resource-authoring/references/open-design-provider.md +21 -21
  16. package/assets/skills/design-resource-authoring/references/resource-selection.md +3 -3
  17. package/assets/skills/long-task-workflow/SKILL.md +17 -17
  18. package/assets/skills/long-task-workflow/agents/openai.yaml +4 -4
  19. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +11 -9
  20. package/assets/skills/long-task-workflow/references/contract-authoring.md +19 -15
  21. package/assets/skills/long-task-workflow/references/evidence-design.md +18 -17
  22. package/assets/skills/long-task-workflow/references/source-authoring.md +15 -12
  23. package/assets/skills/normal-long-task/SKILL.md +12 -12
  24. package/dist/commands/design-resource.js +2 -2
  25. package/dist/commands/index.js +26 -26
  26. package/dist/commands/long-task-authoring.js +83 -9
  27. package/dist/commands/long-task.js +15 -15
  28. package/dist/lib/context-graph-snapshot.js +7 -0
  29. package/dist/lib/design-md.js +5 -4
  30. package/dist/lib/design-resource-handoff-shape-evidence.js +3 -0
  31. package/dist/lib/design-resource-handoff-shape-primitives.js +1 -3
  32. package/dist/lib/design-resource-handoff-types.d.ts +2 -0
  33. package/dist/lib/design-resource-handoff-validation-coverage.js +1 -0
  34. package/dist/lib/design-resource-handoff-validation-structure.js +2 -0
  35. package/dist/lib/doctor.js +2 -2
  36. package/dist/lib/execution-target-capabilities.d.ts +2 -0
  37. package/dist/lib/execution-target-capabilities.js +31 -0
  38. package/dist/lib/long-task-acceptance-shape.js +81 -20
  39. package/dist/lib/long-task-applicability-shape.d.ts +4 -0
  40. package/dist/lib/long-task-applicability-shape.js +54 -0
  41. package/dist/lib/long-task-assertions-v2.js +8 -0
  42. package/dist/lib/long-task-authoring-preflight-diagnostics.js +5 -0
  43. package/dist/lib/long-task-authoring-preflight-repair-order.js +3 -0
  44. package/dist/lib/long-task-authoring-preflight.js +12 -8
  45. package/dist/lib/long-task-authority-materials.js +46 -4
  46. package/dist/lib/long-task-authority-policy.d.ts +54 -0
  47. package/dist/lib/long-task-authority-policy.js +61 -0
  48. package/dist/lib/long-task-authority-types.d.ts +12 -2
  49. package/dist/lib/long-task-authority.js +9 -2
  50. package/dist/lib/long-task-check-shape.js +6 -1
  51. package/dist/lib/long-task-claim-definitions.js +27 -42
  52. package/dist/lib/long-task-claims.js +275 -146
  53. package/dist/lib/long-task-contract-types.d.ts +42 -8
  54. package/dist/lib/long-task-control-fields.d.ts +12 -0
  55. package/dist/lib/long-task-control-fields.js +66 -0
  56. package/dist/lib/long-task-control-types.d.ts +1 -0
  57. package/dist/lib/long-task-control-types.js +1 -0
  58. package/dist/lib/long-task-counterfactual-claim-policy.js +7 -0
  59. package/dist/lib/long-task-counterfactual-sandbox.js +1 -2
  60. package/dist/lib/long-task-counterfactual-types.d.ts +12 -0
  61. package/dist/lib/long-task-delivery-compiler.js +1 -0
  62. package/dist/lib/long-task-delivery-preflight.js +24 -0
  63. package/dist/lib/long-task-delivery-shape.d.ts +1 -0
  64. package/dist/lib/long-task-delivery-shape.js +1 -0
  65. package/dist/lib/long-task-delivery-types.d.ts +1 -0
  66. package/dist/lib/long-task-delivery-types.js +1 -0
  67. package/dist/lib/long-task-delivery-validation.js +46 -0
  68. package/dist/lib/long-task-design-resource-handoff.js +48 -7
  69. package/dist/lib/long-task-evidence-capability-codec.js +37 -0
  70. package/dist/lib/long-task-evidence-capability-policy.js +80 -38
  71. package/dist/lib/long-task-evidence-capability-runtime.js +36 -0
  72. package/dist/lib/long-task-evidence-capability-types.d.ts +13 -1
  73. package/dist/lib/long-task-evidence-findings.js +3 -0
  74. package/dist/lib/long-task-evidence-sensitivity-policy.js +38 -0
  75. package/dist/lib/long-task-evidence-v2.js +7 -1
  76. package/dist/lib/long-task-final-integrity.d.ts +16 -0
  77. package/dist/lib/long-task-final-integrity.js +98 -0
  78. package/dist/lib/long-task-final-v2.js +17 -34
  79. package/dist/lib/long-task-outcome-parser.js +22 -4
  80. package/dist/lib/long-task-playwright-case-evidence.d.ts +2 -0
  81. package/dist/lib/long-task-playwright-case-evidence.js +10 -2
  82. package/dist/lib/long-task-playwright-evidence.d.ts +1 -0
  83. package/dist/lib/long-task-playwright-evidence.js +32 -0
  84. package/dist/lib/long-task-product-shape.d.ts +3 -1
  85. package/dist/lib/long-task-product-shape.js +100 -4
  86. package/dist/lib/long-task-requirement-shape.js +3 -0
  87. package/dist/lib/long-task-root-shape.js +12 -6
  88. package/dist/lib/long-task-runner-freeze.js +16 -0
  89. package/dist/lib/long-task-runtime-types.d.ts +11 -2
  90. package/dist/lib/long-task-semantic-assurance-policy.d.ts +4 -0
  91. package/dist/lib/long-task-semantic-assurance-policy.js +52 -0
  92. package/dist/lib/long-task-semantic-contract-types.d.ts +18 -1
  93. package/dist/lib/long-task-semantic-drift-migration.js +33 -2
  94. package/dist/lib/long-task-semantic-mutation.d.ts +7 -0
  95. package/dist/lib/long-task-semantic-mutation.js +81 -0
  96. package/dist/lib/long-task-shape-primitives.d.ts +1 -1
  97. package/dist/lib/long-task-shape-primitives.js +1 -0
  98. package/dist/lib/long-task-source-authority-types.d.ts +2 -0
  99. package/dist/lib/long-task-source-item-parser.d.ts +1 -1
  100. package/dist/lib/long-task-source-item-parser.js +150 -104
  101. package/dist/lib/long-task-source-markers.d.ts +12 -0
  102. package/dist/lib/long-task-source-markers.js +146 -0
  103. package/dist/lib/long-task-source-target-continuity.d.ts +1 -1
  104. package/dist/lib/long-task-source-target-continuity.js +80 -55
  105. package/dist/lib/long-task-source-target-index.js +7 -29
  106. package/dist/lib/long-task-status-v2.d.ts +1 -0
  107. package/dist/lib/long-task-status-v2.js +2 -2
  108. package/dist/lib/long-task-target-policy.js +20 -0
  109. package/dist/lib/long-task-ui-design-policy.js +27 -1
  110. package/dist/lib/long-task-ui-surface-shape.js +21 -1
  111. package/dist/lib/long-task-ui-surface-types.d.ts +7 -0
  112. package/dist/lib/long-task-verification-preview.d.ts +10 -0
  113. package/dist/lib/long-task-verifier-dependency-closure.d.ts +3 -0
  114. package/dist/lib/long-task-verifier-dependency-closure.js +179 -0
  115. package/dist/lib/long-task-verifier-v2.js +12 -2
  116. package/dist/lib/long-task-workspace.js +5 -1
  117. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +99 -25
  118. package/migrations/README.md +8 -8
  119. package/package.json +84 -84
@@ -19,7 +19,7 @@
19
19
  "execution_targets": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/executionTarget" } },
20
20
  "source_paths": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/nonEmpty" } },
21
21
  "context_refs": { "$ref": "#/$defs/nonEmptyStrings" },
22
- "context_snapshot_mode": { "enum": ["referenced", "full"], "default": "referenced" }
22
+ "context_snapshot_mode": { "const": "full", "default": "full" }
23
23
  }
24
24
  },
25
25
  "source_claims": {
@@ -41,6 +41,7 @@
41
41
  "key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
42
42
  "nonEmpty": { "type": "string", "minLength": 1 },
43
43
  "nonEmptyStrings": { "type": "array", "items": { "$ref": "#/$defs/nonEmpty" } },
44
+ "executionTargetCapability": { "enum": ["browser-runtime", "native-runtime", "desktop-runtime", "service-runtime", "process-runtime", "external-runtime", "cold-start", "production-root", "pointer-input", "keyboard-input", "touch-input", "viewport-control", "pixel-density-observation", "safe-area-observation", "motion-observation", "reduced-motion", "color-scheme-control", "text-scale-control", "assistive-technology", "screen-reader", "physical-device", "device-orientation", "sensor-input", "camera-input", "haptic-output", "thermal-observation", "power-mode-control", "persistent-storage", "network-boundary"] },
44
45
  "targetProfile": {
45
46
  "type": "object",
46
47
  "additionalProperties": false,
@@ -55,13 +56,14 @@
55
56
  "executionTarget": {
56
57
  "type": "object",
57
58
  "additionalProperties": false,
58
- "required": ["key", "description", "role", "runtime_family", "root_entrypoint"],
59
+ "required": ["key", "description", "role", "runtime_family", "root_entrypoint", "capabilities"],
59
60
  "properties": {
60
61
  "key": { "$ref": "#/$defs/key" },
61
62
  "description": { "$ref": "#/$defs/nonEmpty" },
62
63
  "role": { "enum": ["product", "support", "observer"] },
63
64
  "runtime_family": { "enum": ["browser", "native", "desktop", "service", "process", "external"] },
64
- "root_entrypoint": { "$ref": "#/$defs/nonEmpty" }
65
+ "root_entrypoint": { "$ref": "#/$defs/nonEmpty" },
66
+ "capabilities": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/executionTargetCapability" } }
65
67
  }
66
68
  },
67
69
  "stage": {
@@ -81,6 +83,29 @@
81
83
  "required": ["key", "statement"],
82
84
  "properties": { "key": { "$ref": "#/$defs/key" }, "statement": { "$ref": "#/$defs/nonEmpty" } }
83
85
  },
86
+ "applicableStatement": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["key", "statement", "applicability_refs"],
90
+ "properties": {
91
+ "key": { "$ref": "#/$defs/key" },
92
+ "statement": { "$ref": "#/$defs/nonEmpty" },
93
+ "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } }
94
+ }
95
+ },
96
+ "claimApplicability": {
97
+ "type": "object",
98
+ "additionalProperties": false,
99
+ "required": ["key", "target_ref", "journey_role", "dimensions", "given_refs", "when_refs"],
100
+ "properties": {
101
+ "key": { "$ref": "#/$defs/key" },
102
+ "target_ref": { "$ref": "#/$defs/key" },
103
+ "journey_role": { "enum": ["success", "degradation", "recovery", "stage_gate", "conformance"] },
104
+ "dimensions": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["key", "value"], "properties": { "key": { "$ref": "#/$defs/key" }, "value": { "$ref": "#/$defs/key" } } } },
105
+ "given_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } },
106
+ "when_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } }
107
+ }
108
+ },
84
109
  "keyedPath": {
85
110
  "type": "object",
86
111
  "additionalProperties": false,
@@ -134,14 +159,15 @@
134
159
  "type": "object",
135
160
  "additionalProperties": false,
136
161
  "properties": {
137
- "product": { "type": "object", "additionalProperties": false, "properties": { "non_goals": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" }, "default": [] } }, "default": {} },
162
+ "applicability": { "type": "array", "items": { "$ref": "#/$defs/claimApplicability" }, "default": [] },
163
+ "product": { "type": "object", "additionalProperties": false, "properties": { "non_goals": { "type": "array", "items": { "$ref": "#/$defs/applicableStatement" }, "default": [] } }, "default": {} },
138
164
  "technical": {
139
165
  "type": "object",
140
166
  "additionalProperties": false,
141
167
  "properties": {
142
- "constraints": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" }, "default": [] },
168
+ "constraints": { "type": "array", "items": { "$ref": "#/$defs/applicableStatement" }, "default": [] },
143
169
  "forbidden_paths": { "type": "array", "items": { "$ref": "#/$defs/keyedPath" }, "default": [] },
144
- "forbidden_shortcuts": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" }, "default": [] }
170
+ "forbidden_shortcuts": { "type": "array", "items": { "$ref": "#/$defs/applicableStatement" }, "default": [] }
145
171
  },
146
172
  "default": {}
147
173
  },
@@ -160,12 +186,13 @@
160
186
  "outcome": {
161
187
  "type": "object",
162
188
  "additionalProperties": false,
163
- "required": ["key", "title", "stage", "product", "technical", "acceptance"],
189
+ "required": ["key", "title", "stage", "applicability", "product", "technical", "acceptance"],
164
190
  "properties": {
165
191
  "key": { "$ref": "#/$defs/key" },
166
192
  "title": { "$ref": "#/$defs/nonEmpty" },
167
193
  "stage": { "$ref": "#/$defs/key" },
168
194
  "depends_on": { "$ref": "#/$defs/keys", "default": [] },
195
+ "applicability": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/claimApplicability" } },
169
196
  "product": { "$ref": "#/$defs/product" },
170
197
  "technical": { "$ref": "#/$defs/technical" },
171
198
  "acceptance": { "$ref": "#/$defs/acceptance" }
@@ -174,17 +201,20 @@
174
201
  "product": {
175
202
  "type": "object",
176
203
  "additionalProperties": false,
177
- "required": ["observable_result", "success_path_required", "degradation_path_required", "owner"],
204
+ "required": ["observable_result", "result_applicability_refs", "success_path_required", "degradation_path_required", "owner", "control_relation_closure"],
178
205
  "properties": {
179
206
  "observable_result": { "$ref": "#/$defs/nonEmpty" },
207
+ "result_applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } },
180
208
  "success_path_required": { "type": "boolean" },
181
209
  "degradation_path_required": { "type": "boolean" },
182
210
  "owner": { "type": "object", "additionalProperties": false, "required": ["label", "context_refs", "path_globs"], "properties": { "label": { "$ref": "#/$defs/nonEmpty" }, "context_refs": { "$ref": "#/$defs/nonEmptyStrings" }, "path_globs": { "$ref": "#/$defs/nonEmptyStrings" } } },
183
211
  "requirements": { "type": "array", "items": { "$ref": "#/$defs/requirement" }, "default": [] },
184
212
  "owner_surfaces": { "$ref": "#/$defs/nonEmptyStrings", "default": [] },
185
213
  "controls": { "type": "array", "items": { "$ref": "#/$defs/control" }, "default": [] },
214
+ "control_relation_closure": { "$ref": "#/$defs/controlRelationClosure" },
215
+ "control_relations": { "type": "array", "items": { "$ref": "#/$defs/controlRelation" }, "default": [] },
186
216
  "surface_bindings": { "type": "array", "items": { "$ref": "#/$defs/surfaceBinding" }, "default": [] },
187
- "non_completing_outcomes": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" }, "default": [] }
217
+ "non_completing_outcomes": { "type": "array", "items": { "$ref": "#/$defs/applicableStatement" }, "default": [] }
188
218
  },
189
219
  "allOf": [
190
220
  {
@@ -196,14 +226,43 @@
196
226
  "requirement": {
197
227
  "type": "object",
198
228
  "additionalProperties": false,
199
- "required": ["key", "statement", "required_proof_surfaces"],
200
- "properties": { "key": { "$ref": "#/$defs/key" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "required_proof_surfaces": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/proofSurface" } } }
229
+ "required": ["key", "statement", "required_proof_surfaces", "applicability_refs"],
230
+ "properties": { "key": { "$ref": "#/$defs/key" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "required_proof_surfaces": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/proofSurface" } }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } }
201
231
  },
202
232
  "control": {
203
233
  "type": "object",
204
234
  "additionalProperties": false,
205
- "required": ["key", "location"],
206
- "properties": { "key": { "$ref": "#/$defs/key" }, "surface": { "type": "string", "default": "" }, "region": { "type": "string", "default": "" }, "location": { "$ref": "#/$defs/nonEmpty" }, "control_type": { "type": "string", "default": "" }, "label_content": { "type": "string", "default": "" }, "user_task": { "type": "string", "default": "" }, "visibility": { "type": "string", "default": "" }, "availability": { "type": "string", "default": "" }, "trigger": { "type": "string", "default": "" }, "input": { "type": "string", "default": "" }, "validation": { "type": "string", "default": "" }, "default_value": { "type": "string", "default": "" }, "interaction": { "type": "string", "default": "" }, "navigation_result": { "type": "string", "default": "" }, "loading_state": { "type": "string", "default": "" }, "empty_state": { "type": "string", "default": "" }, "success_state": { "type": "string", "default": "" }, "failure_state": { "type": "string", "default": "" }, "recovery": { "type": "string", "default": "" }, "permission": { "type": "string", "default": "" }, "feedback": { "type": "string", "default": "" }, "accessibility": { "type": "string", "default": "" } }
235
+ "required": ["key", "field_coverage"],
236
+ "properties": { "key": { "$ref": "#/$defs/key" }, "surface": { "type": "string", "default": "" }, "region": { "type": "string", "default": "" }, "location": { "type": "string", "default": "" }, "control_type": { "type": "string", "default": "" }, "label_content": { "type": "string", "default": "" }, "user_task": { "type": "string", "default": "" }, "visibility": { "type": "string", "default": "" }, "availability": { "type": "string", "default": "" }, "trigger": { "type": "string", "default": "" }, "input": { "type": "string", "default": "" }, "validation": { "type": "string", "default": "" }, "default_value": { "type": "string", "default": "" }, "interaction": { "type": "string", "default": "" }, "navigation_result": { "type": "string", "default": "" }, "loading_state": { "type": "string", "default": "" }, "empty_state": { "type": "string", "default": "" }, "success_state": { "type": "string", "default": "" }, "failure_state": { "type": "string", "default": "" }, "recovery": { "type": "string", "default": "" }, "permission": { "type": "string", "default": "" }, "feedback": { "type": "string", "default": "" }, "accessibility": { "type": "string", "default": "" }, "field_coverage": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/controlFieldCoverage" } } }
237
+ },
238
+ "controlField": {
239
+ "enum": ["surface", "region", "location", "control_type", "label_content", "user_task", "visibility", "availability", "trigger", "input", "validation", "default_value", "interaction", "navigation_result", "loading_state", "empty_state", "success_state", "failure_state", "recovery", "permission", "feedback", "accessibility"]
240
+ },
241
+ "controlFieldCoverage": {
242
+ "oneOf": [
243
+ { "type": "object", "additionalProperties": false, "required": ["fields", "state", "applicability_refs"], "properties": { "fields": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/controlField" } }, "state": { "const": "specified" }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } } },
244
+ { "type": "object", "additionalProperties": false, "required": ["fields", "state", "statement", "applicability_refs"], "properties": { "fields": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/controlField" } }, "state": { "const": "not_applicable" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } } },
245
+ { "type": "object", "additionalProperties": false, "required": ["fields", "state", "statement"], "properties": { "fields": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/controlField" } }, "state": { "const": "unresolved" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "applicability_refs": { "type": "array", "maxItems": 0 } } }
246
+ ]
247
+ },
248
+ "controlRelationClosure": {
249
+ "oneOf": [
250
+ { "type": "object", "additionalProperties": false, "required": ["state", "statement", "applicability_refs"], "properties": { "state": { "const": "specified" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } } },
251
+ { "type": "object", "additionalProperties": false, "required": ["state", "statement", "applicability_refs"], "properties": { "state": { "const": "not_applicable" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } } },
252
+ { "type": "object", "additionalProperties": false, "required": ["state", "statement"], "properties": { "state": { "const": "unresolved" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "applicability_refs": { "type": "array", "maxItems": 0 } } }
253
+ ]
254
+ },
255
+ "controlRelation": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": ["key", "statement", "control_refs", "required_proof_surfaces", "applicability_refs"],
259
+ "properties": {
260
+ "key": { "$ref": "#/$defs/key" },
261
+ "statement": { "$ref": "#/$defs/nonEmpty" },
262
+ "control_refs": { "type": "array", "minItems": 2, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } },
263
+ "required_proof_surfaces": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/proofSurface" } },
264
+ "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } }
265
+ }
207
266
  },
208
267
  "surfaceBinding": {
209
268
  "type": "object",
@@ -241,10 +300,11 @@
241
300
  "items": {
242
301
  "type": "object",
243
302
  "additionalProperties": false,
244
- "required": ["method", "assertion_ref"],
303
+ "required": ["method", "assertion_ref", "evidence_artifacts"],
245
304
  "properties": {
246
305
  "method": { "$ref": "#/$defs/designVerificationMethod" },
247
- "assertion_ref": { "$ref": "#/$defs/key" }
306
+ "assertion_ref": { "$ref": "#/$defs/key" },
307
+ "evidence_artifacts": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["condition_key", "path", "observation_path"], "properties": { "condition_key": { "$ref": "#/$defs/key" }, "path": { "$ref": "#/$defs/nonEmpty" }, "observation_path": { "$ref": "#/$defs/nonEmpty" } } } }
248
308
  }
249
309
  }
250
310
  },
@@ -255,13 +315,14 @@
255
315
  "designAcceptanceBlocker": {
256
316
  "type": "object",
257
317
  "additionalProperties": false,
258
- "required": ["key", "status", "refs", "source_item_refs", "verification_methods", "rationale"],
318
+ "required": ["key", "status", "refs", "source_item_refs", "verification_methods", "required_capabilities", "rationale"],
259
319
  "properties": {
260
320
  "key": { "$ref": "#/$defs/key" },
261
321
  "status": { "enum": ["machine_claim", "external_confirmation"] },
262
322
  "refs": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/nonEmpty" } },
263
323
  "source_item_refs": { "$ref": "#/$defs/nonEmptyStrings" },
264
324
  "verification_methods": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/designVerificationMethod" } },
325
+ "required_capabilities": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/executionTargetCapability" } },
265
326
  "rationale": { "$ref": "#/$defs/nonEmpty" }
266
327
  }
267
328
  },
@@ -289,7 +350,7 @@
289
350
  "expected_change_paths": { "$ref": "#/$defs/nonEmptyStrings" },
290
351
  "allowed_support_paths": { "$ref": "#/$defs/nonEmptyStrings", "default": [] },
291
352
  "forbidden_paths": { "$ref": "#/$defs/nonEmptyStrings", "default": [] },
292
- "forbidden_shortcuts": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" }, "default": [] },
353
+ "forbidden_shortcuts": { "type": "array", "items": { "$ref": "#/$defs/applicableStatement" }, "default": [] },
293
354
  "bindings": { "type": "array", "items": { "$ref": "#/$defs/binding" }, "default": [] },
294
355
  "rollback_and_recovery": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/rollback" }], "default": null }
295
356
  }
@@ -297,8 +358,8 @@
297
358
  "obligation": {
298
359
  "type": "object",
299
360
  "additionalProperties": false,
300
- "required": ["key", "statement", "required_proof_surfaces"],
301
- "properties": { "key": { "$ref": "#/$defs/key" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "required_proof_surfaces": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/proofSurface" } } }
361
+ "required": ["key", "statement", "required_proof_surfaces", "applicability_refs"],
362
+ "properties": { "key": { "$ref": "#/$defs/key" }, "statement": { "$ref": "#/$defs/nonEmpty" }, "required_proof_surfaces": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/proofSurface" } }, "applicability_refs": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/key" } } }
302
363
  },
303
364
  "proofSurface": { "enum": ["ui_browser", "runtime_behavior", "api_contract", "data_state", "security_boundary", "population_coverage", "implementation_structure"] },
304
365
  "binding": {
@@ -366,12 +427,18 @@
366
427
  "key": { "$ref": "#/$defs/key" },
367
428
  "criterion": { "$ref": "#/$defs/nonEmpty" },
368
429
  "claims": { "$ref": "#/$defs/nonEmptyStrings" },
430
+ "applicability_ref": { "$ref": "#/$defs/key" },
369
431
  "observation": { "$ref": "#/$defs/nonEmpty" },
370
432
  "evidence_capabilities": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/evidenceCapability" } },
371
433
  "operator": { "enum": ["equals", "not_equals", "contains", "not_contains", "matches", "not_matches", "greater_than", "greater_or_equal", "less_than", "less_or_equal", "truthy", "falsy", "exists", "set_equals", "subset_of", "superset_of"] },
372
434
  "expected": true
373
435
  },
374
436
  "allOf": [
437
+ {
438
+ "if": { "properties": { "claims": { "minItems": 1 } } },
439
+ "then": { "required": ["applicability_ref"] },
440
+ "else": { "not": { "required": ["applicability_ref"] } }
441
+ },
375
442
  {
376
443
  "if": { "properties": { "operator": { "enum": ["equals", "not_equals", "contains", "not_contains", "matches", "not_matches", "greater_than", "greater_or_equal", "less_than", "less_or_equal", "set_equals", "subset_of", "superset_of"] } } },
377
444
  "then": { "required": ["expected"] }
@@ -403,7 +470,7 @@
403
470
  "when": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/keyedStatement" } }
404
471
  }
405
472
  },
406
- "evidenceCapability": { "enum": ["presence", "interaction_trace", "state_delta", "cross_surface_consistency", "durable_readback", "boundary_invocation", "external_side_effect", "failure_injection", "visual_render", "design_conformance", "target_runtime", "input_variation"] },
473
+ "evidenceCapability": { "enum": ["presence", "interaction_trace", "state_delta", "cross_surface_consistency", "durable_readback", "boundary_invocation", "external_side_effect", "failure_injection", "visual_render", "design_conformance", "design_method", "target_runtime", "input_variation"] },
407
474
  "environment": {
408
475
  "oneOf": [
409
476
  {
@@ -423,15 +490,16 @@
423
490
  "population": {
424
491
  "type": "object",
425
492
  "additionalProperties": false,
426
- "required": ["check_key", "claims", "observations", "exclusion_rules"],
493
+ "required": ["check_key", "universe_binding_key", "claims", "observations", "exclusion_rules"],
427
494
  "properties": {
428
495
  "check_key": { "$ref": "#/$defs/key" },
496
+ "universe_binding_key": { "$ref": "#/$defs/key" },
429
497
  "claims": { "$ref": "#/$defs/nonEmptyStrings" },
430
498
  "observations": {
431
499
  "type": "object",
432
500
  "additionalProperties": false,
433
- "required": ["eligible_ids", "observed_ids", "excluded_items"],
434
- "properties": { "eligible_ids": { "$ref": "#/$defs/nonEmpty" }, "observed_ids": { "$ref": "#/$defs/nonEmpty" }, "excluded_items": { "$ref": "#/$defs/nonEmpty" } }
501
+ "required": ["universe_ids", "eligible_ids", "observed_ids", "excluded_items"],
502
+ "properties": { "universe_ids": { "$ref": "#/$defs/nonEmpty" }, "eligible_ids": { "$ref": "#/$defs/nonEmpty" }, "observed_ids": { "$ref": "#/$defs/nonEmpty" }, "excluded_items": { "$ref": "#/$defs/nonEmpty" } }
435
503
  },
436
504
  "exclusion_rules": { "type": "array", "items": { "$ref": "#/$defs/keyedStatement" } }
437
505
  }
@@ -446,10 +514,13 @@
446
514
  "claims": { "$ref": "#/$defs/nonEmptyStrings" },
447
515
  "check_key": { "$ref": "#/$defs/key" },
448
516
  "expected_assertion_failures": { "$ref": "#/$defs/keys" },
517
+ "preserved_assertions": { "$ref": "#/$defs/keys", "default": [] },
449
518
  "mutation": {
450
519
  "oneOf": [
451
520
  { "type": "object", "additionalProperties": false, "required": ["type", "paths"], "properties": { "type": { "const": "remove_paths" }, "paths": { "$ref": "#/$defs/nonEmptyStrings" } } },
452
- { "type": "object", "additionalProperties": false, "required": ["type", "path", "fixture_path"], "properties": { "type": { "const": "replace_file" }, "path": { "$ref": "#/$defs/nonEmpty" }, "fixture_path": { "$ref": "#/$defs/nonEmpty" } } }
521
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "fixture_path"], "properties": { "type": { "const": "replace_file" }, "path": { "$ref": "#/$defs/nonEmpty" }, "fixture_path": { "$ref": "#/$defs/nonEmpty" } } },
522
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "pointer", "value"], "properties": { "type": { "const": "replace_json_value" }, "path": { "$ref": "#/$defs/nonEmpty" }, "pointer": { "type": "string", "pattern": "^/(?:[^~/]|~[01])+(?:/(?:[^~/]|~[01])+)*$" }, "value": true } },
523
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "match", "replacement"], "properties": { "type": { "const": "replace_text" }, "path": { "$ref": "#/$defs/nonEmpty" }, "match": { "$ref": "#/$defs/nonEmpty" }, "replacement": { "type": "string" } } }
453
524
  ]
454
525
  }
455
526
  }
@@ -464,10 +535,13 @@
464
535
  "claims": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/nonEmpty" } },
465
536
  "check_key": { "$ref": "#/$defs/key" },
466
537
  "expected_assertion_failures": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/key" }, "uniqueItems": true },
538
+ "preserved_assertions": { "$ref": "#/$defs/keys", "default": [] },
467
539
  "mutation": {
468
540
  "oneOf": [
469
541
  { "type": "object", "additionalProperties": false, "required": ["type", "paths"], "properties": { "type": { "const": "remove_paths" }, "paths": { "$ref": "#/$defs/nonEmptyStrings" } } },
470
- { "type": "object", "additionalProperties": false, "required": ["type", "path", "fixture_path"], "properties": { "type": { "const": "replace_file" }, "path": { "$ref": "#/$defs/nonEmpty" }, "fixture_path": { "$ref": "#/$defs/nonEmpty" } } }
542
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "fixture_path"], "properties": { "type": { "const": "replace_file" }, "path": { "$ref": "#/$defs/nonEmpty" }, "fixture_path": { "$ref": "#/$defs/nonEmpty" } } },
543
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "pointer", "value"], "properties": { "type": { "const": "replace_json_value" }, "path": { "$ref": "#/$defs/nonEmpty" }, "pointer": { "type": "string", "pattern": "^/(?:[^~/]|~[01])+(?:/(?:[^~/]|~[01])+)*$" }, "value": true } },
544
+ { "type": "object", "additionalProperties": false, "required": ["type", "path", "match", "replacement"], "properties": { "type": { "const": "replace_text" }, "path": { "$ref": "#/$defs/nonEmpty" }, "match": { "$ref": "#/$defs/nonEmpty" }, "replacement": { "type": "string" } } }
471
545
  ]
472
546
  }
473
547
  }
@@ -5,11 +5,11 @@ Schema migrations for Harness config and managed file layout belong here.
5
5
  Version 0.6.0 includes `long-task-v1-retirement`. It safely removes the
6
6
  retired repo-local Hook, reports a legacy active projection as
7
7
  `manual_required`, and deliberately does not import V1 progress or receipts
8
- into the V2 Claim/Evidence authority.
9
-
10
- Version 0.7.2 includes `long-task-v2-semantic-drift-authority`. It reports a
11
- conventional `.long-task/delivery-contract.yaml` as `manual_required` when the
12
- V2 file predates explicit Stage, target-profile/root-runtime, journey-scenario,
13
- success/degradation, evidence-capability or external-impact authority. Those
14
- meanings must be re-authored from Source; migration never infers them from old
15
- Progress or Receipts.
8
+ into the V2 Claim/Evidence authority.
9
+
10
+ Version 0.7.2 includes `long-task-v2-semantic-drift-authority`. It reports a
11
+ conventional `.long-task/delivery-contract.yaml` as `manual_required` when the
12
+ V2 file predates explicit Stage, target-profile/root-runtime, journey-scenario,
13
+ success/degradation, evidence-capability or external-impact authority. Those
14
+ meanings must be re-authored from Source; migration never infers them from old
15
+ Progress or Receipts.
package/package.json CHANGED
@@ -1,84 +1,84 @@
1
- {
2
- "name": "project-tiny-context-harness",
3
- "version": "0.8.0",
4
- "description": "Minimal project memory and validation harness for AI coding agents.",
5
- "license": "MIT",
6
- "author": "Seven128",
7
- "homepage": "https://github.com/Seven128/project-tiny-context-harness#readme",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/Seven128/project-tiny-context-harness.git",
11
- "directory": "packages/ty-context"
12
- },
13
- "bugs": {
14
- "url": "https://github.com/Seven128/project-tiny-context-harness/issues"
15
- },
16
- "keywords": [
17
- "ai-agents",
18
- "coding-agent",
19
- "codex",
20
- "claude-code",
21
- "cursor",
22
- "gemini-cli",
23
- "opencode",
24
- "agent-context",
25
- "context-engineering",
26
- "context-management",
27
- "agents-md",
28
- "project-memory",
29
- "agent-memory",
30
- "ai-coding",
31
- "multi-agent",
32
- "llm",
33
- "developer-tools",
34
- "developer-productivity",
35
- "cli",
36
- "ty-context",
37
- "workflow"
38
- ],
39
- "type": "module",
40
- "bin": {
41
- "ty-context": "dist/cli.js"
42
- },
43
- "files": [
44
- "README.md",
45
- "dist",
46
- "assets",
47
- "migrations",
48
- "source-mappings.yaml"
49
- ],
50
- "scripts": {
51
- "build": "node ../../tools/package_build_fingerprint.mjs build",
52
- "typecheck": "tsc -p tsconfig.json --noEmit",
53
- "test:default:built": "node ../../tests/ty-context/run-package-suite.mjs default",
54
- "test:default": "npm run build && npm run test:default:built",
55
- "test:built": "npm run test:default:built && npm run test:long-task-workflow:built",
56
- "test:trust:built": "npm run test:default:built && npm run test:long-task-trust:built",
57
- "test:trust": "npm run build && npm run test:trust:built",
58
- "pretest": "npm run build",
59
- "test": "npm run test:built",
60
- "test:workflow-default:built": "node --test --test-concurrency=1 ../../tests/ty-context/workflow-contract-routing.test.mjs",
61
- "test:delivery-contract:built": "node --test --test-concurrency=1 ../../tests/ty-context/long-task-compact-authoring.test.mjs ../../tests/ty-context/long-task-authoring-claims.test.mjs ../../tests/ty-context/long-task-authoring-preflight.test.mjs ../../tests/ty-context/long-task-authority-authoring-fields.test.mjs ../../tests/ty-context/long-task-playwright-ac-evidence.test.mjs ../../tests/ty-context/long-task-delivery-parser.test.mjs ../../tests/ty-context/long-task-delivery-compiler.test.mjs ../../tests/ty-context/long-task-delivery-risk.test.mjs ../../tests/ty-context/long-task-claim-coverage.test.mjs ../../tests/ty-context/long-task-closure-invariants.test.mjs ../../tests/ty-context/long-task-source-authority-closure.test.mjs ../../tests/ty-context/long-task-evidence-sensitivity-policy.test.mjs ../../tests/ty-context/long-task-global-evidence-sensitivity.test.mjs ../../tests/ty-context/long-task-source-risk-binding.test.mjs ../../tests/ty-context/long-task-non-completing-source.test.mjs ../../tests/ty-context/long-task-playwright-trust-boundary.test.mjs ../../tests/ty-context/long-task-planned-counterfactual.test.mjs ../../tests/ty-context/long-task-public-contract-example.test.mjs ../../tests/ty-context/long-task-release-tarball-contract.test.mjs ../../tests/ty-context/long-task-semantic-drift-closure.test.mjs ../../tests/ty-context/long-task-semantic-drift-lifecycle.test.mjs ../../tests/ty-context/long-task-workspace-scope.test.mjs",
62
- "test:delivery-contract": "npm run build && npm run test:delivery-contract:built",
63
- "test:long-task-workflow:built": "node ../../tests/ty-context/run-package-suite.mjs long-task",
64
- "test:long-task-workflow": "npm run build && npm run test:long-task-workflow:built",
65
- "test:long-task-trust:built": "node ../../tests/ty-context/run-package-suite.mjs long-task-trust",
66
- "test:long-task-trust": "npm run build && npm run test:long-task-trust:built",
67
- "test:long-task-performance": "npm run build && node ../../tests/ty-context/long-task-performance.mjs",
68
- "prepack": "npm run build"
69
- },
70
- "engines": {
71
- "node": ">=24"
72
- },
73
- "dependencies": {
74
- "@google/design.md": "^0.3.0",
75
- "impeccable": "^3.2.1",
76
- "re2js": "2.8.6",
77
- "smol-toml": "1.7.0",
78
- "yaml": "^2.9.0"
79
- },
80
- "devDependencies": {
81
- "@types/node": "^26.1.1",
82
- "typescript": "^7.0.2"
83
- }
84
- }
1
+ {
2
+ "name": "project-tiny-context-harness",
3
+ "version": "0.8.2",
4
+ "description": "Minimal project memory and validation harness for AI coding agents.",
5
+ "license": "MIT",
6
+ "author": "Seven128",
7
+ "homepage": "https://github.com/Seven128/project-tiny-context-harness#readme",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/Seven128/project-tiny-context-harness.git",
11
+ "directory": "packages/ty-context"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/Seven128/project-tiny-context-harness/issues"
15
+ },
16
+ "keywords": [
17
+ "ai-agents",
18
+ "coding-agent",
19
+ "codex",
20
+ "claude-code",
21
+ "cursor",
22
+ "gemini-cli",
23
+ "opencode",
24
+ "agent-context",
25
+ "context-engineering",
26
+ "context-management",
27
+ "agents-md",
28
+ "project-memory",
29
+ "agent-memory",
30
+ "ai-coding",
31
+ "multi-agent",
32
+ "llm",
33
+ "developer-tools",
34
+ "developer-productivity",
35
+ "cli",
36
+ "ty-context",
37
+ "workflow"
38
+ ],
39
+ "type": "module",
40
+ "bin": {
41
+ "ty-context": "dist/cli.js"
42
+ },
43
+ "files": [
44
+ "README.md",
45
+ "dist",
46
+ "assets",
47
+ "migrations",
48
+ "source-mappings.yaml"
49
+ ],
50
+ "scripts": {
51
+ "build": "node ../../tools/package_build_fingerprint.mjs build",
52
+ "typecheck": "tsc -p tsconfig.json --noEmit",
53
+ "test:default:built": "node ../../tests/ty-context/run-package-suite.mjs default",
54
+ "test:default": "npm run build && npm run test:default:built",
55
+ "test:built": "npm run test:default:built && npm run test:long-task-workflow:built",
56
+ "test:trust:built": "npm run test:default:built && npm run test:long-task-trust:built",
57
+ "test:trust": "npm run build && npm run test:trust:built",
58
+ "pretest": "npm run build",
59
+ "test": "npm run test:built",
60
+ "test:workflow-default:built": "node --test --test-concurrency=1 ../../tests/ty-context/workflow-contract-routing.test.mjs",
61
+ "test:delivery-contract:built": "node --test --test-concurrency=1 ../../tests/ty-context/long-task-compact-authoring.test.mjs ../../tests/ty-context/long-task-authoring-claims.test.mjs ../../tests/ty-context/long-task-authoring-preflight.test.mjs ../../tests/ty-context/long-task-authority-authoring-fields.test.mjs ../../tests/ty-context/long-task-playwright-ac-evidence.test.mjs ../../tests/ty-context/long-task-delivery-parser.test.mjs ../../tests/ty-context/long-task-delivery-compiler.test.mjs ../../tests/ty-context/long-task-delivery-risk.test.mjs ../../tests/ty-context/long-task-claim-coverage.test.mjs ../../tests/ty-context/long-task-closure-invariants.test.mjs ../../tests/ty-context/long-task-source-authority-closure.test.mjs ../../tests/ty-context/long-task-evidence-sensitivity-policy.test.mjs ../../tests/ty-context/long-task-global-evidence-sensitivity.test.mjs ../../tests/ty-context/long-task-source-risk-binding.test.mjs ../../tests/ty-context/long-task-non-completing-source.test.mjs ../../tests/ty-context/long-task-playwright-trust-boundary.test.mjs ../../tests/ty-context/long-task-planned-counterfactual.test.mjs ../../tests/ty-context/long-task-public-contract-example.test.mjs ../../tests/ty-context/long-task-release-tarball-contract.test.mjs ../../tests/ty-context/long-task-semantic-assurance-closure.test.mjs ../../tests/ty-context/long-task-semantic-drift-closure.test.mjs ../../tests/ty-context/long-task-semantic-drift-lifecycle.test.mjs ../../tests/ty-context/long-task-workspace-scope.test.mjs",
62
+ "test:delivery-contract": "npm run build && npm run test:delivery-contract:built",
63
+ "test:long-task-workflow:built": "node ../../tests/ty-context/run-package-suite.mjs long-task",
64
+ "test:long-task-workflow": "npm run build && npm run test:long-task-workflow:built",
65
+ "test:long-task-trust:built": "node ../../tests/ty-context/run-package-suite.mjs long-task-trust",
66
+ "test:long-task-trust": "npm run build && npm run test:long-task-trust:built",
67
+ "test:long-task-performance": "npm run build && node ../../tests/ty-context/long-task-performance.mjs",
68
+ "prepack": "npm run build"
69
+ },
70
+ "engines": {
71
+ "node": ">=24"
72
+ },
73
+ "dependencies": {
74
+ "@google/design.md": "^0.3.0",
75
+ "impeccable": "^3.2.1",
76
+ "re2js": "2.8.6",
77
+ "smol-toml": "1.7.0",
78
+ "yaml": "^2.9.0"
79
+ },
80
+ "devDependencies": {
81
+ "@types/node": "^26.1.1",
82
+ "typescript": "^7.0.2"
83
+ }
84
+ }