rcf-lite 0.32.4 → 0.33.0
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 +42 -0
- package/fixtures/canary-manifest.json +9 -9
- package/guidance/discovery/README.md +22 -0
- package/guidance/discovery/discovery-viewer-command-page-1-layout.html +191 -0
- package/guidance/discovery/discovery-viewer-command-page-2-coverage.html +193 -0
- package/guidance/discovery/discovery-viewer-command-page-3-trace-matrix.html +195 -0
- package/guidance/discovery/discovery-viewer-command-page-4-tables.html +196 -0
- package/guidance/discovery/discovery-viewer-command-page-5-subtabs.html +224 -0
- package/guidance/discovery/discovery-viewer-command-page-6-one-page.html +280 -0
- package/guidance/discovery/discovery-viewer-command-page.md +301 -0
- package/package.json +1 -1
- package/rcf/adrs/adr-4139-readiness-tables-read-only-no-commands.json +30 -0
- package/rcf/adrs/adr-4140-view-query-routes-per-pivot-matrix-no-mermaid.json +30 -0
- package/rcf/adrs/adr-4141-verify-modes.json +25 -0
- package/rcf/code-nodes/cn-771.json +3 -2
- package/rcf/code-nodes/cn-779.json +19 -0
- package/rcf/code-nodes/cn-780.json +14 -0
- package/rcf/code-nodes/cn-781.json +14 -0
- package/rcf/code-nodes/cn-782.json +15 -0
- package/rcf/code-nodes/cn-783.json +17 -0
- package/rcf/code-nodes/cn-784.json +20 -0
- package/rcf/code-nodes/cn-785.json +14 -0
- package/rcf/code-nodes/cn-786.json +14 -0
- package/rcf/code-nodes/cn-787.json +18 -0
- package/rcf/code-nodes/cn-788.json +14 -0
- package/rcf/code-nodes/cn-789.json +14 -0
- package/rcf/code-nodes/cn-790.json +15 -0
- package/rcf/code-nodes/cn-791.json +14 -0
- package/rcf/code-nodes/cn-792.json +17 -0
- package/rcf/code-nodes/cn-793.json +17 -0
- package/rcf/code-nodes/cn-794.json +18 -0
- package/rcf/code-nodes/cn-795.json +15 -0
- package/rcf/code-nodes/cn-796.json +14 -0
- package/rcf/code-nodes/cn-797.json +14 -0
- package/rcf/code-nodes/cn-798.json +14 -0
- package/rcf/define/brief-ledger.json +47 -0
- package/rcf/define/decisions-ledger.json +113 -0
- package/rcf/fbs/fbs-204.json +46 -0
- package/rcf/fbs/fbs-205.json +46 -0
- package/rcf/fbs/fbs-206.json +49 -0
- package/rcf/fbs/fbs-207.json +43 -0
- package/rcf/fbs/fbs-208.json +47 -0
- package/rcf/fbs/fbs-209.json +22 -0
- package/rcf/requirements/req-002.json +5 -2
- package/rcf/requirements/req-180.json +6 -3
- package/rcf/tacs/tac-4127-readiness-view.json +2 -2
- package/rcf/tacs/tac-4133-readiness-po-layer.json +2 -2
- package/rcf/tacs/tac-4135-readiness-command-page.json +94 -0
- package/rcf/tacs/tac-4136-view-query-routes.json +68 -0
- package/rcf/tacs/tac-4141-verify-modes.json +25 -0
- package/rcf/test-suites/ts-223.json +7 -7
- package/rcf/test-suites/ts-237.json +78 -0
- package/rcf/test-suites/ts-238.json +70 -0
- package/rcf/test-suites/ts-239.json +78 -0
- package/rcf/test-suites/ts-240.json +70 -0
- package/rcf/test-suites/ts-241.json +70 -0
- package/rcf/test-suites/ts-242.json +46 -0
- package/rcf/user-stories/us-16503.json +51 -0
- package/rcf/user-stories/us-18001.json +4 -4
- package/rcf/user-stories/us-18003.json +79 -0
- package/rcf/user-stories/us-18004.json +70 -0
- package/rcf/user-stories/us-18005.json +79 -0
- package/rcf/user-stories/us-208.json +74 -0
- package/rcf/user-stories/us-209.json +70 -0
- package/releases/releases.yaml +18 -1
- package/src/cli/finalise.js +141 -2
- package/src/cli/view.js +13 -1
- package/src/define/ledgers.js +9 -1
- package/src/finalise/spawn.js +2 -0
- package/src/server/index.js +104 -39
- package/src/server/routes.js +169 -0
- package/src/verify/cli/run.js +40 -0
- package/src/verify/engine/deterministic.js +150 -0
- package/src/verify/engine/index.js +27 -4
- package/src/view/doc-renderers/req.js +11 -9
- package/src/view/html-page.js +15 -11
- package/src/view/index.js +7 -1
- package/src/view/live-client.js +4 -0
- package/src/view/page-init.js +842 -1
- package/src/view/readiness/composite-id.js +35 -0
- package/src/view/readiness/coverage-summary.js +293 -0
- package/src/view/readiness/delta-counts.js +156 -0
- package/src/view/readiness/grid.js +175 -0
- package/src/view/readiness/po-layer.js +110 -220
- package/src/view/readiness/tables.js +500 -0
- package/src/view/readiness/thin-reqs.js +237 -0
- package/src/view/readiness/trace-matrix.js +392 -0
- package/src/view/readiness.js +359 -370
- package/src/view/style.css +594 -0
- package/src/watch/index.js +75 -17
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-787",
|
|
3
|
+
"path": "src/view/readiness/coverage-summary.js",
|
|
4
|
+
"title": "Readiness coverage summary sub-view (FBS-205, TAC-4135)",
|
|
5
|
+
"description": "renderCoverageSummary + computeCoverageSummary + familyCounts. Reads coverage.tree.totals.{requirements,covered,coveredUnresolved,uncovered} and unresolvedTestPointers[] plus the tree model to render stat line, stacked bar on --sv-success/--sv-warning/--sv-danger over --sv-surface, six family stat tiles, and an unresolved-pointers table. Every slot renders a number or the words 'coverage unavailable' - never a blank. Replaces the retired renderCoverage block that printed pass/total blanks.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18004-1",
|
|
8
|
+
"AC-18004-2",
|
|
9
|
+
"AC-18004-3",
|
|
10
|
+
"AC-18004-6",
|
|
11
|
+
"AC-18004-7"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": [],
|
|
14
|
+
"version": "0.1.0",
|
|
15
|
+
"status": "draft",
|
|
16
|
+
"createdAt": "2026-10-09T10:26:51.046Z",
|
|
17
|
+
"updatedAt": "2026-10-09T10:26:51.046Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-788",
|
|
3
|
+
"path": "src/view/readiness/thin-reqs.js",
|
|
4
|
+
"title": "Readiness thin-requirements table (FBS-205, TAC-4135)",
|
|
5
|
+
"description": "buildThinReqRows + renderThinReqsTable. Widens the former buildReqWorkRows to the five AC-18004-4 reasons (reqHasUs, usFloors, reqIntent, zeroCriteria, uncoveredAc) plus the retained resolvedBy signal; emits ThinReqRow with stories, criteria, covered, thinReason, openHref and traceHref.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18004-4"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T10:26:59.708Z",
|
|
13
|
+
"updatedAt": "2026-10-09T10:26:59.708Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-789",
|
|
3
|
+
"path": "src/view/readiness/po-layer.js#renderVerdictCards",
|
|
4
|
+
"title": "Readiness PO verdict-card count links and folded next-step (FBS-205)",
|
|
5
|
+
"description": "renderVerdictCards + intentNextSentence + buildNextSentence. The question count on the intent card is an anchor to the questions sub-tab, the engineer count on the build card is an anchor to the blocking sub-tab, and the former renderNextStep paragraph is folded into one sentence per card.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18004-5"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T10:27:00.194Z",
|
|
13
|
+
"updatedAt": "2026-10-09T10:27:00.194Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-790",
|
|
3
|
+
"path": "src/view/readiness/grid.js",
|
|
4
|
+
"title": "Readiness stage grid (FBS-206, TAC-4135)",
|
|
5
|
+
"description": "Pure HTML string renderers (renderVerdictGrid, buildCell, reasonForCell) emitting the two-column stage grid (tree, delta) in the Overview sub-view: each VerdictGridCell carries pass, total, state and a failing-count link that targets the Blocking sub-tab filtered to the stage (AC-18005-1, -6). Acknowledged state and reason are read from stages[].state and the one reason helper so freezeRecord.gates is not read from the row renderer.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18005-1",
|
|
8
|
+
"AC-18005-6"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [],
|
|
11
|
+
"version": "0.1.0",
|
|
12
|
+
"status": "draft",
|
|
13
|
+
"createdAt": "2026-10-09T12:34:40.496Z",
|
|
14
|
+
"updatedAt": "2026-10-09T12:34:40.496Z"
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-791",
|
|
3
|
+
"path": "src/view/readiness/delta-counts.js",
|
|
4
|
+
"title": "Readiness delta counts (FBS-206, TAC-4135)",
|
|
5
|
+
"description": "Pure HTML string renderer (renderDeltaCounts, foldCounts) emitting six count tiles (changed, added, removed, briefSince, impacted, impactedFbs) in the Overview sub-view with the per-document list and its diff widgets inside a collapsed <details> element; expanded only when the reader opens it (AC-18005-3).",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18005-3"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T12:34:40.951Z",
|
|
13
|
+
"updatedAt": "2026-10-09T12:34:40.951Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-792",
|
|
3
|
+
"path": "src/view/readiness.js",
|
|
4
|
+
"title": "Readiness panel composition with sub-tabs (FBS-206, TAC-4135)",
|
|
5
|
+
"description": "Renders the SubTabStrip (Overview, Questions, Blocking, Coverage, Trace) and five sub-panels; composes the Overview sub-view (tree line, verdict cards, verdict grid, delta counts, decisions, freeze state, freeze record), the Questions / Blocking / Coverage sub-views by composing the FBS-204 / 205 tables and the Trace shell for FBS-208. Removes the For-engineers DocRow wrapper and the stage-chips / stage-detail blocks; renders the freeze state in plain words with the On me / On engineers vocabulary and names what resolves each failing gate (AC-18005-2, -4, -5, -8).",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-18005-2",
|
|
8
|
+
"AC-18005-4",
|
|
9
|
+
"AC-18005-5",
|
|
10
|
+
"AC-18005-8"
|
|
11
|
+
],
|
|
12
|
+
"dependencies": [],
|
|
13
|
+
"version": "0.1.0",
|
|
14
|
+
"status": "draft",
|
|
15
|
+
"createdAt": "2026-10-09T12:34:41.414Z",
|
|
16
|
+
"updatedAt": "2026-10-09T12:34:41.414Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-793",
|
|
3
|
+
"path": "src/view/readiness/trace-matrix.js",
|
|
4
|
+
"title": "Readiness Trace matrix renderer (FBS-208, TAC-4136, ADR-4140)",
|
|
5
|
+
"description": "Pure HTML-string renderer: buildTraceMatrixRows + renderTraceMatrix emit the matrix for a REQ/US/AC pivot (rows: US + AC under the pivot; cols: TS / TC / FBS / CN; cells: reached + resolution from coverage). Empty states for no-pivot, unknown-pivot and downstream-pivot (TS/TC/FBS/CN/TAC/ADR) all offer the lookup. >200 rows renders a client-side filter bar.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-1",
|
|
8
|
+
"AC-209-2",
|
|
9
|
+
"AC-209-6",
|
|
10
|
+
"AC-209-7"
|
|
11
|
+
],
|
|
12
|
+
"dependencies": [],
|
|
13
|
+
"version": "0.1.0",
|
|
14
|
+
"status": "draft",
|
|
15
|
+
"createdAt": "2026-10-09T14:52:23.253Z",
|
|
16
|
+
"updatedAt": "2026-10-09T14:52:23.253Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-794",
|
|
3
|
+
"path": "src/view/page-init.js#wireTraceMatrix",
|
|
4
|
+
"title": "Trace sub-view client (FBS-208, TAC-4136, ADR-4140)",
|
|
5
|
+
"description": "page-init.js IIFE Trace matrix section: wireTraceMatrix + fetchAndRenderTrace + renderTraceRoot + buildMatrixRowsFromPayload + renderMatrixHtml. Fetches ./trace.json?id=<pivot>&includeCode=1 and ./coverage.json?scope=<REQ>, caches by (version, pivot), falls back to prior-version render stale on an SSE tree-update (AC-209-4), distinguishes 404 unknown-pivot from 5xx fetch-error, guards callbacks against hash-pivot change, routes readiness-tab lookup picks to the Trace sub-tab.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-1",
|
|
8
|
+
"AC-209-3",
|
|
9
|
+
"AC-209-4",
|
|
10
|
+
"AC-209-6",
|
|
11
|
+
"AC-209-7"
|
|
12
|
+
],
|
|
13
|
+
"dependencies": [],
|
|
14
|
+
"version": "0.1.0",
|
|
15
|
+
"status": "draft",
|
|
16
|
+
"createdAt": "2026-10-09T14:52:39.653Z",
|
|
17
|
+
"updatedAt": "2026-10-09T14:52:39.653Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-795",
|
|
3
|
+
"path": "src/view/readiness.js#renderTraceSub",
|
|
4
|
+
"title": "Trace sub-view shell (FBS-208)",
|
|
5
|
+
"description": "renderTraceSub emits the Trace sub-tab panel in the Readiness tab with the [data-rcf-trace-root] mount point and the no-pivot empty state. The sub-view is one of four Readiness sub-tabs (overview, questions, blocking, trace).",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-1",
|
|
8
|
+
"AC-209-6"
|
|
9
|
+
],
|
|
10
|
+
"dependencies": [],
|
|
11
|
+
"version": "0.1.0",
|
|
12
|
+
"status": "draft",
|
|
13
|
+
"createdAt": "2026-10-09T14:52:40.474Z",
|
|
14
|
+
"updatedAt": "2026-10-09T14:52:40.474Z"
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-796",
|
|
3
|
+
"path": "src/view/readiness/tables.js#traceActionFor",
|
|
4
|
+
"title": "Trace action on readiness tables (FBS-208)",
|
|
5
|
+
"description": "traceActionFor renders a Trace link on every Questions row and Blocking row that routes to the Trace sub-tab for the row's id. Non-document ids (brief:*, profile:*, open-decision:*) emit a disabled hint instead of a dead anchor.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-3"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T14:52:41.372Z",
|
|
13
|
+
"updatedAt": "2026-10-09T14:52:41.372Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-797",
|
|
3
|
+
"path": "src/view/readiness/coverage-summary.js#renderUnresolvedPointers",
|
|
4
|
+
"title": "Trace action on coverage unresolved pointers (FBS-208)",
|
|
5
|
+
"description": "The unresolved-pointers table in the coverage summary carries a Trace cell per row that routes to the Trace sub-tab for the suite id (TS). The downstream-pivot explanatory state handles the TS pivot in the matrix renderer.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-3"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T14:52:42.156Z",
|
|
13
|
+
"updatedAt": "2026-10-09T14:52:42.156Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-798",
|
|
3
|
+
"path": "src/view/html-page.js",
|
|
4
|
+
"title": "Mermaid slice retired from Requirements and Readiness (FBS-208)",
|
|
5
|
+
"description": "renderPage no longer renders the per-REQ sliceDetails Mermaid block on Requirements rows; the diagram call is removed from renderRequirementRow. The Readiness tab carries no Mermaid at all. mermaid-diagram.js keeps its generator exports for AC-201-1 (architecture diagram) only.",
|
|
6
|
+
"implementsAcIds": [
|
|
7
|
+
"AC-209-5"
|
|
8
|
+
],
|
|
9
|
+
"dependencies": [],
|
|
10
|
+
"version": "0.1.0",
|
|
11
|
+
"status": "draft",
|
|
12
|
+
"createdAt": "2026-10-09T14:52:42.986Z",
|
|
13
|
+
"updatedAt": "2026-10-09T14:52:42.986Z"
|
|
14
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"statements": [
|
|
3
|
+
{
|
|
4
|
+
"id": 1,
|
|
5
|
+
"text": "The Readiness tab is the command page: every question and every blocking item is a table row with a count and a link that opens the item where it lives, and what settles it is stated beside it in plain words; the viewer is read-only and renders no command text.",
|
|
6
|
+
"kind": "capability",
|
|
7
|
+
"source": "discovery:viewer-command-page",
|
|
8
|
+
"addedAt": "2026-10-07T11:22:58.551Z",
|
|
9
|
+
"status": "open",
|
|
10
|
+
"resolvedBy": "REQ-180"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": 2,
|
|
14
|
+
"text": "The viewer exposes trace, impact and coverage for a selected node through GET routes computed from the current tree, and renders a coverage summary and a trace matrix, so a reader sees how far the chain reaches without the CLI.",
|
|
15
|
+
"kind": "capability",
|
|
16
|
+
"source": "discovery:viewer-command-page",
|
|
17
|
+
"addedAt": "2026-10-07T11:23:03.966Z",
|
|
18
|
+
"status": "open",
|
|
19
|
+
"resolvedBy": "REQ-002"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": 3,
|
|
23
|
+
"text": "The command page works for a human with no agent in the loop, stays embed-safe under embed=1 and both themes, adds no dependency, never writes to rcf/manifest.json, and leaves the computeReadiness signature unchanged.",
|
|
24
|
+
"kind": "constraint",
|
|
25
|
+
"source": "discovery:viewer-command-page",
|
|
26
|
+
"addedAt": "2026-10-07T11:23:08.852Z",
|
|
27
|
+
"status": "open",
|
|
28
|
+
"resolvedBy": "REQ-180"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": 4,
|
|
32
|
+
"text": "Issue 333 items 1 and 2 (reporter WESPA de-flake pass AI-2007, filed 2026-10-08 against 0.32.4): the live-view server watcher now queues exactly one trailing rewalk when a change arrives mid-rewalk (coalesce, never drop) and fatal watcher and walker exceptions surface to stderr regardless of --verbose. Build amendment under src/server/index.js (startServer carries a new logError sink and an injectable renderImpl seam for tests) and src/cli/view.js (wires logError unconditionally). Chatty per-event lines (sse write failures) remain gated on --verbose. Item 3 (diffed tree updates) scheduled for 0.33.0.",
|
|
33
|
+
"kind": "amendment",
|
|
34
|
+
"source": "issue:333",
|
|
35
|
+
"addedAt": "2026-10-08T19:17:07.851Z",
|
|
36
|
+
"status": "open"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": 5,
|
|
40
|
+
"text": "Issue 336 (reporter Dex, filed 2026-10-08 against 0.32.5): the live-view server watcher goes blind to a file after a rename-save on Linux (recursive fs.watch reports the first rename, then never again for that path). Fix: on a rename event the watch primitive now re-arms the affected base (close and reopen the fs.watch handle), one re-arm per debounce window. src/watch/index.js carries a new fsWatchImpl seam for deterministic cross-platform tests; no dependency added; no AC under the viewer stories binds the rename-blind behaviour so this is recorded as a build amendment. Rides 0.33.0.",
|
|
41
|
+
"kind": "amendment",
|
|
42
|
+
"source": "issue:336",
|
|
43
|
+
"addedAt": "2026-10-08T20:07:08.464Z",
|
|
44
|
+
"status": "open"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
{
|
|
2
|
+
"decisions": [
|
|
3
|
+
{
|
|
4
|
+
"id": 1,
|
|
5
|
+
"question": "Q1 resolve-in-place: does each row show the exact CLI command (or a POST write route), or only what a human needs to brief their agent?",
|
|
6
|
+
"options": [
|
|
7
|
+
{
|
|
8
|
+
"letter": "a",
|
|
9
|
+
"text": "show the exact CLI command per row"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"letter": "b",
|
|
13
|
+
"text": "viewer read-only, no CLI command text; rows carry id, plain-English ask or finding, chain location, link to full context and what resolved looks like; a one-line copy handle (id plus ask) is a design candidate shown in the wireframe"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"default": "b",
|
|
17
|
+
"blocks": "US-18003",
|
|
18
|
+
"addedAt": "2026-10-07T13:47:39.017Z",
|
|
19
|
+
"status": "resolved",
|
|
20
|
+
"answer": "b. Product owner ruling 2026-10-07: the viewer stays read-only and shows no CLI commands. Quote: I meant provide the info they need to resolve with their agent. Keep the commands out of the view. The user operates their agent which uses these commands; showing them here is little value. Rows carry id, ask or finding, chain location, link, resolved state; the copy handle is a candidate ruled on the render.",
|
|
21
|
+
"answeredAt": "2026-10-07T13:47:39.441Z",
|
|
22
|
+
"resolvedAt": "2026-10-07T13:47:39.441Z"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": 2,
|
|
26
|
+
"question": "Q2 delta on an unfrozen tree: render every document row on first paint, or counts only with on-demand expand?",
|
|
27
|
+
"options": [
|
|
28
|
+
{
|
|
29
|
+
"letter": "a",
|
|
30
|
+
"text": "every document row on first paint"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"letter": "b",
|
|
34
|
+
"text": "counts only with on-demand expand"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"default": "b",
|
|
38
|
+
"blocks": "US-18005",
|
|
39
|
+
"addedAt": "2026-10-07T13:47:39.879Z",
|
|
40
|
+
"status": "resolved",
|
|
41
|
+
"answer": "b. Ruling 2026-10-07: counts only, on-demand expand.",
|
|
42
|
+
"answeredAt": "2026-10-07T13:47:40.360Z",
|
|
43
|
+
"resolvedAt": "2026-10-07T13:47:40.360Z"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": 3,
|
|
47
|
+
"question": "Q3 thin requirements table: which flavours feed it?",
|
|
48
|
+
"options": [
|
|
49
|
+
{
|
|
50
|
+
"letter": "a",
|
|
51
|
+
"text": "the three product-owner checks only (as today)"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"letter": "b",
|
|
55
|
+
"text": "all three flavours: zero criteria, unresolved tests, D4 floor failures (plus no story and no plain description)"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"default": "b",
|
|
59
|
+
"blocks": "US-18004",
|
|
60
|
+
"addedAt": "2026-10-07T13:47:40.778Z",
|
|
61
|
+
"status": "resolved",
|
|
62
|
+
"answer": "b. Ruling 2026-10-07: all three flavours, zero criteria, unresolved tests, D4 floor failures.",
|
|
63
|
+
"answeredAt": "2026-10-07T13:47:41.273Z",
|
|
64
|
+
"resolvedAt": "2026-10-07T13:47:41.273Z"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": 4,
|
|
68
|
+
"question": "Q4 freeze-now: keep a button, show only the command text, or show the state and what resolves it with no button and no command text?",
|
|
69
|
+
"options": [
|
|
70
|
+
{
|
|
71
|
+
"letter": "a",
|
|
72
|
+
"text": "keep the button"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"letter": "b",
|
|
76
|
+
"text": "command text only"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"letter": "c",
|
|
80
|
+
"text": "no freeze button, no command text; show the state and what resolves it"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"default": "c",
|
|
84
|
+
"blocks": "US-18005",
|
|
85
|
+
"addedAt": "2026-10-07T13:47:41.768Z",
|
|
86
|
+
"status": "resolved",
|
|
87
|
+
"answer": "c. Ruling 2026-10-07: no freeze button, no command text; show the state and what resolves it.",
|
|
88
|
+
"answeredAt": "2026-10-07T13:47:42.231Z",
|
|
89
|
+
"resolvedAt": "2026-10-07T13:47:42.231Z"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": 5,
|
|
93
|
+
"question": "Q5 Readiness layout: sub-tabs (Overview, Questions, Blocking, Coverage, Trace) or one long page with anchor navigation?",
|
|
94
|
+
"options": [
|
|
95
|
+
{
|
|
96
|
+
"letter": "a",
|
|
97
|
+
"text": "sub-tabs"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"letter": "b",
|
|
101
|
+
"text": "one long page"
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"default": "a",
|
|
105
|
+
"blocks": "US-18005",
|
|
106
|
+
"addedAt": "2026-10-07T13:47:42.659Z",
|
|
107
|
+
"status": "resolved",
|
|
108
|
+
"answer": "a. Product owner render ruling 2026-10-07: sub-tabs (Overview, Questions, Blocking, Coverage, Trace); the one long page alternative is retired.",
|
|
109
|
+
"answeredAt": "2026-10-09T13:18:33.262Z",
|
|
110
|
+
"resolvedAt": "2026-10-09T13:18:33.262Z"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-07T13:47:16.856Z",
|
|
3
|
+
"updatedAt": "2026-10-08T15:53:04.859Z",
|
|
4
|
+
"summary": "Readiness tables: questions and blocking items, read-only, no command text (US-18003). Delivers AC-18003-1 to AC-18003-8. Estimated new node:test cases: 8. Order in the command page build: 1 of 5.",
|
|
5
|
+
"approach": "Replace the question cards and the blocker cards with the questions table and the blocking table (TAC-4135 renderQuestionsTable, renderBlockingTable, splitCompositeId), remove the Freeze now control and every command string from the panel, add the Copy for your agent handle wired through the toast component, keep the register-ordered first paint. The register ordering and AC-18002-3 are preserved by construction: nothing engineer-level leaves the DOM.",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"src/view/readiness/tables.js (new): renderQuestionsTable, renderBlockingTable",
|
|
8
|
+
"src/view/readiness/composite-id.js (new): splitCompositeId",
|
|
9
|
+
"src/view/readiness/po-layer.js: renderReadinessPO composes the tables; question cards removed",
|
|
10
|
+
"src/view/readiness.js: blocker cards, next-action command text and Freeze now removed",
|
|
11
|
+
"src/view/page-init.js: copy handle wiring",
|
|
12
|
+
"src/view/style.css: .rcf-cmd-table rules on existing tokens",
|
|
13
|
+
"test/view/readiness-tables.test.js: not-yet-built flags removed, bodies land (8 cases)"
|
|
14
|
+
],
|
|
15
|
+
"dependsOnFbsIds": [],
|
|
16
|
+
"contextRequirements": {
|
|
17
|
+
"tacIds": [
|
|
18
|
+
"TAC-4135-readiness-command-page",
|
|
19
|
+
"TAC-4133-readiness-po-layer",
|
|
20
|
+
"TAC-4127-readiness-view"
|
|
21
|
+
],
|
|
22
|
+
"adrIds": [
|
|
23
|
+
"ADR-4139-readiness-tables-read-only-no-commands"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"riskLevel": "low",
|
|
27
|
+
"domain": "reviewSurface",
|
|
28
|
+
"estimatedSize": "medium",
|
|
29
|
+
"notes": "Sized for one PR (DEFINE 2026-10-07; test estimate reconciled to TS case count 2026-10-08). Test estimate 8 new node:test cases in the suite named by the TS bound to US-18003; the suite's declarations land at DEFINE flagged not yet built and this FBS is done when none of them carries the flag and pnpm test is green. No freeze, no ack verbs. Cut from the discovery plan and not in any FBS here: impact sub-view and keyboard shortcuts (capabilities 10 and 13), readiness timeline (17), Product Map trace-bucket realignment.",
|
|
30
|
+
"acIds": [
|
|
31
|
+
"AC-18003-1",
|
|
32
|
+
"AC-18003-2",
|
|
33
|
+
"AC-18003-3",
|
|
34
|
+
"AC-18003-4",
|
|
35
|
+
"AC-18003-5",
|
|
36
|
+
"AC-18003-6",
|
|
37
|
+
"AC-18003-7",
|
|
38
|
+
"AC-18003-8"
|
|
39
|
+
],
|
|
40
|
+
"fbsId": "FBS-204",
|
|
41
|
+
"prdId": "PRD-001",
|
|
42
|
+
"bsId": "BS-001",
|
|
43
|
+
"buildOrder": 204,
|
|
44
|
+
"executionStatus": "complete",
|
|
45
|
+
"title": "Readiness tables: questions and blocking items, read-only, no command text"
|
|
46
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-07T13:47:17.726Z",
|
|
3
|
+
"updatedAt": "2026-10-09T10:01:28.367Z",
|
|
4
|
+
"summary": "Coverage summary and thin requirements (US-18004). Delivers AC-18004-1 to AC-18004-7. Estimated new node:test cases: 7. Order in the command page build: 2 of 5.",
|
|
5
|
+
"approach": "Replace renderCoverage with renderCoverageSummary reading coverage.tree.totals, requirements[].coverageClass and unresolvedTestPointers[] plus family counts from BuiltTreeModel; widen buildReqWorkRows into buildThinReqRows joining D4 stories:usFloors failing US ids to REQ via us.reqId, zero-criteria stories, criteria with acs[].covered false, D2 skeleton:reqIntent and stories:reqHasUs; make the verdict card counts links and fold What happens next into the cards.",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"src/view/readiness/coverage-summary.js (new): renderCoverageSummary",
|
|
8
|
+
"src/view/readiness/thin-reqs.js (new): buildThinReqRows, renderThinReqsTable",
|
|
9
|
+
"src/view/readiness/po-layer.js: verdict card links; renderNextStep folded",
|
|
10
|
+
"src/view/readiness.js: renderCoverage removed",
|
|
11
|
+
"src/view/style.css: stat tiles and stacked bar on existing tokens",
|
|
12
|
+
"test/view/readiness-coverage-summary.test.js: not-yet-built flags removed, bodies land (7 cases)"
|
|
13
|
+
],
|
|
14
|
+
"dependsOnFbsIds": [
|
|
15
|
+
"FBS-204"
|
|
16
|
+
],
|
|
17
|
+
"contextRequirements": {
|
|
18
|
+
"tacIds": [
|
|
19
|
+
"TAC-4135-readiness-command-page",
|
|
20
|
+
"TAC-4133-readiness-po-layer",
|
|
21
|
+
"TAC-4127-readiness-view"
|
|
22
|
+
],
|
|
23
|
+
"adrIds": [
|
|
24
|
+
"ADR-4139-readiness-tables-read-only-no-commands"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"riskLevel": "low",
|
|
28
|
+
"domain": "reviewSurface",
|
|
29
|
+
"estimatedSize": "medium",
|
|
30
|
+
"notes": "Sized for one PR (DEFINE 2026-10-07; test estimate reconciled to TS case count 2026-10-08). Test estimate 7 new node:test cases in the suite named by the TS bound to US-18004; the suite's declarations land at DEFINE flagged not yet built and this FBS is done when none of them carries the flag and pnpm test is green. No freeze, no ack verbs. Cut from the discovery plan and not in any FBS here: impact sub-view and keyboard shortcuts (capabilities 10 and 13), readiness timeline (17), Product Map trace-bucket realignment.",
|
|
31
|
+
"acIds": [
|
|
32
|
+
"AC-18004-1",
|
|
33
|
+
"AC-18004-2",
|
|
34
|
+
"AC-18004-3",
|
|
35
|
+
"AC-18004-4",
|
|
36
|
+
"AC-18004-5",
|
|
37
|
+
"AC-18004-6",
|
|
38
|
+
"AC-18004-7"
|
|
39
|
+
],
|
|
40
|
+
"fbsId": "FBS-205",
|
|
41
|
+
"prdId": "PRD-001",
|
|
42
|
+
"bsId": "BS-001",
|
|
43
|
+
"buildOrder": 205,
|
|
44
|
+
"executionStatus": "complete",
|
|
45
|
+
"title": "Coverage summary and thin requirements"
|
|
46
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-07T13:47:18.579Z",
|
|
3
|
+
"updatedAt": "2026-10-09T12:29:58.184Z",
|
|
4
|
+
"summary": "Readiness layout: stage grid, sub-tabs, delta counts, For-engineers retired (US-18005). Delivers AC-18005-1 to AC-18005-8. Estimated new node:test cases: 8. Order in the command page build: 3 of 5.",
|
|
5
|
+
"approach": "Add renderVerdictGrid and renderDeltaCounts, split renderReadinessPanel into the five sub-views behind a SubTabStrip with hashKey readiness, extend the page-init router to read and restore sub= for readiness and to drop unknown keys to overview, remove the For-engineers DocRow wrapper and the stage chips plus stage detail, render the freeze state in words. Responsive rules keep tables inside the panel under 720px and under data-embed=1.",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"src/view/readiness/grid.js (new): renderVerdictGrid",
|
|
8
|
+
"src/view/readiness/delta-counts.js (new): renderDeltaCounts",
|
|
9
|
+
"src/view/readiness.js: sub-view composition; For-engineers DocRow, chips, stage detail removed",
|
|
10
|
+
"src/view/page-init.js: readiness sub= routing and SSE restore",
|
|
11
|
+
"src/view/style.css: grid and stacked-row rules",
|
|
12
|
+
"test/view/readiness-layout.test.js: not-yet-built flags removed, bodies land (8 cases)",
|
|
13
|
+
"test/view/fixtures/phase-3-6-static.html: baseline regenerated"
|
|
14
|
+
],
|
|
15
|
+
"dependsOnFbsIds": [
|
|
16
|
+
"FBS-204",
|
|
17
|
+
"FBS-205"
|
|
18
|
+
],
|
|
19
|
+
"contextRequirements": {
|
|
20
|
+
"tacIds": [
|
|
21
|
+
"TAC-4135-readiness-command-page",
|
|
22
|
+
"TAC-4133-readiness-po-layer",
|
|
23
|
+
"TAC-4127-readiness-view"
|
|
24
|
+
],
|
|
25
|
+
"adrIds": [
|
|
26
|
+
"ADR-4139-readiness-tables-read-only-no-commands"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"riskLevel": "low",
|
|
30
|
+
"domain": "reviewSurface",
|
|
31
|
+
"estimatedSize": "medium",
|
|
32
|
+
"notes": "Sized for one PR (DEFINE 2026-10-07; test estimate reconciled to TS case count 2026-10-08). Test estimate 8 new node:test cases in the suite named by the TS bound to US-18005; the suite's declarations land at DEFINE flagged not yet built and this FBS is done when none of them carries the flag and pnpm test is green. No freeze, no ack verbs. Cut from the discovery plan and not in any FBS here: impact sub-view and keyboard shortcuts (capabilities 10 and 13), readiness timeline (17), Product Map trace-bucket realignment.",
|
|
33
|
+
"acIds": [
|
|
34
|
+
"AC-18005-1",
|
|
35
|
+
"AC-18005-2",
|
|
36
|
+
"AC-18005-3",
|
|
37
|
+
"AC-18005-4",
|
|
38
|
+
"AC-18005-5",
|
|
39
|
+
"AC-18005-6",
|
|
40
|
+
"AC-18005-7",
|
|
41
|
+
"AC-18005-8"
|
|
42
|
+
],
|
|
43
|
+
"fbsId": "FBS-206",
|
|
44
|
+
"prdId": "PRD-001",
|
|
45
|
+
"bsId": "BS-001",
|
|
46
|
+
"buildOrder": 206,
|
|
47
|
+
"executionStatus": "complete",
|
|
48
|
+
"title": "Readiness layout: stage grid, sub-tabs, delta counts, For-engineers retired"
|
|
49
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-07T13:47:19.420Z",
|
|
3
|
+
"updatedAt": "2026-10-08T18:09:42.783Z",
|
|
4
|
+
"summary": "Query routes: trace, impact and coverage as JSON (US-208). Delivers AC-208-1 to AC-208-7. Estimated new node:test cases: 7. Order in the command page build: 4 of 5.",
|
|
5
|
+
"approach": "Add the three GET handlers to src/server/routes.js after /index.json, keep the walked tree and testPointers on the state returned by renderModelToPage (additive), add the per-version memo on the server closure, answer 503 before the first walk, 404 unknown-id, 400 bad-direction and bad-scope with the QueryRouteError body, never call runWithAdmissibilityGate, and release-note the three routes for host proxy allow-lists.",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"src/server/routes.js: GET /trace.json, /impact.json, /coverage.json",
|
|
8
|
+
"src/server/index.js: memo wiring and state plumbing",
|
|
9
|
+
"src/view/index.js: tree and testPointers kept on the state (additive)",
|
|
10
|
+
"release note (PR body, not CHANGELOG.md): three relative routes ./trace.json, ./impact.json, ./coverage.json to add to host proxy allow-lists for the 0.33.0 pin (release files are owned by Dave; the viewer FBS does not land CHANGELOG writes)",
|
|
11
|
+
"test/view/query-routes.test.js: not-yet-built flags removed, bodies land (7 cases)"
|
|
12
|
+
],
|
|
13
|
+
"dependsOnFbsIds": [],
|
|
14
|
+
"contextRequirements": {
|
|
15
|
+
"tacIds": [
|
|
16
|
+
"TAC-4136-view-query-routes",
|
|
17
|
+
"TAC-4132-id-lookup",
|
|
18
|
+
"TAC-4134-wespa-host-fixture"
|
|
19
|
+
],
|
|
20
|
+
"adrIds": [
|
|
21
|
+
"ADR-4140-view-query-routes-per-pivot-matrix-no-mermaid"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
"riskLevel": "low",
|
|
25
|
+
"domain": "reviewSurface",
|
|
26
|
+
"estimatedSize": "small",
|
|
27
|
+
"notes": "Sized for one PR (DEFINE 2026-10-07; test estimate reconciled to TS case count 2026-10-08). Test estimate 7 new node:test cases in the suite named by the TS bound to US-208; the suite's declarations land at DEFINE flagged not yet built and this FBS is done when none of them carries the flag and pnpm test is green. No freeze, no ack verbs. Cut from the discovery plan and not in any FBS here: impact sub-view and keyboard shortcuts (capabilities 10 and 13), readiness timeline (17), Product Map trace-bucket realignment.",
|
|
28
|
+
"acIds": [
|
|
29
|
+
"AC-208-1",
|
|
30
|
+
"AC-208-2",
|
|
31
|
+
"AC-208-3",
|
|
32
|
+
"AC-208-4",
|
|
33
|
+
"AC-208-5",
|
|
34
|
+
"AC-208-6",
|
|
35
|
+
"AC-208-7"
|
|
36
|
+
],
|
|
37
|
+
"fbsId": "FBS-207",
|
|
38
|
+
"prdId": "PRD-001",
|
|
39
|
+
"bsId": "BS-001",
|
|
40
|
+
"buildOrder": 207,
|
|
41
|
+
"executionStatus": "complete",
|
|
42
|
+
"title": "Query routes: trace, impact and coverage as JSON"
|
|
43
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-07T13:47:20.198Z",
|
|
3
|
+
"updatedAt": "2026-10-09T14:16:27.065Z",
|
|
4
|
+
"summary": "Trace matrix, Trace actions, lookup integration; Mermaid slice retired (US-209). Delivers AC-209-1 to AC-209-7. Estimated new node:test cases: 7. Order in the command page build: 5 of 5.",
|
|
5
|
+
"approach": "Add renderTraceMatrix and the client wireTraceMatrix (fetch, page-lifetime cache keyed by state.version, re-render after SSE swap, stale marking, row filter past 200 rows, empty state for an unknown pivot), add the Trace action to every id in the readiness tables, route lookup hits for readiness rows to sub=trace, and remove the per-requirement Mermaid slice from html-page.js and mermaid-diagram.js.",
|
|
6
|
+
"deliverables": [
|
|
7
|
+
"src/view/readiness/trace-matrix.js (new): renderTraceMatrix",
|
|
8
|
+
"src/view/page-init.js: wireTraceMatrix, Trace actions, lookup routing",
|
|
9
|
+
"src/view/html-page.js and src/view/mermaid-diagram.js: per-requirement slice unrendered on the Readiness and Requirements tabs; the generator is retained while AC-201-1 still binds it, with a follow-up chain change proposed to retire AC-201-1",
|
|
10
|
+
"src/view/style.css: matrix cells on existing tokens",
|
|
11
|
+
"test/view/trace-matrix.test.js: not-yet-built flags removed, bodies land (7 cases)",
|
|
12
|
+
"test/view/id-lookup.test.js and wespa-host-fixture.test.js: extended for the new hash and routes"
|
|
13
|
+
],
|
|
14
|
+
"dependsOnFbsIds": [
|
|
15
|
+
"FBS-206",
|
|
16
|
+
"FBS-207"
|
|
17
|
+
],
|
|
18
|
+
"contextRequirements": {
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-4136-view-query-routes",
|
|
21
|
+
"TAC-4132-id-lookup",
|
|
22
|
+
"TAC-4134-wespa-host-fixture"
|
|
23
|
+
],
|
|
24
|
+
"adrIds": [
|
|
25
|
+
"ADR-4140-view-query-routes-per-pivot-matrix-no-mermaid"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"riskLevel": "low",
|
|
29
|
+
"domain": "reviewSurface",
|
|
30
|
+
"estimatedSize": "medium",
|
|
31
|
+
"notes": "Sized for one PR (DEFINE 2026-10-07; test estimate reconciled to TS case count 2026-10-08). Test estimate 7 new node:test cases in the suite named by the TS bound to US-209; the suite's declarations land at DEFINE flagged not yet built and this FBS is done when none of them carries the flag and pnpm test is green. No freeze, no ack verbs. Cut from the discovery plan and not in any FBS here: impact sub-view and keyboard shortcuts (capabilities 10 and 13), readiness timeline (17), Product Map trace-bucket realignment.",
|
|
32
|
+
"acIds": [
|
|
33
|
+
"AC-209-1",
|
|
34
|
+
"AC-209-2",
|
|
35
|
+
"AC-209-3",
|
|
36
|
+
"AC-209-4",
|
|
37
|
+
"AC-209-5",
|
|
38
|
+
"AC-209-6",
|
|
39
|
+
"AC-209-7"
|
|
40
|
+
],
|
|
41
|
+
"fbsId": "FBS-208",
|
|
42
|
+
"prdId": "PRD-001",
|
|
43
|
+
"bsId": "BS-001",
|
|
44
|
+
"buildOrder": 208,
|
|
45
|
+
"executionStatus": "complete",
|
|
46
|
+
"title": "Trace matrix, Trace actions, lookup integration; Mermaid slice retired"
|
|
47
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"createdAt": "2026-10-08T15:41:18.421Z",
|
|
3
|
+
"updatedAt": "2026-10-08T15:41:29.883Z",
|
|
4
|
+
"riskLevel": "low",
|
|
5
|
+
"domain": "verify",
|
|
6
|
+
"estimatedSize": "small",
|
|
7
|
+
"notes": "Issue 330 (2026-10-08). Behavioural addition, not a change: default agent-mode runs are unchanged.",
|
|
8
|
+
"acIds": [
|
|
9
|
+
"AC-16503-1",
|
|
10
|
+
"AC-16503-2",
|
|
11
|
+
"AC-16503-3",
|
|
12
|
+
"AC-16503-4"
|
|
13
|
+
],
|
|
14
|
+
"fbsId": "FBS-209",
|
|
15
|
+
"prdId": "PRD-001",
|
|
16
|
+
"bsId": "BS-001",
|
|
17
|
+
"buildOrder": 209,
|
|
18
|
+
"executionStatus": "notStarted",
|
|
19
|
+
"title": "FBS-209 verify modes: --mode flag, deterministic engine, preseed partial report",
|
|
20
|
+
"summary": "Issue 330: --mode <agentScreenshotCritique|deterministic> on rcf verify run + rcf build finalise; deterministic engine runs in-process, records a critique-only blockedAcs ledger; finalise preseeds the --out report and overwrites it with a status: aborted record if verify exits without writing; deterministic-mode promotion is refused with a counts line (ADR-4112).",
|
|
21
|
+
"dependsOnFbsIds": []
|
|
22
|
+
}
|