betterwithage Claude Opus 4.7 commited on
Commit
2dd24d3
·
verified ·
1 Parent(s): cb38d1b

deploy(hf): sync szl-holdings/a11oy@main derived COPY set

Browse files

Reusable Dockerfile-COPY-derived deploy from szl-holdings/a11oy main.
Files: 1135 Pruned: 0
Derived from Dockerfile COPY sources (NO hand-maintained allowlist).

Signed-off-by: SZL Holdings <noreply@szlholdings.ai>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

schemas/evidenceos/claim-atomize-request.v1.schema.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://a-11-oy.com/schemas/evidenceos/claim-atomize-request.v1.schema.json",
4
+ "title": "EvidenceOS Claim Atomize Request v1",
5
+ "description": "Bounded request for structural-only claim atomization. The operation does not assert semantic atomicity or truth.",
6
+ "$comment": "The runtime refuses input that structurally splits into more than 32 review candidates; this output-bound invariant is not expressible from the input string in JSON Schema.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "text"
11
+ ],
12
+ "properties": {
13
+ "text": {
14
+ "type": "string",
15
+ "maxLength": 32768,
16
+ "pattern": "^[\\s\\S]*\\S[\\s\\S]*$"
17
+ }
18
+ }
19
+ }
schemas/evidenceos/claim-evaluate-request.v1.schema.json ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://a-11-oy.com/schemas/evidenceos/claim-evaluate-request.v1.schema.json",
4
+ "title": "EvidenceOS Claim Evaluate Request v1",
5
+ "description": "Bounded proposal-only request for deterministic claim-integrity evaluation.",
6
+ "$comment": "Cross-record invariants that JSON Schema cannot express are enforced by parse_evaluate_request after identifier whitespace normalization: explicit claim_id values are unique; external-signal keys and contradiction IDs reference explicit claim IDs; refutes_claim_ids is a subset of claim_ids.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "claims"
11
+ ],
12
+ "properties": {
13
+ "claims": {
14
+ "type": "array",
15
+ "maxItems": 32,
16
+ "items": {
17
+ "$ref": "#/$defs/claim"
18
+ }
19
+ },
20
+ "external_signals": {
21
+ "type": "object",
22
+ "maxProperties": 32,
23
+ "propertyNames": {
24
+ "$ref": "#/$defs/nonblankId"
25
+ },
26
+ "additionalProperties": {
27
+ "$ref": "#/$defs/signalEnvelope"
28
+ }
29
+ },
30
+ "contradictions": {
31
+ "type": "array",
32
+ "maxItems": 32,
33
+ "items": {
34
+ "$ref": "#/$defs/contradiction"
35
+ }
36
+ }
37
+ },
38
+ "$defs": {
39
+ "nonblankId": {
40
+ "type": "string",
41
+ "maxLength": 128,
42
+ "pattern": "^[\\s\\S]*\\S[\\s\\S]*$"
43
+ },
44
+ "boundedReference": {
45
+ "type": "string",
46
+ "maxLength": 512
47
+ },
48
+ "provenance": {
49
+ "type": "object",
50
+ "additionalProperties": false,
51
+ "properties": {
52
+ "source_id": {
53
+ "$ref": "#/$defs/boundedReference"
54
+ },
55
+ "content_sha256": {
56
+ "type": "string",
57
+ "minLength": 64,
58
+ "maxLength": 64,
59
+ "pattern": "^[0-9a-fA-F]{64}$"
60
+ },
61
+ "receipt_ref": {
62
+ "$ref": "#/$defs/boundedReference"
63
+ }
64
+ }
65
+ },
66
+ "owner": {
67
+ "type": "object",
68
+ "additionalProperties": false,
69
+ "properties": {
70
+ "owner_id": {
71
+ "type": "string",
72
+ "maxLength": 128
73
+ },
74
+ "accountability_scope": {
75
+ "type": "string",
76
+ "maxLength": 1024
77
+ }
78
+ }
79
+ },
80
+ "evidence": {
81
+ "type": "object",
82
+ "additionalProperties": false,
83
+ "properties": {
84
+ "reference_id": {
85
+ "type": "string",
86
+ "maxLength": 128
87
+ },
88
+ "evidence_state": {
89
+ "$ref": "#/$defs/claimState"
90
+ },
91
+ "provenance": {
92
+ "$ref": "#/$defs/provenance"
93
+ },
94
+ "verification_ref": {
95
+ "$ref": "#/$defs/boundedReference"
96
+ }
97
+ }
98
+ },
99
+ "claim": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "properties": {
103
+ "claim_id": {
104
+ "$ref": "#/$defs/nonblankId"
105
+ },
106
+ "statement": {
107
+ "type": "string",
108
+ "maxLength": 4096
109
+ },
110
+ "atomic": {
111
+ "type": "boolean"
112
+ },
113
+ "evidence_refs": {
114
+ "type": "array",
115
+ "maxItems": 8,
116
+ "items": {
117
+ "$ref": "#/$defs/evidence"
118
+ }
119
+ },
120
+ "consequence_owner": {
121
+ "oneOf": [
122
+ {
123
+ "type": "null"
124
+ },
125
+ {
126
+ "$ref": "#/$defs/owner"
127
+ }
128
+ ]
129
+ }
130
+ }
131
+ },
132
+ "semanticSignal": {
133
+ "type": "object",
134
+ "additionalProperties": false,
135
+ "properties": {
136
+ "value": {
137
+ "type": "number",
138
+ "minimum": 0,
139
+ "maximum": 1
140
+ },
141
+ "source_ref": {
142
+ "$ref": "#/$defs/boundedReference"
143
+ },
144
+ "method": {
145
+ "type": "string",
146
+ "maxLength": 256
147
+ }
148
+ }
149
+ },
150
+ "factualitySignal": {
151
+ "type": "object",
152
+ "additionalProperties": false,
153
+ "properties": {
154
+ "state": {
155
+ "$ref": "#/$defs/claimState"
156
+ },
157
+ "source_ref": {
158
+ "$ref": "#/$defs/boundedReference"
159
+ },
160
+ "method": {
161
+ "type": "string",
162
+ "maxLength": 256
163
+ }
164
+ }
165
+ },
166
+ "signalEnvelope": {
167
+ "type": "object",
168
+ "additionalProperties": false,
169
+ "properties": {
170
+ "semantic_uncertainty": {
171
+ "$ref": "#/$defs/semanticSignal"
172
+ },
173
+ "factuality": {
174
+ "$ref": "#/$defs/factualitySignal"
175
+ }
176
+ }
177
+ },
178
+ "contradiction": {
179
+ "type": "object",
180
+ "additionalProperties": false,
181
+ "properties": {
182
+ "claim_ids": {
183
+ "type": "array",
184
+ "maxItems": 32,
185
+ "uniqueItems": true,
186
+ "items": {
187
+ "$ref": "#/$defs/nonblankId"
188
+ }
189
+ },
190
+ "status": {
191
+ "type": "string",
192
+ "enum": [
193
+ "UNRESOLVED",
194
+ "CONFIRMED",
195
+ "RESOLVED"
196
+ ]
197
+ },
198
+ "provenance": {
199
+ "$ref": "#/$defs/provenance"
200
+ },
201
+ "refutes_claim_ids": {
202
+ "type": "array",
203
+ "maxItems": 32,
204
+ "uniqueItems": true,
205
+ "items": {
206
+ "$ref": "#/$defs/nonblankId"
207
+ }
208
+ },
209
+ "resolution_ref": {
210
+ "$ref": "#/$defs/boundedReference"
211
+ }
212
+ }
213
+ },
214
+ "claimState": {
215
+ "type": "string",
216
+ "enum": [
217
+ "VERIFIED",
218
+ "SUPPORTED",
219
+ "UNCERTAIN",
220
+ "REFUTED",
221
+ "UNKNOWN"
222
+ ]
223
+ }
224
+ }
225
+ }
schemas/evidenceos/public-claim-manifest.v1.schema.json ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://a-11-oy.com/schemas/evidenceos/public-claim-manifest.v1.schema.json",
4
+ "title": "EvidenceOS Public Claim Manifest v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "manifest_id", "revision", "generated_at", "claims"],
8
+ "properties": {
9
+ "schema_version": {"const": "1.0.0"},
10
+ "manifest_id": {"$ref": "#/$defs/identifier"},
11
+ "revision": {"type": "string", "minLength": 1, "maxLength": 128},
12
+ "generated_at": {"$ref": "#/$defs/utcTimestamp"},
13
+ "claims": {
14
+ "type": "array",
15
+ "minItems": 1,
16
+ "maxItems": 64,
17
+ "items": {"$ref": "#/$defs/claim"}
18
+ }
19
+ },
20
+ "$defs": {
21
+ "identifier": {"type": "string", "minLength": 1, "maxLength": 128},
22
+ "utcTimestamp": {
23
+ "type": "string",
24
+ "minLength": 20,
25
+ "maxLength": 32,
26
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"
27
+ },
28
+ "owner": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["owner_id", "accountability_scope"],
32
+ "properties": {
33
+ "owner_id": {"$ref": "#/$defs/identifier"},
34
+ "accountability_scope": {"type": "string", "minLength": 1, "maxLength": 1024}
35
+ }
36
+ },
37
+ "source": {
38
+ "type": "object",
39
+ "additionalProperties": false,
40
+ "required": ["repository", "revision"],
41
+ "properties": {
42
+ "repository": {"type": "string", "minLength": 1, "maxLength": 1024},
43
+ "revision": {"type": "string", "minLength": 1, "maxLength": 128}
44
+ }
45
+ },
46
+ "evidence": {
47
+ "type": "object",
48
+ "additionalProperties": false,
49
+ "required": [
50
+ "evidence_id", "path", "content_sha256", "collected_at",
51
+ "max_age_seconds", "kind", "verification_ref"
52
+ ],
53
+ "properties": {
54
+ "evidence_id": {"$ref": "#/$defs/identifier"},
55
+ "path": {"type": "string", "minLength": 1, "maxLength": 1024},
56
+ "content_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
57
+ "collected_at": {"$ref": "#/$defs/utcTimestamp"},
58
+ "max_age_seconds": {"type": "integer", "minimum": 1, "maximum": 31536000},
59
+ "kind": {
60
+ "enum": [
61
+ "FORMAL_PROOF", "TEST_RECEIPT", "MEASUREMENT_RECEIPT", "MODEL_OUTPUT",
62
+ "CONJECTURE_RECORD", "OPEN_ISSUE", "SOURCE_RECORD"
63
+ ]
64
+ },
65
+ "verification_ref": {"type": "string", "minLength": 1, "maxLength": 1024}
66
+ }
67
+ },
68
+ "claim": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "required": [
72
+ "claim_id", "assertion", "maturity", "scope", "owner", "consumers",
73
+ "source", "evidence", "reproduction_argv"
74
+ ],
75
+ "properties": {
76
+ "claim_id": {"$ref": "#/$defs/identifier"},
77
+ "assertion": {"type": "string", "minLength": 1, "maxLength": 4096},
78
+ "maturity": {"enum": ["PROVEN", "MEASURED", "MODELED", "CONJECTURE", "OPEN"]},
79
+ "scope": {"type": "string", "minLength": 1, "maxLength": 1024},
80
+ "owner": {"$ref": "#/$defs/owner"},
81
+ "consumers": {
82
+ "type": "array",
83
+ "minItems": 1,
84
+ "maxItems": 16,
85
+ "items": {"$ref": "#/$defs/identifier"},
86
+ "uniqueItems": true
87
+ },
88
+ "source": {"$ref": "#/$defs/source"},
89
+ "evidence": {
90
+ "type": "array",
91
+ "minItems": 1,
92
+ "maxItems": 8,
93
+ "items": {"$ref": "#/$defs/evidence"}
94
+ },
95
+ "reproduction_argv": {
96
+ "type": "array",
97
+ "minItems": 1,
98
+ "maxItems": 32,
99
+ "items": {"type": "string", "minLength": 1, "maxLength": 256}
100
+ }
101
+ }
102
+ }
103
+ },
104
+ "$comment": "Runtime validation additionally enforces canonical ID uniqueness, safe repository-relative paths, global evidence-ID uniqueness, freshness, digest binding, and maturity/evidence-kind compatibility."
105
+ }
schemas/evidenceos/public-claim-report.v1.schema.json ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://a-11-oy.com/schemas/evidenceos/public-claim-report.v1.schema.json",
4
+ "title": "EvidenceOS Public Claim Report v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "module", "schema_version", "manifest_id", "manifest_revision",
9
+ "manifest_generated_at", "manifest_content_sha256", "evaluated_as_of", "decision_state",
10
+ "effectors_enabled", "claim_count", "freshness_counts", "passes",
11
+ "outcome", "manifest_violations", "claims", "honesty_invariants", "receipt"
12
+ ],
13
+ "properties": {
14
+ "module": {"const": "szl-public-claim-manifest"},
15
+ "schema_version": {"const": "1.0.0"},
16
+ "manifest_id": {"type": "string"},
17
+ "manifest_revision": {"type": "string"},
18
+ "manifest_generated_at": {"type": "string"},
19
+ "manifest_content_sha256": {"$ref": "#/$defs/sha256"},
20
+ "evaluated_as_of": {"type": "string"},
21
+ "decision_state": {"const": "PROPOSAL_ONLY"},
22
+ "effectors_enabled": {"const": 0},
23
+ "claim_count": {"type": "integer", "minimum": 1, "maximum": 64},
24
+ "freshness_counts": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["CURRENT", "STALE", "MISSING", "UNKNOWN", "NOT_EVALUATED"],
28
+ "properties": {
29
+ "CURRENT": {"type": "integer", "minimum": 0},
30
+ "STALE": {"type": "integer", "minimum": 0},
31
+ "MISSING": {"type": "integer", "minimum": 0},
32
+ "UNKNOWN": {"type": "integer", "minimum": 0},
33
+ "NOT_EVALUATED": {"type": "integer", "minimum": 0}
34
+ }
35
+ },
36
+ "passes": {"type": "boolean"},
37
+ "outcome": {"enum": ["PASS", "REFUSE"]},
38
+ "manifest_violations": {"type": "array", "items": {"type": "string"}},
39
+ "claims": {
40
+ "type": "array",
41
+ "minItems": 1,
42
+ "maxItems": 64,
43
+ "items": {"$ref": "#/$defs/claimReport"}
44
+ },
45
+ "honesty_invariants": {
46
+ "type": "object",
47
+ "additionalProperties": false,
48
+ "required": [
49
+ "explicit_paths_only", "repository_crawling", "reproduction_commands_executed",
50
+ "truth_inference", "unsigned_report", "effectors_are_zero"
51
+ ],
52
+ "properties": {
53
+ "explicit_paths_only": {"const": true},
54
+ "repository_crawling": {"const": false},
55
+ "reproduction_commands_executed": {"const": false},
56
+ "truth_inference": {"const": false},
57
+ "unsigned_report": {"const": true},
58
+ "effectors_are_zero": {"const": true}
59
+ }
60
+ },
61
+ "receipt": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["mode", "algorithm", "signed", "content_sha256", "attests_truth"],
65
+ "properties": {
66
+ "mode": {"const": "UNSIGNED-CONTENT-DIGEST"},
67
+ "algorithm": {"const": "sha256"},
68
+ "signed": {"const": false},
69
+ "content_sha256": {"$ref": "#/$defs/sha256"},
70
+ "attests_truth": {"const": false}
71
+ }
72
+ }
73
+ },
74
+ "$defs": {
75
+ "sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
76
+ "owner": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": ["owner_id", "accountability_scope"],
80
+ "properties": {
81
+ "owner_id": {"type": "string"},
82
+ "accountability_scope": {"type": "string"}
83
+ }
84
+ },
85
+ "source": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "required": ["repository", "revision"],
89
+ "properties": {
90
+ "repository": {"type": "string"},
91
+ "revision": {"type": "string"}
92
+ }
93
+ },
94
+ "evidenceReport": {
95
+ "type": "object",
96
+ "additionalProperties": false,
97
+ "required": [
98
+ "evidence_id", "path", "kind", "freshness_state", "collected_at",
99
+ "max_age_seconds", "age_seconds", "expected_content_sha256",
100
+ "observed_content_sha256", "verification_ref", "violations"
101
+ ],
102
+ "properties": {
103
+ "evidence_id": {"type": "string"},
104
+ "path": {"type": "string"},
105
+ "kind": {"enum": [
106
+ "FORMAL_PROOF", "TEST_RECEIPT", "MEASUREMENT_RECEIPT", "MODEL_OUTPUT",
107
+ "CONJECTURE_RECORD", "OPEN_ISSUE", "SOURCE_RECORD"
108
+ ]},
109
+ "freshness_state": {"enum": ["CURRENT", "STALE", "MISSING", "UNKNOWN", "NOT_EVALUATED"]},
110
+ "collected_at": {"type": "string"},
111
+ "max_age_seconds": {"type": "integer", "minimum": 1, "maximum": 31536000},
112
+ "age_seconds": {"type": "integer"},
113
+ "expected_content_sha256": {"$ref": "#/$defs/sha256"},
114
+ "observed_content_sha256": {
115
+ "oneOf": [{"$ref": "#/$defs/sha256"}, {"type": "null"}]
116
+ },
117
+ "verification_ref": {"type": "string"},
118
+ "violations": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}
119
+ }
120
+ },
121
+ "claimReport": {
122
+ "type": "object",
123
+ "additionalProperties": false,
124
+ "required": [
125
+ "claim_id", "assertion", "maturity", "scope", "owner", "consumers",
126
+ "source", "reproduction_argv", "evidence", "passes", "violations"
127
+ ],
128
+ "properties": {
129
+ "claim_id": {"type": "string"},
130
+ "assertion": {"type": "string"},
131
+ "maturity": {"enum": ["PROVEN", "MEASURED", "MODELED", "CONJECTURE", "OPEN"]},
132
+ "scope": {"type": "string"},
133
+ "owner": {"$ref": "#/$defs/owner"},
134
+ "consumers": {"type": "array", "minItems": 1, "maxItems": 16, "uniqueItems": true, "items": {"type": "string"}},
135
+ "source": {"$ref": "#/$defs/source"},
136
+ "reproduction_argv": {
137
+ "type": "array",
138
+ "minItems": 1,
139
+ "maxItems": 32,
140
+ "items": {"type": "string", "minLength": 1, "maxLength": 256}
141
+ },
142
+ "evidence": {"type": "array", "minItems": 1, "maxItems": 8, "items": {"$ref": "#/$defs/evidenceReport"}},
143
+ "passes": {"type": "boolean"},
144
+ "violations": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}
145
+ }
146
+ }
147
+ }
148
+ }
static/3d/surfaces/integritycontrol.js CHANGED
@@ -1,14 +1,15 @@
1
  // SPDX-License-Identifier: Apache-2.0
