diff --git a/docs/work/_system/_state.json b/docs/work/_system/_state.json index 8d9f348..ae6dcdd 100644 --- a/docs/work/_system/_state.json +++ b/docs/work/_system/_state.json @@ -1,5 +1,5 @@ { - "updated_at": "2026-05-20T09:48:15.365Z", + "updated_at": "2026-05-20T09:58:23.827Z", "epics": { "binder-wrap-helper": { "status": "done", @@ -634,10 +634,10 @@ ] }, "07-security-header-adapters": { - "status": "in-progress", + "status": "done", "title": "Per-framework security header adapters", "ac_total": 2, - "ac_completed": 1, + "ac_completed": 2, "depends_on": [ "06-security-headers-core-module" ], @@ -688,8 +688,13 @@ "ready": [ { "epic": "security-headers-rate-limit-sbom", - "story": "07-security-header-adapters", - "title": "Per-framework security header adapters" + "story": "08-app-wiring-web-next", + "title": "App wiring: web-next" + }, + { + "epic": "security-headers-rate-limit-sbom", + "story": "09-app-wiring-web-tanstack-and-cms", + "title": "App wiring: web-tanstack and cms" }, { "epic": "security-headers-rate-limit-sbom", @@ -702,23 +707,6 @@ "title": "Documentation and conformance reference updates" } ], - "blocked": [ - { - "epic": "security-headers-rate-limit-sbom", - "story": "08-app-wiring-web-next", - "title": "App wiring: web-next", - "waiting_on": [ - "security-headers-rate-limit-sbom/07-security-header-adapters" - ] - }, - { - "epic": "security-headers-rate-limit-sbom", - "story": "09-app-wiring-web-tanstack-and-cms", - "title": "App wiring: web-tanstack and cms", - "waiting_on": [ - "security-headers-rate-limit-sbom/07-security-header-adapters" - ] - } - ], + "blocked": [], "needs_prd_ship": [] } diff --git a/docs/work/epics/security-headers-rate-limit-sbom/07-security-header-adapters/_story.md b/docs/work/epics/security-headers-rate-limit-sbom/07-security-header-adapters/_story.md index 922af44..605ede5 100644 --- a/docs/work/epics/security-headers-rate-limit-sbom/07-security-header-adapters/_story.md +++ b/docs/work/epics/security-headers-rate-limit-sbom/07-security-header-adapters/_story.md @@ -3,12 +3,12 @@ id: 07-security-header-adapters epic: security-headers-rate-limit-sbom title: Per-framework security header adapters type: technical-story -status: in-progress +status: done feature: core-shared depends-on: [06-security-headers-core-module] blocks: [08-app-wiring-web-next, 09-app-wiring-web-tanstack-and-cms] created: 2026-05-20T00:00:00Z -updated: 2026-05-20T09:48:15.201Z +updated: 2026-05-20T09:58:23.659Z --- ## Goal @@ -42,4 +42,4 @@ Adapters follow the `core-analytics/react` subpath pattern established in the co ## Tasks - [x] Implement `packages/core-shared/src/security/next/index.ts`: Next.js middleware calling `generateNonce()` + `buildSecurityHeaders`, setting all six headers and `x-nonce` on the response, plus `getNonce()` helper reading `x-nonce` from Next.js `headers()`; add subpath to `package.json` exports; adapter tests asserting all headers present, nonce in response headers, `getNonce()` reads it; all gates pass. -- [ ] Implement `packages/core-shared/src/security/tanstack/index.ts`: TanStack Start server middleware equivalent (generate nonce, set headers + `x-nonce`) plus request-context nonce extractor; add subpath to `package.json` exports; adapter tests asserting equivalent header + nonce behaviour; all gates pass. +- [x] Implement `packages/core-shared/src/security/tanstack/index.ts`: TanStack Start server middleware equivalent (generate nonce, set headers + `x-nonce`) plus request-context nonce extractor; add subpath to `package.json` exports; adapter tests asserting equivalent header + nonce behaviour; all gates pass. diff --git a/docs/work/epics/security-headers-rate-limit-sbom/_epic.md b/docs/work/epics/security-headers-rate-limit-sbom/_epic.md index 97431dd..0669ac0 100644 --- a/docs/work/epics/security-headers-rate-limit-sbom/_epic.md +++ b/docs/work/epics/security-headers-rate-limit-sbom/_epic.md @@ -7,7 +7,7 @@ status: in-progress features: [core-shared, core-testing, core-eslint, auth, web-next, web-tanstack, cms] created: 2026-05-20T00:00:00Z -updated: 2026-05-20T09:35:46.924Z +updated: 2026-05-20T09:58:23.659Z --- ## Goal @@ -26,7 +26,7 @@ Security scanners flag the absence of HSTS, X-Frame-Options, X-Content-Type-Opti - [x] [04 — `withRateLimit` wrapper and conformance extensions](04-with-rate-limit-wrapper-and-conformance/_story.md) - [x] [05 — auth.signIn rate-limit backfill](05-auth-signin-rate-limit-backfill/_story.md) - [x] [06 — Security headers core module](06-security-headers-core-module/_story.md) -- [ ] [07 — Per-framework security header adapters](07-security-header-adapters/_story.md) +- [x] [07 — Per-framework security header adapters](07-security-header-adapters/_story.md) - [ ] [08 — App wiring: web-next](08-app-wiring-web-next/_story.md) - [ ] [09 — App wiring: web-tanstack and cms](09-app-wiring-web-tanstack-and-cms/_story.md) - [ ] [10 — SBOM CI workflow and ADR-023 amendment](10-sbom-ci-workflow/_story.md)