diff --git a/docs/work/_system/_state.json b/docs/work/_system/_state.json index f854119..9277e48 100644 --- a/docs/work/_system/_state.json +++ b/docs/work/_system/_state.json @@ -1,5 +1,5 @@ { - "updated_at": "2026-05-20T08:14:56.249Z", + "updated_at": "2026-05-20T08:24:33.457Z", "epics": { "binder-wrap-helper": { "status": "done", @@ -573,10 +573,10 @@ "prd": "docs/work/prds/security-headers-rate-limit-sbom.prd.md", "stories": { "01-rate-limit-type-primitives": { - "status": "in-progress", + "status": "done", "title": "Rate-limit type primitives and manifest field", "ac_total": 1, - "ac_completed": 0, + "ac_completed": 1, "depends_on": [], "blocks": [] }, @@ -688,8 +688,13 @@ "ready": [ { "epic": "security-headers-rate-limit-sbom", - "story": "01-rate-limit-type-primitives", - "title": "Rate-limit type primitives and manifest field" + "story": "02-rate-limit-implementations", + "title": "Rate-limit implementations — Noop, InMemory, Recording" + }, + { + "epic": "security-headers-rate-limit-sbom", + "story": "03-no-undeclared-rate-limit-eslint-rule", + "title": "`no-undeclared-rate-limit` ESLint rule" }, { "epic": "security-headers-rate-limit-sbom", @@ -713,28 +718,11 @@ } ], "blocked": [ - { - "epic": "security-headers-rate-limit-sbom", - "story": "02-rate-limit-implementations", - "title": "Rate-limit implementations — Noop, InMemory, Recording", - "waiting_on": [ - "security-headers-rate-limit-sbom/01-rate-limit-type-primitives" - ] - }, - { - "epic": "security-headers-rate-limit-sbom", - "story": "03-no-undeclared-rate-limit-eslint-rule", - "title": "`no-undeclared-rate-limit` ESLint rule", - "waiting_on": [ - "security-headers-rate-limit-sbom/01-rate-limit-type-primitives" - ] - }, { "epic": "security-headers-rate-limit-sbom", "story": "04-with-rate-limit-wrapper-and-conformance", "title": "`withRateLimit` wrapper and conformance extensions", "waiting_on": [ - "security-headers-rate-limit-sbom/01-rate-limit-type-primitives", "security-headers-rate-limit-sbom/02-rate-limit-implementations" ] }, diff --git a/docs/work/epics/security-headers-rate-limit-sbom/01-rate-limit-type-primitives/_story.md b/docs/work/epics/security-headers-rate-limit-sbom/01-rate-limit-type-primitives/_story.md index 057fdd0..d66aaf7 100644 --- a/docs/work/epics/security-headers-rate-limit-sbom/01-rate-limit-type-primitives/_story.md +++ b/docs/work/epics/security-headers-rate-limit-sbom/01-rate-limit-type-primitives/_story.md @@ -3,7 +3,7 @@ id: 01-rate-limit-type-primitives epic: security-headers-rate-limit-sbom title: Rate-limit type primitives and manifest field type: technical-story -status: in-progress +status: done feature: core-shared depends-on: [] blocks: @@ -13,7 +13,7 @@ blocks: 04-with-rate-limit-wrapper-and-conformance, ] created: 2026-05-20T00:00:00Z -updated: 2026-05-20T08:14:55.907Z +updated: 2026-05-20T08:24:33.292Z --- ## Goal @@ -51,4 +51,4 @@ Manifest-first ordering requires types before implementations and lint rules. Th ## Tasks -- [ ] Add `IRateLimit`, `RateLimitBudget`, `RateLimitDecision` types in `packages/core-shared/src/rate-limit/rate-limit.interface.ts`; add `RateLimited` brand + `isRateLimited` helper in `packages/core-shared/src/conformance/brands.ts`; extend `UseCaseManifest` in `packages/core-shared/src/conformance/define-feature.ts` with `rateLimit?: RateLimitBudget[]`; export new types from the `core-shared` barrel; all gates pass. +- [x] Add `IRateLimit`, `RateLimitBudget`, `RateLimitDecision` types in `packages/core-shared/src/rate-limit/rate-limit.interface.ts`; add `RateLimited` brand + `isRateLimited` helper in `packages/core-shared/src/conformance/brands.ts`; extend `UseCaseManifest` in `packages/core-shared/src/conformance/define-feature.ts` with `rateLimit?: RateLimitBudget[]`; export new types from the `core-shared` barrel; 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 0405d41..1426629 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-20T08:14:55.907Z +updated: 2026-05-20T08:24:33.292Z --- ## Goal @@ -20,7 +20,7 @@ Security scanners flag the absence of HSTS, X-Frame-Options, X-Content-Type-Opti ## Stories -- [ ] [01 — Rate-limit type primitives and manifest field](01-rate-limit-type-primitives/_story.md) +- [x] [01 — Rate-limit type primitives and manifest field](01-rate-limit-type-primitives/_story.md) - [ ] [02 — Rate-limit implementations: Noop, InMemory, Recording](02-rate-limit-implementations/_story.md) - [ ] [03 — `no-undeclared-rate-limit` ESLint rule](03-no-undeclared-rate-limit-eslint-rule/_story.md) - [ ] [04 — `withRateLimit` wrapper and conformance extensions](04-with-rate-limit-wrapper-and-conformance/_story.md)