|
19 | 19 | '((version . "0.1.0") |
20 | 20 | (schema-version . "1.0") |
21 | 21 | (created . "2025-12-29") |
22 | | - (updated . "2026-03-10") |
| 22 | + (updated . "2026-03-13") |
23 | 23 | (project . "svalinn") |
24 | 24 | (repo . "https://gitlab.com/hyperpolymath/svalinn"))) |
25 | 25 |
|
|
33 | 33 |
|
34 | 34 | (define current-position |
35 | 35 | '((phase . "v0.4+ — Security Headers, Metrics, Infrastructure") |
36 | | - (overall-completion . 70) |
| 36 | + (overall-completion . 75) |
37 | 37 |
|
38 | 38 | (components |
39 | 39 | ((name . "Gateway HTTP Server") |
|
117 | 117 | "Vörðr integration tests (skip when not available)" |
118 | 118 | "Justfile with dev/build/test commands" |
119 | 119 | "Containerfile (two-stage wolfi-base build)" |
120 | | - "Hypatia CI scan workflow") |
| 120 | + "Hypatia CI scan workflow" |
| 121 | + "Type-safe code: zero getExn in production code (33 removed, all pattern-matched)" |
| 122 | + "Type-safe code: zero Obj.magic in production code (38 removed, 1 annotated FFI cast)" |
| 123 | + "SECURITY.md with vulnerability reporting policy" |
| 124 | + "MVP policy gate tool (Deno, replaces banned Python version)") |
121 | 125 |
|
122 | 126 | (broken-features))) |
123 | 127 |
|
|
185 | 189 | (high . ()) |
186 | 190 | (medium |
187 | 191 | ((id . "SVALINN-003") |
188 | | - (description . "Test suite needs updating for Metrics.res and securityHeaders middleware") |
| 192 | + (description . "Test suite needs updating for Metrics.res, securityHeaders middleware, and new pattern-matched code paths") |
189 | 193 | (type . "testing") |
190 | 194 | (notes . "90 existing tests pass but new code lacks coverage"))) |
191 | 195 | (low |
|
288 | 292 | "Add tests for Metrics.res and securityHeaders middleware" |
289 | 293 | "Validate Containerfile builds" |
290 | 294 | "Add rate limiting middleware" |
291 | | - "Add remaining CI workflows")))) |
| 295 | + "Add remaining CI workflows")) |
| 296 | + (session-006 |
| 297 | + (date . "2026-03-13") |
| 298 | + (duration . "1 hour") |
| 299 | + (accomplishments |
| 300 | + "Security remediation: removed 33 getExn calls from 6 production files" |
| 301 | + "Security remediation: removed 38 Obj.magic calls from 4 production files" |
| 302 | + "Replaced all getExn with switch/pattern-matching and descriptive error messages" |
| 303 | + "Replaced all Obj.magic with Js.Json.object_ construction" |
| 304 | + "Deleted .meta/STATE.scm (stale duplicate violating AI manifest invariant)" |
| 305 | + "Deleted tools/mvp/svalinn_gate.py (banned Python language)" |
| 306 | + "Created tools/mvp/svalinn_gate.js (Deno replacement for MVP policy gate)" |
| 307 | + "Created SECURITY.md with vulnerability reporting policy" |
| 308 | + "Fixed PolicyEngine.res parsePolicy/parseAttestation (getExn → pattern matching)" |
| 309 | + "Fixed McpClient.res callWithRetry (getExn → descriptive error handling)") |
| 310 | + (next-session |
| 311 | + "Add tests for pattern-matched code paths" |
| 312 | + "Add rate limiting middleware" |
| 313 | + "Add remaining CI workflows (CodeQL, mirror, scorecard)" |
| 314 | + "Validate Containerfile builds")))) |
292 | 315 |
|
293 | 316 | ;; Helper functions |
294 | 317 | (define (get-completion-percentage) |
|
0 commit comments