-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequirements.json
More file actions
312 lines (312 loc) · 11.2 KB
/
Copy pathrequirements.json
File metadata and controls
312 lines (312 loc) · 11.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
{
"schema_version": "sol-requirements.v1",
"updated": "2026-07-28",
"requirements": [
{
"id": "SOL-ARCH-001",
"status": "implemented",
"statement": "The browser MUST render versioned immutable snapshots and MUST NOT invent or silently reinterpret physical values.",
"source": "docs/SPEC.md#architecture",
"implementation": [
"crates/solar-core/src/contracts.rs",
"apps/web/js/data.js",
"apps/web/js/ephemerisContract.js"
],
"verification": [
"tools/validate_snapshot.py",
"tools/validate_ephemeris_snapshot.py",
"tools/test_ephemeris_contract.mjs"
],
"ci_gates": [
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-CONTRACT-001",
"status": "implemented",
"statement": "A contract change MUST version and update its schema, producers, consumers, fixtures, semantic validators, and compatibility tests in the same pull request.",
"source": "docs/SDLC.md#contract-and-schema-changes",
"implementation": [
"docs/solar-state-snapshot-v2.schema.json",
"docs/ephemeris-snapshot-v2.schema.json",
"crates/solar-core/src/contracts.rs",
"apps/web/js/ephemerisContract.js"
],
"verification": [
"tools/validate_snapshot.py",
"tools/validate_ephemeris_snapshot.py",
"tests/python/test_contract_validators.py"
],
"ci_gates": [
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-SCI-001",
"status": "implemented",
"statement": "Scientific claims MUST state provenance, calibration, uncertainty, accuracy scope, and operational limits; normalized values MUST NOT be presented as calibrated units.",
"source": "docs/SPEC.md#operational-boundary",
"implementation": [
"crates/solar-core/src/contracts.rs",
"apps/web/js/panels.js",
"docs/ACCURACY_CONTRACT.md"
],
"verification": [
"tools/validate_operational_readiness.py",
"tools/validate_snapshot.py",
"tools/validate_body_constants.py"
],
"ci_gates": [
"CI / Web, provider, and browser validation",
"Ephemeris accuracy (JPL Horizons)"
]
},
{
"id": "SOL-DATA-001",
"status": "implemented",
"statement": "Observed or cached data MUST retain source, time, freshness, quality, and finite-value evidence, and degraded data MUST fail closed or remain visibly degraded.",
"source": "docs/SPEC.md#snapshot-contracts",
"implementation": [
"tools/run_daily_ingest.py",
"tools/snapshot_semantics.py",
"apps/web/js/data.js"
],
"verification": [
"tools/validate_snapshot.py",
"tools/validate_ephemeris_snapshot.py",
"tests/python/test_contract_validators.py"
],
"ci_gates": [
"CI / Web, provider, and browser validation",
"Daily data ingest"
]
},
{
"id": "SOL-DET-001",
"status": "implemented",
"statement": "Committed generated data and reference simulations MUST be reproducible, and the reference snapshot MUST remain byte-identical across supported CI operating systems.",
"source": "docs/VALIDATION_PLAN.md#determinism-and-generated-data",
"implementation": [
"tools/generate_fixture_snapshot.py",
"tools/generate_series.py",
".github/workflows/ci.yml"
],
"verification": [
"crates/solar-cli/tests/cli.rs",
".github/workflows/ci.yml"
],
"ci_gates": [
"CI / Engine determinism (cross-OS byte compare + schema)"
]
},
{
"id": "SOL-UX-001",
"status": "implemented",
"statement": "The initial view MUST expose the primary learning task and current system state while advanced, rare, or research controls remain clearly labelled and disclosed on request.",
"source": "docs/UX_GUIDELINES.md#progressive-disclosure-contract",
"implementation": [
"apps/web/index.html",
"apps/web/styles.css",
"apps/web/js/view.js"
],
"verification": [
"tools/validate_ux_contract.py",
"tools/browser_validation.mjs",
"tests/python/test_ux_contract.py"
],
"ci_gates": [
"CI / Governance and specification contracts",
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-UX-002",
"status": "implemented",
"statement": "Interactive controls MUST have accessible names, keyboard-equivalent operation, visible focus, and non-canvas alternatives for material information.",
"source": "docs/UX_GUIDELINES.md#accessibility-and-input",
"implementation": [
"apps/web/index.html",
"apps/web/styles.css",
"apps/web/js/tour.js",
"apps/web/js/orrery.js"
],
"verification": [
"tools/validate_ux_contract.py",
"tools/browser_smoke.py",
"tools/browser_validation.mjs"
],
"ci_gates": [
"CI / Governance and specification contracts",
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-UX-003",
"status": "implemented",
"statement": "Asynchronous operations, provider changes, errors, and degraded modes MUST provide visible status, preserve user control, and offer a recovery or fallback path.",
"source": "docs/UX_GUIDELINES.md#feedback-errors-and-user-control",
"implementation": [
"apps/web/index.html",
"apps/web/js/data.js",
"apps/web/js/sky.js",
"apps/web/js/timeline.js"
],
"verification": [
"tools/validate_ux_contract.py",
"tools/browser_validation.mjs"
],
"ci_gates": [
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-PRIV-001",
"status": "implemented",
"statement": "Observer computation MUST remain on-device by default, and a remote provider MUST require configuration and explicit consent before location and time are transmitted.",
"source": "docs/adr/0003-location-time-and-privacy.md#decision",
"implementation": [
"apps/web/js/sky.js",
"apps/web/js/config.js"
],
"verification": [
"tools/browser_validation.mjs",
"tools/validate_web_static.py"
],
"ci_gates": [
"CI / Web, provider, and browser validation"
]
},
{
"id": "SOL-TEST-001",
"status": "implemented",
"statement": "Every behavior change MUST include tests at the lowest useful layer and regression coverage for the user-visible or contract boundary it can break.",
"source": "docs/VALIDATION_PLAN.md#change-to-test-mapping",
"implementation": [
"tests/python",
"tests/web",
"crates/solar-core/src",
"crates/solar-ephemeris/src"
],
"verification": [
".github/workflows/ci.yml",
".github/workflows/coverage.yml"
],
"ci_gates": [
"CI",
"Coverage"
]
},
{
"id": "SOL-COV-001",
"status": "implemented",
"statement": "CI MUST enforce at least 90 percent line coverage for Rust, Python, and the denominator-complete hand-written web runtime, plus at least 90 percent Node line, branch, and function coverage.",
"source": "docs/VALIDATION_PLAN.md#coverage-policy",
"implementation": [
".github/workflows/coverage.yml",
"tools/collect_node_coverage.mjs",
"tools/merge_web_coverage.mjs"
],
"verification": [
"tests/web/jsCoverageScope.test.mjs",
".github/workflows/coverage.yml"
],
"ci_gates": [
"Coverage / Rust coverage (>= 90%)",
"Coverage / JavaScript coverage (Node + Chromium, >= 90%)",
"Coverage / Python coverage (>= 90%)"
]
},
{
"id": "SOL-VIS-001",
"status": "implemented",
"statement": "Browser CI MUST validate WebGL behavior and semantic image properties for Sun colour, Earth visibility, and camera orbit continuity, and retain failure evidence.",
"source": "docs/VALIDATION_PLAN.md#browser-and-visual-regression",
"implementation": [
"tools/browser_validation.mjs",
"tools/visual_assertions.mjs"
],
"verification": [
"tests/web/visualAssertions.test.mjs",
"tools/browser_validation.mjs"
],
"ci_gates": [
"CI / Web, provider, and browser validation",
"Coverage / JavaScript coverage (Node + Chromium, >= 90%)"
]
},
{
"id": "SOL-CI-001",
"status": "implemented",
"statement": "Third-party actions MUST be commit-SHA pinned, workflows MUST use least-privilege permissions, and production MUST deploy only the exact successful master CI SHA.",
"source": "docs/adr/0004-ci-and-deployment-integrity.md#decision",
"implementation": [
".github/workflows/ci.yml",
".github/workflows/deploy-pages.yml",
".github/workflows/coverage.yml"
],
"verification": [
"tools/validate_sdlc.py",
"tests/python/test_sdlc_contract.py"
],
"ci_gates": [
"CI / Governance and specification contracts"
]
},
{
"id": "SOL-DOC-001",
"status": "implemented",
"statement": "A change MUST update the governing specification, requirement links, implementation plan, operator instructions, and user documentation when their claims or commands change.",
"source": "docs/SDLC.md#documentation-as-code",
"implementation": [
"CONTRIBUTING.md",
".github/PULL_REQUEST_TEMPLATE.md",
"docs/IMPLEMENTATION_PLAN.md"
],
"verification": [
"tools/validate_docs.py",
"tools/validate_sdlc.py"
],
"ci_gates": [
"Docs / Markdown links, badges + style",
"CI / Governance and specification contracts"
]
},
{
"id": "SOL-SUPPLY-001",
"status": "implemented",
"statement": "CI and production dependencies MUST be lockfile-controlled or immutable-SHA pinned, and automated dependency update review MUST be configured for each package ecosystem in use.",
"source": "docs/SDLC.md#secure-development-and-supply-chain",
"implementation": [
"Cargo.lock",
"package-lock.json",
".github/dependabot.yml"
],
"verification": [
"tools/validate_sdlc.py",
"tests/python/test_sdlc_contract.py"
],
"ci_gates": [
"CI / Governance and specification contracts"
]
},
{
"id": "SOL-REL-001",
"status": "implemented",
"statement": "A release MUST preserve test, coverage, deterministic snapshot, and browser visual evidence sufficient to identify the tested commit and reproduce a failure.",
"source": "docs/VALIDATION_PLAN.md#release-evidence",
"implementation": [
".github/workflows/ci.yml",
".github/workflows/coverage.yml",
".github/workflows/deploy-pages.yml"
],
"verification": [
"tools/validate_sdlc.py",
"tests/python/test_sdlc_contract.py"
],
"ci_gates": [
"CI / Governance and specification contracts",
"CI / Engine determinism (cross-OS byte compare + schema)"
]
}
]
}