rcf-lite 0.0.1 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +288 -0
- package/LICENSE +202 -0
- package/README.md +92 -4
- package/bin/rcf-verify.js +122 -0
- package/bin/rcf.js +174 -0
- package/bin/view-supervisor-child.mjs +14 -0
- package/fixtures/canary-manifest.json +103 -0
- package/guidance/README.md +25 -0
- package/guidance/build-cycle-playbook.md +492 -0
- package/guidance/build-cycle.md +40 -0
- package/guidance/document-model.md +45 -0
- package/guidance/elicitation-playbook.md +442 -0
- package/guidance/harness-template.md +246 -0
- package/guidance/managed/README.md +63 -0
- package/guidance/managed/agent-instructions-block.hash +1 -0
- package/guidance/managed/agent-instructions-block.md +220 -0
- package/guidance/managed/legacy-fragment-hashes.json +22 -0
- package/guidance/manifest.json +21 -0
- package/guidance/overview.md +48 -0
- package/guidance/persona-programme.md +44 -0
- package/package.json +69 -8
- package/rcf/adrs/adr-001.json +25 -0
- package/rcf/adrs/adr-002.json +25 -0
- package/rcf/adrs/adr-003.json +25 -0
- package/rcf/adrs/adr-004.json +20 -0
- package/rcf/adrs/adr-005.json +20 -0
- package/rcf/adrs/adr-006.json +25 -0
- package/rcf/adrs/adr-007.json +25 -0
- package/rcf/adrs/adr-008.json +25 -0
- package/rcf/adrs/adr-009.json +25 -0
- package/rcf/build-sequence.json +11 -0
- package/rcf/code-nodes/cn-001.json +14 -0
- package/rcf/code-nodes/cn-002.json +14 -0
- package/rcf/code-nodes/cn-003.json +15 -0
- package/rcf/code-nodes/cn-004.json +17 -0
- package/rcf/code-nodes/cn-005.json +19 -0
- package/rcf/code-nodes/cn-006.json +17 -0
- package/rcf/code-nodes/cn-007.json +16 -0
- package/rcf/code-nodes/cn-008.json +19 -0
- package/rcf/code-nodes/cn-009.json +16 -0
- package/rcf/code-nodes/cn-010.json +18 -0
- package/rcf/code-nodes/cn-011.json +18 -0
- package/rcf/code-nodes/cn-012.json +18 -0
- package/rcf/code-nodes/cn-013.json +19 -0
- package/rcf/code-nodes/cn-014.json +16 -0
- package/rcf/code-nodes/cn-015.json +16 -0
- package/rcf/code-nodes/cn-016.json +16 -0
- package/rcf/code-nodes/cn-017.json +16 -0
- package/rcf/code-nodes/cn-018.json +15 -0
- package/rcf/code-nodes/cn-019.json +16 -0
- package/rcf/code-nodes/cn-020.json +16 -0
- package/rcf/code-nodes/cn-021.json +16 -0
- package/rcf/code-nodes/cn-022.json +16 -0
- package/rcf/code-nodes/cn-023.json +16 -0
- package/rcf/code-nodes/cn-024.json +16 -0
- package/rcf/code-nodes/cn-025.json +16 -0
- package/rcf/code-nodes/cn-026.json +16 -0
- package/rcf/code-nodes/cn-027.json +16 -0
- package/rcf/code-nodes/cn-028.json +16 -0
- package/rcf/code-nodes/cn-029.json +19 -0
- package/rcf/code-nodes/cn-030.json +14 -0
- package/rcf/code-nodes/cn-031.json +14 -0
- package/rcf/code-nodes/cn-032.json +14 -0
- package/rcf/code-nodes/cn-033.json +14 -0
- package/rcf/code-nodes/cn-034.json +14 -0
- package/rcf/code-nodes/cn-035.json +14 -0
- package/rcf/code-nodes/cn-036.json +14 -0
- package/rcf/code-nodes/cn-037.json +14 -0
- package/rcf/code-nodes/cn-038.json +14 -0
- package/rcf/code-nodes/cn-039.json +14 -0
- package/rcf/code-nodes/cn-040.json +14 -0
- package/rcf/code-nodes/cn-041.json +14 -0
- package/rcf/code-nodes/cn-042.json +14 -0
- package/rcf/code-nodes/cn-043.json +14 -0
- package/rcf/code-nodes/cn-044.json +14 -0
- package/rcf/code-nodes/cn-045.json +14 -0
- package/rcf/code-nodes/cn-046.json +14 -0
- package/rcf/code-nodes/cn-047.json +14 -0
- package/rcf/code-nodes/cn-048.json +14 -0
- package/rcf/code-nodes/cn-049.json +14 -0
- package/rcf/code-nodes/cn-050.json +14 -0
- package/rcf/code-nodes/cn-051.json +14 -0
- package/rcf/code-nodes/cn-052.json +14 -0
- package/rcf/code-nodes/cn-053.json +14 -0
- package/rcf/code-nodes/cn-054.json +14 -0
- package/rcf/code-nodes/cn-055.json +14 -0
- package/rcf/code-nodes/cn-056.json +14 -0
- package/rcf/code-nodes/cn-057.json +14 -0
- package/rcf/fbs/fbs-001.json +49 -0
- package/rcf/fbs/fbs-002.json +42 -0
- package/rcf/fbs/fbs-003.json +37 -0
- package/rcf/fbs/fbs-004.json +39 -0
- package/rcf/fbs/fbs-005.json +38 -0
- package/rcf/fbs/fbs-006.json +48 -0
- package/rcf/fbs/fbs-007.json +39 -0
- package/rcf/fbs/fbs-008.json +40 -0
- package/rcf/fbs/fbs-009.json +36 -0
- package/rcf/fbs/fbs-010.json +41 -0
- package/rcf/fbs/fbs-011.json +36 -0
- package/rcf/fbs/fbs-012.json +46 -0
- package/rcf/fbs/fbs-013.json +42 -0
- package/rcf/fbs/fbs-014.json +49 -0
- package/rcf/fbs/fbs-015.json +32 -0
- package/rcf/manifest.json +17 -0
- package/rcf/prd.json +47 -0
- package/rcf/requirements/req-001.json +19 -0
- package/rcf/requirements/req-002.json +19 -0
- package/rcf/requirements/req-003.json +19 -0
- package/rcf/requirements/req-004.json +19 -0
- package/rcf/requirements/req-005.json +19 -0
- package/rcf/requirements/req-006.json +19 -0
- package/rcf/requirements/req-007.json +19 -0
- package/rcf/requirements/req-008.json +19 -0
- package/rcf/requirements/req-009.json +19 -0
- package/rcf/tacs/tac-001.json +45 -0
- package/rcf/tacs/tac-002.json +109 -0
- package/rcf/tacs/tac-003.json +40 -0
- package/rcf/tacs/tac-004.json +51 -0
- package/rcf/tacs/tac-005.json +52 -0
- package/rcf/tacs/tac-006.json +104 -0
- package/rcf/tacs/tac-007.json +38 -0
- package/rcf/tacs/tac-008.json +51 -0
- package/rcf/tad.json +51 -0
- package/rcf/test-suites/PENDING.md +23 -0
- package/rcf/test-suites/ts-001.json +38 -0
- package/rcf/test-suites/ts-002.json +38 -0
- package/rcf/test-suites/ts-003.json +43 -0
- package/rcf/test-suites/ts-004.json +44 -0
- package/rcf/test-suites/ts-005.json +30 -0
- package/rcf/test-suites/ts-006.json +36 -0
- package/rcf/test-suites/ts-007.json +43 -0
- package/rcf/test-suites/ts-008.json +37 -0
- package/rcf/test-suites/ts-009.json +38 -0
- package/rcf/test-suites/ts-010.json +38 -0
- package/rcf/test-suites/ts-011.json +44 -0
- package/rcf/test-suites/ts-012.json +36 -0
- package/rcf/test-suites/ts-013.json +38 -0
- package/rcf/test-suites/ts-014.json +38 -0
- package/rcf/test-suites/ts-015.json +38 -0
- package/rcf/test-suites/ts-016.json +37 -0
- package/rcf/test-suites/ts-017.json +38 -0
- package/rcf/test-suites/ts-018.json +38 -0
- package/rcf/test-suites/ts-019.json +37 -0
- package/rcf/test-suites/ts-020.json +46 -0
- package/rcf/test-suites/ts-021.json +46 -0
- package/rcf/test-suites/ts-022.json +46 -0
- package/rcf/test-suites/ts-023.json +46 -0
- package/rcf/test-suites/ts-024.json +46 -0
- package/rcf/test-suites/ts-025.json +52 -0
- package/rcf/user-stories/us-101.json +40 -0
- package/rcf/user-stories/us-102.json +40 -0
- package/rcf/user-stories/us-201.json +40 -0
- package/rcf/user-stories/us-202.json +40 -0
- package/rcf/user-stories/us-203.json +32 -0
- package/rcf/user-stories/us-301.json +40 -0
- package/rcf/user-stories/us-302.json +40 -0
- package/rcf/user-stories/us-303.json +40 -0
- package/rcf/user-stories/us-304.json +40 -0
- package/rcf/user-stories/us-401.json +40 -0
- package/rcf/user-stories/us-402.json +40 -0
- package/rcf/user-stories/us-403.json +40 -0
- package/rcf/user-stories/us-501.json +40 -0
- package/rcf/user-stories/us-502.json +40 -0
- package/rcf/user-stories/us-503.json +40 -0
- package/rcf/user-stories/us-601.json +40 -0
- package/rcf/user-stories/us-602.json +40 -0
- package/rcf/user-stories/us-701.json +40 -0
- package/rcf/user-stories/us-702.json +40 -0
- package/rcf/user-stories/us-801.json +49 -0
- package/rcf/user-stories/us-802.json +49 -0
- package/rcf/user-stories/us-803.json +49 -0
- package/rcf/user-stories/us-804.json +49 -0
- package/rcf/user-stories/us-805.json +49 -0
- package/rcf/user-stories/us-901.json +40 -0
- package/src/.gitkeep +0 -0
- package/src/browser-verify/auth-smoke.js +109 -0
- package/src/browser-verify/index.js +29 -0
- package/src/browser-verify/invariants.js +336 -0
- package/src/browser-verify/manifest-writer.js +189 -0
- package/src/browser-verify/runner.js +171 -0
- package/src/build/bundle.js +198 -0
- package/src/build/formatters/json.js +18 -0
- package/src/build/formatters/markdown.js +406 -0
- package/src/build/index.js +14 -0
- package/src/build/mark.js +177 -0
- package/src/build/queue.js +285 -0
- package/src/cli/browser-verify.js +231 -0
- package/src/cli/build.js +584 -0
- package/src/cli/coverage.js +219 -0
- package/src/cli/create.js +355 -0
- package/src/cli/delete.js +127 -0
- package/src/cli/design.js +353 -0
- package/src/cli/doctor.js +548 -0
- package/src/cli/fbs.js +171 -0
- package/src/cli/finalise.js +377 -0
- package/src/cli/guidance.js +206 -0
- package/src/cli/help.js +156 -0
- package/src/cli/impact.js +119 -0
- package/src/cli/init.js +282 -0
- package/src/cli/intake.js +153 -0
- package/src/cli/link.js +128 -0
- package/src/cli/mcp.js +160 -0
- package/src/cli/preflight.js +220 -0
- package/src/cli/read.js +162 -0
- package/src/cli/req-baseline.js +269 -0
- package/src/cli/req-classify.js +135 -0
- package/src/cli/review.js +295 -0
- package/src/cli/test-suite.js +216 -0
- package/src/cli/trace.js +172 -0
- package/src/cli/ui-baseline.js +292 -0
- package/src/cli/ui-classify.js +108 -0
- package/src/cli/update.js +197 -0
- package/src/cli/validate.js +168 -0
- package/src/cli/view.js +452 -0
- package/src/core/baseline-catalog/data/auth.json +42 -0
- package/src/core/baseline-catalog/data/http-api.json +42 -0
- package/src/core/baseline-catalog/data/notifications.json +33 -0
- package/src/core/baseline-catalog/data/persistence.json +33 -0
- package/src/core/baseline-catalog/data/web-ui.json +60 -0
- package/src/core/baseline-catalog/index.js +121 -0
- package/src/core/errors/index.js +167 -0
- package/src/core/fixtures/register-canary/canary-prompt-01.json +18 -0
- package/src/core/fixtures/register-canary/canary-prompt-02.json +21 -0
- package/src/core/fixtures/register-canary/canary-prompt-03.json +17 -0
- package/src/core/isolation/index.js +60 -0
- package/src/core/mcp/framing.js +103 -0
- package/src/core/mcp/index.js +8 -0
- package/src/core/mcp/server.js +228 -0
- package/src/core/patterns/register-canary.js +209 -0
- package/src/core/patterns/req-shapes.js +158 -0
- package/src/core/patterns/services.js +358 -0
- package/src/core/patterns/ui-shapes.js +166 -0
- package/src/core/store/cn-resolve.js +134 -0
- package/src/core/store/derive-deps.js +93 -0
- package/src/core/store/ids.js +78 -0
- package/src/core/store/index.js +20 -0
- package/src/core/store/init.js +255 -0
- package/src/core/store/loader.js +211 -0
- package/src/core/store/tp-resolve.js +176 -0
- package/src/core/store/validator.js +191 -0
- package/src/core/store/walker.js +898 -0
- package/src/core/store/writer.js +1849 -0
- package/src/design/index.js +11 -0
- package/src/design/writer.js +271 -0
- package/src/finalise/detect.js +129 -0
- package/src/finalise/index.js +17 -0
- package/src/finalise/ingest.js +119 -0
- package/src/finalise/install.js +119 -0
- package/src/finalise/ship-without-verified.js +131 -0
- package/src/finalise/spawn.js +84 -0
- package/src/intake/fidelity.js +105 -0
- package/src/intake/index.js +6 -0
- package/src/intake/manifest-writer.js +100 -0
- package/src/intake/orchestrator.js +138 -0
- package/src/intake/validate.js +80 -0
- package/src/mcp/map-errors.js +131 -0
- package/src/mcp/prompts.js +49 -0
- package/src/mcp/resources.js +244 -0
- package/src/mcp/tools.js +1204 -0
- package/src/preflight/design-shapes.js +185 -0
- package/src/preflight/index.js +90 -0
- package/src/preflight/manifest-writer.js +264 -0
- package/src/preflight/scanner.js +206 -0
- package/src/preflight/secrets.js +134 -0
- package/src/preflight/session.js +246 -0
- package/src/query/attestation.js +285 -0
- package/src/query/coverage.js +308 -0
- package/src/query/formatters/json.js +21 -0
- package/src/query/formatters/mermaid.js +209 -0
- package/src/query/formatters/table.js +203 -0
- package/src/query/impact.js +173 -0
- package/src/query/index.js +9 -0
- package/src/query/trace.js +345 -0
- package/src/register-canary/fixture-loader.js +87 -0
- package/src/register-canary/index.js +10 -0
- package/src/register-canary/record-writer.js +132 -0
- package/src/register-canary/runner.js +156 -0
- package/src/req-baseline/gate.js +86 -0
- package/src/req-baseline/index.js +27 -0
- package/src/req-baseline/open-candidates.js +143 -0
- package/src/req-baseline/opt-out.js +195 -0
- package/src/req-baseline/sweep.js +230 -0
- package/src/req-detection/classifier.js +181 -0
- package/src/req-detection/index.js +9 -0
- package/src/req-detection/persist.js +55 -0
- package/src/review/index.js +325 -0
- package/src/review/mutation.js +117 -0
- package/src/review/ui-baseline-drift.js +138 -0
- package/src/server/index.js +178 -0
- package/src/server/routes.js +110 -0
- package/src/server/sse.js +118 -0
- package/src/setup/agent-setup.js +362 -0
- package/src/setup/identity-seed.js +104 -0
- package/src/setup/knowledge-seed.js +123 -0
- package/src/setup/managed-block.js +193 -0
- package/src/setup/managed-gitignore.js +166 -0
- package/src/setup/managed-markers.js +49 -0
- package/src/ui-baseline/defaults.js +119 -0
- package/src/ui-baseline/index.js +25 -0
- package/src/ui-baseline/manifest-writer.js +282 -0
- package/src/ui-baseline/session.js +178 -0
- package/src/ui-detection/classifier.js +192 -0
- package/src/verify/chain/index.js +190 -0
- package/src/verify/cli/cleanup.js +61 -0
- package/src/verify/cli/help.js +56 -0
- package/src/verify/cli/mcp.js +98 -0
- package/src/verify/cli/provision.js +71 -0
- package/src/verify/cli/report.js +71 -0
- package/src/verify/cli/run.js +155 -0
- package/src/verify/engine/brief.js +87 -0
- package/src/verify/engine/index.js +177 -0
- package/src/verify/engine/launcher.js +307 -0
- package/src/verify/mcp/tools.js +107 -0
- package/src/verify/profile/index.js +146 -0
- package/src/verify/provision/index.js +256 -0
- package/src/verify/report/index.js +139 -0
- package/src/verify/report/renderer.js +118 -0
- package/src/verify/verdict/index.js +246 -0
- package/src/view/doc-renderers/adr.js +44 -0
- package/src/view/doc-renderers/build-sequence.js +40 -0
- package/src/view/doc-renderers/fbs.js +128 -0
- package/src/view/doc-renderers/helpers.js +159 -0
- package/src/view/doc-renderers/index.js +12 -0
- package/src/view/doc-renderers/prd.js +45 -0
- package/src/view/doc-renderers/req.js +43 -0
- package/src/view/doc-renderers/tac.js +38 -0
- package/src/view/doc-renderers/tad.js +74 -0
- package/src/view/doc-renderers/test-suite.js +45 -0
- package/src/view/doc-renderers/user-story.js +63 -0
- package/src/view/html-page.js +462 -0
- package/src/view/index.js +63 -0
- package/src/view/live-client.js +338 -0
- package/src/view/mermaid-diagram.js +178 -0
- package/src/view/style.css +735 -0
- package/src/view/tree-model.js +152 -0
- package/src/view/vendored/mermaid.min.js +2607 -0
- package/src/view-supervisor/index.js +26 -0
- package/src/view-supervisor/logs.js +32 -0
- package/src/view-supervisor/manifest-writer.js +178 -0
- package/src/view-supervisor/persist-until.js +85 -0
- package/src/view-supervisor/supervisor.js +276 -0
- package/src/watch/index.js +152 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-053",
|
|
3
|
+
"path": "test/guidance/tier1-hardening.test.js",
|
|
4
|
+
"implementsAcIds": [
|
|
5
|
+
"AC-804-4"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-07-20T18:03:32.912Z",
|
|
11
|
+
"updatedAt": "2026-07-20T18:04:09.540Z",
|
|
12
|
+
"title": "Drift test: labelled runtime example",
|
|
13
|
+
"description": "Tier-1 drift test asserts the Cloudflare and non-Cloudflare labelled examples (AC-804-4)."
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-054",
|
|
3
|
+
"path": "test/guidance/tier1-hardening.test.js",
|
|
4
|
+
"implementsAcIds": [
|
|
5
|
+
"AC-805-1"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-07-20T18:03:33.065Z",
|
|
11
|
+
"updatedAt": "2026-07-20T18:04:09.700Z",
|
|
12
|
+
"title": "Drift test: interim self-review dispatch",
|
|
13
|
+
"description": "Tier-1 drift test asserts the periodic/end-of-build self-review invariant (AC-805-1)."
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-055",
|
|
3
|
+
"path": "bin/rcf.js",
|
|
4
|
+
"implementsAcIds": [
|
|
5
|
+
"AC-901-1"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-08-11T00:00:00Z",
|
|
11
|
+
"updatedAt": "2026-08-11T00:00:00Z",
|
|
12
|
+
"title": "Unified `rcf` bin: verify subcommand dispatch",
|
|
13
|
+
"description": "The umbrella CLI entry point. Imports the alias bin's `main` and registers it as the `verify` entry on the top-level SUBCOMMANDS map so `rcf verify <verb>` dispatches through the same handlers as `rcf-verify <verb>`."
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-056",
|
|
3
|
+
"path": "src/cli/help.js",
|
|
4
|
+
"implementsAcIds": [
|
|
5
|
+
"AC-901-2"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-08-11T00:00:00Z",
|
|
11
|
+
"updatedAt": "2026-08-11T00:00:00Z",
|
|
12
|
+
"title": "Top-level help: verify subcommand advertised",
|
|
13
|
+
"description": "The top-level command table in TOP_LEVEL_HELP lists `verify <verb>`; HELP_MAP routes `help verify` to the verify subcommand tree's TOP_LEVEL_HELP block (single-source rule)."
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-057",
|
|
3
|
+
"path": "bin/rcf-verify.js",
|
|
4
|
+
"implementsAcIds": [
|
|
5
|
+
"AC-901-3"
|
|
6
|
+
],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-08-11T00:00:00Z",
|
|
11
|
+
"updatedAt": "2026-08-11T00:00:00Z",
|
|
12
|
+
"title": "Alias bin: transition-grace deprecation notice",
|
|
13
|
+
"description": "Direct invocation of the `rcf-verify` alias bin emits a one-line stderr notice pointing at `rcf verify` as the preferred invocation. Guarded by RCF_QUIET for scripted callers who cannot tolerate stderr chatter."
|
|
14
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-001",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Document store core",
|
|
6
|
+
"summary": "Build the document store: id-to-path resolution, JSON parse, schema validation against the registered bundle, persist-after-validate, and a tree walk from the manifest roots.",
|
|
7
|
+
"approach": "Register the published schema bundle once at start-up. Resolve ids to paths by the recommended layout convention. Make load and save the only filesystem touch points. Return structured errors rather than throwing strings, so every surface can report them consistently.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-101-1",
|
|
10
|
+
"AC-101-2",
|
|
11
|
+
"AC-101-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tadSections": [
|
|
15
|
+
"systemOverview",
|
|
16
|
+
"integrationArchitecture"
|
|
17
|
+
],
|
|
18
|
+
"tacIds": [
|
|
19
|
+
"TAC-001"
|
|
20
|
+
],
|
|
21
|
+
"adrIds": [
|
|
22
|
+
"ADR-001",
|
|
23
|
+
"ADR-002"
|
|
24
|
+
],
|
|
25
|
+
"schemas": [
|
|
26
|
+
"manifest.schema.json",
|
|
27
|
+
"prd.schema.json"
|
|
28
|
+
],
|
|
29
|
+
"externalDocs": [
|
|
30
|
+
"https://ajv.js.org/"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"estimatedSize": "medium",
|
|
34
|
+
"estimatedHours": 6,
|
|
35
|
+
"deliverables": [
|
|
36
|
+
"Document store module with load, save and walkTree",
|
|
37
|
+
"Schema bundle registration at start-up",
|
|
38
|
+
"Structured error type for validation and reference failures",
|
|
39
|
+
"Init command that refuses to overwrite an existing project without an explicit force flag"
|
|
40
|
+
],
|
|
41
|
+
"riskLevel": "low",
|
|
42
|
+
"domain": "projectStructure",
|
|
43
|
+
"notes": "Everything else in the build sequence depends on this; keep the public surface small and stable. AC-101-2 (init refuses to overwrite an existing project) is grouped here as init-verb behaviour adjacent to AC-101-1; the spec did not assign it to any FBS in round 1.",
|
|
44
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
45
|
+
"updatedAt": "2026-07-02T10:22:43Z",
|
|
46
|
+
"buildOrder": 1,
|
|
47
|
+
"executionStatus": "complete",
|
|
48
|
+
"dependsOnFbsIds": []
|
|
49
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-002",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Tree walk and validate command",
|
|
6
|
+
"summary": "Walk from the manifest roots, resolve every child by id, and ship a CLI validate command that reports project health by running schema validation across the loaded tree and listing broken references.",
|
|
7
|
+
"approach": "Build the walker on top of the store. Surface every load failure as a structured error rather than a crash. The validate command is the first user-visible verb so its output sets the precedent for how errors render across the tool.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-102-1",
|
|
10
|
+
"AC-102-2",
|
|
11
|
+
"AC-102-3",
|
|
12
|
+
"AC-701-3"
|
|
13
|
+
],
|
|
14
|
+
"contextRequirements": {
|
|
15
|
+
"tacIds": [
|
|
16
|
+
"TAC-001",
|
|
17
|
+
"TAC-007"
|
|
18
|
+
],
|
|
19
|
+
"adrIds": [
|
|
20
|
+
"ADR-002"
|
|
21
|
+
],
|
|
22
|
+
"schemas": [
|
|
23
|
+
"manifest.schema.json"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"estimatedSize": "small",
|
|
27
|
+
"estimatedHours": 4,
|
|
28
|
+
"deliverables": [
|
|
29
|
+
"Tree walker reaching every child from the roots",
|
|
30
|
+
"CLI validate command with structured-error output"
|
|
31
|
+
],
|
|
32
|
+
"riskLevel": "low",
|
|
33
|
+
"domain": "projectStructure",
|
|
34
|
+
"notes": "This is where load-time validation behaviour becomes user-visible; the rendering it lands sets the pattern for every later surface.",
|
|
35
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
36
|
+
"updatedAt": "2026-07-02T10:22:43Z",
|
|
37
|
+
"buildOrder": 2,
|
|
38
|
+
"executionStatus": "complete",
|
|
39
|
+
"dependsOnFbsIds": [
|
|
40
|
+
"FBS-001"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-003",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Diagram rendering",
|
|
6
|
+
"summary": "Render the whole RCF tree as a Mermaid diagram with chain edges between documents and visible markers on broken references.",
|
|
7
|
+
"approach": "Walk the loaded tree once and emit Mermaid source for the chain. Treat broken references as first-class edges rendered with a distinct style so the owner cannot miss them. Output is written to the fixed view directory.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-201-1",
|
|
10
|
+
"AC-201-2",
|
|
11
|
+
"AC-201-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tacIds": [
|
|
15
|
+
"TAC-003"
|
|
16
|
+
],
|
|
17
|
+
"adrIds": [
|
|
18
|
+
"ADR-001"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"estimatedSize": "small",
|
|
22
|
+
"estimatedHours": 4,
|
|
23
|
+
"deliverables": [
|
|
24
|
+
"Mermaid diagram source for the whole tree",
|
|
25
|
+
"Broken-reference markers in the diagram"
|
|
26
|
+
],
|
|
27
|
+
"riskLevel": "low",
|
|
28
|
+
"domain": "view",
|
|
29
|
+
"notes": "Mermaid is locked; do not introduce a pluggable interface in this slice.",
|
|
30
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
31
|
+
"updatedAt": "2026-07-02T10:22:43Z",
|
|
32
|
+
"buildOrder": 3,
|
|
33
|
+
"executionStatus": "complete",
|
|
34
|
+
"dependsOnFbsIds": [
|
|
35
|
+
"FBS-002"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-004",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "HTML page rendering",
|
|
6
|
+
"summary": "Produce the static browsable page of the whole tree, rendering each document as a readable section and resolving inter-document links between sections.",
|
|
7
|
+
"approach": "Reuse the walker to emit a templated HTML page that opens directly in a browser with no server process. Each document gets a section with its key fields rendered as readable text; links between documents navigate by id.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-202-1",
|
|
10
|
+
"AC-202-2",
|
|
11
|
+
"AC-202-3",
|
|
12
|
+
"AC-203-1",
|
|
13
|
+
"AC-203-2"
|
|
14
|
+
],
|
|
15
|
+
"contextRequirements": {
|
|
16
|
+
"tacIds": [
|
|
17
|
+
"TAC-003"
|
|
18
|
+
],
|
|
19
|
+
"adrIds": [
|
|
20
|
+
"ADR-001"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"estimatedSize": "medium",
|
|
24
|
+
"estimatedHours": 6,
|
|
25
|
+
"deliverables": [
|
|
26
|
+
"Static HTML page covering every document",
|
|
27
|
+
"Section anchors and inter-document links"
|
|
28
|
+
],
|
|
29
|
+
"riskLevel": "low",
|
|
30
|
+
"domain": "view",
|
|
31
|
+
"notes": "The page is generated fresh each run; no cached prior state lingers between regenerations.",
|
|
32
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
33
|
+
"updatedAt": "2026-07-02T10:22:43Z",
|
|
34
|
+
"buildOrder": 4,
|
|
35
|
+
"executionStatus": "complete",
|
|
36
|
+
"dependsOnFbsIds": [
|
|
37
|
+
"FBS-002"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-005",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "CLI read verbs",
|
|
6
|
+
"summary": "Land the read verb of the CLI: read any document by id and report its validity, with structured not-found errors for missing ids and combined content-plus-errors for invalid documents.",
|
|
7
|
+
"approach": "Map the read verb to the store's load operation. Render the document and its validation outcome together so the user can see content and any problems in one view.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-301-1",
|
|
10
|
+
"AC-301-2",
|
|
11
|
+
"AC-301-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tacIds": [
|
|
15
|
+
"TAC-002",
|
|
16
|
+
"TAC-001"
|
|
17
|
+
],
|
|
18
|
+
"adrIds": [
|
|
19
|
+
"ADR-004"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"estimatedSize": "small",
|
|
23
|
+
"estimatedHours": 3,
|
|
24
|
+
"deliverables": [
|
|
25
|
+
"rcf read verb with structured outcome",
|
|
26
|
+
"Combined content and validation rendering"
|
|
27
|
+
],
|
|
28
|
+
"riskLevel": "low",
|
|
29
|
+
"domain": "crud",
|
|
30
|
+
"notes": "Read is the simplest mutator-free verb; it locks the output shape later mutators reuse.",
|
|
31
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
32
|
+
"updatedAt": "2026-07-06T10:52:42.550Z",
|
|
33
|
+
"buildOrder": 5,
|
|
34
|
+
"executionStatus": "complete",
|
|
35
|
+
"dependsOnFbsIds": [
|
|
36
|
+
"FBS-002"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-006",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "CLI create and update verbs",
|
|
6
|
+
"summary": "Land the create and update verbs with validation-before-write, parent-linkage maintenance, conflict detection on create, and clear validation errors when a write is refused.",
|
|
7
|
+
"approach": "Both verbs share the validate-before-persist path. Create extends the parent's id list and writes both files only when both validate. Update advances updatedAt and refuses any write that would invalidate the document.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-302-1",
|
|
10
|
+
"AC-302-2",
|
|
11
|
+
"AC-302-3",
|
|
12
|
+
"AC-303-1",
|
|
13
|
+
"AC-303-2",
|
|
14
|
+
"AC-303-3",
|
|
15
|
+
"AC-701-1",
|
|
16
|
+
"AC-701-2",
|
|
17
|
+
"AC-702-1",
|
|
18
|
+
"AC-702-2"
|
|
19
|
+
],
|
|
20
|
+
"contextRequirements": {
|
|
21
|
+
"tacIds": [
|
|
22
|
+
"TAC-002",
|
|
23
|
+
"TAC-001",
|
|
24
|
+
"TAC-007"
|
|
25
|
+
],
|
|
26
|
+
"adrIds": [
|
|
27
|
+
"ADR-002",
|
|
28
|
+
"ADR-004"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
"estimatedSize": "medium",
|
|
32
|
+
"estimatedHours": 8,
|
|
33
|
+
"deliverables": [
|
|
34
|
+
"rcf create verb with parent linkage and conflict detection",
|
|
35
|
+
"rcf update verb with safe field updates",
|
|
36
|
+
"Validation-error renderer covering both verbs"
|
|
37
|
+
],
|
|
38
|
+
"riskLevel": "medium",
|
|
39
|
+
"domain": "crud",
|
|
40
|
+
"notes": "Cross-cutting validation criteria AC-701-1, AC-701-2, AC-702-1 and AC-702-2 land here because this is the first mutating surface.",
|
|
41
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
42
|
+
"updatedAt": "2026-07-06T10:52:42.640Z",
|
|
43
|
+
"buildOrder": 6,
|
|
44
|
+
"executionStatus": "complete",
|
|
45
|
+
"dependsOnFbsIds": [
|
|
46
|
+
"FBS-005"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-007",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "CLI delete with reference safety",
|
|
6
|
+
"summary": "Land the delete verb with reference safety: refuse by default when dependants exist, list the blocking references, and cascade only when an explicit flag is set.",
|
|
7
|
+
"approach": "Reuse the query engine's reverse index to detect inbound references and children. The default path refuses and lists; the cascade path removes the sub-tree and cleans every parent reference, leaving the tree valid.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-304-1",
|
|
10
|
+
"AC-304-2",
|
|
11
|
+
"AC-304-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tacIds": [
|
|
15
|
+
"TAC-002",
|
|
16
|
+
"TAC-004"
|
|
17
|
+
],
|
|
18
|
+
"adrIds": [
|
|
19
|
+
"ADR-004"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"estimatedSize": "medium",
|
|
23
|
+
"estimatedHours": 6,
|
|
24
|
+
"deliverables": [
|
|
25
|
+
"rcf delete verb with reference-safe default",
|
|
26
|
+
"Cascade flag with parent-reference cleanup"
|
|
27
|
+
],
|
|
28
|
+
"riskLevel": "medium",
|
|
29
|
+
"domain": "crud",
|
|
30
|
+
"notes": "Delete depends on the query engine for the reverse index; that is why it sits after coverage and trace queries land.",
|
|
31
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
32
|
+
"updatedAt": "2026-07-06T10:52:42.730Z",
|
|
33
|
+
"buildOrder": 7,
|
|
34
|
+
"executionStatus": "complete",
|
|
35
|
+
"dependsOnFbsIds": [
|
|
36
|
+
"FBS-006",
|
|
37
|
+
"FBS-008"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-008",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Coverage and trace queries",
|
|
6
|
+
"summary": "Land the coverage report and the trace-forward and trace-back queries, walking the intent chain only.",
|
|
7
|
+
"approach": "Build a walker over PRD to REQ to US to AC to TS to TC. Coverage flags every requirement without a story and every acceptance criterion without a test. Trace-forward and trace-back walk the chain from any given node, never touching the FBS layer.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-401-1",
|
|
10
|
+
"AC-401-2",
|
|
11
|
+
"AC-401-3",
|
|
12
|
+
"AC-402-1",
|
|
13
|
+
"AC-402-2",
|
|
14
|
+
"AC-402-3"
|
|
15
|
+
],
|
|
16
|
+
"contextRequirements": {
|
|
17
|
+
"tacIds": [
|
|
18
|
+
"TAC-004"
|
|
19
|
+
],
|
|
20
|
+
"adrIds": [
|
|
21
|
+
"ADR-004"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"estimatedSize": "medium",
|
|
25
|
+
"estimatedHours": 6,
|
|
26
|
+
"deliverables": [
|
|
27
|
+
"Coverage report covering requirements and acceptance criteria",
|
|
28
|
+
"Trace-forward and trace-back operations"
|
|
29
|
+
],
|
|
30
|
+
"riskLevel": "low",
|
|
31
|
+
"domain": "traceability",
|
|
32
|
+
"notes": "The intent-chain-only rule is load-bearing; the walker rejects FBS edges at the type level.",
|
|
33
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
34
|
+
"updatedAt": "2026-07-06T10:52:42.819Z",
|
|
35
|
+
"buildOrder": 8,
|
|
36
|
+
"executionStatus": "complete",
|
|
37
|
+
"dependsOnFbsIds": [
|
|
38
|
+
"FBS-002"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-009",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Impact analysis",
|
|
6
|
+
"summary": "Land impact analysis that returns descendants on the intent chain and any FBS slots whose context references the document under inspection.",
|
|
7
|
+
"approach": "Combine the intent-chain walker with a lookup over FBS contextRequirements to surface architecture impact and FBS-slot impact in one operation. Empty results are explicit, not silent.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-403-1",
|
|
10
|
+
"AC-403-2",
|
|
11
|
+
"AC-403-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tacIds": [
|
|
15
|
+
"TAC-004"
|
|
16
|
+
],
|
|
17
|
+
"adrIds": [
|
|
18
|
+
"ADR-004"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"estimatedSize": "small",
|
|
22
|
+
"estimatedHours": 4,
|
|
23
|
+
"deliverables": [
|
|
24
|
+
"Impact analysis covering intent-chain and FBS-context references"
|
|
25
|
+
],
|
|
26
|
+
"riskLevel": "low",
|
|
27
|
+
"domain": "traceability",
|
|
28
|
+
"notes": "Impact is the only query that crosses into FBS context lookups; intent-chain traces still avoid it.",
|
|
29
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
30
|
+
"updatedAt": "2026-07-06T10:52:42.909Z",
|
|
31
|
+
"buildOrder": 9,
|
|
32
|
+
"executionStatus": "complete",
|
|
33
|
+
"dependsOnFbsIds": [
|
|
34
|
+
"FBS-008"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-010",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Build adapter prompt assembly",
|
|
6
|
+
"summary": "Assemble the implementation prompt for a named FBS by walking its acceptance criteria, parent stories and referenced TACs and ADRs into a single markdown document; compute the dependency-respecting build order.",
|
|
7
|
+
"approach": "Reuse the walker to resolve each AC to its parent user story. Read each referenced TAC and ADR through the store. Compose a markdown document with the FBS summary and approach, the AC Given/When/Then, and the architectural context. Topologically sort the FBS dependency graph and detect cycles.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-501-1",
|
|
10
|
+
"AC-501-2",
|
|
11
|
+
"AC-501-3",
|
|
12
|
+
"AC-502-1",
|
|
13
|
+
"AC-502-2",
|
|
14
|
+
"AC-502-3"
|
|
15
|
+
],
|
|
16
|
+
"contextRequirements": {
|
|
17
|
+
"tacIds": [
|
|
18
|
+
"TAC-005",
|
|
19
|
+
"TAC-004"
|
|
20
|
+
],
|
|
21
|
+
"adrIds": [
|
|
22
|
+
"ADR-004"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"estimatedSize": "medium",
|
|
26
|
+
"estimatedHours": 8,
|
|
27
|
+
"deliverables": [
|
|
28
|
+
"Build prompt assembler emitting a single markdown prompt",
|
|
29
|
+
"Topological build order with parallel-safe groups and cycle detection"
|
|
30
|
+
],
|
|
31
|
+
"riskLevel": "medium",
|
|
32
|
+
"domain": "build",
|
|
33
|
+
"notes": "The prompt is the load-bearing handoff to the coding agent; its shape is the contract every later phase will lean on. Ledger correction (2026-07-29, w-2026-07-28-005): this item was marked complete by Phase 6 while its 'topological build order with parallel-safe groups and cycle detection' deliverable had shipped only in part - the queue computed order and detected cycles, but no parallel-safe grouping existed. The parallel-safe tier computation was ported from the RCF platform (rcf-common computeTiers) and surfaced in the rcf build queue in the same change that records this note, making the complete status factually true from that merge onward.",
|
|
34
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
35
|
+
"updatedAt": "2026-07-29T13:53:31.310Z",
|
|
36
|
+
"buildOrder": 10,
|
|
37
|
+
"executionStatus": "complete",
|
|
38
|
+
"dependsOnFbsIds": [
|
|
39
|
+
"FBS-008"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-011",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "Mark-done on completion",
|
|
6
|
+
"summary": "Land the explicit rcf build done command that advances FBS execution status and the matching Build Sequence slot status, with not-found errors on unknown ids and writes scoped to status fields only.",
|
|
7
|
+
"approach": "Reuse the store to read and update both the FBS and the Build Sequence slot. Validate both documents after the status fields change. Do not touch any field outside execution status.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-503-1",
|
|
10
|
+
"AC-503-2",
|
|
11
|
+
"AC-503-3"
|
|
12
|
+
],
|
|
13
|
+
"contextRequirements": {
|
|
14
|
+
"tacIds": [
|
|
15
|
+
"TAC-005"
|
|
16
|
+
],
|
|
17
|
+
"adrIds": [
|
|
18
|
+
"ADR-002"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"estimatedSize": "small",
|
|
22
|
+
"estimatedHours": 3,
|
|
23
|
+
"deliverables": [
|
|
24
|
+
"rcf build done command with paired status updates"
|
|
25
|
+
],
|
|
26
|
+
"riskLevel": "low",
|
|
27
|
+
"domain": "build",
|
|
28
|
+
"notes": "Explicit-command design (not PR-watching) keeps the tool offline and harness-agnostic.",
|
|
29
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
30
|
+
"updatedAt": "2026-07-06T10:53:15.636Z",
|
|
31
|
+
"buildOrder": 11,
|
|
32
|
+
"executionStatus": "complete",
|
|
33
|
+
"dependsOnFbsIds": [
|
|
34
|
+
"FBS-010"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-012",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"title": "MCP server over the full surface",
|
|
6
|
+
"summary": "Stand up the local stdio MCP server exposing read, create, update, delete, coverage, trace, impact, view and build operations, with structured validation errors delivered to AI tool clients.",
|
|
7
|
+
"approach": "Wire each MCP tool to the same core operation the CLI verb uses. Register tool input and output shapes so clients can introspect. Open no network listener; communicate over stdio only. Serialise structured errors via the error and reporting component.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-601-1",
|
|
10
|
+
"AC-601-2",
|
|
11
|
+
"AC-601-3",
|
|
12
|
+
"AC-602-1",
|
|
13
|
+
"AC-602-2",
|
|
14
|
+
"AC-602-3",
|
|
15
|
+
"AC-702-3"
|
|
16
|
+
],
|
|
17
|
+
"contextRequirements": {
|
|
18
|
+
"tacIds": [
|
|
19
|
+
"TAC-006",
|
|
20
|
+
"TAC-007"
|
|
21
|
+
],
|
|
22
|
+
"adrIds": [
|
|
23
|
+
"ADR-005",
|
|
24
|
+
"ADR-004"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"estimatedSize": "large",
|
|
28
|
+
"estimatedHours": 10,
|
|
29
|
+
"deliverables": [
|
|
30
|
+
"Local stdio MCP server",
|
|
31
|
+
"Tool registrations for the full feature set",
|
|
32
|
+
"Structured-error serialisation for MCP clients"
|
|
33
|
+
],
|
|
34
|
+
"riskLevel": "medium",
|
|
35
|
+
"domain": "mcp",
|
|
36
|
+
"notes": "AC-702-3 (structured errors over MCP) lands here because MCP is the surface where structured-object error delivery becomes load-bearing.",
|
|
37
|
+
"createdAt": "2026-06-25T00:00:00Z",
|
|
38
|
+
"updatedAt": "2026-07-06T16:09:33.696Z",
|
|
39
|
+
"buildOrder": 12,
|
|
40
|
+
"executionStatus": "complete",
|
|
41
|
+
"dependsOnFbsIds": [
|
|
42
|
+
"FBS-006",
|
|
43
|
+
"FBS-008",
|
|
44
|
+
"FBS-010"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-07-20T17:05:46.788Z",
|
|
3
|
+
"updatedAt": "2026-07-20T17:05:46.788Z",
|
|
4
|
+
"summary": "Harden the elicitation guidance so the deploy target is established early and constrains the stack, and so an owner who does not know their hosting is walked through choosing and configuring one in plain language. Edits the elicitation playbook and the harness fragment; no runtime subsystem.",
|
|
5
|
+
"approach": "In the elicitation playbook, add an early deploy-target elicitation item (asked before any stack is committed) and require the stack to be constrained by the answer and the decision captured as a project ADR. Add a hosting-choice walkthrough for the unsure owner: plain-language options, configuration steps (accounts, tokens, CLI), and honest isolation of the human-account-holder-only steps, modelled on the run-03 impersonation-refusal framing. Add a harness-fragment rule that a stack must not be committed before the deploy target is established. Extend the guidance drift tests to assert the new content invariants. All changes are to shipped guidance/prompt surface; the deploy target is elicited by the agent, not by rcf init (init is bootstrap-only since the v0.2.1 UX pass).",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"Elicitation playbook: early deploy-target item and stack-constraint rule",
|
|
8
|
+
"Elicitation playbook: jargon-free hosting-choice walkthrough with honest account-holder-step isolation",
|
|
9
|
+
"Harness fragment rule: no stack before the deploy target is established",
|
|
10
|
+
"Guidance drift tests for the new content invariants"
|
|
11
|
+
],
|
|
12
|
+
"estimatedSize": "medium",
|
|
13
|
+
"estimatedHours": 7,
|
|
14
|
+
"riskLevel": "medium",
|
|
15
|
+
"domain": "guidance",
|
|
16
|
+
"notes": "Implements US-802 and US-803. Targets the elicitation surface; pairs with FBS-014 on the build/verification surface. Deploy-target elicitation lives in the agent playbook, not the rcf init CLI prompts, which the v0.2.1 UX pass (PR #38) deliberately reduced to project-name-only.",
|
|
17
|
+
"contextRequirements": {
|
|
18
|
+
"tacIds": [
|
|
19
|
+
"TAC-008"
|
|
20
|
+
],
|
|
21
|
+
"adrIds": [
|
|
22
|
+
"ADR-007"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"acIds": [
|
|
26
|
+
"AC-802-1",
|
|
27
|
+
"AC-802-2",
|
|
28
|
+
"AC-802-3",
|
|
29
|
+
"AC-802-4",
|
|
30
|
+
"AC-803-1",
|
|
31
|
+
"AC-803-2",
|
|
32
|
+
"AC-803-3",
|
|
33
|
+
"AC-803-4"
|
|
34
|
+
],
|
|
35
|
+
"fbsId": "FBS-013",
|
|
36
|
+
"prdId": "PRD-001",
|
|
37
|
+
"bsId": "BS-001",
|
|
38
|
+
"buildOrder": 13,
|
|
39
|
+
"executionStatus": "notStarted",
|
|
40
|
+
"title": "Deploy-aware elicitation and hosting guidance",
|
|
41
|
+
"dependsOnFbsIds": []
|
|
42
|
+
}
|