project-tiny-context-harness 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +387 -387
  3. package/assets/README.md +553 -553
  4. package/assets/README.zh-CN.md +331 -331
  5. package/assets/agents/.gitkeep +1 -1
  6. package/assets/agents/AGENTS_CORE.md +69 -69
  7. package/assets/context_templates/architecture.md +28 -28
  8. package/assets/context_templates/area.md +34 -34
  9. package/assets/context_templates/context.toml +30 -30
  10. package/assets/context_templates/deployment.md +35 -35
  11. package/assets/context_templates/global.md +57 -57
  12. package/assets/context_templates/product-surface-contract.md +70 -70
  13. package/assets/context_templates/screen-contract.md +189 -189
  14. package/assets/context_templates/verification.md +32 -32
  15. package/assets/github/.gitkeep +1 -1
  16. package/assets/github/harness.yml +39 -39
  17. package/assets/make/.gitkeep +1 -1
  18. package/assets/make/ty-context.mk +48 -48
  19. package/assets/skills/context_development_engineer/SKILL.md +137 -137
  20. package/assets/skills/context_full_project_export/SKILL.md +28 -28
  21. package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
  22. package/assets/skills/context_product_plan/SKILL.md +88 -88
  23. package/assets/skills/context_surface_contract/SKILL.md +191 -191
  24. package/assets/skills/context_uiux_design/SKILL.md +172 -172
  25. package/assets/skills/design-resource-authoring/SKILL.md +86 -85
  26. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +138 -135
  27. package/assets/skills/design-resource-authoring/references/open-design-provider.md +135 -135
  28. package/assets/skills/design-resource-authoring/references/resource-selection.md +174 -173
  29. package/assets/skills/design-system-authoring/SKILL.md +57 -57
  30. package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
  31. package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
  32. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
  33. package/assets/skills/long-task-workflow/SKILL.md +93 -93
  34. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +69 -69
  35. package/assets/skills/long-task-workflow/references/contract-authoring.md +111 -111
  36. package/assets/skills/long-task-workflow/references/evidence-design.md +68 -68
  37. package/assets/skills/long-task-workflow/references/source-authoring.md +95 -95
  38. package/assets/skills/source-plan-authoring/SKILL.md +14 -14
  39. package/assets/tools/validate_context.py +442 -442
  40. package/dist/commands/design-resource.js +2 -2
  41. package/dist/commands/index.js +26 -26
  42. package/dist/commands/long-task.js +15 -15
  43. package/dist/lib/design-resource-fact-policy.d.ts +25 -0
  44. package/dist/lib/design-resource-fact-policy.js +35 -0
  45. package/dist/lib/design-resource-handoff-shape-evidence.d.ts +3 -1
  46. package/dist/lib/design-resource-handoff-shape-evidence.js +57 -0
  47. package/dist/lib/design-resource-handoff-shape.js +5 -1
  48. package/dist/lib/design-resource-handoff-types.d.ts +27 -0
  49. package/dist/lib/design-resource-handoff-validation-coverage.d.ts +1 -1
  50. package/dist/lib/design-resource-handoff-validation-coverage.js +41 -14
  51. package/dist/lib/design-resource-handoff-validation-facts.d.ts +2 -0
  52. package/dist/lib/design-resource-handoff-validation-facts.js +97 -0
  53. package/dist/lib/design-resource-handoff-validation.js +10 -1
  54. package/dist/lib/long-task-design-resource-handoff.js +19 -6
  55. package/dist/lib/long-task-evidence-capability-codec.js +10 -0
  56. package/dist/lib/long-task-evidence-capability-runtime.js +3 -0
  57. package/dist/lib/long-task-evidence-capability-types.d.ts +1 -0
  58. package/dist/lib/long-task-playwright-evidence.js +1 -0
  59. package/dist/lib/long-task-semantic-drift-migration.js +1 -1
  60. package/dist/lib/long-task-ui-design-policy.js +7 -0
  61. package/dist/lib/long-task-ui-surface-shape.js +12 -1
  62. package/dist/lib/long-task-ui-surface-types.d.ts +1 -0
  63. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +3 -1
  64. package/migrations/README.md +15 -15
  65. package/package.json +83 -83
  66. package/source-mappings.yaml +25 -25
