Skip to content

P02: Observe rail clicks and refreshes with immediate diagnostic delivery #3093

Closed

Description

@mblua

Parent: #3083. Phase P02, design-bearing. Owner: ac-dev-webpage-ui-v5. Depends on #3092 (P01) merged into main; coordinator supplies verified parent-child dependency mapping and merge SHA.

Outcome

Emit one immediate scoped rail diagnostic record when generated, without awaiting backend response in product handlers. Instrument rail press/release/click, real node lifecycle, focus/selection and relevant refresh operations. The original intermittent bug remains under investigation.

Scope

Exactly ten paths: src/shared/ipc.ts, src/shared/ipc.transport.test.ts, src/shared/console-capture.ts, src/sidebar/rail-diagnostics.ts (new), src/sidebar/rail-diagnostics.test.ts (new), src/sidebar/components/WorkgroupGroupRail.tsx, src/sidebar/App.tsx, src/sidebar/stores/project.ts, src/sidebar/components/WorkgroupGroupRail.test.tsx, src/sidebar/stores/project.test.ts.
Preserve selection, For/DOM identity, focus, reorder/capture and product scheduling. Reuse Debug/Trace gate and P01 backend. No diagnostic timer/batch/retry/queue, general console forwarding, setting/dependency/logger, selector fix or version bump.

Acceptance and verification

Real gate/FakeTransport positive controls, immediate send despite pending Promise, Info negative and contained rejection. Observe press -> data update/node replacement -> release even without click; config-only identity changes, two rails/dispose, selection reversal and resource cleanup. Bound refresh records without per-room fan-out. Payloads contain no paths/terminal/keys/secrets.
Run the frozen focused tests (all WorkgroupGroupRail variants), typecheck and structural gates; prove no new dependency cycles and preserve Rust arcs/guards. Collect [rail-diag] from existing app.log and rotated files; do not equate IPC ACK with durable disk. No interactive testing or final build requested.

Frozen specification

Shared canonical plan root: D:/0_repos/AgentsCommander_iac/.ac/plans/3083-rail-click-diagnostics/
Master plan-v4-rail-click-diagnostics.md: 6ED298A7229545E0F67DC632DC7CFF19E74E13374DE7D5561708B9AE6F38A50A
Index v4/epic.md: 2134B78C32A4E73D24537243A42C469BE379719D2BBCE85D06C6CEFFBFCEDC31
Sole cold-start phase specification v4-P02-frontend.md:
787AAD2AAD97444D23FE3A7CC4476FAC09042A7702E6A736431E00E8CD4DF618
All five exact-version participants approved in round4. P03 was absorbed/retired; no third phase. This issue does not close the parent.

V4 compatibility continuation

P01 is delivered by PR3094 at 9813d6a; child3092 is closed and is not reopened. V4 replaces only pending P02: guard the two existing window listener registrations while preserving browser callbacks, run both original Node archive suites unchanged, and prove browser capture in an already permitted test path. Ten P02 paths and all original acceptance remain. Five fresh exact-version approvals are in approval-v4.json; phase-issues.json reconciles the same child/branch/base with preserved WIP. Implementation is subject to the fresh V4 cold gate and subsequent candidate checks/reviews/CI; no passing candidate or delivery is claimed by plan approval.

Activity

  1. mblua commented on Oct 18, 2026

    @mblua
    OwnerAuthor

    I3093 / E3083: remaining compatibility delta re-score

    Original immediate-diagnostic task remains historical raw62/final28, Full for additive IPC and two owners. Round4 concrete delta from author report3083-author-r4.md: guard two existing listener registrations in already-owned capture file, one browser control of two callbacks in existing helpertest, run two unchanged Node suites; no IPC/backend/reference/dependency change. Pending original acceptance and independent proof reviews remain required. This re-score describes the correction delta, not a claim that incomplete WIP is delivered.

    Category Score Anchor and evidence
    Scope footprint 3 Near one-file handful-of-lines anchor: one production guard and a focused test in an existing permitted path.
    Diagnosis difficulty 1 Stack trace points to unconditional window access; identical repeated import failure confirms relationship.
    Domain knowledge 2 Ordinary TypeScript initialization and browser globals, near familiar application-code anchor.
    Solution-space ambiguity 2 Architect supplied bounded guard preserving static imports; near determined-change anchor.
    Blast radius and reversibility 5 Shared console initialization requires browser preservation proof; reversible normal source change, below shared-feature anchor10.
    Dependency and integration load 2 Existing modules/harness only; no new contract or dependency, near self-contained anchor.
    Verification difficulty 8 Existing Node suites expose failure; new isolated browser callback control needed to show capture survives, below new-supported-test anchor10.
    State, data and compatibility 2 No persisted shape or migration; existing capture behavior must remain, near stateless anchor.
    Concurrency and timing 1 Synchronous module registration; no asynchronous/product scheduling change.
    Environment and tooling 5 Known Node/browser distinction within existing Vitest environments; below platform/toolchain anchor10.

    Raw31. Final round((31-10)/190*99)+1 =12/100. Excluded ceremony: issue/branch/push/PR/CI wait, planning/review rounds, delegation, purge, approval receipts, merge and cleanup. Full existing workflow and all five exact-version participants retained; no gate reduced by this correction score. Verification difficulty8 keeps both Grinches' positive-proof review. Architect-authored V4 identity contract retained. One category may be disputed by owner before resuming implementation. Arithmetic correction: originally typed raw32; the ten displayed categories sum31. Final12 unchanged.

  2. added a commit that references this issue on Oct 18, 2026
  3. mblua commented on Oct 18, 2026

    @mblua
    OwnerAuthor

    Delivered both diagnostic phases to main at 1892e47c1896879402fd22197b98b79510798dcb:

    Validation: six backend focused tests including real append/rotation/gate negatives; 377 frontend focused tests plus 18 unchanged Node archive tests; typecheck/dependencies/arcs/cycles pass. Both independent Grinches approve the final code and positive proofs. Full Rust graph/SCC sets/1,211 arc pairs match and three guards pass all nine tests; review confirms retained Rust evidence applies across the final two-file frontend correction. Exact P02 head 58e9dda23057267005f44a901606bc5627735424 completed all triggered CI successfully (regression run39090101153, run3407); conditional full-tier jobs were skipped by verified ci-tier full=false, not claimed executed. P01 CI is also verified. Local main equals origin/main and is clean; feature refs removed. Final room dry-run/purge succeeded after all reports and commands completed.

    Integrated acceptance and receipts: .ac/plans/3083-rail-click-diagnostics/integrated-acceptance-1892e47.md, P02-code-review-receipt.json, P02-ci-final-58e9dda.md, final-room-purge-receipt.txt. No remaining child or implementation work. No final packaged build was requested; none was installed or released. A running application needs a build containing these commits to record the new traces.

    To collect: enable Settings → Logging → Debug (or Trace) before reproduction. Locate the instance's effective log directory from the existing startup [log] file logging to … message. Reproduce, immediately copy app.log and app.log.1 through .5, and restore the previous level. Filter [rail-diag], group by windowId, order seq within that window, and include version/SHA/surface. Browser clients without a live level listener must reload after changing the backend setting; any RUST_LOG override must allow the Debug target.

    Retention is shared: 50 MiB per file plus five rotations (~300 MiB), without a minimum time guarantee. Dispatch ACK is not durable file receipt; pending/rejected IPC, crash/closing/filter/file errors can lose records. Share scoped diagnostic excerpts rather than unrelated whole logs. Instrumentation supports future reproductions; the original intermittent click cause remains undetermined.

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions