> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase20-session01-truthful-capability-baseline/implementation-notes.md).

# Implementation Notes

**Session ID**: `phase20-session01-truthful-capability-baseline` **Package**: null **Started**: 2026-06-28 10:04 **Last Updated**: 2026-06-28 10:26

***

## Session Progress

| Metric              | Value   |
| ------------------- | ------- |
| Tasks Completed     | 18 / 18 |
| Estimated Remaining | 0 hours |
| Blockers            | 0       |

***

### Task T018 - Run typecheck, diff, ASCII, and LF verification

**Started**: 2026-06-28 10:24 **Completed**: 2026-06-28 10:26 **Duration**: 2 minutes

**Notes**:

* Ran the required package typechecks for protocol, server, and web.
* Ran whitespace, ASCII, and LF checks over changed files.
* Ran an additional Biome check over touched TypeScript/TSX files; Biome found formatting-only issues in three web files, which were fixed with `npx biome check --write`.
* Reran the touched-file Biome check and focused web tests after formatting.

**Files Changed**:

* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T018 complete and completed the session checklist.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T018 evidence.

**Verification**:

* Command/check: `npm --workspace packages/protocol run typecheck`
  * Result: PASS - protocol `tsc --noEmit` completed successfully.
  * Evidence: Command exited 0.
* Command/check: `npm --workspace @factionos/server run typecheck`
  * Result: PASS - server `tsc --noEmit` completed successfully.
  * Evidence: Command exited 0.
* Command/check: `npm --workspace @factionos/web run typecheck`
  * Result: PASS - web `tsc -b --noEmit` completed successfully.
  * Evidence: Command exited 0.
* Command/check: `git diff --check`
  * Result: PASS - no whitespace errors reported.
  * Evidence: Command exited 0.
* Command/check: `{ git diff --name-only --diff-filter=ACM; git ls-files --others --exclude-standard; } | while IFS= read -r file; do [ -f "$file" ] || continue; if LC_ALL=C grep -nP '[^\x00-\x7F]' "$file" >/tmp/factionos-ascii-check.out; then echo "NON_ASCII $file"; cat /tmp/factionos-ascii-check.out; exit 1; fi; if file "$file" | grep -q 'CRLF'; then echo "CRLF $file"; exit 1; fi; done`
  * Result: PASS - no non-ASCII or CRLF issues found in changed or untracked files.
  * Evidence: Command exited 0.
* Command/check: `npx biome check apps/server/src/managers/executorRegistry.ts apps/server/tests/executorRegistry.test.ts apps/server/tests/guardedActions.test.ts apps/server/tests/commandCenterRoutes.test.ts apps/web/src/lib/commandCenterUi.ts apps/web/src/components/orchestration/QueueWorkbench.tsx apps/web/src/components/orchestration/CampaignWorkbench.tsx apps/web/src/components/orchestration/HeroLineageWorkbench.tsx apps/web/tests/commandCenterUi.test.ts apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 11 files checked, no fixes needed after formatting.
  * Evidence: Biome check exited 0.
* Command/check: `npx vitest run apps/web/tests/commandCenterUi.test.ts apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 3 test files, 18 tests passed after formatting.
  * Evidence: Vitest output reported all focused web tests passing.
* UI product-surface check: PASS - rendered web tests cover record-only queue/campaign/lifecycle surfaces.
* UI craft check: PASS - rendered tests cover native controls, accessible names, duplicate disabled states, and feedback.

**BQC Fixes**:

* Contract alignment: Typechecks and focused tests confirm protocol/server/web contracts remain aligned.
* Product surface discipline: Biome and rendered tests confirm touched UI code remains formatted and product-facing copy stays record-only.

***

### Task T017 - Run focused Vitest coverage

**Started**: 2026-06-28 10:23 **Completed**: 2026-06-28 10:24 **Duration**: 1 minute

**Notes**:

* Ran the focused server and web Vitest command required by the session.
* Covered executor registry behavior, guarded action routes, command-center routes, web helper copy, integrated campaign/queue panes, and Hero/Lineage lifecycle controls.

**Files Changed**:

* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T017 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T017 evidence.

**Verification**:

* Command/check: `npx vitest run apps/server/tests/executorRegistry.test.ts apps/server/tests/guardedActions.test.ts apps/server/tests/commandCenterRoutes.test.ts apps/web/tests/commandCenterUi.test.ts apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 6 test files, 44 tests passed.
  * Evidence: Vitest output reported all focused server and web tests passing.
* UI product-surface check: PASS - focused web tests include rendered campaign/queue and Hero/Lineage surfaces.
* UI craft check: PASS - rendered tests cover accessible names, disabled duplicate state, and user-facing feedback.

**BQC Fixes**:

* Contract alignment: Focused tests verify server/web behavior agrees on file non-execution and record-only UI labels.

***

### Task T016 - Update integrated web pane tests

**Started**: 2026-06-28 10:18 **Completed**: 2026-06-28 10:23 **Duration**: 5 minutes

**Notes**:

* Added a rendered campaigns-tab test covering record-only campaign and queue labels, callbacks, feedback, and absence of `Dispatch` copy.
* Updated Hero/Lineage rendered test expectations for record-intent accessible names and offline copy.

**Files Changed**:

* `apps/web/tests/CommandCenterPanes.test.tsx` - Added campaigns-tab test for `Queue tasks for tracking` and `Start tracking`.
* `apps/web/tests/HeroLineageWorkbench.test.tsx` - Updated lifecycle intent accessible-name expectations.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T016 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T016 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 2 test files, 5 tests passed.
  * Evidence: Integrated pane tests cover record-only queue/campaign controls and Hero/Lineage lifecycle intent controls.
* Command/check: `sed -n '1,260p' apps/web/tests/CommandCenterPanes.test.tsx` and `sed -n '1,220p' apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - inspected updated rendered expectations.
  * Evidence: Tests assert `Queue tasks for tracking`, `Start tracking`, `Record message intent`, and `Record model intent`.
* UI product-surface check: PASS - rendered tests validate normal surfaces use record-only labels and omit `Dispatch` copy.
* UI craft check: PASS - rendered tests exercise native buttons, disabled duplicate action state, feedback, and accessible names.

**BQC Fixes**:

* Product surface discipline: Integrated tests now guard against reintroducing metadata-only dispatch/process-control labels.
* Accessibility and platform compliance: Tests assert accessible names for lifecycle intent controls and queue/campaign action buttons.

***

### Task T015 - Update command-center API, web, and architecture docs

**Started**: 2026-06-28 10:20 **Completed**: 2026-06-28 10:23 **Duration**: 3 minutes

**Notes**:

* Updated API and event docs so guarded file approval is approved-not-executing and not-executed until file mutation ships.
* Updated web UX docs so file-intent actions remain metadata-only, queue/campaign controls record tracking state, and observed Hero/Lineage controls record lifecycle intent.
* Updated architecture overview to separate file intent/approval metadata from Git, terminal, and container executable readiness gates.

**Files Changed**:

* `docs/api/README_api.md` - Updated guarded-action approval, Command Center frame, and Phase 03 boundary wording.
* `docs/api/event-api-hook-contracts.md` - Updated guarded-action approval and file adapter boundary wording.
* `apps/web/README_web.md` - Updated File/Git, queue/campaign, Hero/Lineage, and executor-ready subset UX wording.
* `docs/ARCHITECTURE.md` - Updated high-level Command Center actionability boundary.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T015 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T015 evidence.

**Verification**:

* Command/check: `rg -n "file adapters record|file audit adapters|file guarded-action adapters are executor-ready|audit execution metadata|queue dispatch|Campaign dispatch|File/Git/terminal/container controls execute|File/Git workbench controls use" docs/api/README_api.md docs/api/event-api-hook-contracts.md apps/web/README_web.md docs/ARCHITECTURE.md`
  * Result: PASS - stale file executor-ready/audit execution and queue/campaign dispatch claims were removed; the only remaining hit is non-execution in-flight guard wording for File/Git controls.
  * Evidence: No matches remain for file audit adapter executor-ready claims or queue/campaign dispatch copy.
* Command/check: `rg -n "Dispatch|dispatch" docs/api/README_api.md docs/api/event-api-hook-contracts.md apps/web/README_web.md docs/ARCHITECTURE.md`
  * Result: PASS - remaining matches refer to hook event dispatch keys/source dispatch, not queue/campaign executable action copy.
  * Evidence: Matches are limited to `POST /event` and hook dispatch table terminology.
* UI product-surface check: N/A - documentation task.
* UI craft check: N/A - documentation task.

**BQC Fixes**:

* Contract alignment: Docs now match server and web behavior for file, queue, campaign, and observed lifecycle states.

***

### Task T014 - Update Hero/Lineage record-intent buttons and accessible names

**Started**: 2026-06-28 10:14 **Completed**: 2026-06-28 10:20 **Duration**: 6 minutes

**Notes**:

* Reworded hero lifecycle captions and offline copy to lifecycle intent records.
* Updated lifecycle row and action group accessible names to include record-intent language.
* Changed in-flight button text to `Recording intent`.
* Preserved native button/select/input controls and focus-visible styling.

**Files Changed**:

* `apps/web/src/components/orchestration/HeroLineageWorkbench.tsx` - Updated lifecycle intent captions, labels, and in-flight text.
* `apps/web/tests/HeroLineageWorkbench.test.tsx` - Updated rendered accessible-name expectations.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T014 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T014 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 2 test files, 5 tests passed.
  * Evidence: Hero lineage test found disabled duplicate `Record message intent for Hero hero_1`, clicked `Record model intent for Hero hero_1`, and verified offline intent-control copy.
* Command/check: `sed -n '1,360p' apps/web/src/components/orchestration/HeroLineageWorkbench.tsx`
  * Result: PASS - inspected lifecycle intent captions, row labels, action group labels, button aria-labels, and in-flight text.
  * Evidence: Hero lifecycle buttons now expose record-intent labels and duplicate in-flight disabled states.
* UI product-surface check: PASS - rendered component test confirms lifecycle controls communicate record-only intent.
* UI craft check: PASS - controls remain native buttons/select/input controls with focus-visible styling, visible disabled states, and concise labels.

**BQC Fixes**:

* Duplicate action prevention: Existing in-flight keys still disable matching lifecycle actions.
* Accessibility and platform compliance: Lifecycle buttons and groups now expose record-intent accessible names.
* Product surface discipline: Observed lifecycle surface no longer claims direct process control.

***

### Task T012 - Update campaign workbench buttons, feedback, and task copy

**Started**: 2026-06-28 10:14 **Completed**: 2026-06-28 10:20 **Duration**: 6 minutes

**Notes**:

* Reworded default campaign task copy from queue dispatch to queue tracking.
* Changed the campaign workbench caption to bounded local campaign tracking work.
* Added action-specific accessible names for campaign buttons.
* Added bounded feedback after campaign actions and task expected-result refinements.
* Preserved helper-driven in-flight duplicate disabling.

**Files Changed**:

* `apps/web/src/components/orchestration/CampaignWorkbench.tsx` - Updated default copy, caption, action feedback, and accessible labels.
* `apps/web/tests/CommandCenterPanes.test.tsx` - Added rendered campaign label and feedback assertions.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T012 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T012 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 2 test files, 5 tests passed.
  * Evidence: Campaigns-tab rendered test found `Preview and create bounded local campaign tracking work`, clicked `Queue tasks for tracking Route campaign workbench`, and observed `Queue tasks for tracking recorded for campaign.`.
* Command/check: `sed -n '1,420p' apps/web/src/components/orchestration/CampaignWorkbench.tsx`
  * Result: PASS - inspected default task copy, campaign action button aria-labels, feedback paths, and refine feedback.
  * Evidence: Campaign buttons consume helper labels and keep in-flight disabled handling.
* UI product-surface check: PASS - rendered component test confirms normal campaign controls use tracking language and do not render `Dispatch`.
* UI craft check: PASS - controls remain native buttons/inputs/checkboxes with visible labels, focus-visible styling, disabled states, and concise feedback.

**BQC Fixes**:

* Duplicate action prevention: Existing per-action in-flight keys still disable matching campaign actions.
* Accessibility and platform compliance: Campaign action and refine buttons now expose action-specific accessible names.
* Product surface discipline: Campaign surface copy now describes planning/tracking behavior rather than execution.

***

### Task T011 - Update queue workbench buttons, feedback, and captions

**Started**: 2026-06-28 10:14 **Completed**: 2026-06-28 10:20 **Duration**: 6 minutes

**Notes**:

* Changed the queue workbench caption to local queue records/tracking language.
* Added action-specific accessible names such as `Start tracking Queued route task`.
* Added bounded feedback after queue entry actions are accepted or rejected.
* Preserved the existing input fields, focus-visible treatment, and in-flight duplicate disabling.

**Files Changed**:

* `apps/web/src/components/orchestration/QueueWorkbench.tsx` - Updated caption, action feedback, and accessible labels.
* `apps/web/tests/CommandCenterPanes.test.tsx` - Added rendered queue label and feedback assertions.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T011 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T011 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx`
  * Result: PASS - 2 test files, 5 tests passed.
  * Evidence: Campaigns-tab rendered test found `Create and track local queue records`, clicked `Start tracking Queued route task`, and observed `Start tracking recorded for queue entry.`.
* Command/check: `sed -n '1,260p' apps/web/src/components/orchestration/QueueWorkbench.tsx`
  * Result: PASS - inspected action label, disabled, title, aria-label, and feedback handling.
  * Evidence: Queue action buttons use helper labels, in-flight disabled state remains, and click handlers record bounded feedback.
* UI product-surface check: PASS - rendered component test confirms normal queue surface uses tracking language and does not render `Dispatch`.
* UI craft check: PASS - controls keep native buttons/inputs, visible labels, focus-visible styling, disabled duplicate-trigger states, and concise feedback text.

**BQC Fixes**:

* Duplicate action prevention: Existing per-action in-flight keys still disable matching queue actions.
* Accessibility and platform compliance: Queue action buttons now expose action-specific accessible names.
* Product surface discipline: Queue surface copy now describes tracking records, not execution.

***

### Task T013 - Update observed hero lifecycle labels to record intent

**Started**: 2026-06-28 10:12 **Completed**: 2026-06-28 10:14 **Duration**: 2 minutes

**Notes**:

* Changed lifecycle kind labels to `Record ... intent` wording for observed-only commands.
* Updated lifecycle status descriptions so execution wording is limited to managed lifecycle execution states.
* Updated action availability reason to say observed lifecycle intent is recorded without direct process control.

**Files Changed**:

* `apps/web/src/lib/commandCenterUi.ts` - Updated hero lifecycle label and reason helpers.
* `apps/web/tests/commandCenterUi.test.ts` - Updated lifecycle helper expectations.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T013 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T013 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/commandCenterUi.test.ts`
  * Result: PASS - 1 test file, 13 tests passed.
  * Evidence: Lifecycle helper expectations for `Record message intent`, `Record permission intent`, and `Record model intent` passed.
* Command/check: `sed -n '1278,1400p' apps/web/src/lib/commandCenterUi.ts`
  * Result: PASS - inspected lifecycle status, label, and action availability copy.
  * Evidence: Observed-only action labels no longer use direct process-control verbs such as `Message`, `Stop`, or `Resume`.
* UI product-surface check: PASS - lifecycle helper copy communicates record-only intent on normal surfaces.
* UI craft check: PASS - helper preserves clear labels and in-flight/local-server disabled reasons.

**BQC Fixes**:

* Product surface discipline: Hero lifecycle copy now avoids process-control claims for observed-only sessions.
* Accessibility and platform compliance: Button labels produced by the helper describe the actual record-intent operation.

***

### Task T010 - Update campaign labels and state descriptions

**Started**: 2026-06-28 10:12 **Completed**: 2026-06-28 10:14 **Duration**: 2 minutes

**Notes**:

* Changed campaign dispatch action helper label to `Queue tasks for tracking`.
* Changed enabled campaign action reason to state that the action records tracking without execution.
* Reworded approved, paused, and failed campaign state descriptions away from dispatch/execution claims.
* Updated graph test fixture copy away from dispatch wording.

**Files Changed**:

* `apps/web/src/lib/commandCenterUi.ts` - Updated campaign action labels, reasons, and state descriptions.
* `apps/web/tests/commandCenterUi.test.ts` - Updated campaign helper expectations and task graph fixture copy.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T010 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T010 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/commandCenterUi.test.ts`
  * Result: PASS - 1 test file, 13 tests passed.
  * Evidence: Campaign helper expectation for `Queue tasks for tracking` and non-executing tracking reason passed.
* Command/check: `sed -n '2308,2362p' apps/web/src/lib/commandCenterUi.ts`
  * Result: PASS - inspected campaign state descriptions and action label helper.
  * Evidence: Approved/paused/failed descriptions use tracking language, and dispatch action label no longer appears in the helper.
* UI product-surface check: PASS - campaign helper copy does not claim execution for metadata-only transitions.
* UI craft check: PASS - helper still returns deterministic labels, disabled states, and reason text.

**BQC Fixes**:

* Product surface discipline: Campaign copy now reflects local tracking behavior instead of executable dispatch.

***

### Task T009 - Update queue action labels and reasons

**Started**: 2026-06-28 10:12 **Completed**: 2026-06-28 10:14 **Duration**: 2 minutes

**Notes**:

* Changed queue dispatch helper copy to `Start tracking`.
* Added a queue action reason that describes local queue tracking without execution.
* Preserved duplicate-trigger prevention through the existing in-flight branch.

**Files Changed**:

* `apps/web/src/lib/commandCenterUi.ts` - Updated queue action label and reason helpers.
* `apps/web/tests/commandCenterUi.test.ts` - Added queue tracking label/reason expectation.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T009 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T009 evidence.

**Verification**:

* Command/check: `npx vitest run apps/web/tests/commandCenterUi.test.ts`
  * Result: PASS - 1 test file, 13 tests passed.
  * Evidence: Queue helper expectation for `Start tracking` and non-executing tracking reason passed.
* Command/check: `sed -n '1740,1810p' apps/web/src/lib/commandCenterUi.ts` and `sed -n '2308,2362p' apps/web/src/lib/commandCenterUi.ts`
  * Result: PASS - inspected connected, in-flight, enabled, and label branches.
  * Evidence: In-flight handling remains `This queue action is already in flight.`, while dispatch label/reason now describe tracking.
* UI product-surface check: PASS - normal queue copy no longer says dispatch for metadata-only state changes.
* UI craft check: PASS - helper still returns stable labels, disabled state, and reasons for connected/in-flight/unavailable states.

**BQC Fixes**:

* Duplicate action prevention: Existing in-flight branch remains ahead of enabled action handling.
* Product surface discipline: Queue dispatch wording now describes record-only tracking instead of execution.

***

### Task T008 - Remove metadata-only file execution summaries

**Started**: 2026-06-28 10:11 **Completed**: 2026-06-28 10:12 **Duration**: 1 minute

**Notes**:

* Removed the default file `execute` adapter, so guarded file approval cannot produce an executed summary from audit-only metadata.
* Preserved schema-validated guarded action input flow by relying on existing route/protocol validation before registry evaluation.
* Added explicit command-center and guarded-action unavailable reason mapping through `dependency_unavailable`.

**Files Changed**:

* `apps/server/src/managers/executorRegistry.ts` - Removed metadata-only file execution adapter and stale summary helper usage.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T008 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T008 evidence.

**Verification**:

* Command/check: `rg -n "safeTargetLabel|records bounded file intent execution metadata|File Edit approved|with local audit metadata only" apps/server/src/managers/executorRegistry.ts apps/server/tests`
  * Result: PASS - no matches remained for the removed metadata-only execution helper or summary wording.
  * Evidence: Search exited with no matching stale file execution claims.
* Command/check: `npx vitest run apps/server/tests/executorRegistry.test.ts`
  * Result: PASS - 1 test file, 7 tests passed.
  * Evidence: Registry coverage confirms default file approval now returns non-executing behavior.
* UI product-surface check: N/A - server result behavior only.
* UI craft check: N/A - no UI changed in this task.

**BQC Fixes**:

* Trust boundary enforcement: Guarded action approval continues through existing validated route/protocol input before registry evaluation.
* Error information boundaries: File approval now returns bounded repair guidance and reason codes rather than fabricated execution summaries.

***

### Task T007 - Downgrade default file executor entries

**Started**: 2026-06-28 10:10 **Completed**: 2026-06-28 10:11 **Duration**: 1 minute

**Notes**:

* Changed default file executor entries from `executor_ready` to `approved_not_executing`.
* Added explicit `dependency_unavailable` mapping and non-executing guidance that names the missing file mutation manager.
* Removed file-entry readiness claims while preserving cleanup and rollback guidance.

**Files Changed**:

* `apps/server/src/managers/executorRegistry.ts` - Downgraded file executor entries and updated guidance.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T007 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T007 evidence.

**Verification**:

* Command/check: `npx vitest run apps/server/tests/executorRegistry.test.ts`
  * Result: PASS - 1 test file, 7 tests passed.
  * Evidence: Focused registry coverage passed after file entries became approval-only/non-executing.
* Command/check: `sed -n '380,760p' apps/server/src/managers/executorRegistry.ts`
  * Result: PASS - inspected `fileExecutorEntry` for status, requirements, unavailable reasons, and rollback guidance.
  * Evidence: File entries now use `approved_not_executing`, require `file mutation manager`, and map `dependency_unavailable`.
* UI product-surface check: N/A - server capability behavior only.
* UI craft check: N/A - no UI changed in this task.

**BQC Fixes**:

* Contract alignment: Default server capability behavior now matches Phase 20 file execution boundaries.
* Failure path completeness: Missing file mutation support now maps to explicit `dependency_unavailable` non-execution instead of a fake executed result.

***

### Task T006 - Update web copy expectations for truthful states

**Started**: 2026-06-28 10:08 **Completed**: 2026-06-28 10:10 **Duration**: 2 minutes

**Notes**:

* Updated command-center UI helper tests so file capability defaults to `approved_not_executing` instead of executor-ready.
* Added expected summary counting for `approvedNotExecuting`.
* Updated queue dispatch expectations to `Start tracking`, campaign dispatch expectations to `Queue tasks for tracking`, and observed hero lifecycle action labels to `Record ... intent`.
* Updated file execution history fixture to a non-executed unavailable run.

**Files Changed**:

* `apps/web/tests/commandCenterUi.test.ts` - Changed web helper expectations for capability, queue, campaign, executor summary, and hero lifecycle copy.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T006 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T006 evidence.

**Verification**:

* Command/check: `sed -n '1,760p' apps/web/tests/commandCenterUi.test.ts`
  * Result: PASS - inspected updated fixtures and assertions for file capability, non-executing run history, queue/campaign labels, and hero lifecycle intent copy.
  * Evidence: Test now expects `approvedNotExecuting`, `Start tracking`, `Queue tasks for tracking`, `Record message intent`, and `Record model intent`.
* Command/check: `sed -n '1260,1410p' apps/web/src/lib/commandCenterUi.ts` and `sed -n '1720,1810p' apps/web/src/lib/commandCenterUi.ts`
  * Result: PASS - confirmed current source still uses direct lifecycle/action labels, so the test updates are intentionally ahead of T009/T010/T013.
  * Evidence: Existing implementation still returns `Message`, `Dispatch`, and generic local state-change reasons before implementation edits.
* UI product-surface check: PASS - tests now require product-facing labels that avoid execution/process-control claims.
* UI craft check: PASS - expectations preserve visible labels and duplicate in-flight reasons for normal controls.

**BQC Fixes**:

* Product surface discipline: Web helper expectations now reject metadata-only execution wording on normal product surfaces.
* Accessibility and platform compliance: Hero lifecycle action expectations now require accessible intent labels instead of process-control verbs.

***

### Task T005 - Update command-center capability route expectations

**Started**: 2026-06-28 10:08 **Completed**: 2026-06-28 10:08 **Duration**: 1 minute

**Notes**:

* Updated all-probe and single-probe route expectations so `capability_file_file_edit` reports `approved_not_executing`.
* Added an explicit assertion that the file probe status is not `executor_ready`.

**Files Changed**:

* `apps/server/tests/commandCenterRoutes.test.ts` - Changed file executor probe route expectations.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T005 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T005 evidence.

**Verification**:

* Command/check: `sed -n '790,860p' apps/server/tests/commandCenterRoutes.test.ts`
  * Result: PASS - inspected all-probe and single-probe assertions for file capability status and unavailable reason.
  * Evidence: Both probe paths now expect `approved_not_executing` and `dependency_unavailable`, with an explicit not-`executor_ready` assertion.
* Command/check: `sed -n '120,175p' apps/server/tests/commandCenterRoutes.test.ts`
  * Result: PASS - confirmed existing snapshot route expectation already treats file capability envelopes as unavailable rather than ready.
  * Evidence: Root snapshot test still expects file capability status `unavailable`.
* UI product-surface check: N/A - server route test expectation only.
* UI craft check: N/A - no UI changed in this task.

**BQC Fixes**:

* Contract alignment: Route tests now prevent probe responses from promoting metadata-only file entries to executor-ready.

***

### Task T004 - Update guarded file approval route expectations

**Started**: 2026-06-28 10:07 **Completed**: 2026-06-28 10:08 **Duration**: 1 minute

**Notes**:

* Updated the guarded action REST test so file approval remains `state: "approved"` with result `not_executed`.
* Updated the corresponding command-center execution detail expectation to `state: "unavailable"` and `resultStatus: "not_executed"`.
* Updated the list filter/count assertion from executed to approved.

**Files Changed**:

* `apps/server/tests/guardedActions.test.ts` - Changed file approval route expectations to non-executing results.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T004 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T004 evidence.

**Verification**:

* Command/check: `sed -n '1,540p' apps/server/tests/guardedActions.test.ts`
  * Result: PASS - inspected updated route expectations for proposal state, result status, execution run state, and guarded-action list counts.
  * Evidence: File approval test now expects `not_executed`, `dependency_unavailable`, and an unavailable execution run.
* Command/check: `sed -n '1,320p' apps/server/src/managers/guardedActions.ts`
  * Result: PASS - confirmed `not_executed` completion maps guarded proposal state to `approved`, matching the route expectation.
  * Evidence: `stateForResult` leaves `not_executed` results in `approved` state.
* UI product-surface check: N/A - server route test expectation only.
* UI craft check: N/A - no UI changed in this task.

**BQC Fixes**:

* Contract alignment: Route tests now distinguish approval state from actual execution state for file actions.

***

### Task T003 - Update file executor readiness expectations before implementation

**Started**: 2026-06-28 10:06 **Completed**: 2026-06-28 10:07 **Duration**: 1 minute

**Notes**:

* Replaced the default file executor-ready test expectation with `approved_not_executing`.
* Asserted default file approval produces a `not_executed` guarded result and a non-ready command-center run until a file mutation manager exists.

**Files Changed**:

* `apps/server/tests/executorRegistry.test.ts` - Updated default file executor readiness and guarded result expectations.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T003 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T003 evidence.

**Verification**:

* Command/check: `sed -n '1,380p' apps/server/tests/executorRegistry.test.ts`
  * Result: PASS - inspected updated expectations for file capability status, readiness, guarded result, rollback note, and repair summary.
  * Evidence: Test now expects `ready` false, capability `approved_not_executing`, and guarded result `not_executed`.
* Command/check: `sed -n '380,760p' apps/server/src/managers/executorRegistry.ts`
  * Result: PASS - confirmed current implementation still uses executable file entries, so the test is intentionally ahead of T007.
  * Evidence: Existing `fileExecutorEntry` still has `status: "executor_ready"` and an `execute` adapter before implementation changes.
* UI product-surface check: N/A - server test expectation only.
* UI craft check: N/A - no UI changed in this task.

**BQC Fixes**:

* Contract alignment: The server test now asserts the intended capability/result contract before source implementation.

***

### Task T002 - Confirm command-center status vocabulary supports non-ready states

**Started**: 2026-06-28 10:05 **Completed**: 2026-06-28 10:06 **Duration**: 1 minute

**Notes**:

* Confirmed `CommandCenterCapabilityStatus` already includes `unavailable`, `proposal_only`, `approved_not_executing`, and `executor_ready`.
* Confirmed `CommandCenterHeroLifecycleState` already includes `approved_not_executing`, `executor_ready`, `executing`, `executed`, `failed`, `unavailable`, and `cancelled`.
* No protocol vocabulary change was needed; this session can correct behavior and copy around the existing status contract.

**Files Changed**:

* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T002 complete and updated progress.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T002 evidence.

**Verification**:

* Command/check: `sed -n '1,260p' packages/protocol/src/orchestrationCommandCenter.ts`
  * Result: PASS - capability and lifecycle status arrays already contain the needed non-ready states.
  * Evidence: `COMMAND_CENTER_CAPABILITY_STATUS_VALUES` and `COMMAND_CENTER_HERO_LIFECYCLE_STATE_VALUES` include the session-required values.
* Command/check: `rg -n "COMMAND_CENTER_CAPABILITY_STATUS_VALUES|CommandCenterCapabilityStatus|validate.*Capability|capability.*status|status.*COMMAND_CENTER" packages/protocol/src/orchestrationCommandCenter.ts`
  * Result: PASS - parser and validator paths route capability status validation through the existing status value set.
  * Evidence: `parseCommandCenterCapabilityStatus` and capability parsers reference the existing shared status vocabulary.
* UI product-surface check: N/A - no user-facing UI changed in this task.
* UI craft check: N/A - no user-facing UI changed in this task.

**BQC Fixes**:

* N/A - protocol vocabulary inspection only; no runtime code changed.

***

### Task T001 - Verify Phase 20 source findings and overclaim locations

**Started**: 2026-06-28 10:04 **Completed**: 2026-06-28 10:05 **Duration**: 1 minute

**Notes**:

* Confirmed the Phase 20 Session 01 stub requires downgrading metadata-only file, queue, campaign, and observed hero lifecycle claims before new execution work.
* Located current overclaims in server file executor tests and source, guarded approval tests, command-center route tests, web UI helpers/components, integrated web tests, and command-center docs.

**Files Changed**:

* `.spec_system/specs/phase20-session01-truthful-capability-baseline/tasks.md` - Marked T001 complete and added progress summary.
* `.spec_system/specs/phase20-session01-truthful-capability-baseline/implementation-notes.md` - Recorded T001 evidence.

**Verification**:

* Command/check: `cat .spec_system/PRD/phase_20/session_01_truthful_capability_baseline.md`
  * Result: PASS - folded source detail names file executor readiness, guarded approval execution, queue/campaign dispatch copy, and observed lifecycle control wording as current overclaims.
  * Evidence: Session stub success criteria and required changes match the active spec scope.
* Command/check: `rg -n "executor_ready|approved_not_executing|proposal_only|unavailable|file|dispatch|execute|executed|lifecycle|pause|resume|cancel|stop" packages/protocol/src/orchestrationCommandCenter.ts apps/server/src/managers/executorRegistry.ts apps/server/tests/executorRegistry.test.ts apps/server/tests/guardedActions.test.ts apps/server/tests/commandCenterRoutes.test.ts apps/web/src/lib/commandCenterUi.ts apps/web/src/components/orchestration/QueueWorkbench.tsx apps/web/src/components/orchestration/CampaignWorkbench.tsx apps/web/src/components/orchestration/HeroLineageWorkbench.tsx apps/web/tests/commandCenterUi.test.ts apps/web/tests/CommandCenterPanes.test.tsx apps/web/tests/HeroLineageWorkbench.test.tsx docs/api/README_api.md docs/api/event-api-hook-contracts.md apps/web/README_web.md docs/ARCHITECTURE.md`
  * Result: PASS - found expected server, web, test, and doc locations with execution, dispatch, and lifecycle wording to update.
  * Evidence: Search output included file readiness expectations in `apps/server/tests/executorRegistry.test.ts`, guarded file approval executed expectations in `apps/server/tests/guardedActions.test.ts`, and dispatch/lifecycle copy in `apps/web/src/lib/commandCenterUi.ts`.
* UI product-surface check: N/A - task inspected source findings only.
* UI craft check: N/A - no user-facing UI changed in this task.

**BQC Fixes**:

* N/A - inspection-only task; application-code changes begin in later tasks.

***

## Task Log

### 2026-06-28 - Session Start

**Environment verified**:

* [x] Prerequisites confirmed
* [x] Tools available
* [x] Directory structure ready

**Environment evidence**:

* Command/check: `bash /home/aiwithapex/.codex/plugins/cache/apex-spec-system/apex-spec/2.1.3-codex/skills/apex-spec/scripts/analyze-project.sh --json`
  * Result: PASS - current session resolved to `phase20-session01-truthful-capability-baseline`; monorepo true; Package null/cross-cutting.
* Command/check: `bash /home/aiwithapex/.codex/plugins/cache/apex-spec-system/apex-spec/2.1.3-codex/skills/apex-spec/scripts/check-prereqs.sh --json --env`
  * Result: PASS - `.spec_system`, `jq`, `git`, and npm workspace manager available.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase20-session01-truthful-capability-baseline/implementation-notes.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
