platform-retrofit: 8 stories / 18 tasks (spec bundle into docs/product, single-version release-please before deletions, demo feature removal, web-next auth shell, optional cores, work-tree archive, library traces, agent-doc rewrite). walking-skeleton: 11 stories / 28 tasks across workspaces, discovery, core-runner-protocol, runner app, editor, and the flagship connect-to-selection e2e; builds on platform-retrofit (prose dependency note — cross-epic frontmatter unsupported). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
1105 lines
34 KiB
JSON
1105 lines
34 KiB
JSON
{
|
|
"updated_at": "2026-07-12T10:28:27.450Z",
|
|
"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": []
|
|
}
|
|
}
|
|
},
|
|
"platform-retrofit": {
|
|
"status": "in-progress",
|
|
"title": "Platform retrofit — repurpose template-vertical as the Veect monorepo",
|
|
"prd": "docs/work/prds/platform-retrofit.prd.md",
|
|
"stories": {
|
|
"01-commit-product-docs": {
|
|
"status": "in-progress",
|
|
"title": "Commit the product spec and design references under docs/product/",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"08-rewrite-agent-docs"
|
|
]
|
|
},
|
|
"02-single-version-release-please": {
|
|
"status": "todo",
|
|
"title": "Rewrite release-please to a single root product version",
|
|
"ac_total": 1,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"03-delete-demo-apps-and-features",
|
|
"08-rewrite-agent-docs"
|
|
]
|
|
},
|
|
"03-delete-demo-apps-and-features": {
|
|
"status": "todo",
|
|
"title": "Delete web-tanstack and the four demo content features",
|
|
"ac_total": 5,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"02-single-version-release-please"
|
|
],
|
|
"blocks": [
|
|
"04-web-next-shell",
|
|
"08-rewrite-agent-docs"
|
|
]
|
|
},
|
|
"04-web-next-shell": {
|
|
"status": "todo",
|
|
"title": "Reduce web-next to an auth shell with a boot smoke assertion",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"03-delete-demo-apps-and-features"
|
|
],
|
|
"blocks": [
|
|
"08-rewrite-agent-docs"
|
|
]
|
|
},
|
|
"05-scaffold-optional-cores": {
|
|
"status": "todo",
|
|
"title": "Scaffold core-events and core-realtime",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"08-rewrite-agent-docs"
|
|
]
|
|
},
|
|
"06-archive-template-work": {
|
|
"status": "todo",
|
|
"title": "Archive the shipped template work tree",
|
|
"ac_total": 1,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
},
|
|
"07-editor-library-traces": {
|
|
"status": "todo",
|
|
"title": "Library traces for @xyflow/react and zustand",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
},
|
|
"08-rewrite-agent-docs": {
|
|
"status": "todo",
|
|
"title": "Rewrite CLAUDE.md and AGENTS.md for Veect",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"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": []
|
|
}
|
|
}
|
|
},
|
|
"walking-skeleton": {
|
|
"status": "in-progress",
|
|
"title": "Walking skeleton — one real component, end to end through the hosted spine",
|
|
"prd": "docs/work/prds/walking-skeleton.prd.md",
|
|
"stories": {
|
|
"01-vite-kitchen-fixture": {
|
|
"status": "in-progress",
|
|
"title": "vite-kitchen fixture + git-serving test helpers",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"04-runner-app-protocol-clone-install"
|
|
]
|
|
},
|
|
"02-core-runner-protocol": {
|
|
"status": "todo",
|
|
"title": "core-runner-protocol package — versioned, zod-validated message schemas",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"04-runner-app-protocol-clone-install",
|
|
"09-editor-package"
|
|
]
|
|
},
|
|
"03-workspaces-feature-core": {
|
|
"status": "todo",
|
|
"title": "workspaces feature core — connect, status, list + encrypted credential storage",
|
|
"ac_total": 4,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": []
|
|
},
|
|
"04-runner-app-protocol-clone-install": {
|
|
"status": "todo",
|
|
"title": "runner app — protocol server, clone stage, install stage",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"01-vite-kitchen-fixture",
|
|
"02-core-runner-protocol"
|
|
],
|
|
"blocks": [
|
|
"05-runner-scan-and-preview-adapter",
|
|
"06-runner-provisioner-port"
|
|
]
|
|
},
|
|
"05-runner-scan-and-preview-adapter": {
|
|
"status": "todo",
|
|
"title": "runner scan stage + embedded-Vite preview adapter + canvas agent v0",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"04-runner-app-protocol-clone-install"
|
|
],
|
|
"blocks": [
|
|
"07-runner-lifecycle-events-and-realtime"
|
|
]
|
|
},
|
|
"06-runner-provisioner-port": {
|
|
"status": "todo",
|
|
"title": "IRunnerProvisioner port + local-process and single-host Docker implementations",
|
|
"ac_total": 2,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"03-workspaces-feature-core",
|
|
"04-runner-app-protocol-clone-install"
|
|
],
|
|
"blocks": [
|
|
"07-runner-lifecycle-events-and-realtime"
|
|
]
|
|
},
|
|
"07-runner-lifecycle-events-and-realtime": {
|
|
"status": "todo",
|
|
"title": "runner lifecycle — status events, scan event, realtime channel",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"08-discovery-feature",
|
|
"10-web-next-wiring"
|
|
]
|
|
},
|
|
"08-discovery-feature": {
|
|
"status": "todo",
|
|
"title": "discovery feature — registry snapshots, getRegistry, scan ingestion",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"07-runner-lifecycle-events-and-realtime"
|
|
],
|
|
"blocks": [
|
|
"10-web-next-wiring"
|
|
]
|
|
},
|
|
"09-editor-package": {
|
|
"status": "todo",
|
|
"title": "editor package — React Flow board, iframe frame node, canvas-protocol client",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"02-core-runner-protocol"
|
|
],
|
|
"blocks": [
|
|
"10-web-next-wiring"
|
|
]
|
|
},
|
|
"10-web-next-wiring": {
|
|
"status": "todo",
|
|
"title": "web-next wiring — connect UX, staged progress, editor route",
|
|
"ac_total": 3,
|
|
"ac_completed": 0,
|
|
"depends_on": [],
|
|
"blocks": [
|
|
"11-flagship-e2e"
|
|
]
|
|
},
|
|
"11-flagship-e2e": {
|
|
"status": "todo",
|
|
"title": "flagship e2e — connect vite-kitchen to selection round-trip",
|
|
"ac_total": 1,
|
|
"ac_completed": 0,
|
|
"depends_on": [
|
|
"10-web-next-wiring"
|
|
],
|
|
"blocks": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ready": [
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "01-commit-product-docs",
|
|
"title": "Commit the product spec and design references under docs/product/"
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "02-single-version-release-please",
|
|
"title": "Rewrite release-please to a single root product version"
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "05-scaffold-optional-cores",
|
|
"title": "Scaffold core-events and core-realtime"
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "06-archive-template-work",
|
|
"title": "Archive the shipped template work tree"
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "07-editor-library-traces",
|
|
"title": "Library traces for @xyflow/react and zustand"
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "08-rewrite-agent-docs",
|
|
"title": "Rewrite CLAUDE.md and AGENTS.md for Veect"
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "01-vite-kitchen-fixture",
|
|
"title": "vite-kitchen fixture + git-serving test helpers"
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "02-core-runner-protocol",
|
|
"title": "core-runner-protocol package — versioned, zod-validated message schemas"
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "03-workspaces-feature-core",
|
|
"title": "workspaces feature core — connect, status, list + encrypted credential storage"
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "07-runner-lifecycle-events-and-realtime",
|
|
"title": "runner lifecycle — status events, scan event, realtime channel"
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "10-web-next-wiring",
|
|
"title": "web-next wiring — connect UX, staged progress, editor route"
|
|
}
|
|
],
|
|
"blocked": [
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "03-delete-demo-apps-and-features",
|
|
"title": "Delete web-tanstack and the four demo content features",
|
|
"waiting_on": [
|
|
"platform-retrofit/02-single-version-release-please"
|
|
]
|
|
},
|
|
{
|
|
"epic": "platform-retrofit",
|
|
"story": "04-web-next-shell",
|
|
"title": "Reduce web-next to an auth shell with a boot smoke assertion",
|
|
"waiting_on": [
|
|
"platform-retrofit/03-delete-demo-apps-and-features"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "04-runner-app-protocol-clone-install",
|
|
"title": "runner app — protocol server, clone stage, install stage",
|
|
"waiting_on": [
|
|
"walking-skeleton/01-vite-kitchen-fixture",
|
|
"walking-skeleton/02-core-runner-protocol"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "05-runner-scan-and-preview-adapter",
|
|
"title": "runner scan stage + embedded-Vite preview adapter + canvas agent v0",
|
|
"waiting_on": [
|
|
"walking-skeleton/04-runner-app-protocol-clone-install"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "06-runner-provisioner-port",
|
|
"title": "IRunnerProvisioner port + local-process and single-host Docker implementations",
|
|
"waiting_on": [
|
|
"walking-skeleton/03-workspaces-feature-core",
|
|
"walking-skeleton/04-runner-app-protocol-clone-install"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "08-discovery-feature",
|
|
"title": "discovery feature — registry snapshots, getRegistry, scan ingestion",
|
|
"waiting_on": [
|
|
"walking-skeleton/07-runner-lifecycle-events-and-realtime"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "09-editor-package",
|
|
"title": "editor package — React Flow board, iframe frame node, canvas-protocol client",
|
|
"waiting_on": [
|
|
"walking-skeleton/02-core-runner-protocol"
|
|
]
|
|
},
|
|
{
|
|
"epic": "walking-skeleton",
|
|
"story": "11-flagship-e2e",
|
|
"title": "flagship e2e — connect vite-kitchen to selection round-trip",
|
|
"waiting_on": [
|
|
"walking-skeleton/10-web-next-wiring"
|
|
]
|
|
}
|
|
],
|
|
"needs_prd_ship": []
|
|
}
|