{ "updated_at": "2026-05-20T09:48:15.365Z", "epics": { "binder-wrap-helper": { "status": "done", "title": "Collapse binder duplication via wireUseCase helper", "prd": "docs/work/prds/binder-wrap-helper.prd.md", "stories": { "01-wire-use-case-helper": { "status": "done", "title": "Introduce wireUseCase helper in core-shared", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "02-migrate-feature-binders", "03-update-generator-templates" ] }, "02-migrate-feature-binders": { "status": "done", "title": "Migrate all five feature binders to wireUseCase", "ac_total": 5, "ac_completed": 5, "depends_on": [ "01-wire-use-case-helper" ], "blocks": [] }, "03-update-generator-templates": { "status": "done", "title": "Update feature generator templates to emit wireUseCase call shape", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-wire-use-case-helper" ], "blocks": [] } } }, "ci-security-and-supply-chain": { "status": "done", "title": "CI security + supply-chain enforcement stack", "prd": "docs/work/prds/ci-security-and-supply-chain.prd.md", "stories": { "01-trace-schema-extensions": { "status": "done", "title": "Trace schema extensions (socketRisk + lastRevalidated)", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "02-socket-integration": { "status": "done", "title": "Socket integration (skill + CI)", "ac_total": 2, "ac_completed": 2, "depends_on": [ "01-trace-schema-extensions" ], "blocks": [ "08-reviewer-prompt-update" ] }, "03-renovate-adoption": { "status": "done", "title": "Renovate adoption", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "09-ci-security-guide-and-docs" ] }, "04-major-bump-reevaluation": { "status": "done", "title": "Major-bump re-evaluation flow", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-trace-schema-extensions" ], "blocks": [ "05-trace-revalidation-workflow" ] }, "05-trace-revalidation-workflow": { "status": "done", "title": "Trace revalidation workflow", "ac_total": 2, "ac_completed": 2, "depends_on": [ "01-trace-schema-extensions", "04-major-bump-reevaluation" ], "blocks": [ "09-ci-security-guide-and-docs" ] }, "06-codeql-and-audit-signatures": { "status": "done", "title": "CodeQL workflow + pnpm audit signatures", "ac_total": 2, "ac_completed": 2, "depends_on": [], "blocks": [ "08-reviewer-prompt-update" ] }, "07-gitleaks-precommit": { "status": "done", "title": "Gitleaks pre-commit hook", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "09-ci-security-guide-and-docs" ] }, "08-reviewer-prompt-update": { "status": "done", "title": "Sandcastle reviewer prompt update", "ac_total": 1, "ac_completed": 1, "depends_on": [ "02-socket-integration", "06-codeql-and-audit-signatures" ], "blocks": [ "09-ci-security-guide-and-docs" ] }, "09-ci-security-guide-and-docs": { "status": "done", "title": "CI security guide + CLAUDE.md", "ac_total": 2, "ac_completed": 2, "depends_on": [], "blocks": [] } } }, "compliance-manifests-pii-retention-subprocessors": { "status": "done", "title": "Declarative compliance manifests (PII + retention + sub-processors) — Epic A of ADR-025", "prd": "docs/work/prds/compliance-manifests-pii-retention-subprocessors.prd.md", "stories": { "01-pii-retention-type-primitives": { "status": "done", "title": "PII and retention type primitives in core-shared", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "02-eslint-rule-pii-declaration-complete": { "status": "done", "title": "Add pii-declaration-must-be-complete ESLint rule to core-eslint", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-pii-retention-type-primitives" ], "blocks": [ "05-backfill-template-collections" ] }, "03-adr-022-amendment-and-evaluate-library-skill": { "status": "done", "title": "ADR-022 amendment for sub-processor fields and evaluate-library skill update", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-pii-retention-type-primitives" ], "blocks": [] }, "04-retention-purge-job": { "status": "done", "title": "Background retention purge job in core-shared", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-pii-retention-type-primitives" ], "blocks": [] }, "05-backfill-template-collections": { "status": "done", "title": "Backfill existing template Payload collections with PII and retention metadata", "ac_total": 5, "ac_completed": 5, "depends_on": [], "blocks": [ "06-compliance-generator-scripts" ] }, "06-compliance-generator-scripts": { "status": "done", "title": "Compliance generator scripts (emit-data-map, emit-retention-policy, emit-sub-processors, emit-all)", "ac_total": 4, "ac_completed": 4, "depends_on": [ "01-pii-retention-type-primitives", "05-backfill-template-collections" ], "blocks": [ "07-pre-commit-and-ci-integration", "08-docs-compliance-reference-files" ] }, "07-pre-commit-and-ci-integration": { "status": "done", "title": "Pre-commit hook and CI integration for compliance drift detection", "ac_total": 1, "ac_completed": 1, "depends_on": [ "06-compliance-generator-scripts" ], "blocks": [] }, "08-docs-compliance-reference-files": { "status": "done", "title": "docs/compliance reference example files and README", "ac_total": 1, "ac_completed": 1, "depends_on": [ "06-compliance-generator-scripts" ], "blocks": [] } } }, "dsr-consent-and-cookie-banner": { "status": "done", "title": "DSR + consent abstraction + cookie consent banner — Epic B of ADR-025", "prd": "docs/work/prds/dsr-consent-and-cookie-banner.prd.md", "stories": { "01-subject-linkage-types": { "status": "done", "title": "Subject-linkage types in core-shared", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "02-audit-enum-amendment" ] }, "02-audit-enum-amendment": { "status": "done", "title": "Audit action enum amendment (ADR-018)", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-subject-linkage-types" ], "blocks": [ "03-core-consent-foundation", "06-core-dsr" ] }, "03-core-consent-foundation": { "status": "done", "title": "core-consent foundation — types, brand, withConsent wrapper, conformance extension, ESLint rule", "ac_total": 2, "ac_completed": 2, "depends_on": [ "02-audit-enum-amendment" ], "blocks": [ "04-core-consent-implementation" ] }, "04-core-consent-implementation": { "status": "done", "title": "core-consent implementation — Payload impl, DI binders, migration helpers, tRPC router", "ac_total": 3, "ac_completed": 3, "depends_on": [ "03-core-consent-foundation" ], "blocks": [] }, "05-core-consent-react": { "status": "done", "title": "core-consent React subpath — ConsentProvider + useConsent()", "ac_total": 1, "ac_completed": 1, "depends_on": [ "04-core-consent-implementation" ], "blocks": [ "09-cookie-consent-banner" ] }, "06-core-dsr": { "status": "done", "title": "core-dsr — scaffold, interfaces, Payload impls, recording doubles, handlers, dsrRouter", "ac_total": 3, "ac_completed": 3, "depends_on": [ "02-audit-enum-amendment" ], "blocks": [ "07-core-api-router-composition" ] }, "07-core-api-router-composition": { "status": "done", "title": "core-api router composition — dsrRouter + consentRouter into appRouter", "ac_total": 1, "ac_completed": 1, "depends_on": [ "04-core-consent-implementation", "06-core-dsr" ], "blocks": [ "11-documentation" ] }, "08-core-ui-scaffold": { "status": "done", "title": "core-ui scaffold", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "09-cookie-consent-banner" ] }, "09-cookie-consent-banner": { "status": "done", "title": "CookieConsentBanner component in core-ui", "ac_total": 1, "ac_completed": 1, "depends_on": [ "05-core-consent-react", "08-core-ui-scaffold" ], "blocks": [ "11-documentation" ] }, "10-auth-signup-migration": { "status": "done", "title": "auth signUp anonymous consent migration", "ac_total": 1, "ac_completed": 1, "depends_on": [ "04-core-consent-implementation" ], "blocks": [ "11-documentation" ] }, "11-documentation": { "status": "done", "title": "Documentation — DSR guide, consent guide, glossary, CLAUDE.md", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] } } }, "library-evaluation-policy": { "status": "done", "title": "Library evaluation policy — skill, traces, enforcement stack", "prd": "docs/work/prds/library-evaluation-policy.prd.md", "stories": { "01-trace-schema-foundation": { "status": "done", "title": "Trace schema module + docs/library-decisions/ foundation", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "02-pre-commit-check-script": { "status": "done", "title": "Pre-commit check script for library trace presence", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-trace-schema-foundation" ], "blocks": [ "06-sandcastle-reviewer-prompt" ] }, "03-claude-hooks": { "status": "done", "title": "Claude PreToolUse / PostToolUse hooks for library-policy nudge", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "04-evaluate-library-skill": { "status": "done", "title": "evaluate-library skill (SKILL.md + supporting files)", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-trace-schema-foundation" ], "blocks": [ "05-human-guide" ] }, "05-human-guide": { "status": "done", "title": "Human reading-room guide — docs/guides/adding-a-library.md", "ac_total": 1, "ac_completed": 1, "depends_on": [ "04-evaluate-library-skill" ], "blocks": [ "09-claude-md-update" ] }, "06-sandcastle-reviewer-prompt": { "status": "done", "title": "Sandcastle reviewer prompt — Library-trace check section", "ac_total": 1, "ac_completed": 1, "depends_on": [ "02-pre-commit-check-script" ], "blocks": [] }, "07-generator-pre-shipped-traces": { "status": "done", "title": "Generator templates — pre-shipped traces for optional core packages", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-trace-schema-foundation" ], "blocks": [] }, "08-backfill-traces": { "status": "done", "title": "Backfill library traces for existing feature- and core-tier runtime deps", "ac_total": 4, "ac_completed": 4, "depends_on": [ "01-trace-schema-foundation" ], "blocks": [] }, "09-claude-md-update": { "status": "done", "title": "CLAUDE.md Key Conventions — library policy bullet", "ac_total": 1, "ac_completed": 1, "depends_on": [ "05-human-guide" ], "blocks": [] } } }, "product-analytics-channel": { "status": "done", "title": "Product analytics as a fourth capture channel (ADR-024 implementation)", "prd": "docs/work/prds/product-analytics-channel.prd.md", "stories": { "01-scaffold-core-analytics-package": { "status": "done", "title": "Scaffold @repo/core-analytics package with IAnalytics and NoopAnalytics", "ac_total": 2, "ac_completed": 2, "depends_on": [], "blocks": [] }, "02-recording-analytics": { "status": "done", "title": "Add RecordingAnalytics to @repo/core-testing", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-scaffold-core-analytics-package" ], "blocks": [ "08-react-provider" ] }, "03-analyzed-brand-and-with-analytics-wrapper": { "status": "done", "title": "Add Analyzed brand and withAnalytics wrapper", "ac_total": 2, "ac_completed": 2, "depends_on": [ "01-scaffold-core-analytics-package" ], "blocks": [ "04-manifest-schema-and-wire-use-case" ] }, "04-manifest-schema-and-wire-use-case": { "status": "done", "title": "Extend manifest schema and wireUseCase with analyticsEvents", "ac_total": 2, "ac_completed": 2, "depends_on": [ "03-analyzed-brand-and-with-analytics-wrapper" ], "blocks": [] }, "05-assert-feature-conformance-analyzed": { "status": "done", "title": "Extend assertFeatureConformance to check Analyzed brand", "ac_total": 1, "ac_completed": 1, "depends_on": [ "04-manifest-schema-and-wire-use-case" ], "blocks": [] }, "06-analytics-protocol-bind-context": { "status": "done", "title": "Add AnalyticsProtocol and BindContext.analytics", "ac_total": 1, "ac_completed": 1, "depends_on": [ "05-assert-feature-conformance-analyzed" ], "blocks": [ "09-documentation" ] }, "07-eslint-rule-no-undeclared-analytics-event": { "status": "done", "title": "Add no-undeclared-analytics-event ESLint rule to @repo/core-eslint", "ac_total": 1, "ac_completed": 1, "depends_on": [ "05-assert-feature-conformance-analyzed" ], "blocks": [ "09-documentation" ] }, "08-react-provider": { "status": "done", "title": "Add React provider to @repo/core-analytics", "ac_total": 1, "ac_completed": 1, "depends_on": [ "02-recording-analytics" ], "blocks": [ "09-documentation" ] }, "09-documentation": { "status": "done", "title": "Documentation — analytics.md, conformance-quickref, CLAUDE.md, template-tiers", "ac_total": 2, "ac_completed": 2, "depends_on": [], "blocks": [] } } }, "security-headers-rate-limit-sbom": { "status": "in-progress", "title": "Security headers + rate-limit primitive + SBOM in CI — Epic C of ADR-025", "prd": "docs/work/prds/security-headers-rate-limit-sbom.prd.md", "stories": { "01-rate-limit-type-primitives": { "status": "done", "title": "Rate-limit type primitives and manifest field", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "02-rate-limit-implementations": { "status": "done", "title": "Rate-limit implementations — Noop, InMemory, Recording", "ac_total": 2, "ac_completed": 2, "depends_on": [ "01-rate-limit-type-primitives" ], "blocks": [] }, "03-no-undeclared-rate-limit-eslint-rule": { "status": "done", "title": "`no-undeclared-rate-limit` ESLint rule", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-rate-limit-type-primitives" ], "blocks": [ "05-auth-signin-rate-limit-backfill" ] }, "04-with-rate-limit-wrapper-and-conformance": { "status": "done", "title": "`withRateLimit` wrapper and conformance extensions", "ac_total": 1, "ac_completed": 1, "depends_on": [ "01-rate-limit-type-primitives", "02-rate-limit-implementations" ], "blocks": [ "05-auth-signin-rate-limit-backfill" ] }, "05-auth-signin-rate-limit-backfill": { "status": "done", "title": "auth.signIn rate-limit backfill", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "06-security-headers-core-module": { "status": "done", "title": "Security headers core module", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [ "07-security-header-adapters" ] }, "07-security-header-adapters": { "status": "in-progress", "title": "Per-framework security header adapters", "ac_total": 2, "ac_completed": 1, "depends_on": [ "06-security-headers-core-module" ], "blocks": [ "08-app-wiring-web-next", "09-app-wiring-web-tanstack-and-cms" ] }, "08-app-wiring-web-next": { "status": "todo", "title": "App wiring: web-next", "ac_total": 1, "ac_completed": 0, "depends_on": [ "07-security-header-adapters" ], "blocks": [] }, "09-app-wiring-web-tanstack-and-cms": { "status": "todo", "title": "App wiring: web-tanstack and cms", "ac_total": 2, "ac_completed": 0, "depends_on": [ "07-security-header-adapters" ], "blocks": [] }, "10-sbom-ci-workflow": { "status": "todo", "title": "SBOM CI workflow and ADR-023 amendment", "ac_total": 1, "ac_completed": 0, "depends_on": [], "blocks": [] }, "11-documentation": { "status": "todo", "title": "Documentation and conformance reference updates", "ac_total": 2, "ac_completed": 0, "depends_on": [], "blocks": [] } } } }, "ready": [ { "epic": "security-headers-rate-limit-sbom", "story": "07-security-header-adapters", "title": "Per-framework security header adapters" }, { "epic": "security-headers-rate-limit-sbom", "story": "10-sbom-ci-workflow", "title": "SBOM CI workflow and ADR-023 amendment" }, { "epic": "security-headers-rate-limit-sbom", "story": "11-documentation", "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" ] } ], "needs_prd_ship": [] }