765 lines
23 KiB
JSON
765 lines
23 KiB
JSON
{
|
|
"updated_at": "2026-05-20T12:57:04.572Z",
|
|
"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-docs-scaffolds": {
|
|
"status": "done",
|
|
"title": "Compliance docs scaffolds — Epic D of ADR-025",
|
|
"prd": "docs/work/prds/compliance-docs-scaffolds.prd.md",
|
|
"stories": {
|
|
"01-land-operator-checklist": {
|
|
"status": "done",
|
|
"title": "Land operator-checklist.md verbatim",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"02-refresh-operator-checklist"
|
|
]
|
|
},
|
|
"02-refresh-operator-checklist": {
|
|
"status": "done",
|
|
"title": "Refresh operator-checklist.md for ADR-024 and ADR-025",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [
|
|
"01-land-operator-checklist"
|
|
],
|
|
"blocks": []
|
|
},
|
|
"03-policy-templates": {
|
|
"status": "done",
|
|
"title": "Write seven policy templates in docs/compliance/templates/",
|
|
"ac_total": 2,
|
|
"ac_completed": 2,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"04-pre-launch-compliance-checklist",
|
|
"05-compliance-overview"
|
|
]
|
|
},
|
|
"04-pre-launch-compliance-checklist": {
|
|
"status": "done",
|
|
"title": "Write pre-launch compliance checklist",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [
|
|
"03-policy-templates"
|
|
],
|
|
"blocks": [
|
|
"05-compliance-overview"
|
|
]
|
|
},
|
|
"05-compliance-overview": {
|
|
"status": "done",
|
|
"title": "Write compliance-overview.md hub",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [
|
|
"03-policy-templates",
|
|
"04-pre-launch-compliance-checklist"
|
|
],
|
|
"blocks": [
|
|
"06-doc-wiring"
|
|
]
|
|
},
|
|
"06-doc-wiring": {
|
|
"status": "done",
|
|
"title": "Wire compliance docs into CLAUDE.md, README, and glossary",
|
|
"ac_total": 2,
|
|
"ac_completed": 2,
|
|
"depends_on": [
|
|
"05-compliance-overview"
|
|
],
|
|
"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": "done",
|
|
"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": "done",
|
|
"title": "Per-framework security header adapters",
|
|
"ac_total": 2,
|
|
"ac_completed": 2,
|
|
"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": "done",
|
|
"title": "App wiring: web-next",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [
|
|
"07-security-header-adapters"
|
|
],
|
|
"blocks": []
|
|
},
|
|
"09-app-wiring-web-tanstack-and-cms": {
|
|
"status": "done",
|
|
"title": "App wiring: web-tanstack and cms",
|
|
"ac_total": 2,
|
|
"ac_completed": 2,
|
|
"depends_on": [
|
|
"07-security-header-adapters"
|
|
],
|
|
"blocks": []
|
|
},
|
|
"10-sbom-ci-workflow": {
|
|
"status": "done",
|
|
"title": "SBOM CI workflow and ADR-023 amendment",
|
|
"ac_total": 1,
|
|
"ac_completed": 1,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
},
|
|
"11-documentation": {
|
|
"status": "done",
|
|
"title": "Documentation and conformance reference updates",
|
|
"ac_total": 2,
|
|
"ac_completed": 2,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ready": [],
|
|
"blocked": [],
|
|
"needs_prd_ship": []
|
|
}
|