@@ -67,13 +67,16 @@ function validateCoverageClaims(contract, contractTarget, indexed) {
67
67
  const rows = indexed.preflight.handoff.coverage.filter((row) => row.disposition === "covered" && row.target_refs.includes(target.key));
68
68
  if (!rows.length)
69
69
  invalid("target_covered_claims_required", target.key);
70
+ const facts = indexed.preflight.handoff.facts.filter((fact) => fact.target_ref === target.key);
71
+ if (!facts.length)
72
+ invalid("target_facts_required", target.key);
70
73
  const claimsBySourceItem = new Map();
71
74
  for (const row of rows)
72
75
  for (const sourceItemRef of row.source_item_refs) {
73
76
  const localClaims = designSourceItemClaims(contract, contractTarget, indexed, sourceItemRef, claims);
74
77
  claimsBySourceItem.set(sourceItemRef, localClaims);
75
78
  }
76
- validateVerificationMethodBindings(target, check, rows, claimsBySourceItem);
79
+ validateVerificationMethodBindings(target, check, facts, claimsBySourceItem);
77
80
  }
78
81
  function validateBlockerBindings(contract, contractTarget, indexed) {
79
82
  const bound = new Map(contractTarget.binding.acceptance_blockers.map((item) => [item.key, item]));
@@ -137,8 +140,8 @@ function designSourceItemClaims(contract, contractTarget, indexed, sourceItemRef
137
140
  return claimRef.slice(prefix.length);
138
141
  });
139
142
  }
140
- function validateVerificationMethodBindings(target, check, rows, claimsBySourceItem) {
141
- const expectedMethods = new Set(rows.flatMap((row) => row.verification_methods));
143
+ function validateVerificationMethodBindings(target, check, facts, claimsBySourceItem) {
144
+ const expectedMethods = new Set(facts.map((fact) => fact.verification_method));
142
145
  const bindings = target.verification_method_bindings;
143
146
  assertSameSet(bindings.map((item) => item.method), [...expectedMethods], "verification_methods_mismatch", target.key);
144
147
  const assertionRefs = bindings.map((item) => item.assertion_ref);
@@ -146,13 +149,14 @@ function validateVerificationMethodBindings(target, check, rows, claimsBySourceI
146
149
  invalid("verification_method_assertion_duplicate", target.key);
147
150
  if (assertionRefs.includes(target.conformance_assertion_ref))
148
151
  invalid("verification_method_assertion_must_be_independent", target.key);
152
+ const boundFactRefs = [];
149
153
  for (const binding of bindings) {
150
154
  const assertion = check.positive_assertions.find((item) => item.key === binding.assertion_ref);
151
155
  if (!assertion)
152
156
  invalid("verification_method_assertion_unknown", `${target.key}:${binding.method}:${binding.assertion_ref}`);
153
- const sourceItems = new Set(rows
154
- .filter((row) => row.verification_methods.includes(binding.method))
155
- .flatMap((row) => row.source_item_refs));
157
+ const sourceItems = new Set(facts
158
+ .filter((fact) => fact.verification_method === binding.method)
159
+ .flatMap((fact) => fact.source_item_refs));
156
160
  for (const sourceItemRef of sourceItems)
157
161
  for (const claimRef of claimsBySourceItem.get(sourceItemRef) ?? [])
158
162
  if (!assertion.claims.includes(claimRef))
@@ -161,7 +165,16 @@ function validateVerificationMethodBindings(target, check, rows, claimsBySourceI
161
165
  if (!assertion.evidence_capabilities.includes(capability))
162
166
  invalid("verification_method_capability_required", `${target.key}:${binding.method}:${capability}`);
163
167
  assertSameSet(binding.evidence_artifacts.map((item) => item.condition_key), target.condition_keys, "verification_method_evidence_conditions_mismatch", `${target.key}:${binding.method}`);
168
+ for (const artifact of binding.evidence_artifacts) {
169
+ const expectedFactRefs = facts
170
+ .filter((fact) => fact.verification_method === binding.method &&
171
+ fact.condition_ref === artifact.condition_key)
172
+ .map((fact) => fact.key);
173
+ assertSameSet(artifact.fact_refs, expectedFactRefs, "design_method_fact_refs_mismatch", `${target.key}:${binding.method}:${artifact.condition_key}`);
174
+ boundFactRefs.push(...artifact.fact_refs);
175
+ }
164
176
  }
177
+ assertSameSet(boundFactRefs, facts.map((fact) => fact.key), "design_method_fact_refs_mismatch", target.key);
165
178
  }
166
179
  function requiredCapabilities(method) {
167
180
  if (method === "interaction_trace")
@@ -202,11 +202,13 @@ function decodeRecord(value, index) {
202
202
  "condition_key",
203
203
  "artifact_path",
204
204
  "observation_artifact_path",
205
+ "fact_refs",
205
206
  ]);
206
207
  return {
207
208
  condition_key: key(cell.condition_key, `${cellLabel}.condition_key`),
208
209
  artifact_path: nonEmpty(cell.artifact_path, `${cellLabel}.artifact_path`),
209
210
  observation_artifact_path: nonEmpty(cell.observation_artifact_path, `${cellLabel}.observation_artifact_path`),
211
+ fact_refs: designFactRefs(cell.fact_refs, `${cellLabel}.fact_refs`),
210
212
  };
211
213
  }),
212
214
  };
