Skip to content

Accept canonical command fields at frontend read boundaries #3019

Closed

Description

@mblua

Active approved continuation — v6

User authorized both observed WebSocket lifetime corrections. Fresh five-party whole-set approval: room-shared/i3018-command-fields/round9-v6-consensus.md. Immutable authority/mapping/impact tables: .ac/plans/3018-command-fields/approved-identities-v6.md.

Current root: D:/0_repos/AgentsCommander_iac/.ac/plans/3018-command-fields/plan-v6-command-fields.md
Plan-SHA256: C0923225290F5535938F64BA91019EFD4C9DCD8DDC25075BE809AEB4688B8401
Phase: D:/0_repos/AgentsCommander_iac/.ac/plans/3018-command-fields/p01-v6-tolerant-reader.md
Phase-SHA256: 5DE41D6A55FC5B8E5975424075B4353160550B908605F2405E4FF87F3F7127FE

Continue existing branch refactor/3019-tolerant-reader / PR3023 at e027877; original BASE f6e5d08 and history retained. Eight feature paths: historical six plus src/sidebar/components/AgentPickerModal.tsx and AgentPickerModal.test.tsx. Integrate current main before checks: landed d1c16a6 project stale-before-transport fix/tests reused, thirteen incoming paths separately audited by content, no duplicate repair. Newly authored correction guards successful picker initialization after disposal with paired deferred/live tests and meaningful guard-removal/restored-green proof.

UI owns code/tests/mutations/integration; Shipper exclusively executes bounded verification, independent source/proof review required. Exact new PR head must pass all applicable triggered and configured-required CI with zero corresponding unhandled WebSocket errors. Prior e027 attempts with4001 passing assertions and2 errors remain failures; no unchanged retry. No transport/harness/CIguard/environment repair, packaging/install/release/version/id_hash input change. Same later phases P02/P03v4/P04v2; child-only closure.

The complete phase is sole cold implementation specification; exact consensus and mandatory cold gate still govern execution. Older v5 records below are historical where superseded by this active v6 scope.


Situation and intended change

Native phase P01 of #3018 (under E2432). The frontend must tolerate canonical baseCommand/additionalArguments responses before backend writers switch. Add typed inbound codecs at the existing settings/catalog/report wrappers, retaining internal command members and existing outbound payloads.

Class: design-bearing. Source owner: ac-dev-webpage-ui-v5. Depends on: none. Continue existing refactor/3019-tolerant-reader / PR #3023 at recorded HEAD 368efee27d55f6da97faae233fc2d0b8dc6a7fc7; retain original BASE and history, no fresh branch/child/PR.

Files

  • src/shared/types.ts
  • src/shared/ipc.ts
  • src/shared/ipc.transport.test.ts
  • src/resource-monitor/App.tsx
  • src/resource-monitor/App.automation.test.tsx
  • src/sidebar/App.project-refresh.test.ts

Mandatory acceptance

  1. Follow the exact approved phase, scope, ownership and green boundary; no new design decision.
  2. New field with content wins; otherwise legacy fallback. Identical frozen W predicate across runtimes; validate present values and preserve selected original text.
  3. Authorized updates write new fields only; retain current-source old key/value unchanged. No delete/update/synthesize old values, no write on read or new source authority.
  4. Preserve fixed base arguments/wrappers, parsing, launch text, metadata, references and current identity/hash inputs. No packaged build/install/release/version bump.
  5. Ship the phase proof/check receipts and exact-head applicable CI; PR closes only this child, never Clarify agent and profile command fields with new-first legacy fallback #3018. Shipper alone executes phase npm/Cargo/structural verification; developer owns source/fixtures/mutation edits and interpretation. Negative controls must fail before restored green evidence.

Canonical approved specification

