@nebulacomponents/citable 1.18.1 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +76 -0
- package/dist/universal/.agents/skills/citable/SKILL.md +1 -1
- package/dist/universal/.agents/skills/citable/VERSION +1 -1
- package/dist/universal/.agents/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.agents/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.agents/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.agents/skills/citable/manifest.json +15 -10
- package/dist/universal/.agents/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.agents/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.agents/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.agents/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.agents/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.agents/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.agents/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.claude/agents/citable/manifest.json +2 -2
- package/dist/universal/.claude/skills/citable/SKILL.md +1 -1
- package/dist/universal/.claude/skills/citable/VERSION +1 -1
- package/dist/universal/.claude/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.claude/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.claude/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.claude/skills/citable/manifest.json +15 -10
- package/dist/universal/.claude/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.claude/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.claude/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.claude/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.claude/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.claude/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.claude/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.cursor/skills/citable/SKILL.md +1 -1
- package/dist/universal/.cursor/skills/citable/VERSION +1 -1
- package/dist/universal/.cursor/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.cursor/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.cursor/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.cursor/skills/citable/manifest.json +15 -10
- package/dist/universal/.cursor/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.cursor/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.cursor/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.cursor/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.cursor/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.cursor/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.cursor/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.gemini/skills/citable/SKILL.md +1 -1
- package/dist/universal/.gemini/skills/citable/VERSION +1 -1
- package/dist/universal/.gemini/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.gemini/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.gemini/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.gemini/skills/citable/manifest.json +15 -10
- package/dist/universal/.gemini/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.gemini/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.gemini/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.gemini/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.gemini/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.gemini/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.gemini/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.github/skills/citable/SKILL.md +1 -1
- package/dist/universal/.github/skills/citable/VERSION +1 -1
- package/dist/universal/.github/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.github/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.github/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.github/skills/citable/manifest.json +15 -10
- package/dist/universal/.github/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.github/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.github/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.github/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.github/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.github/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.github/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.kiro/skills/citable/SKILL.md +1 -1
- package/dist/universal/.kiro/skills/citable/VERSION +1 -1
- package/dist/universal/.kiro/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.kiro/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.kiro/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.kiro/skills/citable/manifest.json +15 -10
- package/dist/universal/.kiro/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.kiro/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.kiro/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.kiro/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.kiro/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.kiro/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.kiro/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.opencode/skills/citable/SKILL.md +1 -1
- package/dist/universal/.opencode/skills/citable/VERSION +1 -1
- package/dist/universal/.opencode/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.opencode/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.opencode/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.opencode/skills/citable/manifest.json +15 -10
- package/dist/universal/.opencode/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.opencode/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.opencode/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.opencode/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.opencode/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.opencode/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.opencode/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.pi/agent/skills/citable/SKILL.md +1 -1
- package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
- package/dist/universal/.pi/agent/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.pi/agent/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.pi/agent/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.pi/agent/skills/citable/manifest.json +15 -10
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.pi/agent/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.qoder/skills/citable/SKILL.md +1 -1
- package/dist/universal/.qoder/skills/citable/VERSION +1 -1
- package/dist/universal/.qoder/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.qoder/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.qoder/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.qoder/skills/citable/manifest.json +15 -10
- package/dist/universal/.qoder/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.qoder/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.qoder/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.qoder/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.qoder/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.qoder/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.qoder/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.rovodev/skills/citable/SKILL.md +1 -1
- package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
- package/dist/universal/.rovodev/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.rovodev/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.rovodev/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.rovodev/skills/citable/manifest.json +15 -10
- package/dist/universal/.rovodev/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.rovodev/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.rovodev/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.rovodev/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.rovodev/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.rovodev/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.rovodev/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.trae/skills/citable/SKILL.md +1 -1
- package/dist/universal/.trae/skills/citable/VERSION +1 -1
- package/dist/universal/.trae/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.trae/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.trae/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.trae/skills/citable/manifest.json +15 -10
- package/dist/universal/.trae/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.trae/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.trae/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.trae/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.trae/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.trae/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.trae/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/.trae-cn/skills/citable/SKILL.md +1 -1
- package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
- package/dist/universal/.trae-cn/skills/citable/commands/artifact-interchange.md +5 -0
- package/dist/universal/.trae-cn/skills/citable/commands/remediation.md +1 -1
- package/dist/universal/.trae-cn/skills/citable/commands/sow.md +2 -2
- package/dist/universal/.trae-cn/skills/citable/manifest.json +15 -10
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-evidence-plan.schema.json +186 -3
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-network-events.schema.json +142 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-runtime-events.schema.json +112 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/browser-state-observations.schema.json +97 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/cro-report.schema.json +112 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/search-report.schema.json +99 -0
- package/dist/universal/.trae-cn/skills/citable/schemas/sow.schema.json +3 -2
- package/dist/universal/manifest.json +184 -124
- package/package.json +2 -1
- package/schemas/browser-evidence-plan.schema.json +186 -3
- package/schemas/browser-network-events.schema.json +142 -0
- package/schemas/browser-runtime-events.schema.json +112 -0
- package/schemas/browser-state-observations.schema.json +97 -0
- package/schemas/cro-report.schema.json +112 -0
- package/schemas/search-report.schema.json +99 -0
- package/schemas/sow.schema.json +3 -2
- package/skill/SKILL.md +1 -1
- package/skill/commands/artifact-interchange.md +5 -0
- package/skill/commands/remediation.md +1 -1
- package/skill/commands/sow.md +2 -2
- package/src/analysis/behavioral.js +5 -4
- package/src/analysis/eeat.js +10 -9
- package/src/analysis/offpage.js +19 -36
- package/src/analysis/readiness.js +8 -2
- package/src/artifacts/verifyCustomerArtifact.js +283 -0
- package/src/cli/index.js +8 -1
- package/src/observations/browser/correlation.js +83 -0
- package/src/observations/browser/networkCollector.js +413 -0
- package/src/observations/browser/runtimeEventCollector.js +337 -0
- package/src/observations/browser/sanitizer.js +322 -0
- package/src/observations/browser/stateCollector.js +386 -0
- package/src/observations/browserJourney.js +131 -3
- package/src/reporting/executiveCroReport.js +393 -229
- package/src/reporting/executiveExport.js +6 -2
- package/src/reporting/executiveSearchReport.js +519 -271
- package/src/shared/domainUtils.js +140 -0
- package/src/shared/epistemicStatus.js +111 -0
- package/src/shared/evidenceSourceResolver.js +286 -0
- package/src/shared/htmlEscape.js +65 -0
- package/src/shared/runPackageVerifier.js +153 -0
- package/src/sow/admissibilityGate.js +20 -2
- package/src/sow/generateSow.js +125 -159
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/browser-network-events.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Browser network activity evidence artifact",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"plan_id",
|
|
10
|
+
"profile_id",
|
|
11
|
+
"collected_at",
|
|
12
|
+
"capture_policy",
|
|
13
|
+
"summary",
|
|
14
|
+
"events"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema_version": { "const": 1 },
|
|
18
|
+
"plan_id": { "type": "string" },
|
|
19
|
+
"profile_id": { "type": "string" },
|
|
20
|
+
"collected_at": { "type": "string", "format": "date-time" },
|
|
21
|
+
"capture_policy": { "type": "object" },
|
|
22
|
+
"summary": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": ["total_requests", "successful_responses", "failed_requests", "filtered_requests", "truncated", "status_codes"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"total_requests": { "type": "integer", "minimum": 0 },
|
|
28
|
+
"successful_responses": { "type": "integer", "minimum": 0 },
|
|
29
|
+
"failed_requests": { "type": "integer", "minimum": 0 },
|
|
30
|
+
"filtered_requests": { "type": "integer", "minimum": 0 },
|
|
31
|
+
"in_flight_requests": { "type": "integer", "minimum": 0 },
|
|
32
|
+
"collector_status": { "enum": ["complete", "truncated", "failed"] },
|
|
33
|
+
"truncated": { "type": "boolean" },
|
|
34
|
+
"truncation_reason": { "type": ["string", "null"] },
|
|
35
|
+
"status_codes": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"additionalProperties": { "type": "integer" }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"events": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"additionalProperties": false,
|
|
46
|
+
"required": [
|
|
47
|
+
"sequence",
|
|
48
|
+
"transaction_id",
|
|
49
|
+
"direction",
|
|
50
|
+
"phase",
|
|
51
|
+
"timing",
|
|
52
|
+
"correlation",
|
|
53
|
+
"request"
|
|
54
|
+
],
|
|
55
|
+
"properties": {
|
|
56
|
+
"sequence": { "type": "integer", "minimum": 1 },
|
|
57
|
+
"transaction_id": { "type": "string" },
|
|
58
|
+
"direction": { "enum": ["request", "response"] },
|
|
59
|
+
"phase": { "enum": ["request_sent", "response_received", "failed", "redirect"] },
|
|
60
|
+
"timing": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"additionalProperties": false,
|
|
63
|
+
"required": ["monotonic_offset_ms", "timestamp"],
|
|
64
|
+
"properties": {
|
|
65
|
+
"monotonic_offset_ms": { "type": "number", "minimum": 0 },
|
|
66
|
+
"timestamp": { "type": "string", "format": "date-time" }
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"correlation": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"additionalProperties": false,
|
|
72
|
+
"required": ["step_id", "step_sequence", "attribution_phase"],
|
|
73
|
+
"properties": {
|
|
74
|
+
"step_id": { "type": ["string", "null"] },
|
|
75
|
+
"step_sequence": { "type": ["integer", "null"] },
|
|
76
|
+
"checkpoint_id": { "type": ["string", "null"] },
|
|
77
|
+
"attribution_phase": { "enum": ["initial", "during_step", "between_steps", "post_journey", "ambiguous_async"] },
|
|
78
|
+
"initiated_step_id": { "type": ["string", "null"] },
|
|
79
|
+
"completed_step_id": { "type": ["string", "null"] },
|
|
80
|
+
"ambiguous_async": { "type": "boolean" }
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"request": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"required": ["url", "method", "scheme", "host", "path", "resource_type"],
|
|
87
|
+
"properties": {
|
|
88
|
+
"url": { "type": "string" },
|
|
89
|
+
"method": { "type": "string" },
|
|
90
|
+
"scheme": { "type": "string" },
|
|
91
|
+
"host": { "type": "string" },
|
|
92
|
+
"path": { "type": "string" },
|
|
93
|
+
"resource_type": { "type": "string" },
|
|
94
|
+
"query": { "type": ["object", "null"] },
|
|
95
|
+
"query_status": { "enum": ["captured", "not_requested", "filtered", "none_present", "redacted"] },
|
|
96
|
+
"headers": { "type": ["object", "null"] },
|
|
97
|
+
"headers_status": { "enum": ["captured", "not_requested", "filtered", "redacted"] },
|
|
98
|
+
"payload_hash": { "type": ["string", "null"] },
|
|
99
|
+
"payload_bytes": { "type": ["integer", "null"] },
|
|
100
|
+
"payload_fields": { "type": ["object", "null"] },
|
|
101
|
+
"payload_status": { "enum": ["not_requested", "captured", "filtered", "truncated", "unavailable", "hash_only"] }
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"response": {
|
|
105
|
+
"type": ["object", "null"],
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"properties": {
|
|
108
|
+
"status": { "type": "integer" },
|
|
109
|
+
"status_text": { "type": "string" },
|
|
110
|
+
"headers": { "type": ["object", "null"] },
|
|
111
|
+
"headers_status": { "enum": ["captured", "not_requested", "filtered", "redacted"] },
|
|
112
|
+
"mime_type": { "type": ["string", "null"] },
|
|
113
|
+
"body_hash": { "type": ["string", "null"] },
|
|
114
|
+
"body_bytes": { "type": ["integer", "null"] },
|
|
115
|
+
"body_fields": { "type": ["object", "null"] },
|
|
116
|
+
"body_status": { "enum": ["not_requested", "captured", "filtered", "truncated", "unavailable", "hash_only"] },
|
|
117
|
+
"redirect_url": { "type": ["string", "null"] },
|
|
118
|
+
"from_cache": { "type": "boolean" }
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"failure": {
|
|
122
|
+
"type": ["object", "null"],
|
|
123
|
+
"additionalProperties": false,
|
|
124
|
+
"properties": {
|
|
125
|
+
"error_text": { "type": "string" }
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"disposition": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"additionalProperties": false,
|
|
131
|
+
"required": ["capture_status", "redacted_count", "filtered_fields"],
|
|
132
|
+
"properties": {
|
|
133
|
+
"capture_status": { "enum": ["captured", "filtered", "redacted", "truncated", "error"] },
|
|
134
|
+
"redacted_count": { "type": "integer", "minimum": 0 },
|
|
135
|
+
"filtered_fields": { "type": "array", "items": { "type": "string" } }
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/browser-runtime-events.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Browser runtime events evidence artifact",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"plan_id",
|
|
10
|
+
"profile_id",
|
|
11
|
+
"collected_at",
|
|
12
|
+
"capture_policy",
|
|
13
|
+
"summary",
|
|
14
|
+
"events"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema_version": { "const": 1 },
|
|
18
|
+
"plan_id": { "type": "string" },
|
|
19
|
+
"profile_id": { "type": "string" },
|
|
20
|
+
"collected_at": { "type": "string", "format": "date-time" },
|
|
21
|
+
"capture_policy": { "type": "object" },
|
|
22
|
+
"summary": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": ["total_events", "by_source", "by_event_name", "truncated"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"total_events": { "type": "integer", "minimum": 0 },
|
|
28
|
+
"filtered_events": { "type": "integer", "minimum": 0 },
|
|
29
|
+
"collector_status": { "enum": ["complete", "truncated", "failed"] },
|
|
30
|
+
"by_source": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": { "type": "integer" }
|
|
33
|
+
},
|
|
34
|
+
"by_event_name": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": { "type": "integer" }
|
|
37
|
+
},
|
|
38
|
+
"truncated": { "type": "boolean" },
|
|
39
|
+
"truncation_reason": { "type": ["string", "null"] },
|
|
40
|
+
"collector_health": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"properties": {
|
|
44
|
+
"status": { "type": "string" },
|
|
45
|
+
"queue_replaced": { "type": "boolean" },
|
|
46
|
+
"push_replaced": { "type": "boolean" },
|
|
47
|
+
"polling_fallback_used": { "type": "boolean" },
|
|
48
|
+
"supported_contexts": { "type": "array", "items": { "type": "string" } },
|
|
49
|
+
"unsupported_contexts": { "type": "array", "items": { "type": "string" } }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"events": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"items": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": false,
|
|
59
|
+
"required": [
|
|
60
|
+
"sequence",
|
|
61
|
+
"source_id",
|
|
62
|
+
"event_name",
|
|
63
|
+
"timing",
|
|
64
|
+
"correlation",
|
|
65
|
+
"payload"
|
|
66
|
+
],
|
|
67
|
+
"properties": {
|
|
68
|
+
"sequence": { "type": "integer", "minimum": 1 },
|
|
69
|
+
"source_id": { "type": "string" },
|
|
70
|
+
"event_name": { "type": "string" },
|
|
71
|
+
"occurrence_index": { "type": "integer", "minimum": 1 },
|
|
72
|
+
"timing": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"required": ["monotonic_offset_ms", "timestamp"],
|
|
76
|
+
"properties": {
|
|
77
|
+
"monotonic_offset_ms": { "type": "number", "minimum": 0 },
|
|
78
|
+
"timestamp": { "type": "string", "format": "date-time" }
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"correlation": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"additionalProperties": false,
|
|
84
|
+
"required": ["step_id", "step_sequence", "attribution_phase"],
|
|
85
|
+
"properties": {
|
|
86
|
+
"step_id": { "type": ["string", "null"] },
|
|
87
|
+
"step_sequence": { "type": ["integer", "null"] },
|
|
88
|
+
"checkpoint_id": { "type": ["string", "null"] },
|
|
89
|
+
"attribution_phase": { "enum": ["initial", "during_step", "between_steps", "post_journey", "ambiguous_async"] },
|
|
90
|
+
"initiated_step_id": { "type": ["string", "null"] },
|
|
91
|
+
"completed_step_id": { "type": ["string", "null"] },
|
|
92
|
+
"ambiguous_async": { "type": "boolean" }
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"payload": {
|
|
96
|
+
"type": "object"
|
|
97
|
+
},
|
|
98
|
+
"disposition": {
|
|
99
|
+
"type": "object",
|
|
100
|
+
"additionalProperties": false,
|
|
101
|
+
"required": ["capture_status", "redacted_count", "filtered_fields"],
|
|
102
|
+
"properties": {
|
|
103
|
+
"capture_status": { "enum": ["captured", "filtered", "redacted", "truncated"] },
|
|
104
|
+
"redacted_count": { "type": "integer", "minimum": 0 },
|
|
105
|
+
"filtered_fields": { "type": "array", "items": { "type": "string" } }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "citable://schemas/browser-state-observations.schema.json",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"title": "Browser state observations evidence artifact",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema_version",
|
|
9
|
+
"plan_id",
|
|
10
|
+
"profile_id",
|
|
11
|
+
"collected_at",
|
|
12
|
+
"capture_policy",
|
|
13
|
+
"summary",
|
|
14
|
+
"checkpoints"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schema_version": { "const": 1 },
|
|
18
|
+
"plan_id": { "type": "string" },
|
|
19
|
+
"profile_id": { "type": "string" },
|
|
20
|
+
"collected_at": { "type": "string", "format": "date-time" },
|
|
21
|
+
"capture_policy": { "type": "object" },
|
|
22
|
+
"summary": {
|
|
23
|
+
"type": "object",
|
|
24
|
+
"additionalProperties": false,
|
|
25
|
+
"required": ["total_checkpoints", "total_observations", "truncated"],
|
|
26
|
+
"properties": {
|
|
27
|
+
"total_checkpoints": { "type": "integer", "minimum": 0 },
|
|
28
|
+
"total_observations": { "type": "integer", "minimum": 0 },
|
|
29
|
+
"collector_status": { "enum": ["complete", "truncated", "failed"] },
|
|
30
|
+
"truncated": { "type": "boolean" },
|
|
31
|
+
"truncation_reason": { "type": ["string", "null"] }
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"checkpoints": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"required": [
|
|
40
|
+
"checkpoint_id",
|
|
41
|
+
"sequence",
|
|
42
|
+
"timing",
|
|
43
|
+
"correlation",
|
|
44
|
+
"state"
|
|
45
|
+
],
|
|
46
|
+
"properties": {
|
|
47
|
+
"checkpoint_id": { "type": "string" },
|
|
48
|
+
"sequence": { "type": "integer", "minimum": 1 },
|
|
49
|
+
"timing": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"required": ["monotonic_offset_ms", "timestamp"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"monotonic_offset_ms": { "type": "number", "minimum": 0 },
|
|
55
|
+
"timestamp": { "type": "string", "format": "date-time" }
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"correlation": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"additionalProperties": false,
|
|
61
|
+
"required": ["step_id", "step_sequence"],
|
|
62
|
+
"properties": {
|
|
63
|
+
"step_id": { "type": ["string", "null"] },
|
|
64
|
+
"step_sequence": { "type": ["integer", "null"] }
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"state": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"required": ["url"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"url": { "type": "string" },
|
|
73
|
+
"query_params": { "type": ["object", "null"] },
|
|
74
|
+
"referrer": { "type": ["string", "null"] },
|
|
75
|
+
"navigation_type": { "type": ["string", "null"] },
|
|
76
|
+
"cookies": { "type": ["object", "null"] },
|
|
77
|
+
"local_storage": { "type": ["object", "null"] },
|
|
78
|
+
"session_storage": { "type": ["object", "null"] },
|
|
79
|
+
"globals": { "type": ["object", "null"] },
|
|
80
|
+
"dom_queries": { "type": ["object", "null"] }
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"disposition": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"required": ["observation_status", "redacted_count", "unavailable_items"],
|
|
87
|
+
"properties": {
|
|
88
|
+
"observation_status": { "enum": ["observed", "partially_observed", "truncated", "unavailable"] },
|
|
89
|
+
"redacted_count": { "type": "integer", "minimum": 0 },
|
|
90
|
+
"unavailable_items": { "type": "array", "items": { "type": "string" } }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "citable://schemas/cro-report.schema.json",
|
|
4
|
+
"title": "Enterprise CRO & Journey Intelligence Executive Report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"fact_status",
|
|
8
|
+
"report_title",
|
|
9
|
+
"client_name",
|
|
10
|
+
"target_domain",
|
|
11
|
+
"generated_at",
|
|
12
|
+
"overall_conversion_readiness",
|
|
13
|
+
"pillars",
|
|
14
|
+
"evidence_register",
|
|
15
|
+
"decision_summary",
|
|
16
|
+
"generation_provenance"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"$schema": { "type": "string" },
|
|
20
|
+
"fact_status": { "type": "string" },
|
|
21
|
+
"epistemic_status": { "type": "string" },
|
|
22
|
+
"report_title": { "type": "string" },
|
|
23
|
+
"client_name": { "type": "string" },
|
|
24
|
+
"target_domain": { "type": "string" },
|
|
25
|
+
"generated_at": { "type": "string" },
|
|
26
|
+
"overall_conversion_readiness": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
27
|
+
"epistemological_framework": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"properties": {
|
|
30
|
+
"observation": { "type": "string" },
|
|
31
|
+
"hypothesis": { "type": "string" },
|
|
32
|
+
"causation": { "type": "string" },
|
|
33
|
+
"unknowns": { "type": "string" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"pillars": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": [
|
|
39
|
+
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
|
|
40
|
+
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
|
|
41
|
+
"21", "22", "23", "24", "25"
|
|
42
|
+
],
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"patternProperties": {
|
|
45
|
+
"^[0-9]+$": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"required": ["name", "data"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"name": { "type": "string" },
|
|
50
|
+
"data": {}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"evidence_register": {
|
|
56
|
+
"type": "array",
|
|
57
|
+
"items": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"required": ["evidence_id", "source", "methodology", "confidence_level"],
|
|
60
|
+
"properties": {
|
|
61
|
+
"evidence_id": { "type": "string", "pattern": "^EVD-CRO-[0-9]+$" },
|
|
62
|
+
"source": { "type": "string" },
|
|
63
|
+
"title": { "type": "string" },
|
|
64
|
+
"observation_date": { "type": "string" },
|
|
65
|
+
"methodology": { "type": "string" },
|
|
66
|
+
"confidence_level": { "type": "string" },
|
|
67
|
+
"data_snapshot": {}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"decision_summary": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"required": [
|
|
74
|
+
"observed_conversion_failures",
|
|
75
|
+
"evidence_supported_hypotheses",
|
|
76
|
+
"causal_findings",
|
|
77
|
+
"unresolved_unknowns",
|
|
78
|
+
"recommended_interventions"
|
|
79
|
+
],
|
|
80
|
+
"properties": {
|
|
81
|
+
"observed_conversion_failures": { "type": "array", "items": { "type": "string" } },
|
|
82
|
+
"evidence_supported_hypotheses": { "type": "array", "items": { "type": "string" } },
|
|
83
|
+
"causal_findings": { "type": "array", "items": { "type": "string" } },
|
|
84
|
+
"unresolved_unknowns": { "type": "array", "items": { "type": "string" } },
|
|
85
|
+
"recommended_interventions": { "type": "array", "items": { "type": "string" } }
|
|
86
|
+
},
|
|
87
|
+
"additionalProperties": false
|
|
88
|
+
},
|
|
89
|
+
"generation_provenance": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"required": [
|
|
92
|
+
"generated_at",
|
|
93
|
+
"generator_version",
|
|
94
|
+
"generation_mode",
|
|
95
|
+
"source_type",
|
|
96
|
+
"synthetic_evidence"
|
|
97
|
+
],
|
|
98
|
+
"properties": {
|
|
99
|
+
"generated_at": { "type": "string" },
|
|
100
|
+
"generator_version": { "type": "string" },
|
|
101
|
+
"generation_mode": { "type": "string", "enum": ["CONTRACTUAL", "DRAFT", "NON_CONTRACTUAL_SAMPLE"] },
|
|
102
|
+
"source_type": { "type": "string" },
|
|
103
|
+
"source_identifier": { "type": ["string", "null"] },
|
|
104
|
+
"source_findings_count": { "type": "integer", "minimum": 0 },
|
|
105
|
+
"integrity_hash": { "type": ["string", "null"] },
|
|
106
|
+
"synthetic_evidence": { "type": "boolean" }
|
|
107
|
+
},
|
|
108
|
+
"additionalProperties": false
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"additionalProperties": false
|
|
112
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "citable://schemas/search-report.schema.json",
|
|
4
|
+
"title": "Enterprise Search Intelligence & Governance Executive Report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"fact_status",
|
|
8
|
+
"report_title",
|
|
9
|
+
"client_name",
|
|
10
|
+
"target_domain",
|
|
11
|
+
"generated_at",
|
|
12
|
+
"overall_readiness_score",
|
|
13
|
+
"pillars",
|
|
14
|
+
"evidence_register",
|
|
15
|
+
"decision_summary",
|
|
16
|
+
"generation_provenance"
|
|
17
|
+
],
|
|
18
|
+
"properties": {
|
|
19
|
+
"$schema": { "type": "string" },
|
|
20
|
+
"fact_status": { "type": "string" },
|
|
21
|
+
"epistemic_status": { "type": "string" },
|
|
22
|
+
"report_title": { "type": "string" },
|
|
23
|
+
"client_name": { "type": "string" },
|
|
24
|
+
"target_domain": { "type": "string" },
|
|
25
|
+
"generated_at": { "type": "string" },
|
|
26
|
+
"overall_readiness_score": { "type": "number", "minimum": 0, "maximum": 100 },
|
|
27
|
+
"pillars": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"required": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"patternProperties": {
|
|
32
|
+
"^[0-9]+$": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"required": ["name", "data"],
|
|
35
|
+
"properties": {
|
|
36
|
+
"name": { "type": "string" },
|
|
37
|
+
"data": {}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"evidence_register": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["evidence_id", "source", "methodology", "confidence_level"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"evidence_id": { "type": "string", "pattern": "^EVD-SRCH-[0-9]+$" },
|
|
49
|
+
"source": { "type": "string" },
|
|
50
|
+
"title": { "type": "string" },
|
|
51
|
+
"observation_date": { "type": "string" },
|
|
52
|
+
"methodology": { "type": "string" },
|
|
53
|
+
"confidence_level": { "type": "string" },
|
|
54
|
+
"data_snapshot": {}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"decision_summary": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": [
|
|
61
|
+
"confirmed_findings",
|
|
62
|
+
"inferred_opportunities",
|
|
63
|
+
"unresolved_unknowns",
|
|
64
|
+
"strategic_risks",
|
|
65
|
+
"actions_requiring_leadership_approval"
|
|
66
|
+
],
|
|
67
|
+
"properties": {
|
|
68
|
+
"confirmed_findings": { "type": "array", "items": { "type": "string" } },
|
|
69
|
+
"inferred_opportunities": { "type": "array", "items": { "type": "string" } },
|
|
70
|
+
"unresolved_unknowns": { "type": "array", "items": { "type": "string" } },
|
|
71
|
+
"strategic_risks": { "type": "array", "items": { "type": "string" } },
|
|
72
|
+
"actions_requiring_leadership_approval": { "type": "array", "items": { "type": "string" } }
|
|
73
|
+
},
|
|
74
|
+
"additionalProperties": false
|
|
75
|
+
},
|
|
76
|
+
"generation_provenance": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"required": [
|
|
79
|
+
"generated_at",
|
|
80
|
+
"generator_version",
|
|
81
|
+
"generation_mode",
|
|
82
|
+
"source_type",
|
|
83
|
+
"synthetic_evidence"
|
|
84
|
+
],
|
|
85
|
+
"properties": {
|
|
86
|
+
"generated_at": { "type": "string" },
|
|
87
|
+
"generator_version": { "type": "string" },
|
|
88
|
+
"generation_mode": { "type": "string", "enum": ["CONTRACTUAL", "DRAFT", "NON_CONTRACTUAL_SAMPLE"] },
|
|
89
|
+
"source_type": { "type": "string" },
|
|
90
|
+
"source_identifier": { "type": ["string", "null"] },
|
|
91
|
+
"source_findings_count": { "type": "integer", "minimum": 0 },
|
|
92
|
+
"integrity_hash": { "type": ["string", "null"] },
|
|
93
|
+
"synthetic_evidence": { "type": "boolean" }
|
|
94
|
+
},
|
|
95
|
+
"additionalProperties": false
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"additionalProperties": false
|
|
99
|
+
}
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"additionalProperties": false
|
|
54
54
|
},
|
|
55
|
-
"effective_date": { "type": "string" },
|
|
55
|
+
"effective_date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
56
56
|
"term_days": { "type": "integer", "minimum": 1 },
|
|
57
57
|
"currency": { "type": "string", "enum": ["USD"] },
|
|
58
58
|
"currency_minor_unit_exponent": { "type": "integer", "enum": [2] },
|
|
@@ -377,7 +377,8 @@
|
|
|
377
377
|
"evidence_ids": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
|
|
378
378
|
"severity": { "type": "string" },
|
|
379
379
|
"target_subject": { "type": "string" },
|
|
380
|
-
"acceptance_criteria": { "type": "string" }
|
|
380
|
+
"acceptance_criteria": { "type": "string" },
|
|
381
|
+
"acceptance_basis": { "type": "string" }
|
|
381
382
|
},
|
|
382
383
|
"additionalProperties": false
|
|
383
384
|
}
|
|
@@ -7,7 +7,7 @@ description: >
|
|
|
7
7
|
generative engine optimization, structured data governance, claim substantiation,
|
|
8
8
|
crawler policy, entity consistency, content discoverability, or wants a site audited
|
|
9
9
|
for how search and AI systems will retrieve, understand, cite, or recommend it.
|
|
10
|
-
version: 1.
|
|
10
|
+
version: 1.19.0
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Citable — evidence and change control for search and AI citation readiness
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.19.0
|
|
@@ -7,6 +7,7 @@ external workspaces without changing its canonical bytes.
|
|
|
7
7
|
citable artifacts export <run-id> --output <directory>
|
|
8
8
|
citable artifacts verify --input <directory>
|
|
9
9
|
citable artifacts import --input <directory>
|
|
10
|
+
citable artifacts verify-customer <file>
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
An export contains the original run package plus
|
|
@@ -26,3 +27,7 @@ was authentic, that external observations were representative or complete, or
|
|
|
26
27
|
that an intervention caused an outcome. Hosted tenancy, authentication,
|
|
27
28
|
storage, retention, billing, scheduling, and dashboards are outside this
|
|
28
29
|
contract.
|
|
30
|
+
|
|
31
|
+
Use `citable artifacts verify-customer <file>` to validate customer deliverables
|
|
32
|
+
(SOW, Search, and CRO JSON reports) against their JSON Schemas, verify arithmetic
|
|
33
|
+
consistency (e.g. minor-unit fee totals), and reject unescaped script or event handler injections.
|
|
@@ -12,7 +12,7 @@ The remediation suite provides safe, gated code fixes for deterministic technica
|
|
|
12
12
|
|
|
13
13
|
## 1. Safe Patch Application (`citable remediate`)
|
|
14
14
|
|
|
15
|
-
1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `html`). Fails closed on unknown or ambiguous frameworks.
|
|
15
|
+
1. **Framework Detection**: Identifies target source syntax (`jsx`, `tsx`, `vue`, `svelte`, `html`). Fails closed on unknown or ambiguous frameworks.
|
|
16
16
|
2. **Idempotent AST Patching**: Patches are mathematically verified to be idempotent (`applyPatchDetailed`): applying the patch a second time produces an identical AST (a fixed point).
|
|
17
17
|
3. **Structural Validation Gate**: Runs `validatePatchedSource` to confirm that the patch does not break AST structure, introduce syntax errors, or alter unrelated code blocks.
|
|
18
18
|
4. **Confidence Threshold**: Computes an explicit multi-factor confidence score (`computeConfidence`). `--write` is refused if confidence falls below `0.70`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
command: /citable sow generate [--target <dir|url>] [--run <id>] [--budget <amount>] [--budget-minor <cents>] [--format md|html|json] [--output <path>] [--sample] [--draft]
|
|
3
|
-
purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal
|
|
3
|
+
purpose: Generate a contractually binding, evidence-traceable enterprise Statement of Work (SOW) from verified audit findings through a formal 8-gate scope admissibility filter and 7-column traceability matrix.
|
|
4
4
|
preconditions: [at least one finalized audit run with verified findings or live target; sample mode required for synthetic demonstrations]
|
|
5
5
|
failure_behaviour: absent or unverified findings in contractual mode -> NoFindingsError; all findings refused -> NoAdmissibleRequirementsError; non-existent run -> RunNotFoundError; negative or sub-cent budget -> BudgetCalculationError; invariant drift -> SowInvariantError
|
|
6
6
|
artifacts_created: [SOW.md, SOW.html, or SOW.json at specified output path]
|
|
@@ -34,7 +34,7 @@ Acceptance Test (automated closed-loop detector rerun)
|
|
|
34
34
|
|
|
35
35
|
## 2. The Scope Admissibility Gate
|
|
36
36
|
|
|
37
|
-
Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass
|
|
37
|
+
Audit findings do NOT automatically become contractual obligations. Every candidate finding must pass 8 admissibility gates:
|
|
38
38
|
|
|
39
39
|
| Gate | Verification Check | Failure Refusal Code | Contractual Handling |
|
|
40
40
|
| :--- | :--- | :--- | :--- |
|