@@ -273,6 +275,14 @@ function strings(value, label) {
273
275
  function keys(value, label) {
274
276
  return array(value, label).map((item, index) => key(item, `${label}[${index}]`));
275
277
  }
278
+ function designFactRefs(value, label) {
279
+ return array(value, label).map((item, index) => {
280
+ const result = nonEmpty(item, `${label}[${index}]`);
281
+ if (!/^[a-z0-9][a-z0-9._-]*$/u.test(result))
282
+ throw invalidRecord(`${label}[${index}]`);
283
+ return result;
284
+ });
285
+ }
276
286
  function sha(value, label) {
277
287
  const result = nonEmpty(value, label);
278
288
  if (!/^[a-f0-9]{64}$/u.test(result))
@@ -53,6 +53,7 @@ function validateDesignMethod(check, record, artifactHashes) {
53
53
  {
54
54
  artifact_path: item.path,
55
55
  observation_artifact_path: item.observation_path,
56
+ fact_refs: item.fact_refs,
56
57
  },
57
58
  ]));
58
59
  if (record.cells.length !== expected.size)
@@ -62,6 +63,8 @@ function validateDesignMethod(check, record, artifactHashes) {
62
63
  if (expectedCell?.artifact_path !== cell.artifact_path ||
63
64
  expectedCell?.observation_artifact_path !== cell.observation_artifact_path)
64
65
  return "design_method_artifact_path_mismatch";
66
+ if (!same([...cell.fact_refs].sort(), [...(expectedCell?.fact_refs ?? [])].sort()))
67
+ return "design_method_fact_refs_mismatch";
65
68
  if (!artifactHashes[cell.artifact_path])
66
69
  return "design_method_artifact_missing";
67
70
  if (!artifactHashes[cell.observation_artifact_path])
@@ -80,6 +80,7 @@ export interface DesignMethodEvidenceV2 extends EvidenceRecordBaseV2 {
80
80
  condition_key: string;
81
81
  artifact_path: string;
82
82
  observation_artifact_path: string;
83
+ fact_refs: string[];
83
84
  }>;
84
85
  }
85
86
  export interface InputVariationEvidenceV2 extends EvidenceRecordBaseV2 {
@@ -127,6 +127,7 @@ function evidenceRecordsForCases(check, cases) {
127
127
  condition_key: artifact.condition_key,
128
128
  artifact_path: artifact.path,
129
129
  observation_artifact_path: artifact.observation_path,
130
+ fact_refs: artifact.fact_refs,
130
131
  })),
131
132
  });
132
133
  }
@@ -70,7 +70,7 @@ function collectOutcome(outcome, label, missing) {
70
70
  for (const [methodIndex, method] of rows(target.verification_method_bindings).entries()) {
71
71
  required(method, `${label}.product.surface_bindings[${bindingIndex}].design_targets[${targetIndex}].verification_method_bindings[${methodIndex}]`, ["evidence_artifacts"], missing);
72
72
  for (const [artifactIndex, artifact] of rows(method.evidence_artifacts).entries())
73
- required(artifact, `${label}.product.surface_bindings[${bindingIndex}].design_targets[${targetIndex}].verification_method_bindings[${methodIndex}].evidence_artifacts[${artifactIndex}]`, ["observation_path"], missing);
73
+ required(artifact, `${label}.product.surface_bindings[${bindingIndex}].design_targets[${targetIndex}].verification_method_bindings[${methodIndex}].evidence_artifacts[${artifactIndex}]`, ["observation_path", "fact_refs"], missing);
74
74
  }
75
75
  }
