{ "updated_at": "2026-07-12T13:32:10.837Z", "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": { "00-baseline-repair": { "status": "done", "title": "Baseline repair — L0 coverage tooling and documented command", "ac_total": 1, "ac_completed": 1, "depends_on": [], "blocks": [] }, "01-commit-product-docs": { "status": "done", "title": "Commit the product spec and design references under docs/product/", "ac_total": 3, "ac_completed": 3, "depends_on": [], "blocks": [ "08-rewrite-agent-docs" ] }, "02-single-version-release-please": { "status": "done", "title": "Rewrite release-please to a single root product version", "ac_total": 1, "ac_completed": 1, "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": 1, "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": "03-delete-demo-apps-and-features", "title": "Delete web-tanstack and the four demo content features" }, { "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": "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": [] }