test(fleet): cover reconciler lifecycle gates #786
Reference in New Issue
Block a user
Delete Branch "test/758-reconciler-lifecycle-gates"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds FCM-M3-002 isolated acceptance evidence for the local fleet reconciler.
tmux.socket_namefails closed.-Largument.No production source changed. All systemd/tmux lifecycle behavior is fake/injected; the legacy transport boundary uses an injected runner. No live fleet actions were performed.
Independent synthetic-tree review:
VERIFIED APPROVEfor exact tree46cdfbcdc1d1ff9c7b8b2b9cf3841086590bf774.Committed head:
58af3deb475b54cc4d606bd6b49a8e300b7b3206with the identical reviewed tree.Verification: focused 8 files / 304 tests; full package 57 files / 827 tests; package/root typecheck and lint; Prettier; diff check. Pre-push root typecheck, lint, and formatting also passed.
Relates to #758. Parent #758 remains open through M5.
🤖 Generated with Claude Code
REQUEST CHANGES — reviewer-of-record for PR #786 head
307b07d027[BLOCKER]
packages/mosaic/src/fleet/fleet-reconciler.acceptance.spec.ts:207-214constructs a direct internalFleetRosterV2fixture withsocketName: ""and callsexecuteFleetReconcile, bypassing the canonical v2 roster and CLI boundary. Canonical parsing rejects that state:packages/mosaic/src/fleet/roster-v2.ts:461-480requires non-emptytmux.socket_name, whilepackages/mosaic/src/commands/fleet-reconciler-command.ts:71-90always parses canonicalroster.yamlbefore reconciliation. Fresh isolated proof withrenderRosterV2Yamlrejected the fixture:Roster v2 tmux socket_name is required and must be a non-empty string.Therefore the green matrix does not prove canonical v2 default-socket behavior and does not complete AC-FCM-05 / FCM-M3-002 acceptance evidence.Bounded remediation: exercise the default-socket case through canonical roster serialization/parsing and the CLI boundary, making default-socket state representable in the v2 contract if it is required; otherwise reconcile the normative acceptance criterion/card and remove the unreachable claim.
Verified at the immutable target: remote PR head
307b07d0270743f1564742715166ffecc98f31dd, commit tree3301cbb7620afe448820c097c7e993134271b314, direct baseorigin/main499090508ef1d768660e4d54e7934cbcf13cb1cd; parent #758 remains open. Isolated gates passed: 3 files / 53 tests,@mosaicstack/mosaictypecheck, package lint, scoped Prettier, andgit diff --check. Security/scope review found no live runner effects or secret leakage.Residual risk: fake-runner coverage intentionally does not validate real systemd/tmux integration; that is acceptable under this card's no-live-effects constraint once all tested states are reachable from canonical input.
VERIFIED APPROVE — reviewer-of-record for PR #786 head
58af3deb47Independent read-only review found no surviving blocker against base
499090508e.Evidence:
499090508e.fleet status, parsed by the production v2 parser, and observed tmux calls are exactly-L mosaic-fleet; missing and empty canonical v2tmux.socket_nameboth fail closed with the production parser error.loadFleetRoster,FleetTmuxRuntimeTransport.verifySession, and an injected fake runner; the exact runner call contains no-L.''andsocketArgs('')emits no selector.git diff --check.Residual boundary: fake-runner coverage intentionally does not prove host integration; that is acceptable for this no-live-effects acceptance card. This reviewer approval is review evidence only and does not authorize merge by itself.