2
  // Copyright 2026 Stephen P. Lutar Jr. / SZL Holdings
3
  //
4
- // Integrity Control Plane -- a compact, read-only view of two local contracts:
5
  // GET /api/a11oy/v1/waqay/security-loop/manifest
6
  // GET /api/a11oy/v1/claim-integrity/info
 
7
  //
8
- // This surface does not invoke an action route. A successful fetch means only that the
9
- // contract manifest was read. It does NOT mean that a deployer, rollback mechanism, model,
10
- // signer, repository writer, or any other effector is live. The view reports the API fields
11
- // verbatim and treats any boundary mismatch as a violation rather than rounding it up.
12
 
13
  import { createShowcase } from "./_showcase.js";
14
 
@@ -16,6 +17,7 @@ const ID = "integritycontrol";
16
  const TITLE = "Integrity Control Plane · proposal boundaries";
17
  const SECURITY_EP = "/api/a11oy/v1/waqay/security-loop/manifest";
18
  const CLAIM_EP = "/api/a11oy/v1/claim-integrity/info";
 
19
 
20
  const C_TEAL = 0x3af4c8;
21
  const C_BLUE = 0x5b8dee;
@@ -36,6 +38,12 @@ let _ring = null;
36
  let _nodes = [];
37
  let _links = [];