76
76
  }
@@ -19,6 +19,7 @@ function validateDesignTargets({ outcome, binding, outcomeClaims, checks, carrie
19
19
  if (!target.verification_method_bindings.length)
20
20
  issue(report, "ui_design_target_verification_methods_required", label);
21
21
  const methodArtifactPaths = new Set();
22
+ const methodFactRefs = new Set();
22
23
  for (const [name, values] of [
23
24
  ["source_paths", target.source_paths],
24
25
  ["condition_keys", target.condition_keys],
@@ -60,6 +61,12 @@ function validateDesignTargets({ outcome, binding, outcomeClaims, checks, carrie
60
61
  if (!sameSet(conditionKeys, target.condition_keys))
61
62
  issue(report, "ui_design_method_evidence_conditions_mismatch", `${label}:${methodBinding.method}`);
62
63
  for (const artifact of methodBinding.evidence_artifacts) {
64
+ unique(artifact.fact_refs, "ui_design_method_fact_ref_duplicate", `${label}:${methodBinding.method}:${artifact.condition_key}`, report);
65
+ for (const factRef of artifact.fact_refs) {
66
+ if (methodFactRefs.has(factRef))
67
+ issue(report, "ui_design_method_fact_ref_reused", `${label}:${factRef}`);
68
+ methodFactRefs.add(factRef);
69
+ }
63
70
  for (const [kind, artifactPath] of [
64
71
  ["record", artifact.path],
65
72
  ["observation", artifact.observation_path],
@@ -1,6 +1,6 @@
1
1
  import { DESIGN_RESOURCE_VERIFICATION_METHODS } from "./design-resource-handoff-types.js";
2
2
  import { EXECUTION_TARGET_CAPABILITIES } from "./execution-target-capabilities.js";
3
- import { array, key, literal, object, repositoryFile, repositoryFiles, string, strings, } from "./long-task-shape-primitives.js";
3
+ import { array, fail, key, literal, object, repositoryFile, repositoryFiles, string, strings, } from "./long-task-shape-primitives.js";
4
4
  export function parseSurfaceBindings(value, label) {
5
5
  return array(value, label).map((item, index) => {
6
6
  const itemLabel = `${label}[${index}]`;
@@ -99,11 +99,13 @@ function parseVerificationMethodBindings(value, label) {
99
99
  "condition_key",
100
100
  "path",
101
101
  "observation_path",
102
+ "fact_refs",
102
103
  ]);
103
104
  return {
104
105
  condition_key: key(entry.condition_key, `${artifactLabel}.condition_key`),
105
106
  path: repositoryFile(entry.path, `${artifactLabel}.path`),
106
107
  observation_path: repositoryFile(entry.observation_path, `${artifactLabel}.observation_path`),
108
+ fact_refs: designFactRefs(entry.fact_refs, `${artifactLabel}.fact_refs`),
107
109
  };
108
110
  }),
109
111
  };
@@ -112,3 +114,12 @@ function parseVerificationMethodBindings(value, label) {
112
114
  function keys(value, label) {
113
115
  return array(value, label).map((item, index) => key(item, `${label}[${index}]`));
114
116
  }
117
+ function designFactRefs(value, label) {
118
+ return array(value, label).map((item, index) => {
119
+ const itemLabel = `${label}[${index}]`;
120
+ const result = string(item, itemLabel);
121
+ if (!/^[a-z0-9][a-z0-9._-]*$/u.test(result))
122
+ fail(itemLabel, "must match ^[a-z0-9][a-z0-9._-]*$");
123
+ return result;
124
+ });
125
+ }
@@ -8,6 +8,7 @@ export interface DeliveryDesignVerificationBindingV2 {
8
8
  condition_key: string;
9
9
  path: string;
10
10
  observation_path: string;
11
+ fact_refs: string[];
11
12
  }>;
12
13
  }
13
14
  export interface DeliveryDesignTargetV2 {
@@ -39,6 +39,8 @@
39
39
  ],
40
40
  "$defs": {
41
41
  "key": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
42
+ "designFactKey": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" },
43
+ "designFactRefs": { "type": "array", "items": { "$ref": "#/$defs/designFactKey" }, "uniqueItems": true },
42
44
  "nonEmpty": { "type": "string", "minLength": 1 },
43
45
  "nonEmptyStrings": { "type": "array", "items": { "$ref": "#/$defs/nonEmpty" } },
44
46
  "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"] },
@@ -304,7 +306,7 @@
304
306
  "properties": {
305
307
  "method": { "$ref": "#/$defs/designVerificationMethod" },
306
308
  "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" } } } }
309
+ "evidence_artifacts": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["condition_key", "path", "observation_path", "fact_refs"], "properties": { "condition_key": { "$ref": "#/$defs/key" }, "path": { "$ref": "#/$defs/nonEmpty" }, "observation_path": { "$ref": "#/$defs/nonEmpty" }, "fact_refs": { "$ref": "#/$defs/designFactRefs" } } } }
308
310
  }
309
311
  }
