Repository navigation
fix: avoid redundant lint analysis while preserving source checks - #19
Merged
Merged
Conversation
…e failure is from this PR. 1. Behavior portable parallel 1: tests/fm-lint.test.sh test_pinned_shellcheck_memory_limit failed with "the memory-bound pinned root was not named". This PR caused it. The per-root analysis command now runs `perl bin/fm-lint-cache.pl check ...` inside the per-root `ulimit -v`. Under the test's 8 MiB cap, Perl 5.38 (Ubuntu 24.04) prints "Out of memory!" and exits 1. fm_lint_classify_root mapped rc 1 to "findings", so the root was not named and not recorded as an abnormal end. I reproduced this in an ubuntu:24.04 container. Perl 5.40 and 5.42 crash with SIGSEGV instead, which is already classified as a named signal. Fix: bin/fm-lint.sh adds `^Out of memory!$` (a whole stderr line) to the existing memory-evidence regex, and the classifier comment is updated. Regression: tests/fm-lint.test.sh gains an `oom-perl` stub case in test_memory_evidence_outranks_findings_and_signal_reasons. It prints "Out of memory!" and exits 1, and it must classify as memory. It runs portably in unbounded mode, plus bounded mode on Linux. Verified: with the old fm-lint.sh the new case fails ("oom-perl was classified 'findings', expected memory"). With the fix, the full tests/fm-lint.test.sh passes on macOS (bounded tests skipped). It also passes on Linux (ubuntu:24.04, pinned ShellCheck 0.11.0 + actionlint): 44 ok, including the pinned memory-envelope test and modes 0 1. `bin/fm-lint.sh bin/fm-lint.sh tests/fm-lint.test.sh` passes. 2. Behavior portable serial 2 (tests/fm-calm-pi-extension.test.sh, "calm mode was not off by default") and 3. Behavior portable serial 4 (tests/fm-pi-branch-extension.test.sh, "Calm-off ToolExecutionComponent rendering differs from Pi stock"): not caused by this PR. This PR touches only lint files. The same two Pi-extension tests fail today on unrelated branches: CI runs 36928154699 (fm/fm-jev-mem-guard-macos), 36926345705 (fm/fm-jev-never-send-sections) and 36887810827 (fm/fm-teardown-leak-kill-identity). That points to external Pi drift. No code change for these
…ause it. No branch change; this needs a main-first repair. The failing assertion is tests/fm-dispatch-resolve.test.sh expect_withheld line 267, assert_equals '1' "$(grep -c . <<<"$err")", in the "a directory at the list path" case. In CI it got 2 lines. The test does not print the raw stderr, so the extra line's text is not in the log. Facts: (1) the PR does not change bin/fm-dispatch-resolve.sh, its test, tests/lib.sh, the workflow, or anything the behavior shard runs. Those files are the same as base a4d559e and main. (2) The same test, shard order and runner image (ubuntu24 20260927.320.1) passed on this PR's previous head (run 36933934075). It also passed on main a4d559e and on 4 other branches today. (3) Counterfactual: 3 full test runs plus 40 runs under 10x load passed in ubuntu:24.04 with bash 5.2.21. 2,400 aarch64 runs and 1,200 x86_64 runs of that exact case each printed exactly one line. The cause is an intermittent extra stderr line in main's test/tool path. Main-first prerequisite: on main, delete the incidental line-count assertion in expect_withheld. Keep the off-reason, "nothing sent", exit 0, empty stdout, no-curl, no-quota and no-value-printed checks. ci-1, ci-2 and ci-4 stay unapproved, with their own owners. cold-source-aware-memory-still-multigib: fixed one real cause of extra expansion. bin/fm-pending-reply-lib.sh had a `# shellcheck source=bin/fm-marker-lib.sh` directive on the _FM_PENDING_REPLY_LIB_DIR assignment (from main kunchenguid#5753, "double duty"). I confirmed with a small probe that ShellCheck then binds every later "undirected" `. "$_FM_PENDING_REPLY_LIB_DIR/..."` source to fm-marker-lib.sh. So each of 8 sites re-read fm-marker-lib.sh plus fm-operational-input.sh. An strace of ShellCheck 0.11.0 shows fm-marker-lib.sh opened 9x for bin/fm-watch.sh and 20x for tests/fm-pending-reply.test.sh. Fix: remove the bind directive. Add `# shellcheck source=/dev/null` to the 8 sites that should not be followed. Only comment lines change. Directed sites, cross-file analysis, selection, cache, CI parity, flags and caps are unchanged. Controlled A/B, same container, pinned ShellCheck 0.11.0 (linux aarch64), --norc --external-sources, all 17 roots whose closure has this library. Output and exit code are identical (clean). Peak RSS in KiB: watch 5587052->4852980 (-13.1%); pending-reply.test 5713888->4498528 (-21.3%); pending-reply-lib 1997132->1508624 (-24.5%); backlog-handoff -14.5%; send -14.5%; procevent-remote-reply -18.5%; remote-secondmate-control -24.1%; secondmate-report -24.6%; secondmate-restart -17.6%; remote-reply.test -16.2%; send-remote-delivery.test -18.1%; stat-shadowing.test -4.9%; 3 small roots ~0%. teardown and launch-prompt-signals: the base side was OOM-killed at 7.6 GiB; the fix side completed clean at 7.28 GB and 7.14 GB. Seeded-defect check: an undefined variable is still reported the same way, and variables from marker/operational-input and parent-channel still resolve across files. tests/fm-pending-reply.test.sh passes (40 ok). I added no new test: a memory regression cannot be checked deterministically in CI, and a source-text check is not allowed. Remaining limit, not solved: the joint source-aware analysis still needs multi-GiB per root (fm-watch is about 4.9 GB on Linux). Other repeats are real directed sites (classify-lib through wake/parent-channel/afk-contract, timeout-lib). Removing them would lose cross-file context for other callers. Going further needs Main to choose an architecture
…e failure is from this PR. 1. Behavior portable parallel 1: tests/fm-lint.test.sh test_pinned_shellcheck_memory_limit failed with "the memory-bound pinned root was not named". This PR caused it. The per-root analysis command now runs `perl bin/fm-lint-cache.pl check ...` inside the per-root `ulimit -v`. Under the test's 8 MiB cap, Perl 5.38 (Ubuntu 24.04) prints "Out of memory!" and exits 1. fm_lint_classify_root mapped rc 1 to "findings", so the root was not named and not recorded as an abnormal end. I reproduced this in an ubuntu:24.04 container. Perl 5.40 and 5.42 crash with SIGSEGV instead, which is already classified as a named signal. Fix: bin/fm-lint.sh adds `^Out of memory!$` (a whole stderr line) to the existing memory-evidence regex, and the classifier comment is updated. Regression: tests/fm-lint.test.sh gains an `oom-perl` stub case in test_memory_evidence_outranks_findings_and_signal_reasons. It prints "Out of memory!" and exits 1, and it must classify as memory. It runs portably in unbounded mode, plus bounded mode on Linux. Verified: with the old fm-lint.sh the new case fails ("oom-perl was classified 'findings', expected memory"). With the fix, the full tests/fm-lint.test.sh passes on macOS (bounded tests skipped). It also passes on Linux (ubuntu:24.04, pinned ShellCheck 0.11.0 + actionlint): 44 ok, including the pinned memory-envelope test and modes 0 1. `bin/fm-lint.sh bin/fm-lint.sh tests/fm-lint.test.sh` passes. 2. Behavior portable serial 2 (tests/fm-calm-pi-extension.test.sh, "calm mode was not off by default") and 3. Behavior portable serial 4 (tests/fm-pi-branch-extension.test.sh, "Calm-off ToolExecutionComponent rendering differs from Pi stock"): not caused by this PR. This PR touches only lint files. The same two Pi-extension tests fail today on unrelated branches: CI runs 36928154699 (fm/fm-jev-mem-guard-macos), 36926345705 (fm/fm-jev-never-send-sections) and 36887810827 (fm/fm-teardown-leak-kill-identity). That points to external Pi drift. No code change for these
…ause it. No branch change; this needs a main-first repair. The failing assertion is tests/fm-dispatch-resolve.test.sh expect_withheld line 267, assert_equals '1' "$(grep -c . <<<"$err")", in the "a directory at the list path" case. In CI it got 2 lines. The test does not print the raw stderr, so the extra line's text is not in the log. Facts: (1) the PR does not change bin/fm-dispatch-resolve.sh, its test, tests/lib.sh, the workflow, or anything the behavior shard runs. Those files are the same as base a4d559e and main. (2) The same test, shard order and runner image (ubuntu24 20260927.320.1) passed on this PR's previous head (run 36933934075). It also passed on main a4d559e and on 4 other branches today. (3) Counterfactual: 3 full test runs plus 40 runs under 10x load passed in ubuntu:24.04 with bash 5.2.21. 2,400 aarch64 runs and 1,200 x86_64 runs of that exact case each printed exactly one line. The cause is an intermittent extra stderr line in main's test/tool path. Main-first prerequisite: on main, delete the incidental line-count assertion in expect_withheld. Keep the off-reason, "nothing sent", exit 0, empty stdout, no-curl, no-quota and no-value-printed checks. ci-1, ci-2 and ci-4 stay unapproved, with their own owners. cold-source-aware-memory-still-multigib: fixed one real cause of extra expansion. bin/fm-pending-reply-lib.sh had a `# shellcheck source=bin/fm-marker-lib.sh` directive on the _FM_PENDING_REPLY_LIB_DIR assignment (from main kunchenguid#5753, "double duty"). I confirmed with a small probe that ShellCheck then binds every later "undirected" `. "$_FM_PENDING_REPLY_LIB_DIR/..."` source to fm-marker-lib.sh. So each of 8 sites re-read fm-marker-lib.sh plus fm-operational-input.sh. An strace of ShellCheck 0.11.0 shows fm-marker-lib.sh opened 9x for bin/fm-watch.sh and 20x for tests/fm-pending-reply.test.sh. Fix: remove the bind directive. Add `# shellcheck source=/dev/null` to the 8 sites that should not be followed. Only comment lines change. Directed sites, cross-file analysis, selection, cache, CI parity, flags and caps are unchanged. Controlled A/B, same container, pinned ShellCheck 0.11.0 (linux aarch64), --norc --external-sources, all 17 roots whose closure has this library. Output and exit code are identical (clean). Peak RSS in KiB: watch 5587052->4852980 (-13.1%); pending-reply.test 5713888->4498528 (-21.3%); pending-reply-lib 1997132->1508624 (-24.5%); backlog-handoff -14.5%; send -14.5%; procevent-remote-reply -18.5%; remote-secondmate-control -24.1%; secondmate-report -24.6%; secondmate-restart -17.6%; remote-reply.test -16.2%; send-remote-delivery.test -18.1%; stat-shadowing.test -4.9%; 3 small roots ~0%. teardown and launch-prompt-signals: the base side was OOM-killed at 7.6 GiB; the fix side completed clean at 7.28 GB and 7.14 GB. Seeded-defect check: an undefined variable is still reported the same way, and variables from marker/operational-input and parent-channel still resolve across files. tests/fm-pending-reply.test.sh passes (40 ok). I added no new test: a memory regression cannot be checked deterministically in CI, and a source-text check is not allowed. Remaining limit, not solved: the joint source-aware analysis still needs multi-GiB per root (fm-watch is about 4.9 GB on Linux). Other repeats are real directed sites (classify-lib through wake/parent-channel/afk-contract, timeout-lib). Removing them would lose cross-file context for other callers. Going further needs Main to choose an architecture
…ked by missing ShellCheck
… remains unresolved
…pair remains unresolved
…g-family selection
…sumer test selection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Host load investigation (2026-09-29, 10 cores, 32 GB, 12 of 13 GB swap in use; memory pressure is the main load driver). firstmate's own lint was the second-largest CPU user (about 0.9 of a core averaged over 2 minutes) and used 3.5 GB of memory across 3 shellcheck processes; one shellcheck run on tests/fm-pending-reply.test.sh reached 3.9 GB RSS. Observed shapes:
shellcheck --norc --external-sources -- <file>under bin/fm-lint.sh --internal-worker, andshellcheck -x -S warning bin/fm-claude-launcher-lib.sh bin/fm-teamclaude-launch.sh bin/fm-spawn.sh bin/fm-control.sh test...run by workers.The captain's words: "load continues to be something we navigate around. It would be helpful to learn the drivers of load and see if there is anything that we can deactivate that would increase resources." Then, on the proposed fork fix (lint only changed files and cap memory): "yes to lint memory fix". Standing preference: "I don't want any non-valuable friction. handicapping processes is almost never a good idea. I prefer fixing processes, not handicapping them".
What Changed
Cold Measurements (before and after)
Method: one cold, uncached analysis per root in git-archived snapshots, run as
/usr/bin/time -lp -o <time> bash bin/fm-lint.sh --telemetry <telemetry> <root>. Before isorigin/main12b3221. After is head 1a5a261. ShellCheck 0.11.0, default 2 jobs, full external-source context, cache off, no memory caps, no concurrency change. All four runs exited 0 and did real analysis.tests/fm-pending-reply.test.shbin/fm-watch.shLimits of this evidence:
cold-comparison.mdandcold-measurements.jsonin the pipeline run evidence.Test Exception (pre-existing remote-transport failures)
The Test step's verdict is no-go, not clean. The live remote-transport scenarios fail on the unmodified base as well as on this head. The captain-side supervisor ruled these failures pre-existing and separate from this lint change, and approved the Test step with a recorded exception reason. This change makes no transport edits and no deadline changes.
Evidence: five interleaved pairs, base 13f00a5 and head 1a5a261, same host, identical instrumentation, original deadlines, full command streams kept.
transport-comparison/valid-pairs/ten-results.jsonandreport.jsonin the pipeline run evidence.Risk Assessment
Testing
The prior payload records an audit of the completed ten-run live transport comparison, including original staging/FIFO/cancellation prerequisites, full command streams, pre-cleanup job records, timing observations, and host load. Baseline reproduces the observed timing failure classes; all five reached c1 commands returned 0, and one head execution completed the full sequence. The recorded human decision treats reproduced baseline issues as non-blocking, but the supported live failures require a no-go verdict under this output contract. Prior analyzer, cold-memory, cache, and joint-SC2119 evidence was preserved.
Evidence: Complete comparative attribution report
Evidence: Ten exact execution results with ambient load and evidence locations
Evidence: Independent audit of streams, persisted markers, archives, pinned hashes, and cleanup
~/.no-mistakes/evidence/01M490FVKQ7G2KX8GST7M1P2CP/transport-comparison/valid-pairs/pair-4-base/c2.stderr)Evidence: Complete passing head sequence
Evidence: All ten results in execution order
Pipeline
Updates from git push no-mistakes
... (12 earlier update rounds omitted to keep the PR body within GitHub's 65536-char limit; full history is in the run log.)
shellcheck --versionconfirmed the installed 0.11.0 pin; binary identity was retained.python3 .live-validation/measure.pyran cold baseline origin/main and final-headbash bin/fm-lint.sh --telemetry <path> <root>analyses fortests/fm-pending-reply.test.shandbin/fm-watch.sh, then real production pending-library cold/warm/source-change checks.bin/fm-lint.sh --list-filesin isolated real-git fixtures exercised changed/deleted direct and transitive imports, executable child-shell/stdin imports, inert text exclusion, and unresolved-import conservatism.bin/fm-test-run.sh --list --changed --base HEADexercised all six status/UTC owner mappings against the nine required families and exact additional consuming scripts.python3 .live-validation/analyzer.pyexercised real analyzer diagnostics, shared/concurrent cache reuse, source/binary invalidation, version refusal, and explicit/changed/cold/mutated-cache modes.python3 .live-validation/joint-seams.pyexercised graph-preserving baseline/final production pending, watcher, and resolve seams with seeded SC2119 defects and owner-only/hidden-source counterfactuals.python3 .live-validation/ci-recheck.pyexercised complete disposable canonical inventories: clean CI analysis and seeded CI rejection, both without local cache reuse.python3 .live-validation/production-cache.pyexercised seven actual nested-import roots and real analyzer execution after changes/deletions of the production stdin-imported test helpers.bash bin/fm-test-run.sh tests/fm-lint-workflows.test.sh --json <evidence>/workflow-timing.jsonexercised workflow-product validation and malformed workflow rejection.bash bin/fm-test-run.sh --jobs 1 --json <evidence>/runtime-consumers-timing.json tests/fm-classify-decision-key.test.sh tests/fm-classify-corr-token.test.sh tests/fm-pending-reply.test.sh tests/fm-remote-reply.test.sh tests/fm-remote-transport-lanes.test.sh tests/fm-gotmp.test.sh tests/fm-stat-shadowing.test.sh tests/fm-test-fixtures.test.sh.Re-drovetests/fm-remote-reply.test.shfrom a disposable copied checkout with a sibling remote home after diagnosing the original root/home overlap refusal.Ran disposable runtime-import and direct report/drain CLI smoke scripts throughbin/fm-test-run.sh, covering reload, dynamic locals, home switching, snapshots, correlation, and parent publication retries.Ran one focused cancellation-to-burst diagnostic with unchanged deadlines and retained command, worker, job, and process evidence before teardown.Removed all owned.live-validationfixtures and retained evidence; no permanent source, test, or documentation changes were made.🔧 No changes applied.
2 issues (1 error, 1 warning) still open:
tests/fm-remote-transport-lanes.test.sh:363- The original targeted runtime execution returned 124 for c1, the first short command after queued, running, and orphaned-job cancellation. Subsequent complete-sequence reproduction and instrumented execution passed, but neither explains the original failure. The failing fixture discarded command diagnostics and removed job/worker records, so the timed-out stage cannot now be attributed. The transport implementation is unchanged versus the supplied base; a changed-code regression versus intermittent infrastructure/timing failure remains unresolved. No demonstrated root cause supports a safe fix or deadline relaxation. Retained evidence: runtime-consumers.log:90–99 and transport-fix/report.json. A human decision or an attributed reproduction is required before treating this scenario as green.Fresh isolated real-product executions ofbash bin/fm-lint.sh bin/stdin.sh,bin/caller.sh, andbin/inert.sh: cold/warm reuse, dependency-change misses, deletion misses, and--list-filesdirect/transitive selection.Fresh disposable runtime execution ofruntime-import-smoke.test.sh: initialization, reload, dynamic locals, home switching, timestamp output variables, frozen snapshots, and parent-publication retry.Fresh disposable runtime execution ofruntime-cli-smoke-corrected.test.sh: realfm-secondmate-report.shandfm-wake-drain.shopen and resolve a correlated decision.Retained earlier executions in this same run: productionfm-lint.shpending-root cold/warm/copy reuse, source and analyzer invalidation, unknown-import safety, and pinned-version rejection.Retained earlier same-run source-aware ShellCheck 0.11.0 executions: seeded joint SC2119 findings in pending, watcher, and resolve graphs, with owner-only and hidden-source counterfactuals.Retained earlier same-run executions offm-lint.sh --list-files,fm-test-run.sh --list --changed --base HEAD, canonical CI fixture analysis, and workflow validation.Retained same-run cold CLI measurements:/usr/bin/time -lp -o <time> bash bin/fm-lint.sh --telemetry <telemetry> tests/fm-pending-reply.test.shand the correspondingbin/fm-watch.shinvocation on baseline and final snapshots.Retained targeted runtime command:bash bin/fm-test-run.sh --jobs 1 --json <timing> tests/fm-classify-decision-key.test.sh tests/fm-classify-corr-token.test.sh tests/fm-pending-reply.test.sh tests/fm-remote-reply.test.sh tests/fm-remote-transport-lanes.test.sh tests/fm-gotmp.test.sh tests/fm-stat-shadowing.test.sh tests/fm-test-fixtures.test.sh.Retained corrected remote-reply execution with separate checkout/home paths, complete transport reproduction, and instrumented complete-history transport execution; subsequent transport passes did not erase the original timeout.Verified removal of this turn's.final-stdin-smoke-*and.final-runtime-smoke-*disposable fixtures.🔧 No changes applied.
2 issues (1 error, 1 warning) still open:
tests/fm-remote-transport-lanes.test.sh:363- The original targeted execution returned 124 for c1, the first short command after queued, running, and orphaned-job cancellation. Subsequent complete-sequence reproductions and instrumented execution passed, but did not explain the failure. The original fixture discarded command diagnostics and removed job/worker records, so the timed-out stage cannot be reconstructed. The transport implementation is unchanged versus the supplied base; a changed-code regression versus an intermittent timing/infrastructure failure remains unresolved. No demonstrated cause supports a safe code fix or deadline relaxation. Evidence: runtime-consumers.log:90–99, transport-fix/report.json, and transport-fix/focused-repair-result.json. An attributed reproduction or explicit human decision is required before treating this scenario as green.shellcheck --versionconfirmed official ShellCheck 0.11.0 on PATH.Fresh disposable-fixture execution ofbash bin/fm-lint.sh tests/stdin.sh: cold analysis, unchanged cache reuse, source-change miss, and source-deletion miss.Fresh disposable-fixture execution ofbash bin/fm-lint.sh --list-files: changed and deleted executable-heredoc imports selected direct and transitive callers while excluding inert heredoc data.Fresh disposable-fixture execution ofbash bin/fm-lint.sh tests/inert.shandbash bin/fm-lint.sh tests/unknown.sh: inert text retained its cache; genuinely unresolved executable imports never reused success./bin/bash ~/.no-mistakes/evidence/01M490FVKQ7G2KX8GST7M1P2CP/runtime-import-smoke.test.shexercised real initialization, reload, dynamic locals, home switching, timestamp parsing, frozen snapshots, and parent-channel publication retry./bin/bash ~/.no-mistakes/evidence/01M490FVKQ7G2KX8GST7M1P2CP/runtime-cli-smoke-corrected.test.shdrove real fm-secondmate-report and fm-wake-drain CLIs through correlated decision open/close.Retained exact-target, same-run cold comparisons executed/usr/bin/time -lparoundbash bin/fm-lint.sh --telemetry <artifact> tests/fm-pending-reply.test.shandbash bin/fm-lint.sh --telemetry <artifact> bin/fm-watch.shon origin/main 12b322120dc015f8a526a1d00d323b31e453c2c4 and target 1a5a26139e65c4151a8bb2c55e59055854825639. Complete exact argv, raw timings, and telemetry are in cold-measurements.json; these expensive measurements were not repeated.Retained same-run production analysis executedbash bin/fm-lint.sh bin/fm-pending-reply-lib.shthrough cold, warm, imported-source mutation, and subsequent warm states using the actual production backend closure.Retained same-run analyzer scenarios exercised explicit-root, changed-root, cold/miss, shared-copy, concurrent-cache, unresolved-import, analyzer-identity, and CI-mode behavior through fm-lint.sh; graph-preserving pending/watch/resolve probes verified joint SC2119 diagnostics and hidden-source/owner-only counterfactuals.Retained same-run selection checks executedbin/fm-test-run.sh --list --changed --base HEADfor each of the six extracted owners andbin/fm-lint.sh --list-filesfor production child-shell and executable-stdin helper changes/deletions.Retained same-run targeted execution:bash bin/fm-test-run.sh --jobs 1 --json ~/.no-mistakes/evidence/01M490FVKQ7G2KX8GST7M1P2CP/runtime-consumers-timing.json tests/fm-classify-decision-key.test.sh tests/fm-classify-corr-token.test.sh tests/fm-pending-reply.test.sh tests/fm-remote-reply.test.sh tests/fm-remote-transport-lanes.test.sh tests/fm-gotmp.test.sh tests/fm-stat-shadowing.test.sh tests/fm-test-fixtures.test.sh.Retained same-run workflow check:bash bin/fm-test-run.sh tests/fm-lint-workflows.test.sh --json ~/.no-mistakes/evidence/01M490FVKQ7G2KX8GST7M1P2CP/workflow-timing.json.Retained corrected remote-reply execution used an isolated copied checkout with a sibling disposable home; complete transport reproductions and the instrumented full-history execution are recorded in transport-fix/report.json.Removed both fresh worktree-local disposable fixtures after execution; retained product transcripts and evidence indexes in the designated evidence directory.🔧 No changes applied.
2 issues (1 error, 1 warning) still open:
tests/fm-remote-transport-lanes.test.sh:363- The original targeted execution returned 124 for c1 after queued, running, and orphaned-job cancellation. Its suppressed command streams and deleted job records prevent attributing that failure. Subsequent passing sequences did not explain it. The latest attribution attempts failed earlier at the cross-home latency assertion (6 seconds uninstrumented, 4 seconds instrumented), before reaching cancellation; the trace shows home B completed in its own lane but does not establish the delay's cause. The transport implementation is unchanged versus the supplied base. No demonstrated cause supports a safe code fix or deadline relaxation. An attributed reproduction or explicit human decision is required before treating this scenario as green. Evidence: runtime-consumers.log:90–99 and transport-fix/round-five-attribution/report.json.Fresh isolated production execution:/bin/bash bin/fm-lint.sh bin/lab-consumer.sh, exercising cold success, warm reuse, imported-source invalidation with joint SC2119, and repeated analysis of findings.Fresh isolated runtime execution:/bin/bash <evidence>/runtime-import-smoke.test.sh, exercising real initialization, reload, dynamic locals, home switching, timestamp parsing, frozen snapshots, and parent-publication retry.Fresh isolated CLI execution:/bin/bash <evidence>/runtime-cli-smoke-corrected.test.sh, driving realfm-secondmate-report.shandfm-wake-drain.shthrough correlated decision opening and resolution.Retained same-run product selection checks:bin/fm-lint.sh --list-filesandbin/fm-test-run.sh --list --changed --base HEADagainst disposable Git repositories with changed and deleted dependencies.Retained same-run official ShellCheck 0.11.0 checks throughfm-lint.sh: production pending-root cache reuse/invalidation, deterministic nested imports, executable child-shell imports, executable-stdin imports, unresolved-import safety, cross-copy/concurrent reuse, binary invalidation, and version refusal.Retained same-run explicit, changed-root, and disposable canonical-CI seeded SC2119 checks; production pending/watch/resolve import-seam checks with hidden-source and owner-only diagnostic controls.Retained same-run cold comparison:/usr/bin/time -lp -o <time> bash bin/fm-lint.sh --telemetry <telemetry> <root>fortests/fm-pending-reply.test.shandbin/fm-watch.sh, comparing origin/main 12b322120dc015f8a526a1d00d323b31e453c2c4 with target 1a5a26139e65c4151a8bb2c55e59055854825639.Retained targeted runner execution for classify-decision-key, classify-corr-token, pending-reply, remote-reply, remote-transport-lanes, gotmp, stat-shadowing, and test-fixtures; remote-reply setup corrected using a separate disposable checkout.Retained workflow consumer execution:bash bin/fm-test-run.sh tests/fm-lint-workflows.test.sh --json <evidence>/workflow-timing.json.Inspected original cancellation failure and latest timestamped attribution evidence; compared transport files with the supplied base without rerunning the reported failures.Removed both fresh disposable fixtures; verified their worktree path patterns were absent.🔧 No changes applied.
2 issues (1 error, 1 warning) still open:
tests/fm-remote-transport-lanes.test.sh- The pinned baseline reproduces cross-home latency failures, post-cancellation burst overruns, and a post-cancellation c2=124 deadline expiry. The new timeout was an actual 15-second guard expiry, not a status-file mktemp failure. No head-only failure class was observed. The historical c1=124 was not reproduced and its exact cause remains unavailable because the original streams and records were discarded. Per the recorded human decision, these baseline failures belong to Main's separate transport investigation and do not block this change.Audited the completed five interleaved pairs of/bin/bash -x tests/fm-remote-transport-lanes.test.shagainst workspace-local snapshots of the exact supplied base and head, preserving the original sequence, assertions, and deadlines.Checked every execution's recorded cross-home latency and c1 result against raw command streams, burst exit records, and persisted c1 markers; early failures were explicitly recorded as c1 not reached.Read every regular file in all ten pre-cleanup fixture archives and checked capture diagnostics and ambient-load samples.Checkedpair-4-base/c2.stderr,timeout-allocations.tsv, and retained timeout status records: allocation exited 0, the external runner exited 124, and command completion status remained empty.Compared retained transport, timeout, and harness SHA-256 hashes againstgit show <pinned-sha>:<file>; those files are identical between base and head.Confirmed the disposable.transport-comparisonsnapshot directory is absent. No repeat cold benchmarks, broad suite, linters, static analysis, or other pipeline phases were run.✅ **Document** - passed
✅ No issues found.
🔧 **Lint** - 1 issue found → auto-fixed ✅
🔧 Fix applied.
✅ Re-checked - no issues remain.
✅ **Push** - passed
✅ No issues found.