chore(work): finish 01-rate-limit-type-primitives

This commit is contained in:
2026-05-20 10:24:32 +02:00
parent c62de6fce9
commit e2a5278899
3 changed files with 15 additions and 27 deletions

View File

@@ -1,5 +1,5 @@
{ {
"updated_at": "2026-05-20T08:14:56.249Z", "updated_at": "2026-05-20T08:24:33.457Z",
"epics": { "epics": {
"binder-wrap-helper": { "binder-wrap-helper": {
"status": "done", "status": "done",
@@ -573,10 +573,10 @@
"prd": "docs/work/prds/security-headers-rate-limit-sbom.prd.md", "prd": "docs/work/prds/security-headers-rate-limit-sbom.prd.md",
"stories": { "stories": {
"01-rate-limit-type-primitives": { "01-rate-limit-type-primitives": {
"status": "in-progress", "status": "done",
"title": "Rate-limit type primitives and manifest field", "title": "Rate-limit type primitives and manifest field",
"ac_total": 1, "ac_total": 1,
"ac_completed": 0, "ac_completed": 1,
"depends_on": [], "depends_on": [],
"blocks": [] "blocks": []
}, },
@@ -688,8 +688,13 @@
"ready": [ "ready": [
{ {
"epic": "security-headers-rate-limit-sbom", "epic": "security-headers-rate-limit-sbom",
"story": "01-rate-limit-type-primitives", "story": "02-rate-limit-implementations",
"title": "Rate-limit type primitives and manifest field" "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", "epic": "security-headers-rate-limit-sbom",
@@ -713,28 +718,11 @@
} }
], ],
"blocked": [ "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", "epic": "security-headers-rate-limit-sbom",
"story": "04-with-rate-limit-wrapper-and-conformance", "story": "04-with-rate-limit-wrapper-and-conformance",
"title": "`withRateLimit` wrapper and conformance extensions", "title": "`withRateLimit` wrapper and conformance extensions",
"waiting_on": [ "waiting_on": [
"security-headers-rate-limit-sbom/01-rate-limit-type-primitives",
"security-headers-rate-limit-sbom/02-rate-limit-implementations" "security-headers-rate-limit-sbom/02-rate-limit-implementations"
] ]
}, },

View File

@@ -3,7 +3,7 @@ id: 01-rate-limit-type-primitives
epic: security-headers-rate-limit-sbom epic: security-headers-rate-limit-sbom
title: Rate-limit type primitives and manifest field title: Rate-limit type primitives and manifest field
type: technical-story type: technical-story
status: in-progress status: done
feature: core-shared feature: core-shared
depends-on: [] depends-on: []
blocks: blocks:
@@ -13,7 +13,7 @@ blocks:
04-with-rate-limit-wrapper-and-conformance, 04-with-rate-limit-wrapper-and-conformance,
] ]
created: 2026-05-20T00:00:00Z created: 2026-05-20T00:00:00Z
updated: 2026-05-20T08:14:55.907Z updated: 2026-05-20T08:24:33.292Z
--- ---
## Goal ## Goal
@@ -51,4 +51,4 @@ Manifest-first ordering requires types before implementations and lint rules. Th
## Tasks ## Tasks
- [ ] Add `IRateLimit`, `RateLimitBudget`, `RateLimitDecision` types in `packages/core-shared/src/rate-limit/rate-limit.interface.ts`; add `RateLimited<F>` 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<F>` 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.

View File

@@ -7,7 +7,7 @@ status: in-progress
features: features:
[core-shared, core-testing, core-eslint, auth, web-next, web-tanstack, cms] [core-shared, core-testing, core-eslint, auth, web-next, web-tanstack, cms]
created: 2026-05-20T00:00:00Z created: 2026-05-20T00:00:00Z
updated: 2026-05-20T08:14:55.907Z updated: 2026-05-20T08:24:33.292Z
--- ---
## Goal ## Goal
@@ -20,7 +20,7 @@ Security scanners flag the absence of HSTS, X-Frame-Options, X-Content-Type-Opti
## Stories ## 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) - [ ] [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) - [ ] [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) - [ ] [04 — `withRateLimit` wrapper and conformance extensions](04-with-rate-limit-wrapper-and-conformance/_story.md)