Root: D:/0_repos/AgentsCommander_iac/.ac/plans/3018-command-fields/plan-v5-command-fields.md
Plan-SHA256: 6562A0C615AAB37A6A245C9FCDC0400922BE3A94C7D85B3383724A133A554305
Phase: D:/0_repos/AgentsCommander_iac/.ac/plans/3018-command-fields/p01-v5-tolerant-reader.md
Phase-SHA256: C496934699030DA4075EB09C5912F64674A50366E3194C16733E1CE2C382D77F
Five fresh approvals: room-shared/i3018-command-fields/round8-v5-consensus.md. Standing user authorization, exact mapping receipt and cold gates govern execution; plans are immutable.

Verification

Run from room-19 repo-AgentsCommander; complete inventory/positive-negative proof and executor in the phase file.

timeout 1200 npm run typecheck
timeout 1200 npm test -- src/shared/ipc.transport.test.ts src/shared/profile-utils.test.ts src/sidebar/components/AgentPickerModal.test.tsx
timeout 1200 npm run build

Exact user-approved correction and expanded proof

Frontend response projections preserve absent collections/fields/empty profile objects and unchanged legacy reference identity, validate both present spellings, copy only changed paths and strip known wire keys. Persisted Rust required-base validation stays strict. Replace only the P01-added frontend missing-base/profile-default oracles; retain consumer assertions/fixtures/timeouts.

The exact three-file exception is user-approved (proposal SHA EA17BE48971F1376DF9CF6A31AB11B0CC48849C01E22721BD4B3CCFEAE06B48C). ResourceMonitor registers synchronous owned cleanup/disposal guard before settings await; preserve live settings fallback/preferences/poll options, release only its returned disposer. Deferred resolve/reject after disposal must not acquire polling/snapshot; live mount refreshes and releases once. Sidebar's one no-project case awaits loaded before retained final assertions. No store/transport/harness/environment/dependency/workflow changes.

Shipper alone additionally executes the lifecycle suite, the seven original failing suites, and full frontend JSON command exactly as P01v4 specifies; original focused/typecheck/build/frontend dependency guard retained. UI supplies separate guard-removal/cleanup-removal mutations, Shipper demonstrates named behavior failure, exact restoration then green. Reuse W proof only with relevant implementation+oracle byte equality. All original failures/unexplained errors block; inherited Node26 localStorage27 disclosed separately, supported Node22 exact-head CI must be green. No fourth temporary diagnostic, assertion weakening or environment repair. Authority/impacts: .ac/plans/3018-command-fields/approved-identities-v5.md.

Reviewed v5 public result boundary

Pure codecs accept/return the exact partial aliases in P01v5. Exactly three documented public API assertions promote only successfully projected results to existing complete consumer types, trusting the typed Rust responses just as existing invoke does. No unrelated runtime schema validation, new defaults or consumer widening. Partial fake tests observe partial results; paired complete old/canonical fixtures preserve the complete API contract. This explicitly resolves the prior output-type blocker within the same six-file scope; all five fresh exact-set approvals are recorded. Actual typecheck/behavior/proof and exact-head CI remain future Shipper/CI obligations.

Activity

  1. added a commit that references this issue on Oct 16, 2026
  2. mblua commented on Oct 16, 2026

    @mblua
    OwnerAuthor

    Delivered through #3023, merged as 9f410ff2cbe37d1847f3a0fc93cbc1015af3f212.

    Canonical inbound field projection and bounded initialization lifetime corrections are complete. Current main includes the existing stale project-response fix; picker disposal now prevents late preview/default requests. Outbound persistence and UI writers remain subsequent phases of #3018; id_hash inputs are unchanged.

    Validation: independent code/proof and integration reviews passed. Guard-removal control failed the disposal request-count assertion while the live case passed; exact restoration passed both cases and 455 focused tests. CI 38821237641 passed on exact head cdb2cdf8e448de24cfdaf91c54169c5c781adb25, including 4018/4018 frontend tests on Node22 and all required/triggered checks. Previous Node26 localStorage failures were a local limitation, not waived CI failures.

    Issue auto-closed; local main equals origin/main at the merge SHA, clean, feature branch removed. No packaged build requested. Remaining: #3020, #3021, #3022; #3018 and #2432 stay open. Evidence: room-shared/i3018-command-fields/execution/P01/P01-delivered.md.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions