project-tiny-context-harness 0.8.10 → 0.8.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +490 -472
- package/assets/README.md +762 -749
- package/assets/README.zh-CN.md +446 -431
- package/assets/agents/.gitkeep +1 -1
- package/assets/agents/AGENTS_CORE.md +17 -23
- package/assets/agents/long-task-implementation.toml +15 -0
- package/assets/context_templates/architecture.md +18 -18
- package/assets/context_templates/area.md +30 -30
- package/assets/context_templates/context.toml +24 -24
- package/assets/context_templates/deployment.md +35 -35
- package/assets/context_templates/global.md +56 -56
- package/assets/context_templates/product-surface-contract.md +70 -70
- package/assets/context_templates/screen-contract.md +189 -189
- package/assets/context_templates/verification.md +25 -25
- package/assets/github/.gitkeep +1 -1
- package/assets/github/harness.yml +39 -39
- package/assets/make/.gitkeep +1 -1
- package/assets/make/ty-context.mk +48 -48
- package/assets/skills/context_development_engineer/SKILL.md +64 -185
- package/assets/skills/context_full_project_export/SKILL.md +28 -28
- package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
- package/assets/skills/context_product_plan/SKILL.md +35 -101
- package/assets/skills/context_surface_contract/SKILL.md +194 -191
- package/assets/skills/context_uiux_design/SKILL.md +49 -172
- package/assets/skills/design-resource-authoring/SKILL.md +52 -88
- package/assets/skills/design-resource-authoring/references/downstream-handoff.md +51 -163
- package/assets/skills/design-resource-authoring/references/formal-selected-web-app-handoff.md +96 -0
- package/assets/skills/design-resource-authoring/references/open-design-provider.md +119 -119
- package/assets/skills/design-resource-authoring/references/resource-selection.md +158 -181
- package/assets/skills/design-system-authoring/SKILL.md +57 -57
- package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
- package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
- package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
- package/assets/skills/long-task-workflow/SKILL.md +71 -106
- package/assets/skills/long-task-workflow/agents/openai.yaml +1 -1
- package/assets/skills/long-task-workflow/references/authority-lifecycle.md +71 -69
- package/assets/skills/long-task-workflow/references/contract-authoring.md +98 -94
- package/assets/skills/long-task-workflow/references/evidence-design.md +67 -63
- package/assets/skills/long-task-workflow/references/source-authoring.md +90 -90
- package/assets/tools/validate_context.py +442 -442
- package/dist/commands/design-resource.js +9 -2
- package/dist/commands/enable.js +2 -0
- package/dist/commands/index.js +1 -1
- package/dist/commands/long-task-revision.js +8 -7
- package/dist/commands/sync.js +2 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.js +2 -1
- package/dist/lib/compact-authoring-support.d.ts +22 -0
- package/dist/lib/compact-authoring-support.js +143 -0
- package/dist/lib/compact-shared-structure-authoring.d.ts +5 -0
- package/dist/lib/compact-shared-structure-authoring.js +9 -0
- package/dist/lib/compact-shared-structure-types.d.ts +61 -0
- package/dist/lib/compact-shared-structure-types.js +1 -0
- package/dist/lib/compact-shared-structure-validation.d.ts +2 -0
- package/dist/lib/compact-shared-structure-validation.js +159 -0
- package/dist/lib/compact-shared-structures.d.ts +3 -0
- package/dist/lib/compact-shared-structures.js +204 -0
- package/dist/lib/design-resource-fact-enums.d.ts +4 -0
- package/dist/lib/design-resource-fact-enums.js +12 -0
- package/dist/lib/design-resource-fact-manifest-shape-evidence.js +2 -2
- package/dist/lib/design-resource-fact-manifest-validation.d.ts +2 -1
- package/dist/lib/design-resource-fact-policy.d.ts +2 -2
- package/dist/lib/design-resource-fact-types.d.ts +2 -2
- package/dist/lib/design-resource-handoff-bundle-draft.d.ts +11 -0
- package/dist/lib/design-resource-handoff-bundle-draft.js +40 -0
- package/dist/lib/design-resource-handoff-bundle.js +4 -28
- package/dist/lib/design-resource-handoff-input-types.d.ts +14 -0
- package/dist/lib/design-resource-handoff-input-types.js +1 -0
- package/dist/lib/design-resource-handoff-manifest-projection.d.ts +2 -1
- package/dist/lib/design-resource-handoff-parser.d.ts +2 -2
- package/dist/lib/design-resource-handoff-parser.js +2 -2
- package/dist/lib/design-resource-handoff-shape.d.ts +4 -1
- package/dist/lib/design-resource-handoff-shape.js +10 -0
- package/dist/lib/design-resource-handoff-snapshot.d.ts +1 -1
- package/dist/lib/design-resource-handoff-snapshot.js +4 -0
- package/dist/lib/design-resource-handoff-types.d.ts +0 -10
- package/dist/lib/design-resource-handoff-validation.d.ts +6 -2
- package/dist/lib/design-resource-handoff-validation.js +11 -0
- package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +4 -2
- package/dist/lib/design-resource-symbolic-applicability-authority.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-applicability-authority.js +19 -0
- package/dist/lib/design-resource-symbolic-applicability-policy.d.ts +12 -0
- package/dist/lib/design-resource-symbolic-applicability-policy.js +79 -0
- package/dist/lib/design-resource-symbolic-applicability-profiles.d.ts +8 -0
- package/dist/lib/design-resource-symbolic-applicability-profiles.js +55 -0
- package/dist/lib/design-resource-symbolic-applicability-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-applicability-shape.js +76 -0
- package/dist/lib/design-resource-symbolic-applicability-validation.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-applicability-validation.js +128 -0
- package/dist/lib/design-resource-symbolic-compilation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-compilation.js +13 -0
- package/dist/lib/design-resource-symbolic-denotation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-denotation.js +167 -0
- package/dist/lib/design-resource-symbolic-disposition-validation.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-disposition-validation.js +28 -0
- package/dist/lib/design-resource-symbolic-fact-policy.d.ts +12 -0
- package/dist/lib/design-resource-symbolic-fact-policy.js +12 -0
- package/dist/lib/design-resource-symbolic-fact-shape.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-fact-shape.js +138 -0
- package/dist/lib/design-resource-symbolic-fact-types.d.ts +213 -0
- package/dist/lib/design-resource-symbolic-fact-types.js +1 -0
- package/dist/lib/design-resource-symbolic-fact-validation.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-fact-validation.js +86 -0
- package/dist/lib/design-resource-symbolic-indexes.d.ts +23 -0
- package/dist/lib/design-resource-symbolic-indexes.js +54 -0
- package/dist/lib/design-resource-symbolic-manifest-shape.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-manifest-shape.js +155 -0
- package/dist/lib/design-resource-symbolic-manifest-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-manifest-validation.js +132 -0
- package/dist/lib/design-resource-symbolic-noninterference-artifact.d.ts +33 -0
- package/dist/lib/design-resource-symbolic-noninterference-artifact.js +110 -0
- package/dist/lib/design-resource-symbolic-noninterference-equivalence.d.ts +3 -0
- package/dist/lib/design-resource-symbolic-noninterference-equivalence.js +77 -0
- package/dist/lib/design-resource-symbolic-noninterference-recompute.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-noninterference-recompute.js +146 -0
- package/dist/lib/design-resource-symbolic-noninterference-scope.d.ts +7 -0
- package/dist/lib/design-resource-symbolic-noninterference-scope.js +49 -0
- package/dist/lib/design-resource-symbolic-noninterference-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-noninterference-shape.js +152 -0
- package/dist/lib/design-resource-symbolic-noninterference-types.d.ts +103 -0
- package/dist/lib/design-resource-symbolic-noninterference-types.js +1 -0
- package/dist/lib/design-resource-symbolic-noninterference-validation.d.ts +5 -0
- package/dist/lib/design-resource-symbolic-noninterference-validation.js +62 -0
- package/dist/lib/design-resource-symbolic-oracle-fingerprint.d.ts +1 -0
- package/dist/lib/design-resource-symbolic-oracle-fingerprint.js +47 -0
- package/dist/lib/design-resource-symbolic-predicate-shape.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-predicate-shape.js +123 -0
- package/dist/lib/design-resource-symbolic-production-closure.d.ts +4 -0
- package/dist/lib/design-resource-symbolic-production-closure.js +144 -0
- package/dist/lib/design-resource-symbolic-proof-authority-validation.d.ts +10 -0
- package/dist/lib/design-resource-symbolic-proof-authority-validation.js +68 -0
- package/dist/lib/design-resource-symbolic-proof-validation.d.ts +10 -0
- package/dist/lib/design-resource-symbolic-proof-validation.js +89 -0
- package/dist/lib/design-resource-symbolic-region-validation.d.ts +19 -0
- package/dist/lib/design-resource-symbolic-region-validation.js +146 -0
- package/dist/lib/design-resource-symbolic-resource-validation.d.ts +5 -0
- package/dist/lib/design-resource-symbolic-resource-validation.js +90 -0
- package/dist/lib/design-resource-symbolic-rule-shape.d.ts +27 -0
- package/dist/lib/design-resource-symbolic-rule-shape.js +158 -0
- package/dist/lib/design-resource-symbolic-safety-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-safety-validation.js +29 -0
- package/dist/lib/design-resource-symbolic-source-ir-evaluation.d.ts +19 -0
- package/dist/lib/design-resource-symbolic-source-ir-evaluation.js +74 -0
- package/dist/lib/design-resource-symbolic-source-ir-evidence.d.ts +44 -0
- package/dist/lib/design-resource-symbolic-source-ir-evidence.js +88 -0
- package/dist/lib/design-resource-symbolic-source-ir-oracle.d.ts +13 -0
- package/dist/lib/design-resource-symbolic-source-ir-oracle.js +96 -0
- package/dist/lib/design-resource-symbolic-source-ir-proof.d.ts +14 -0
- package/dist/lib/design-resource-symbolic-source-ir-proof.js +98 -0
- package/dist/lib/design-resource-symbolic-source-ir-shape.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-source-ir-shape.js +38 -0
- package/dist/lib/design-resource-symbolic-source-ir-types.d.ts +17 -0
- package/dist/lib/design-resource-symbolic-source-ir-types.js +2 -0
- package/dist/lib/design-resource-symbolic-static-dependency-validation.d.ts +2 -0
- package/dist/lib/design-resource-symbolic-static-dependency-validation.js +83 -0
- package/dist/lib/design-resource-symbolic-structural-closure-validation.d.ts +6 -0
- package/dist/lib/design-resource-symbolic-structural-closure-validation.js +79 -0
- package/dist/lib/design-resource-symbolic-validation-support.d.ts +29 -0
- package/dist/lib/design-resource-symbolic-validation-support.js +111 -0
- package/dist/lib/design-resource-v1-capacity-header.d.ts +8 -0
- package/dist/lib/design-resource-v1-capacity-header.js +231 -0
- package/dist/lib/design-resource-v1-capacity.d.ts +5 -0
- package/dist/lib/design-resource-v1-capacity.js +45 -0
- package/dist/lib/init.js +1 -0
- package/dist/lib/long-task-activation-validation.js +2 -2
- package/dist/lib/long-task-authority-policy.d.ts +3 -0
- package/dist/lib/long-task-authority-policy.js +3 -0
- package/dist/lib/long-task-codex-agent-profile.d.ts +42 -0
- package/dist/lib/long-task-codex-agent-profile.js +276 -0
- package/dist/lib/long-task-compact-authoring-projections.d.ts +12 -0
- package/dist/lib/long-task-compact-authoring-projections.js +67 -0
- package/dist/lib/long-task-compact-authoring.d.ts +3 -0
- package/dist/lib/long-task-compact-authoring.js +173 -0
- package/dist/lib/long-task-compact-carrier.d.ts +7 -0
- package/dist/lib/long-task-compact-carrier.js +132 -0
- package/dist/lib/long-task-compact-parser.d.ts +14 -0
- package/dist/lib/long-task-compact-parser.js +123 -0
- package/dist/lib/long-task-compact-primitives.d.ts +22 -0
- package/dist/lib/long-task-compact-primitives.js +132 -0
- package/dist/lib/long-task-compact-projections.d.ts +4 -0
- package/dist/lib/long-task-compact-projections.js +153 -0
- package/dist/lib/long-task-compact-structure-targets.d.ts +2 -0
- package/dist/lib/long-task-compact-structure-targets.js +90 -0
- package/dist/lib/long-task-counterfactual-sandbox.d.ts +1 -1
- package/dist/lib/long-task-counterfactual-sandbox.js +7 -5
- package/dist/lib/long-task-delivery-parser.d.ts +1 -0
- package/dist/lib/long-task-delivery-parser.js +38 -6
- package/dist/lib/long-task-design-resource-handoff.d.ts +2 -1
- package/dist/lib/long-task-design-resource-handoff.js +71 -11
- package/dist/lib/long-task-design-resource-method-binding.d.ts +8 -1
- package/dist/lib/long-task-design-resource-method-binding.js +150 -0
- package/dist/lib/long-task-evidence-capability-codec.js +256 -34
- package/dist/lib/long-task-evidence-capability-policy.js +28 -0
- package/dist/lib/long-task-evidence-capability-runtime.js +271 -63
- package/dist/lib/long-task-evidence-capability-types.d.ts +70 -2
- package/dist/lib/long-task-evidence-v2.d.ts +1 -1
- package/dist/lib/long-task-evidence-v2.js +5 -5
- package/dist/lib/long-task-hook-install.d.ts +19 -2
- package/dist/lib/long-task-hook-install.js +288 -91
- package/dist/lib/long-task-playwright-capability-records.d.ts +2 -0
- package/dist/lib/long-task-playwright-capability-records.js +74 -2
- package/dist/lib/long-task-runner-freeze.d.ts +1 -1
- package/dist/lib/long-task-runner-freeze.js +4 -2
- package/dist/lib/long-task-semantic-contract-types.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-binding-types.d.ts +8 -0
- package/dist/lib/long-task-semantic-fact-closure.js +4 -1
- package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-closure.js +15 -3
- package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-facts.js +4 -1
- package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +1 -1
- package/dist/lib/long-task-semantic-fact-contract-proofs.js +12 -3
- package/dist/lib/long-task-semantic-fact-evidence.d.ts +5 -1
- package/dist/lib/long-task-semantic-fact-evidence.js +47 -4
- package/dist/lib/long-task-semantic-fact-shape.js +17 -6
- package/dist/lib/long-task-shape-primitives.d.ts +1 -1
- package/dist/lib/long-task-shape-primitives.js +1 -0
- package/dist/lib/long-task-source-item-parser.d.ts +2 -2
- package/dist/lib/long-task-source-item-parser.js +20 -11
- package/dist/lib/long-task-ui-design-policy.js +64 -4
- package/dist/lib/long-task-ui-surface-shape.js +195 -0
- package/dist/lib/long-task-ui-surface-types.d.ts +53 -0
- package/dist/lib/long-task-verifier-v2.js +1 -1
- package/dist/lib/long-task-worker-selection.d.ts +2 -0
- package/dist/lib/long-task-worker-selection.js +7 -0
- package/dist/lib/long-task-workspace-scope.js +3 -1
- package/dist/lib/long-task-workspace.js +11 -1
- package/dist/lib/migrations.js +58 -0
- package/dist/lib/profiles.js +0 -1
- package/dist/lib/semantic-fact-compact-authoring.d.ts +2 -0
- package/dist/lib/semantic-fact-compact-authoring.js +160 -0
- package/dist/lib/semantic-fact-compact-capacity.d.ts +9 -0
- package/dist/lib/semantic-fact-compact-capacity.js +40 -0
- package/dist/lib/semantic-fact-compact-carrier.d.ts +16 -0
- package/dist/lib/semantic-fact-compact-carrier.js +146 -0
- package/dist/lib/semantic-fact-compact-parser.d.ts +17 -0
- package/dist/lib/semantic-fact-compact-parser.js +168 -0
- package/dist/lib/semantic-fact-compact-revision.d.ts +11 -0
- package/dist/lib/semantic-fact-compact-revision.js +64 -0
- package/dist/lib/semantic-fact-compact-support.d.ts +23 -0
- package/dist/lib/semantic-fact-compact-support.js +159 -0
- package/dist/lib/semantic-fact-policy-census.d.ts +1 -0
- package/dist/lib/semantic-fact-policy-census.js +43 -0
- package/dist/lib/semantic-fact-proof-shape.d.ts +1 -1
- package/dist/lib/semantic-fact-property-shape.d.ts +1 -1
- package/dist/lib/semantic-fact-source-parser.d.ts +5 -0
- package/dist/lib/semantic-fact-source-parser.js +47 -6
- package/dist/lib/structural-closure-cost.d.ts +79 -0
- package/dist/lib/structural-closure-cost.js +91 -0
- package/dist/lib/symbolic-denotation-dag-builder.d.ts +25 -0
- package/dist/lib/symbolic-denotation-dag-builder.js +176 -0
- package/dist/lib/symbolic-denotation-domain-validation.d.ts +3 -0
- package/dist/lib/symbolic-denotation-domain-validation.js +56 -0
- package/dist/lib/symbolic-denotation-engine.d.ts +32 -0
- package/dist/lib/symbolic-denotation-engine.js +140 -0
- package/dist/lib/symbolic-denotation-public.d.ts +11 -0
- package/dist/lib/symbolic-denotation-public.js +12 -0
- package/dist/lib/symbolic-denotation-runtime.d.ts +20 -0
- package/dist/lib/symbolic-denotation-runtime.js +90 -0
- package/dist/lib/symbolic-denotation-support.d.ts +11 -0
- package/dist/lib/symbolic-denotation-support.js +49 -0
- package/dist/lib/symbolic-denotation-types.d.ts +133 -0
- package/dist/lib/symbolic-denotation-types.js +18 -0
- package/dist/lib/symbolic-denotation-validation.d.ts +6 -0
- package/dist/lib/symbolic-denotation-validation.js +126 -0
- package/dist/lib/sync-engine.d.ts +1 -0
- package/dist/lib/sync-engine.js +4 -1
- package/dist/lib/upgrade.js +1 -0
- package/dist/long-task-hook.js +40 -1
- package/dist/public-types.d.ts +8 -0
- package/dist/public-types.js +1 -0
- package/dist/schemas/design-resource-symbolic-noninterference-artifact-v2.schema.json +289 -0
- package/dist/schemas/design-resource-symbolic-source-ir-v1.schema.json +130 -0
- package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +390 -5
- package/migrations/README.md +15 -15
- package/package.json +2 -2
- package/source-mappings.yaml +28 -25
- package/assets/skills/source-plan-authoring/SKILL.md +0 -14
|
@@ -30,6 +30,8 @@ export function validateRuntimeEvidenceRecord(check, record, artifactHashes) {
|
|
|
30
30
|
return validateDesignConformance(check, record, artifactHashes);
|
|
31
31
|
case "design_method":
|
|
32
32
|
return validateDesignMethod(check, record, artifactHashes);
|
|
33
|
+
case "design_symbolic_certificate":
|
|
34
|
+
return validateDesignSymbolicCertificate(check, record, artifactHashes);
|
|
33
35
|
case "semantic_fact":
|
|
34
36
|
return validateSemanticFactEvidence(check, record, artifactHashes);
|
|
35
37
|
case "target_runtime":
|
|
@@ -39,6 +41,11 @@ export function validateRuntimeEvidenceRecord(check, record, artifactHashes) {
|
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
function validateDesignMethod(check, record, artifactHashes) {
|
|
44
|
+
return "fact_model" in record
|
|
45
|
+
? validateSymbolicDesignMethod(check, record, artifactHashes)
|
|
46
|
+
: validateGroundDesignMethod(check, record, artifactHashes);
|
|
47
|
+
}
|
|
48
|
+
function validateGroundDesignMethod(check, record, artifactHashes) {
|
|
42
49
|
const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
|
|
43
50
|
item.verification_method_bindings.some((binding) => binding.assertion_ref === record.assertion_key &&
|
|
44
51
|
binding.method === record.method));
|
|
@@ -49,6 +56,9 @@ function validateDesignMethod(check, record, artifactHashes) {
|
|
|
49
56
|
return "target_mismatch";
|
|
50
57
|
const binding = target.verification_method_bindings.find((item) => item.assertion_ref === record.assertion_key &&
|
|
51
58
|
item.method === record.method);
|
|
59
|
+
return validateGroundDesignCells(target, binding, record, artifactHashes);
|
|
60
|
+
}
|
|
61
|
+
function validateGroundDesignCells(target, binding, record, artifactHashes) {
|
|
52
62
|
if (!same([...record.cells.map((item) => item.condition_key)].sort(), [...target.condition_keys].sort()))
|
|
53
63
|
return "design_method_conditions_mismatch";
|
|
54
64
|
const expected = new Map(binding.evidence_artifacts.map((item) => [
|
|
@@ -62,6 +72,9 @@ function validateDesignMethod(check, record, artifactHashes) {
|
|
|
62
72
|
]));
|
|
63
73
|
if (record.cells.length !== expected.size)
|
|
64
74
|
return "design_method_cell_count_mismatch";
|
|
75
|
+
return validateGroundCellSet(record, expected, artifactHashes);
|
|
76
|
+
}
|
|
77
|
+
function validateGroundCellSet(record, expected, artifactHashes) {
|
|
65
78
|
for (const cell of record.cells) {
|
|
66
79
|
const expectedCell = expected.get(cell.condition_key);
|
|
67
80
|
if (expectedCell?.artifact_path !== cell.artifact_path ||
|
|
@@ -75,68 +88,262 @@ function validateDesignMethod(check, record, artifactHashes) {
|
|
|
75
88
|
return "design_method_artifact_missing";
|
|
76
89
|
if (!artifactHashes[cell.observation_artifact_path])
|
|
77
90
|
return "design_method_observation_artifact_missing";
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
91
|
+
const resultIssue = validateGroundCellResults(cell, expectedCell, artifactHashes);
|
|
92
|
+
if (resultIssue)
|
|
93
|
+
return resultIssue;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
function validateGroundCellResults(cell, expectedCell, artifactHashes) {
|
|
98
|
+
const expectations = new Map(expectedCell.fact_expectations.map((item) => [item.fact_ref, item]));
|
|
99
|
+
const actualIdentities = new Set();
|
|
100
|
+
const comparisonIdentities = new Set();
|
|
101
|
+
for (const result of cell.fact_results) {
|
|
102
|
+
const expectation = expectations.get(result.fact_ref);
|
|
103
|
+
if (!expectation)
|
|
104
|
+
return "design_method_fact_expectation_missing";
|
|
105
|
+
const identityIssue = validateGroundFactIdentity(result, expectation);
|
|
106
|
+
if (identityIssue)
|
|
107
|
+
return identityIssue;
|
|
108
|
+
const authorityIssue = validateGroundFactAuthority(result, expectation);
|
|
109
|
+
if (authorityIssue)
|
|
110
|
+
return authorityIssue;
|
|
111
|
+
const artifactIssue = validateGroundFactArtifacts(result, expectation, cell, artifactHashes);
|
|
112
|
+
if (artifactIssue)
|
|
113
|
+
return artifactIssue;
|
|
114
|
+
const actualIdentity = `${result.actual_observation.artifact_path}\0${canonicalJson(result.actual_observation.locator)}`;
|
|
115
|
+
if (actualIdentities.has(actualIdentity))
|
|
116
|
+
return "design_method_actual_observation_reused";
|
|
117
|
+
actualIdentities.add(actualIdentity);
|
|
118
|
+
const comparisonIdentity = `${result.comparison.artifact_path}\0${canonicalJson(result.comparison.locator)}`;
|
|
119
|
+
if (comparisonIdentities.has(comparisonIdentity))
|
|
120
|
+
return "design_method_comparison_result_reused";
|
|
121
|
+
comparisonIdentities.add(comparisonIdentity);
|
|
122
|
+
if (result.verdict !== "passed" || result.comparison.passed !== true)
|
|
123
|
+
return "design_method_fact_failed";
|
|
124
|
+
}
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
function validateGroundFactIdentity(result, expectation) {
|
|
128
|
+
if (result.subject_ref !== expectation.subject_ref ||
|
|
129
|
+
result.variation_ref !== expectation.variation_ref ||
|
|
130
|
+
result.property_ref !== expectation.property_ref ||
|
|
131
|
+
result.actual_observation.sensitivity !==
|
|
132
|
+
expectation.observation_sensitivity)
|
|
133
|
+
return "design_method_fact_identity_mismatch";
|
|
134
|
+
if ((result.actual_observation.sensitivity === "plain" &&
|
|
135
|
+
result.actual_observation.redaction !== null) ||
|
|
136
|
+
(result.actual_observation.sensitivity === "protected" &&
|
|
137
|
+
result.actual_observation.redaction === null))
|
|
138
|
+
return "design_method_observation_protection_mismatch";
|
|
139
|
+
return canonicalJson(result.expected) === canonicalJson(expectation.expected)
|
|
140
|
+
? null
|
|
141
|
+
: "design_method_expected_value_mismatch";
|
|
142
|
+
}
|
|
143
|
+
function validateGroundFactAuthority(result, expectation) {
|
|
144
|
+
if (result.comparison.comparator !== expectation.comparison.comparator ||
|
|
145
|
+
result.comparison.mode !== expectation.comparison.mode ||
|
|
146
|
+
canonicalJson(result.comparison.parameters) !==
|
|
147
|
+
canonicalJson(expectation.comparison.parameters) ||
|
|
148
|
+
canonicalJson(result.comparison.tolerance) !==
|
|
149
|
+
canonicalJson(expectation.comparison.tolerance) ||
|
|
150
|
+
canonicalJson(result.comparison.mask) !==
|
|
151
|
+
canonicalJson(expectation.comparison.mask))
|
|
152
|
+
return "design_method_comparison_authority_mismatch";
|
|
153
|
+
return canonicalJson(result.oracle) === canonicalJson(expectation.oracle) &&
|
|
154
|
+
canonicalJson(result.environment) === canonicalJson(expectation.environment)
|
|
155
|
+
? null
|
|
156
|
+
: "design_method_oracle_environment_mismatch";
|
|
157
|
+
}
|
|
158
|
+
function validateGroundFactArtifacts(result, expectation, cell, artifactHashes) {
|
|
159
|
+
if (result.actual_observation.artifact_path !==
|
|
160
|
+
cell.observation_artifact_path ||
|
|
161
|
+
result.actual_observation.artifact_sha256 !==
|
|
162
|
+
artifactHashes[cell.observation_artifact_path])
|
|
163
|
+
return "design_method_actual_observation_mismatch";
|
|
164
|
+
if (result.actual_environment.artifact_path !==
|
|
165
|
+
cell.observation_artifact_path ||
|
|
166
|
+
result.actual_environment.artifact_sha256 !==
|
|
167
|
+
artifactHashes[cell.observation_artifact_path] ||
|
|
168
|
+
result.actual_environment.value_sha256 !==
|
|
169
|
+
expectation.environment.definition.sha256)
|
|
170
|
+
return "design_method_actual_environment_mismatch";
|
|
171
|
+
return result.comparison.artifact_path === cell.artifact_path &&
|
|
172
|
+
result.comparison.artifact_sha256 === artifactHashes[cell.artifact_path]
|
|
173
|
+
? null
|
|
174
|
+
: "design_method_comparison_artifact_mismatch";
|
|
175
|
+
}
|
|
176
|
+
function validateSymbolicDesignMethod(check, record, artifactHashes) {
|
|
177
|
+
const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
|
|
178
|
+
item.fact_model === "symbolic_rules_v2" &&
|
|
179
|
+
(item.symbolic_method_bindings ?? []).some((binding) => binding.assertion_ref === record.assertion_key &&
|
|
180
|
+
binding.method === record.method));
|
|
181
|
+
if (!target)
|
|
182
|
+
return "design_symbolic_method_binding_unknown";
|
|
183
|
+
if (target.target_ref !== record.target_ref ||
|
|
184
|
+
target.target_ref !== check.execution_target.target_ref)
|
|
185
|
+
return "target_mismatch";
|
|
186
|
+
const binding = target.symbolic_method_bindings.find((item) => item.assertion_ref === record.assertion_key &&
|
|
187
|
+
item.method === record.method);
|
|
188
|
+
if (binding.artifact_path !== record.artifact_path ||
|
|
189
|
+
binding.observation_path !== record.observation_artifact_path)
|
|
190
|
+
return "design_symbolic_method_artifact_path_mismatch";
|
|
191
|
+
if (!artifactHashes[record.artifact_path])
|
|
192
|
+
return "design_symbolic_method_artifact_missing";
|
|
193
|
+
if (!artifactHashes[record.observation_artifact_path])
|
|
194
|
+
return "design_symbolic_method_observation_artifact_missing";
|
|
195
|
+
const expectedRefs = binding.rule_expectations
|
|
196
|
+
.map((item) => item.obligation_ref)
|
|
197
|
+
.sort();
|
|
198
|
+
const actualRefs = record.rule_results
|
|
199
|
+
.map((item) => item.obligation_ref)
|
|
200
|
+
.sort();
|
|
201
|
+
if (new Set(actualRefs).size !== actualRefs.length ||
|
|
202
|
+
!same(actualRefs, expectedRefs))
|
|
203
|
+
return "design_symbolic_method_obligations_mismatch";
|
|
204
|
+
return validateSymbolicRuleResults(binding, record, artifactHashes);
|
|
205
|
+
}
|
|
206
|
+
function validateSymbolicRuleResults(binding, record, artifactHashes) {
|
|
207
|
+
const expectations = new Map(binding.rule_expectations.map((item) => [item.obligation_ref, item]));
|
|
208
|
+
const actualIdentities = new Set();
|
|
209
|
+
const comparisonIdentities = new Set();
|
|
210
|
+
for (const result of record.rule_results) {
|
|
211
|
+
const expectation = expectations.get(result.obligation_ref);
|
|
212
|
+
if (!expectation)
|
|
213
|
+
return "design_symbolic_method_expectation_missing";
|
|
214
|
+
const identityIssue = validateSymbolicResultIdentity(result, expectation);
|
|
215
|
+
if (identityIssue)
|
|
216
|
+
return identityIssue;
|
|
217
|
+
const authorityIssue = validateSymbolicResultAuthority(result, expectation);
|
|
218
|
+
if (authorityIssue)
|
|
219
|
+
return authorityIssue;
|
|
220
|
+
const artifactIssue = validateSymbolicResultArtifacts(result, expectation, record, artifactHashes);
|
|
221
|
+
if (artifactIssue)
|
|
222
|
+
return artifactIssue;
|
|
223
|
+
const actualIdentity = `${result.actual_observation.artifact_path}\0${canonicalJson(result.actual_observation.locator)}`;
|
|
224
|
+
if (actualIdentities.has(actualIdentity))
|
|
225
|
+
return "design_symbolic_method_actual_observation_reused";
|
|
226
|
+
actualIdentities.add(actualIdentity);
|
|
227
|
+
const comparisonIdentity = `${result.comparison.artifact_path}\0${canonicalJson(result.comparison.locator)}`;
|
|
228
|
+
if (comparisonIdentities.has(comparisonIdentity))
|
|
229
|
+
return "design_symbolic_method_comparison_result_reused";
|
|
230
|
+
comparisonIdentities.add(comparisonIdentity);
|
|
231
|
+
if (result.verdict !== "passed" || result.comparison.passed !== true)
|
|
232
|
+
return "design_symbolic_method_obligation_failed";
|
|
233
|
+
}
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
function validateSymbolicResultIdentity(result, expectation) {
|
|
237
|
+
if (result.fact_rule_ref !== expectation.fact_rule_ref ||
|
|
238
|
+
result.region_sha256 !== expectation.region_sha256 ||
|
|
239
|
+
result.subject_or_relation_ref !== expectation.subject_or_relation_ref ||
|
|
240
|
+
result.property_ref !== expectation.property_ref ||
|
|
241
|
+
result.population_ref !== expectation.population_ref ||
|
|
242
|
+
canonicalJson(result.quantifier) !==
|
|
243
|
+
canonicalJson(expectation.quantifier) ||
|
|
244
|
+
result.observation_sensitivity !== expectation.observation_sensitivity)
|
|
245
|
+
return "design_symbolic_method_identity_mismatch";
|
|
246
|
+
if (result.actual_observation.sensitivity !==
|
|
247
|
+
expectation.observation_sensitivity ||
|
|
248
|
+
(result.actual_observation.sensitivity === "plain" &&
|
|
249
|
+
result.actual_observation.redaction !== null) ||
|
|
250
|
+
(result.actual_observation.sensitivity === "protected" &&
|
|
251
|
+
result.actual_observation.redaction === null))
|
|
252
|
+
return "design_symbolic_method_observation_protection_mismatch";
|
|
253
|
+
return canonicalJson(result.expected) === canonicalJson(expectation.expected)
|
|
254
|
+
? null
|
|
255
|
+
: "design_symbolic_method_expected_value_mismatch";
|
|
256
|
+
}
|
|
257
|
+
function validateSymbolicResultAuthority(result, expectation) {
|
|
258
|
+
if (result.proof_surface !== expectation.proof_surface ||
|
|
259
|
+
result.observation_boundary !== expectation.observation_boundary ||
|
|
260
|
+
result.protected_value_policy !== expectation.protected_value_policy ||
|
|
261
|
+
result.completion_effect !== expectation.completion_effect)
|
|
262
|
+
return "design_symbolic_method_proof_denotation_mismatch";
|
|
263
|
+
if (result.comparison.comparator !== expectation.comparison.comparator ||
|
|
264
|
+
result.comparison.mode !== expectation.comparison.mode ||
|
|
265
|
+
canonicalJson(result.comparison.parameters) !==
|
|
266
|
+
canonicalJson(expectation.comparison.parameters) ||
|
|
267
|
+
canonicalJson(result.comparison.tolerance) !==
|
|
268
|
+
canonicalJson(expectation.comparison.tolerance) ||
|
|
269
|
+
canonicalJson(result.comparison.mask) !==
|
|
270
|
+
canonicalJson(expectation.comparison.mask))
|
|
271
|
+
return "design_symbolic_method_comparison_authority_mismatch";
|
|
272
|
+
return canonicalJson(result.oracle) === canonicalJson(expectation.oracle) &&
|
|
273
|
+
canonicalJson(result.environment) === canonicalJson(expectation.environment)
|
|
274
|
+
? null
|
|
275
|
+
: "design_symbolic_method_oracle_environment_mismatch";
|
|
276
|
+
}
|
|
277
|
+
function validateSymbolicResultArtifacts(result, expectation, record, artifactHashes) {
|
|
278
|
+
if (result.actual_observation.artifact_path !==
|
|
279
|
+
record.observation_artifact_path ||
|
|
280
|
+
result.actual_observation.artifact_sha256 !==
|
|
281
|
+
artifactHashes[record.observation_artifact_path])
|
|
282
|
+
return "design_symbolic_method_actual_observation_mismatch";
|
|
283
|
+
if (result.actual_environment.artifact_path !==
|
|
284
|
+
record.observation_artifact_path ||
|
|
285
|
+
result.actual_environment.artifact_sha256 !==
|
|
286
|
+
artifactHashes[record.observation_artifact_path] ||
|
|
287
|
+
result.actual_environment.value_sha256 !==
|
|
288
|
+
expectation.environment.definition.sha256)
|
|
289
|
+
return "design_symbolic_method_actual_environment_mismatch";
|
|
290
|
+
return result.comparison.artifact_path === record.artifact_path &&
|
|
291
|
+
result.comparison.artifact_sha256 === artifactHashes[record.artifact_path]
|
|
292
|
+
? null
|
|
293
|
+
: "design_symbolic_method_comparison_artifact_mismatch";
|
|
294
|
+
}
|
|
295
|
+
function validateDesignSymbolicCertificate(check, record, artifactHashes) {
|
|
296
|
+
const target = (check.design_conformance_targets ?? []).find((item) => item.key === record.design_target_ref &&
|
|
297
|
+
item.fact_model === "symbolic_rules_v2" &&
|
|
298
|
+
item.symbolic_certificate_binding?.assertion_ref === record.assertion_key);
|
|
299
|
+
if (!target)
|
|
300
|
+
return "design_symbolic_certificate_binding_unknown";
|
|
301
|
+
if (target.target_ref !== record.target_ref ||
|
|
302
|
+
target.target_ref !== check.execution_target.target_ref)
|
|
303
|
+
return "target_mismatch";
|
|
304
|
+
const binding = target.symbolic_certificate_binding;
|
|
305
|
+
if (record.artifact_path !== binding.artifact_path)
|
|
306
|
+
return "design_symbolic_certificate_artifact_path_mismatch";
|
|
307
|
+
if (artifactHashes[record.artifact_path] !== record.artifact_sha256)
|
|
308
|
+
return "design_symbolic_certificate_artifact_hash_mismatch";
|
|
309
|
+
if (canonicalJson(record.metrics) !== canonicalJson(binding.metrics))
|
|
310
|
+
return "design_symbolic_certificate_metrics_mismatch";
|
|
311
|
+
const expectedRefs = binding.expectations
|
|
312
|
+
.map((item) => item.certificate_ref)
|
|
313
|
+
.sort();
|
|
314
|
+
const actualRefs = record.certificate_results
|
|
315
|
+
.map((item) => item.certificate_ref)
|
|
316
|
+
.sort();
|
|
317
|
+
if (new Set(actualRefs).size !== actualRefs.length ||
|
|
318
|
+
!same(actualRefs, expectedRefs))
|
|
319
|
+
return "design_symbolic_certificate_results_mismatch";
|
|
320
|
+
const expectations = new Map(binding.expectations.map((item) => [item.certificate_ref, item]));
|
|
321
|
+
for (const result of record.certificate_results) {
|
|
322
|
+
const expectation = expectations.get(result.certificate_ref);
|
|
323
|
+
if (!expectation)
|
|
324
|
+
return "design_symbolic_certificate_expectation_missing";
|
|
325
|
+
if (canonicalJson({
|
|
326
|
+
certificate_ref: result.certificate_ref,
|
|
327
|
+
fact_rule_refs: result.fact_rule_refs,
|
|
328
|
+
omitted_axis_refs: result.omitted_axis_refs,
|
|
329
|
+
dependency_edge_refs: result.dependency_edge_refs,
|
|
330
|
+
canonical_rule_dag_sha256: result.canonical_rule_dag_sha256,
|
|
331
|
+
...(result.source_noninterference_proof_sha256 === undefined
|
|
332
|
+
? {}
|
|
333
|
+
: {
|
|
334
|
+
source_noninterference_proof_sha256: result.source_noninterference_proof_sha256,
|
|
335
|
+
}),
|
|
336
|
+
...(result.production_noninterference_proof_sha256 === undefined
|
|
337
|
+
? {}
|
|
338
|
+
: {
|
|
339
|
+
production_noninterference_proof_sha256: result.production_noninterference_proof_sha256,
|
|
340
|
+
}),
|
|
341
|
+
}) !== canonicalJson(expectation))
|
|
342
|
+
return "design_symbolic_certificate_denotation_mismatch";
|
|
343
|
+
if (result.recomputed !== true)
|
|
344
|
+
return "design_symbolic_certificate_not_recomputed";
|
|
345
|
+
if (result.verdict !== "passed")
|
|
346
|
+
return "design_symbolic_certificate_failed";
|
|
140
347
|
}
|
|
141
348
|
return null;
|
|
142
349
|
}
|
|
@@ -171,7 +378,8 @@ function validateDesignConformance(check, record, artifactHashes) {
|
|
|
171
378
|
}
|
|
172
379
|
function designTargetUsesAssertion(target, assertionKey) {
|
|
173
380
|
return (target.conformance_assertion_ref === assertionKey ||
|
|
174
|
-
target.verification_method_bindings.some((item) => item.assertion_ref === assertionKey)
|
|
381
|
+
target.verification_method_bindings.some((item) => item.assertion_ref === assertionKey) ||
|
|
382
|
+
(target.symbolic_method_bindings ?? []).some((item) => item.assertion_ref === assertionKey));
|
|
175
383
|
}
|
|
176
384
|
function validateInteractionTrace(check, record) {
|
|
177
385
|
if (record.target_ref !== check.execution_target.target_ref)
|
|
@@ -77,7 +77,7 @@ export interface TargetRuntimeEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
|
77
77
|
session_id: string;
|
|
78
78
|
cold_start: boolean;
|
|
79
79
|
}
|
|
80
|
-
export interface
|
|
80
|
+
export interface DesignGroundMethodEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
81
81
|
capability: "design_method";
|
|
82
82
|
design_target_ref: string;
|
|
83
83
|
target_ref: string;
|
|
@@ -140,12 +140,80 @@ export interface DesignFactResultV2 {
|
|
|
140
140
|
definition: DesignResourceLocatedDigestV1;
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
|
+
export interface DesignSymbolicMethodEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
144
|
+
capability: "design_method";
|
|
145
|
+
fact_model: "symbolic_rules_v2";
|
|
146
|
+
design_target_ref: string;
|
|
147
|
+
target_ref: string;
|
|
148
|
+
method: DesignResourceVerificationMethod;
|
|
149
|
+
artifact_path: string;
|
|
150
|
+
observation_artifact_path: string;
|
|
151
|
+
rule_results: DesignSymbolicRuleResultV2[];
|
|
152
|
+
}
|
|
153
|
+
export interface DesignSymbolicRuleResultV2 {
|
|
154
|
+
obligation_ref: string;
|
|
155
|
+
fact_rule_ref: string;
|
|
156
|
+
region_sha256: string;
|
|
157
|
+
subject_or_relation_ref: string;
|
|
158
|
+
property_ref: string;
|
|
159
|
+
population_ref: string | null;
|
|
160
|
+
quantifier: {
|
|
161
|
+
kind: "one" | "all" | "any" | "none" | "exactly" | "at_least" | "at_most" | "range";
|
|
162
|
+
minimum: number | null;
|
|
163
|
+
maximum: number | null;
|
|
164
|
+
};
|
|
165
|
+
actual_observation: DesignFactResultV2["actual_observation"];
|
|
166
|
+
actual_environment: DesignFactResultV2["actual_environment"];
|
|
167
|
+
observation_sensitivity: "plain" | "protected";
|
|
168
|
+
expected: DesignResourceLocatedDigestV1;
|
|
169
|
+
proof_surface: string;
|
|
170
|
+
observation_boundary: string;
|
|
171
|
+
comparison: DesignFactResultV2["comparison"];
|
|
172
|
+
verdict: "passed" | "failed";
|
|
173
|
+
oracle: DesignFactResultV2["oracle"];
|
|
174
|
+
environment: DesignFactResultV2["environment"];
|
|
175
|
+
protected_value_policy: string;
|
|
176
|
+
completion_effect: string;
|
|
177
|
+
}
|
|
178
|
+
export type DesignMethodEvidenceV2 = DesignGroundMethodEvidenceV2 | DesignSymbolicMethodEvidenceV2;
|
|
179
|
+
export interface DesignSymbolicCertificateEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
180
|
+
capability: "design_symbolic_certificate";
|
|
181
|
+
design_target_ref: string;
|
|
182
|
+
target_ref: string;
|
|
183
|
+
artifact_path: string;
|
|
184
|
+
artifact_sha256: string;
|
|
185
|
+
metrics: {
|
|
186
|
+
semantic_obligations: number;
|
|
187
|
+
certificate_obligations: number;
|
|
188
|
+
certificate_covered_omitted_axes: number;
|
|
189
|
+
certificate_covered_dependency_edges: number;
|
|
190
|
+
canonical_dag_nodes: number;
|
|
191
|
+
canonical_partition_edges: number;
|
|
192
|
+
canonical_bytes: number;
|
|
193
|
+
theoretical_ground_cardinality: string;
|
|
194
|
+
};
|
|
195
|
+
certificate_results: Array<{
|
|
196
|
+
certificate_ref: string;
|
|
197
|
+
fact_rule_refs: string[];
|
|
198
|
+
omitted_axis_refs: string[];
|
|
199
|
+
dependency_edge_refs: string[];
|
|
200
|
+
canonical_rule_dag_sha256: string;
|
|
201
|
+
source_noninterference_proof_sha256?: string;
|
|
202
|
+
production_noninterference_proof_sha256?: string;
|
|
203
|
+
recomputed: true;
|
|
204
|
+
verdict: "passed" | "failed";
|
|
205
|
+
}>;
|
|
206
|
+
}
|
|
143
207
|
export interface SemanticFactEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
144
208
|
capability: "semantic_fact";
|
|
145
209
|
manifest_ref: string;
|
|
146
210
|
manifest_sha256: string;
|
|
147
211
|
outcome_ref: string;
|
|
148
212
|
target_ref: string;
|
|
213
|
+
fact_key?: string;
|
|
214
|
+
fact_revision_digest?: string;
|
|
215
|
+
obligation_key?: string;
|
|
216
|
+
obligation_revision_digest?: string;
|
|
149
217
|
fact_ref: string;
|
|
150
218
|
proof_ref: string;
|
|
151
219
|
method: string;
|
|
@@ -204,5 +272,5 @@ export interface InputVariationEvidenceV2 extends EvidenceRecordBaseV2 {
|
|
|
204
272
|
}>;
|
|
205
273
|
failure_case_observed: boolean;
|
|
206
274
|
}
|
|
207
|
-
export type EvidenceCapabilityRecordV2 = InteractionTraceEvidenceV2 | StateDeltaEvidenceV2 | CrossSurfaceConsistencyEvidenceV2 | DurableReadbackEvidenceV2 | BoundaryInvocationEvidenceV2 | ExternalSideEffectEvidenceV2 | FailureInjectionEvidenceV2 | VisualRenderEvidenceV2 | DesignConformanceEvidenceV2 | DesignMethodEvidenceV2 | SemanticFactEvidenceV2 | TargetRuntimeEvidenceV2 | InputVariationEvidenceV2;
|
|
275
|
+
export type EvidenceCapabilityRecordV2 = InteractionTraceEvidenceV2 | StateDeltaEvidenceV2 | CrossSurfaceConsistencyEvidenceV2 | DurableReadbackEvidenceV2 | BoundaryInvocationEvidenceV2 | ExternalSideEffectEvidenceV2 | FailureInjectionEvidenceV2 | VisualRenderEvidenceV2 | DesignConformanceEvidenceV2 | DesignMethodEvidenceV2 | DesignSymbolicCertificateEvidenceV2 | SemanticFactEvidenceV2 | TargetRuntimeEvidenceV2 | InputVariationEvidenceV2;
|
|
208
276
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CheckExecutionResultV2, CompiledCheckV2, CompiledDeliveryContractV2, CompiledOutcomeV2, LongTaskFindingV2, RawCommandExecutionV2, WorkspaceManifestV2 } from "./long-task-delivery-types.js";
|
|
2
2
|
export declare function evaluateCheckEvidence(check: CompiledCheckV2, raw: RawCommandExecutionV2, snapshotRoot: string, outcome?: CompiledOutcomeV2): Promise<CheckExecutionResultV2>;
|
|
3
|
-
export declare function evaluateOutcomeCounterfactuals(outcome: CompiledOutcomeV2, snapshotRoot: string, manifest?: WorkspaceManifestV2): Promise<LongTaskFindingV2[]>;
|
|
3
|
+
export declare function evaluateOutcomeCounterfactuals(outcome: CompiledOutcomeV2, snapshotRoot: string, manifest?: WorkspaceManifestV2, protectedAuthorityPaths?: readonly string[]): Promise<LongTaskFindingV2[]>;
|
|
4
4
|
export declare function evaluateGlobalCounterfactuals(compiled: CompiledDeliveryContractV2, snapshotRoot: string, selectedCheckKeys?: ReadonlySet<string>, manifest?: WorkspaceManifestV2): Promise<LongTaskFindingV2[]>;
|
|
5
5
|
export declare function isValidCounterfactualCheckResult(result: CheckExecutionResultV2, expectedAssertionFailures: string[]): boolean;
|
|
@@ -93,7 +93,7 @@ function collectExecutionFindings(check, raw, outcome, artifacts, assertionResul
|
|
|
93
93
|
result.passed && capabilityEvaluation.complete[result.key] === true;
|
|
94
94
|
return findings;
|
|
95
95
|
}
|
|
96
|
-
export async function evaluateOutcomeCounterfactuals(outcome, snapshotRoot, manifest) {
|
|
96
|
+
export async function evaluateOutcomeCounterfactuals(outcome, snapshotRoot, manifest, protectedAuthorityPaths = []) {
|
|
97
97
|
return evaluateCounterfactualSet(outcome.acceptance.counterfactual_controls.map((control) => ({
|
|
98
98
|
control,
|
|
99
99
|
check: outcome.acceptance.checks.find((item) => item.key === control.check_key),
|
|
@@ -101,7 +101,7 @@ export async function evaluateOutcomeCounterfactuals(outcome, snapshotRoot, mani
|
|
|
101
101
|
findingOutcomeKey: outcome.key,
|
|
102
102
|
owningOutcome: outcome,
|
|
103
103
|
bindingRef: `${outcome.key}.${control.binding_key}`,
|
|
104
|
-
})), snapshotRoot, manifest);
|
|
104
|
+
})), snapshotRoot, manifest, protectedAuthorityPaths);
|
|
105
105
|
}
|
|
106
106
|
export async function evaluateGlobalCounterfactuals(compiled, snapshotRoot, selectedCheckKeys, manifest) {
|
|
107
107
|
return evaluateCounterfactualSet((compiled.global.acceptance.counterfactual_controls ?? [])
|
|
@@ -115,14 +115,14 @@ export async function evaluateGlobalCounterfactuals(compiled, snapshotRoot, sele
|
|
|
115
115
|
owningOutcome: compiled.outcomes.find((outcome) => outcome.key === outcomeKey),
|
|
116
116
|
bindingRef: control.binding_ref,
|
|
117
117
|
};
|
|
118
|
-
}), snapshotRoot, manifest);
|
|
118
|
+
}), snapshotRoot, manifest, compiled.context_snapshot.files);
|
|
119
119
|
}
|
|
120
|
-
async function evaluateCounterfactualSet(entries, snapshotRoot, manifest) {
|
|
120
|
+
async function evaluateCounterfactualSet(entries, snapshotRoot, manifest, protectedAuthorityPaths = []) {
|
|
121
121
|
const findings = [];
|
|
122
122
|
for (const entry of entries) {
|
|
123
123
|
const { control, check } = entry;
|
|
124
124
|
const owningBinding = entry.owningOutcome.technical.bindings.find((binding) => `${entry.owningOutcome.key}.${binding.key}` === entry.bindingRef);
|
|
125
|
-
const sandbox = await createCounterfactualSandbox(snapshotRoot, check, control, owningBinding?.carrier_paths ?? [], manifest);
|
|
125
|
+
const sandbox = await createCounterfactualSandbox(snapshotRoot, check, control, owningBinding?.carrier_paths ?? [], manifest, protectedAuthorityPaths);
|
|
126
126
|
const root = sandbox.root;
|
|
127
127
|
try {
|
|
128
128
|
const mutationTargets = control.mutation.type === "remove_paths"
|
|
@@ -1,6 +1,23 @@
|
|
|
1
|
+
import { type Stats } from "node:fs";
|
|
1
2
|
import type { SyncReport } from "./sync-engine.js";
|
|
2
|
-
export declare
|
|
3
|
-
export
|
|
3
|
+
export declare const LONG_TASK_HOOK_TRUST_REVIEW_NOTICE = "Codex Hook review required: open /hooks and trust the current Tiny Context project Hook before relying on PreToolUse, SubagentStart, SessionStart or Stop behavior. Tiny Context cannot observe or persist Codex Hook trust.";
|
|
4
|
+
export interface LongTaskHookFileOperations {
|
|
5
|
+
lstat(target: string): Promise<Stats>;
|
|
6
|
+
readFile(target: string, encoding: "utf8"): Promise<string>;
|
|
7
|
+
mkdir(target: string, options: {
|
|
8
|
+
recursive: true;
|
|
9
|
+
}): Promise<unknown>;
|
|
10
|
+
writeFile(target: string, content: string, options: {
|
|
11
|
+
flag: "wx";
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
rename(source: string, destination: string): Promise<void>;
|
|
14
|
+
rm(target: string, options: {
|
|
15
|
+
force: true;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
randomId(): string;
|
|
18
|
+
}
|
|
19
|
+
export declare function installLongTaskHooks(projectRoot: string, report: SyncReport, fileOperations?: Partial<LongTaskHookFileOperations>): Promise<void>;
|
|
20
|
+
export declare function uninstallLongTaskHooks(projectRoot: string, report: SyncReport, fileOperations?: Partial<LongTaskHookFileOperations>): Promise<void>;
|
|
4
21
|
export declare function packageOwnedCommand(entry: string): string;
|
|
5
22
|
export declare function removeManagedHookEntries(groups: unknown, currentPackageCommand?: string): {
|
|
6
23
|
groups: unknown[];
|