310
312
  },
@@ -1,15 +1,15 @@
1
- # Migrations
2
-
3
- Schema migrations for Harness config and managed file layout belong here.
4
-
5
- Version 0.6.0 includes `long-task-v1-retirement`. It safely removes the
6
- retired repo-local Hook, reports a legacy active projection as
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.
1
+ # Migrations
2
+
3
+ Schema migrations for Harness config and managed file layout belong here.
4
+
5
+ Version 0.6.0 includes `long-task-v1-retirement`. It safely removes the
6
+ retired repo-local Hook, reports a legacy active projection as
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.
package/package.json CHANGED
@@ -1,84 +1,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",
1
+ {
2
+ "name": "project-tiny-context-harness",
3
+ "version": "0.8.3",
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
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
- }
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,25 +1,25 @@
1
- source_mappings:
2
- - source: ".codex/ty-context-managed/agents/AGENTS_CORE.md"
3
- target: "packages/ty-context/assets/agents/AGENTS_CORE.md"
4
- mode: "copy-file"
5
- - source: "README.md"
6
- target: "packages/ty-context/assets/README.md"
7
- mode: "copy-file"
8
- - source: "README.zh-CN.md"
9
- target: "packages/ty-context/assets/README.zh-CN.md"
10
- mode: "copy-file"
11
- - source: ".codex/ty-context-managed/context_templates"
12
- target: "packages/ty-context/assets/context_templates"
13
- mode: "copy-tree"
14
- - source: ".codex/ty-context-managed/skills"
15
- target: "packages/ty-context/assets/skills"
16
- mode: "copy-tree"
17
- - source: ".codex/ty-context-managed/make/ty-context.mk"
18
- target: "packages/ty-context/assets/make/ty-context.mk"
19
- mode: "copy-file"
20
- - source: ".codex/ty-context-managed/minimal_tools"
21
- target: "packages/ty-context/assets/tools"
22
- mode: "copy-tree"
23
- - source: ".github/workflows/harness.yml"
24
- target: "packages/ty-context/assets/github/harness.yml"
25
- mode: "copy-file"
1
+ source_mappings:
2
+ - source: ".codex/ty-context-managed/agents/AGENTS_CORE.md"
3
+ target: "packages/ty-context/assets/agents/AGENTS_CORE.md"
4
+ mode: "copy-file"
5
+ - source: "README.md"
6
+ target: "packages/ty-context/assets/README.md"
7
+ mode: "copy-file"
8
+ - source: "README.zh-CN.md"
9
+ target: "packages/ty-context/assets/README.zh-CN.md"
10
+ mode: "copy-file"
11
+ - source: ".codex/ty-context-managed/context_templates"
12
+ target: "packages/ty-context/assets/context_templates"
13
+ mode: "copy-tree"
14
+ - source: ".codex/ty-context-managed/skills"
15
+ target: "packages/ty-context/assets/skills"
16
+ mode: "copy-tree"
17
+ - source: ".codex/ty-context-managed/make/ty-context.mk"
18
+ target: "packages/ty-context/assets/make/ty-context.mk"
19
+ mode: "copy-file"
20
+ - source: ".codex/ty-context-managed/minimal_tools"
21
+ target: "packages/ty-context/assets/tools"
22
+ mode: "copy-tree"
23
+ - source: ".github/workflows/harness.yml"
24
+ target: "packages/ty-context/assets/github/harness.yml"
25
+ mode: "copy-file"