38
  let _boundaryPill = null;
 
 
 
 
 
 
39
 
40
  const S = {
41
  security: null,
@@ -109,6 +117,156 @@ function _derive() {
109
  _paint();
110
  }
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  export function mount(ctx) {
113
  _ctx = ctx;
114
  _stage = ctx.stage;
@@ -210,6 +368,7 @@ function _buildOverlay() {
210
  id: ID,
211
  title: TITLE,
212
  accent: "#3af4c8",
 
213
  chips: [
214
  {
215
  label: "STRUCTURAL-ONLY",
@@ -220,8 +379,8 @@ function _buildOverlay() {
220
  ],
221
  description:
222
  "A compact view of the <b>Waqay Security Loop</b> and <b>Claim Integrity</b> " +
223
- "contracts. It reads two same-origin GET endpoints and checks their control boundaries " +
224
- "without invoking a deploy, rollback, write, model, signer, or repository action. " +
225
  "<b>LIVE</b> here can only mean a manifest fetch succeeded; it never means effectors are live.",
226
  citations:
227
  "SZL-native clean-room control plane · read-only contract manifests · " +
@@ -252,6 +411,91 @@ function _buildOverlay() {
252
  _show.addField("signature boundary", "signing");
253
  _show.addField("contract endpoints", "feeds");
254
  _show.addField("allowed output", "output");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
255
  }
256
 
257
  function _field(key, value, color) {
@@ -325,6 +569,11 @@ function _onFrame() {
325
  }
326
 
327
  export function unmount() {
 
 
 
 
 
328
  _polls.forEach((p) => { try { p.stop(); } catch (_) {} });
329
  _polls = [];
330
  try { if (_show) _show.destroy(); } catch (_) {}
@@ -349,12 +598,13 @@ export function unmount() {
349
  S.fetch.security = S.fetch.claim = "init";
350
  S.mode = S.effectors = S.signing = null;
351
  S.verdict = "AWAITING-CONTRACTS";
 
352
  }
353
 
354
  export default {
355
  id: ID,
356
  title: TITLE,
357
- endpoints: [SECURITY_EP, CLAIM_EP],
358
  mount,
359
  unmount,
360
  };
 
1
  // SPDX-License-Identifier: Apache-2.0
2
  // Copyright 2026 Stephen P. Lutar Jr. / SZL Holdings
3
  //
4
+ // Integrity Control Plane -- two read-only contracts plus one bounded computational read:
5
  // GET /api/a11oy/v1/waqay/security-loop/manifest
6
  // GET /api/a11oy/v1/claim-integrity/info
7
+ // POST /api/a11oy/v1/claim-integrity/atomize
8
  //
9
+ // Atomization is a deterministic punctuation/newline split. It is not semantic evaluation,
10
+ // persistence, signing, approval, or execution. Every returned candidate stays atomic=false
11
+ // and human-review-required. A successful request does NOT mean that a deployer, rollback
12
+ // mechanism, model, signer, repository writer, or any other effector is live.
13
 
14
  import { createShowcase } from "./_showcase.js";
15
 
 
17
  const TITLE = "Integrity Control Plane · proposal boundaries";
18
  const SECURITY_EP = "/api/a11oy/v1/waqay/security-loop/manifest";
19
  const CLAIM_EP = "/api/a11oy/v1/claim-integrity/info";
20
+ const ATOMIZE_EP = "/api/a11oy/v1/claim-integrity/atomize";
21
 
22
  const C_TEAL = 0x3af4c8;
23
  const C_BLUE = 0x5b8dee;
 
38
  let _nodes = [];
39
  let _links = [];
40
  let _boundaryPill = null;
41
+ let _compileController = null;
42
+ let _compileSerial = 0;
43
+ let _proseInput = null;
44
+ let _compileButton = null;
45
+ let _compileStatus = null;
46
+ let _candidateList = null;
47
 
48
  const S = {
49
  security: null,
 
117
  _paint();
118
  }
119
 
120
+ function _setCompileStatus(message, tone = "neutral") {
121
+ if (!_compileStatus) return;
122
+ _compileStatus.textContent = message;
123
+ _compileStatus.dataset.claimCompileState = tone;
124
+ _compileStatus.style.color = tone === "error" ? "#ff8b94" :
125
+ (tone === "ready" ? "#3af4c8" : (tone === "loading" ? "#e8c074" : "#9fb1bf"));
126
+ }
127
+
128
+ function _clearCandidates() {
129
+ if (!_candidateList) return;
130
+ while (_candidateList.firstChild) _candidateList.removeChild(_candidateList.firstChild);
131
+ }
132
+
133
+ function _renderCandidates(payload) {
134
+ _clearCandidates();
135
+ const atoms = payload && Array.isArray(payload.atoms) ? payload.atoms : [];
136
+ const contractIntact = payload && payload.semantic_atomization_computed === false &&
137
+ String(payload.decision_state || "").toUpperCase() === "PROPOSAL_ONLY" &&
138
+ payload.effectors_enabled === 0 &&
139
+ payload.method === "VISIBLE-PUNCTUATION-AND-NEWLINE-SPLIT" &&
140
+ Number.isInteger(payload.candidate_count) && payload.candidate_count >= 0 &&
141
+ payload.candidate_count <= 32 && payload.candidate_count === atoms.length;
142
+
143
+ if (!contractIntact) {
144
+ _setCompileStatus("CONTRACT MISMATCH: response was not proposal-only with zero effectors.", "error");
145
+ return;
146
+ }
147
+
148
+ if (!atoms.length) {
149
+ _setCompileStatus("0 structural candidates. No semantic claim was established.", "ready");
150
+ return;
151
+ }
152
+
153
+ let rendered = 0;
154
+ atoms.forEach((atom, index) => {
155
+ const reviewRequired = atom && atom.human_review_required === true;
156
+ const structuralOnly = atom && atom.atomic === false &&
157
+ String(atom.atomization_state || "").toUpperCase() === "STRUCTURAL-SPLIT-ONLY";
158
+ if (!reviewRequired || !structuralOnly || typeof atom.statement !== "string") return;
159
+
160
+ const row = document.createElement("article");
161
+ row.dataset.claimCandidate = String(index + 1);
162
+ row.dataset.reviewRequired = "true";
163
+ Object.assign(row.style, {
164
+ border: "1px solid #263746", borderRadius: "8px", padding: "8px 9px",
165
+ background: "#09121a", display: "grid", gap: "5px",
166
+ });
167
+
168
+ const heading = document.createElement("div");
169
+ heading.textContent = `Candidate ${String(index + 1).padStart(2, "0")} · REVIEW REQUIRED`;
170
+ Object.assign(heading.style, {
171
+ color: "#e8c074", font: "600 10px ui-monospace,Menlo,monospace",
172
+ letterSpacing: ".35px",
173
+ });
174
+
175
+ const statement = document.createElement("div");
176
+ statement.textContent = atom.statement;
177
+ Object.assign(statement.style, {
178
+ color: "#e7eef6", fontSize: "11px", lineHeight: "1.5",
179
+ overflowWrap: "anywhere", whiteSpace: "pre-wrap",
180
+ });
181
+
182
+ const boundary = document.createElement("div");
183
+ boundary.textContent = "STRUCTURAL-SPLIT-ONLY · atomic=false · no evidence attached";
184
+ Object.assign(boundary.style, {
185
+ color: "#778b9b", font: "9px ui-monospace,Menlo,monospace",
186
+ });
187
+
188
+ row.appendChild(heading);
189
+ row.appendChild(statement);
190
+ row.appendChild(boundary);
191
+ _candidateList.appendChild(row);
192
+ rendered += 1;
193
+ });
194
+
195
+ if (rendered !== atoms.length) {
196
+ _clearCandidates();
197
+ _setCompileStatus("CONTRACT MISMATCH: one or more candidates were not structural and review-required.", "error");
198
+ return;
199
+ }
200
+ _setCompileStatus(`${rendered} structural candidate${rendered === 1 ? "" : "s"}. Human review required.`, "ready");
201
+ }
202
+
203
+ function _compileProse() {
204
+ const prose = _proseInput ? _proseInput.value.trim() : "";
205
+ if (!prose) {
206
+ _clearCandidates();
207
+ _setCompileStatus("Enter prose before compiling structural candidates.", "error");
208
+ if (_proseInput) _proseInput.focus();
209
+ return;
210
+ }
211
+
212
+ if (_compileController && _compileController.abort) {
213
+ try { _compileController.abort(); } catch (_) {}
214
+ }
215
+ const ctrl = (typeof window !== "undefined" && "AbortController" in window)
216
+ ? new AbortController() : null;
217
+ _compileController = ctrl;
218
+ const serial = ++_compileSerial;
219
+ _clearCandidates();
220
+ _setCompileStatus("Compiling visible punctuation and newline splits…", "loading");
221
+ if (_compileButton) {
222
+ _compileButton.disabled = true;
223
+ _compileButton.textContent = "Compiling…";
224
+ }
225
+
226
+ fetch(ATOMIZE_EP, {
227
+ method: "POST",
228
+ headers: { accept: "application/json", "content-type": "application/json" },
229
+ body: JSON.stringify({ text: prose }),
230
+ signal: ctrl ? ctrl.signal : undefined,
231
+ })
232
+ .then(async (response) => {
233
+ let payload = null;
234
+ try { payload = await response.json(); } catch (_) {}
235
+ if (!response.ok) {
236
+ const error = new Error(`http ${response.status}`);
237
+ error.status = response.status;
238
+ error.payload = payload;
239
+ throw error;
240
+ }
241
+ return payload;
242
+ })
243
+ .then((payload) => {
244
+ if (serial !== _compileSerial) return;
245
+ _compileController = null;
246
+ _renderCandidates(payload);
247
+ })
248
+ .catch((error) => {
249
+ if (error && error.name === "AbortError") return;
250
+ if (serial !== _compileSerial) return;
251
+ _compileController = null;
252
+ _clearCandidates();
253
+ if (error && error.status === 413) {
254
+ _setCompileStatus("413 · INPUT TOO LARGE: reduce the prose and retry.", "error");
255
+ } else if (error && error.status === 422) {
256
+ _setCompileStatus("422 · INVALID INPUT: the atomization contract refused this request.", "error");
257
+ } else if (error && error.status === 503) {
258
+ _setCompileStatus("503 · UNAVAILABLE: the Claim Compiler is not ready.", "error");
259
+ } else {
260
+ _setCompileStatus("UNAVAILABLE: no structural candidates were returned.", "error");
261
+ }
262
+ })
263
+ .finally(() => {
264
+ if (serial !== _compileSerial || !_compileButton) return;
265
+ _compileButton.disabled = false;
266
+ _compileButton.textContent = "Compile candidates";
267
+ });
268
+ }
269
+
270
  export function mount(ctx) {
271
  _ctx = ctx;
272
  _stage = ctx.stage;
 
368
  id: ID,
369
  title: TITLE,
370
  accent: "#3af4c8",
371
+ startExpanded: true,
372
  chips: [
373
  {
374
  label: "STRUCTURAL-ONLY",
 
379
  ],
380
  description:
381
  "A compact view of the <b>Waqay Security Loop</b> and <b>Claim Integrity</b> " +
382
+ "contracts. It preserves two same-origin GET polls and offers one bounded atomization " +
383
+ "request without invoking evaluation, deploy, rollback, persistence, model, signer, or repository action. " +
384
  "<b>LIVE</b> here can only mean a manifest fetch succeeded; it never means effectors are live.",
385
  citations:
386
  "SZL-native clean-room control plane · read-only contract manifests · " +
 
411
  _show.addField("signature boundary", "signing");
412
  _show.addField("contract endpoints", "feeds");
413
  _show.addField("allowed output", "output");
414
+
415
+ const compiler = document.createElement("section");
416
+ compiler.dataset.claimCompiler = "structural-only";
417
+ Object.assign(compiler.style, {
418
+ display: "grid", gap: "8px", border: "1px solid #1c3841", borderRadius: "9px",
419
+ padding: "9px", background: "rgba(5,17,22,.88)", minWidth: "0",
420
+ });
421
+
422
+ const compilerTitle = document.createElement("div");
423
+ compilerTitle.textContent = "Claim Compiler · structural proposal";
424
+ Object.assign(compilerTitle.style, {
425
+ color: "#3af4c8", font: "600 11px ui-monospace,Menlo,monospace",
426
+ });
427
+
428
+ const compilerBoundary = document.createElement("div");
429
+ compilerBoundary.textContent =
430
+ "Splits visible punctuation/newlines only. No semantic evaluation, persistence, signing, approval, or effectors.";
431
+ Object.assign(compilerBoundary.style, {
432
+ color: "#9fb1bf", fontSize: "10px", lineHeight: "1.45",
433
+ });
434
+
435
+ const label = document.createElement("label");
436
+ label.htmlFor = `${ID}-prose`;
437
+ label.textContent = "Prose to atomize";
438
+ Object.assign(label.style, { color: "#c9d6df", fontSize: "10px" });
439
+
440
+ _proseInput = document.createElement("textarea");
441
+ _proseInput.id = `${ID}-prose`;
442
+ _proseInput.rows = 5;
443
+ _proseInput.placeholder = "Paste a bounded technical paragraph. No data is stored by this surface.";
444
+ _proseInput.setAttribute("aria-describedby", `${ID}-compile-status`);
445
+ _proseInput.spellcheck = true;
446
+ Object.assign(_proseInput.style, {
447
+ boxSizing: "border-box", width: "100%", minHeight: "96px", resize: "vertical",
448
+ border: "1px solid #2b4050", borderRadius: "8px", padding: "9px",
449
+ background: "#071019", color: "#e7eef6", outline: "none",
450
+ font: "11px/1.5 ui-monospace,Menlo,monospace",
451
+ });
452
+
453
+ _compileButton = document.createElement("button");
454
+ _compileButton.type = "button";
455
+ _compileButton.textContent = "Compile candidates";
456
+ _compileButton.dataset.claimCompileAction = "atomize";
457
+ Object.assign(_compileButton.style, {
458
+ minHeight: "40px", width: "100%", border: "1px solid #3af4c8",
459
+ borderRadius: "8px", background: "#0a241f", color: "#3af4c8",
460
+ cursor: "pointer", font: "600 11px ui-monospace,Menlo,monospace",
461
+ });
462
+ _compileButton.addEventListener("click", _compileProse);
463
+
464
+ _proseInput.addEventListener("keydown", (event) => {
465
+ if ((event.ctrlKey || event.metaKey) && event.key === "Enter") {
466
+ event.preventDefault();
467
+ _compileProse();
468
+ }
469
+ });
470
+
471
+ _compileStatus = document.createElement("div");
472
+ _compileStatus.id = `${ID}-compile-status`;
473
+ _compileStatus.setAttribute("role", "status");
474
+ _compileStatus.setAttribute("aria-live", "polite");
475
+ Object.assign(_compileStatus.style, {
476
+ color: "#9fb1bf", font: "10px/1.45 ui-monospace,Menlo,monospace",
477
+ overflowWrap: "anywhere",
478
+ });
479
+ _setCompileStatus("Not evaluated. Submit prose to request structural candidates.");
480
+
481
+ _candidateList = document.createElement("div");
482
+ _candidateList.dataset.claimCandidateList = "review-required";
483
+ Object.assign(_candidateList.style, {
484
+ display: "grid", gap: "7px", maxHeight: "210px", overflowY: "auto",
485
+ WebkitOverflowScrolling: "touch",
486
+ });
487
+
488
+ compiler.appendChild(compilerTitle);
489
+ compiler.appendChild(compilerBoundary);
490
+ compiler.appendChild(label);
491
+ compiler.appendChild(_proseInput);
492
+ compiler.appendChild(_compileButton);
493
+ compiler.appendChild(_compileStatus);
494
+ compiler.appendChild(_candidateList);
495
+ _show.appendBody(compiler);
496
+
497
+ // Give the operator workflow enough room on laptops while remaining bounded on phones.
498
+ _show.el.style.width = "min(94vw, 460px)";
499
  }
500
 
501
  function _field(key, value, color) {
 
569
  }
570
 
571
  export function unmount() {
572
+ _compileSerial += 1;
573
+ if (_compileController && _compileController.abort) {
574
+ try { _compileController.abort(); } catch (_) {}
575
+ }
576
+ _compileController = null;
577
  _polls.forEach((p) => { try { p.stop(); } catch (_) {} });
578
  _polls = [];
579
  try { if (_show) _show.destroy(); } catch (_) {}
 
598
  S.fetch.security = S.fetch.claim = "init";
599
  S.mode = S.effectors = S.signing = null;
600
  S.verdict = "AWAITING-CONTRACTS";
601
+ _proseInput = _compileButton = _compileStatus = _candidateList = null;
602
  }
603
 
604
  export default {
605
  id: ID,
606
  title: TITLE,
607
+ endpoints: [SECURITY_EP, CLAIM_EP, ATOMIZE_EP],
608
  mount,
609
  unmount,
610
  };