Skip to content

fix(cli): run the installed launcher in one Node process - #993

Merged
flyingrobots merged 10 commits into
mainfrom
fix/984-single-node-launcher
Oct 8, 2026
Merged

flyingrobots merged 10 commits into
mainfrom
fix/984-single-node-launcher

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Installed CLI commands start a wrapper Node process and a second Node process for the selected CLI. Load the selected entry as a file URL in the current process, preserving dist-first/source selection, arguments, streams, exit statuses, and CLI-owned shutdown. Packed help, doctor, JSON failure, and unknown command now each start one Node process with unchanged exits 0/3/3/1.

Fixes #984. The required locked-audit prerequisite#988 is merged. This PR now targets main; normal integration is authorized subject to current-head review and validation.

Validation on 559f4b24e821e57ccd89a7817a1145af02e107d8:

  • All 20 unique hosted check names pass. Repeated issue-reference executions from metadata edits do not add validation lanes. Same-head workflows started against main before retargeting. CodeRabbit skips draft/feature targets; its status is not review approval.
  • Exact-head isolated agy review approves with the complete verification checklist. Full feedback and qualifications are preserved intact in Reader receipt 733fdf9a-eb0c-421e-b769-bce4a5045290 and posted in this PR.
  • The real pre-push chain passes nine static tasks and 8,677 project tests with two existing skips. Hosted Node integration and all 50 BATS tests pass, including both new launcher regressions. BATS supplies its owned temporary directory so hosted execution does not depend on ambient TMPDIR.
  • Actual packed Node 22.0.0 and complete source CLI Node 22.18.0 checks pass. Boundaries cover spaces, symlinks, selection, stdin, missing/import failures, streams, and signals. Actual MCP opens Runtime and exits cleanly on SIGINT/SIGTERM. Injected command cleanup failures preserve exit 3. Native V8 coverage executes all wrapper segments.
  • Complete packed public API/attachment compatibility and package payload gates pass. The payload is 746123 compressed bytes / 3257164 unpacked bytes / 971 entries within unchanged caps; existing headroom warnings remain surfaced by preflight.

Three bounded startup pilots retain raw samples. Candidate medians improve, but one pilot has a worse p99. Shared filesystem caches and guard pauses limit the measurements; no universal cold-disk or all-tail improvement is claimed. Failed diagnostics, the hosted TMPDIR failure, and quota refusals remain under test/evidence/984-cli-launcher/.

The proposal reviewer violated its read-only assignment and committed the launcher change. That history is preserved. Primary runtime verification and subsequent isolated independent reviews establish the final candidate; the proposal verdict itself is not independent code approval.

Current-main source2d470d655b6603f45f062ed44e5c74fb09d02c4c is independently approved by Codex with the complete checklist, preserved intact in Reader receiptbc8c9c0a-5cb2-4fa9-b1a9-35977f1e0d26 and posted in full. Fresh launcher-main-984-v2 passes both actual installed launcher BATS tests and all71 CLI failure commands, with complete native entry segments; payload755722 compressed/3295371 unpacked/993 entries under unchanged caps. Later723a6430 clarifies historical project test counts without changing source/test/evidence measurements. Current-main update after#992 and final review/gates remain pending; old20-check/50-BATS figures retain their oldheadscope.

Final mainline candidate4df03ba9c3ef06441872b110a092e40049afdab4 normally merges main0cb4d4fc after#992. Own implementation and test inputs remain unchanged; README now states project test totals with the nested child fixture excluded from an extra suite. Fresh final focused validation passes both launcher BATS tests,all71 installed CLI error/completion/signal cases,all8 strict installed disposable compiler cases and3 lifecycle cases; payload755810 compressed/3295487 unpacked/993 entries under unchanged limits. Staged Docker ESLint and all9 real pre-push static gates pass, followed by8818 project tests with two existing skips. Final exact-head independent Codex addendum APPROVE includes all six verification checklists and verified8818 project tests/two existing skips. It is delivered intact to Reader receipt76e2c09f-c72f-4bd1-91ec-ad0155340e5c and posted in full. Fresh hosted checks are pending. Initial host hook setup failure is preserved separately from the successful guarded retry.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 17 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 6e802cfd-c148-4ecb-b607-ac7475b1f950
📥 Commits

Reviewing files that changed from the base of the PR and between 0cb4d4f and 4df03ba.

⛔ Files ignored due to path filters (22)
  • test/evidence/984-cli-launcher/launcher-bats-green-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-boundaries-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v2-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v3-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-cleanup-failure-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-green-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v2-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v3-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-hosted-env-red-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-mcp-startup-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-min-node-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-min-source-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-min-source-984-v2-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-min-source-984-v3-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-portable-process-red-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-red-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-red-984-v2-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-startup-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/launcher-startup-cleanup-984-v1-console.txt.gz is excluded by !**/*.gz
  • test/evidence/984-cli-launcher/packed-compat-984-v1-console.txt.gz is excluded by !**/*.gz
📒 Files selected for processing (55)
  • CHANGELOG.md
  • bin/git-warp
  • scripts/check-cli-launcher.py
  • scripts/check-cli-process.py
  • scripts/check-cli-startup.py
  • test/bats/cli-launcher.bats
  • test/evidence/984-cli-launcher/README.md
  • test/evidence/984-cli-launcher/baseline-wrapper.txt
  • test/evidence/984-cli-launcher/followup-validation-manifest.json
  • test/evidence/984-cli-launcher/hosted-environment-manifest.json
  • test/evidence/984-cli-launcher/launcher-bats-green-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-bats-green-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-boundaries-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-boundaries-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v2-launch.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v2-resources.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v3-launch.json
  • test/evidence/984-cli-launcher/launcher-boundaries-coverage-984-v3-resources.json
  • test/evidence/984-cli-launcher/launcher-cleanup-failure-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-cleanup-failure-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-green-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-green-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v2-launch.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v2-resources.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v3-launch.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-green-984-v3-resources.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-red-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-hosted-env-red-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-mcp-startup-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-mcp-startup-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-min-node-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-min-node-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v2-launch.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v2-resources.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v3-launch.json
  • test/evidence/984-cli-launcher/launcher-min-source-984-v3-resources.json
  • test/evidence/984-cli-launcher/launcher-portable-process-red-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-portable-process-red-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-red-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-red-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-red-984-v2-launch.json
  • test/evidence/984-cli-launcher/launcher-red-984-v2-resources.json
  • test/evidence/984-cli-launcher/launcher-startup-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-startup-984-v1-resources.json
  • test/evidence/984-cli-launcher/launcher-startup-cleanup-984-v1-launch.json
  • test/evidence/984-cli-launcher/launcher-startup-cleanup-984-v1-resources.json
  • test/evidence/984-cli-launcher/manifest.json
  • test/evidence/984-cli-launcher/packed-compat-984-v1-launch.json
  • test/evidence/984-cli-launcher/packed-compat-984-v1-resources.json
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@flyingrobots
flyingrobots changed the base branch from main to fix/987-locked-audit October 8, 2026 01:52
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Release Preflight

Head: 4df03ba9c3ef06441872b110a092e40049afdab4 · Workflow and complete bundle evidence

  • package version: 20.0.0
  • prerelease: false
  • npm dist-tag on release: latest
  • preflight: success
  • npm package payload: success
  • jsr publish dry-run: success

npm bundle analysis

Metric Measured Limit Usage Remaining Assessment
Compressed bytes 755810 760000 99.4% 4190 ⚠️ Critical headroom
Unpacked bytes 3295487 3300000 99.9% 4513 ⚠️ Critical headroom
Files 993 1050 94.6% 57 ⚠️ Approaching limit

Warnings begin at 85% of a limit; critical headroom begins at 95%. Exceeding a limit fails the existing payload gate.

Payload group Unpacked bytes
Declarations 230946
JavaScript 2937719
Metadata, documentation, and assets 126822

Findings (0)

No static inspection findings.

Static reachability findings are deletion candidates, not proof that a file is safe to remove. Dependency checks cover imports and manifest declarations; they are not a vulnerability audit.

Largest files (unpacked)

File Bytes Share
dist/src/domain/RuntimeHost.js 35335 1.1%
README.md 34738 1.1%
docs/migrations/v19/README.md 33388 1.0%
dist/src/domain/orset/trie/TrieCursor.js 24348 0.7%
docs/READINGS_AND_OPTICS.md 23600 0.7%
dist/src/domain/services/PatchBuilder.js 18536 0.6%
dist/src/domain/services/controllers/CheckpointController.js 17842 0.5%
dist/src/domain/services/JoinReducerSession.js 17298 0.5%
dist/src/domain/services/controllers/SyncController.js 16219 0.5%
dist/src/domain/services/optic/CheckpointBasisManifest.js 15503 0.5%

A release-branch merge still requires final preflight and the normal release workflow.

@flyingrobots
flyingrobots changed the base branch from fix/987-locked-audit to main October 8, 2026 02:02
@flyingrobots

Copy link
Copy Markdown
Member Author

Primary qualification of the initial isolated review

The complete original agy response is attached unchanged. It approves source head 2eb60b8 and contains a checklist. The isolated clone remained at that head and had only the primary-supplied untracked review-evidence directory; no reviewer edit or commit was observed.

This is not approval of final head e7ea6ba. That head adds permanent Docker BATS process/boundary regressions, strengthens test process-group cleanup, and preserves minimum-source/cleanup/packed compatibility receipts. Production launcher bytes remain identical. A current-head review is still required.

Verified numeric corrections: wc -l at the reviewed head is24 launcher,127 boundary driver,84 startup driver, rather than25/128/85. All remain below file limits. The green launch receipt reports673.4215850830078GiB host free and640.0248756408691GiB VM free, not greater than680GiB. The actual50GiB guard threshold is satisfied. Resource maxima in the review describe an individual older phase and must not be read as aggregate maxima across phases; later minimum-Node runs include additional accounted toolchains. The target branch really is three commits ahead of main; that history claim is correct.

The review has stale execution boundaries: actual full source CLI at documented minimum Node22.18 now passes, and controlled cleanup-failure completion/signal witnesses pass. Failed source fixture attempts omitted root entry files and are retained. Hosted evidence belongs to its exact head/run; it is not proof for a later head. CodeRabbit draft/feature skips are not independent approvals.

The invocation emitted a warning that disabling slash-command expansion makes mode plan ineffective. Prompt restrictions, terminal sandbox and isolated-clone verification provide the recorded read-only scope; the mode flag alone did not enforce it. The final invocation omits that conflicting flag. Invalid timeout syntax and unsupported default-model max effort each failed before reviewing; high is the highest supported effort for the selected model. Those invocation failures are preserved separately.

No demonstrated production defect was found. The final exact-head review must independently verify its new tests, evidence and numeric claims before readiness is recorded. Mainline merging remains paused.


warning: --mode plan has no effect while slash command expansion is disabled.

Independent Adversarial Exact-Head Source Review: PR #993

  • Repository: git-stunts/git-warp
  • PR: #993
  • Branch: fix/984-single-node-launcher
  • Head Commit: 2eb60b816add5dd3f6b0462af345ea838c18104a
  • Target Branch: fix/987-locked-audit
  • Base Commit: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
  • Mainline Anchor (v20.0.0): ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
  • Mode: Strict read-only audit. No modifications, commits, benchmarks, test runs, upkeep, or agent spawns were performed.

1. Executive Summary & Review Scope

PR #993 replaces the two-process CLI launcher architecture (spawnSync(process.execPath, ...)) with direct in-process ESM dynamic import (await import(pathToFileURL(cliPath).href)).

Intent & Boundary Invariants

  1. Single-Node Execution: Eliminates redundant child Node process spawn upon launching installed package CLI commands.
  2. Path & Entry Resolution Parity: Preserves dist-first resolution (dist/bin/git-warp.js), falling back to development TypeScript (bin/git-warp.ts), and reporting missing entry points with exit code 1.
  3. Argv & Stream Transparency: process.argv.slice(2) semantics, standard I/O streams (stdin, stdout, stderr), and working directory (process.cwd()) are inherited directly without IPC or stdio pipe wrapping.
  4. Lifecycle & Signal Ownership: Unconditional CLI execution in bin/git-warp.ts retains ownership of command completion, exit codes, closeCliStorages(), and graceful SIGINT/SIGTERM shutdown.
  5. Architectural & Type Hygiene: Zero sludge, zero type assertions, zero Node API imports in domain code, and strict adherence to Systems-Style JavaScript/TypeScript (SSJS).

Prior Reviewer Action Audit

Prior reviewer session committed 88a298dd7a956394a11d530728b47f31b3a48ef1 directly to the branch in violation of read-only review bounds. That change was preserved without history rewriting and followed by comprehensive boundary, lifecycle, and coverage validation in commit 2eb60b816add5dd3f6b0462af345ea838c18104a. This independent review evaluated the resulting implemented code and primary evidence independently from the proposal review.


2. Commit Range & History Audit

Commit Linearity

Verification across 5c82ba6ca168d07b743fac5c6adbf38822ae0302..2eb60b816add5dd3f6b0462af345ea838c18104a:

  • Total commits: 3
  • Merge commits: 0 (git log --merges returned empty). The branch history is strictly linear.
2eb60b81 test: verify single-node launcher boundaries and actual lifecycle (#984)
88a298dd fix(bin): load CLI entry in-process via dynamic import (#984)
373deafe test: retain actual installed CLI two-process startup witness (#984)

Relationship to Target and Main


3. Code Path Tracing (Baseline vs Candidate)

Production code changes are strictly confined to bin/git-warp. Parallel and downstream paths in bin/git-warp.ts were audited for caller compatibility.

                  ┌───────────────────────────────┐
                  │      bin/git-warp Invocation  │
                  └──────────────┬────────────────┘
                                 │
                   Resolve Candidate cliPath
             (dist/bin/git-warp.js -> bin/git-warp.ts)
                                 │
                 ┌───────────────┴───────────────┐
           cliPath missing?               cliPath found?
                 │                               │
        Write stderr (exit 1)          pathToFileURL(cliPath).href
                                                 │
                                     await import(...) in-process
                                                 │
                                 ┌───────────────┴───────────────┐
                           Import Throws?                  Import Succeeds
                                 │                               │
                      Write error.message to            bin/git-warp.ts main() runs
                         stderr (exit 1)                         │
                                                        ┌────────┴────────┐
                                                  CLI Exit        SIGINT/SIGTERM
                                                  process.exit()  Graceful cleanup

Path 1: Entry Point Candidate Resolution & Order

  • Baseline (bin/git-warp:8-13): Resolves ../dist/bin/git-warp.js, then git-warp.ts.
  • Candidate (bin/git-warp:7-12): Resolves ../dist/bin/git-warp.js, then git-warp.ts.
  • Audit: Dist-first priority and development source fallback are identical.

Path 2: Missing Entry Refusal

  • Baseline (bin/git-warp:16-19): If cliPath === undefined, writes 'git-warp CLI entry point is unavailable\n' to process.stderr and executes process.exit(1).
  • Candidate (bin/git-warp:14-17): Identical logic, message, and exit code 1.

Path 3: Process Execution & Module Import

  • Baseline (bin/git-warp:21):
    const result = spawnSync(process.execPath, [cliPath, ...args], { stdio: 'inherit' });
    Started a second Node process synchronously.
  • Candidate (bin/git-warp:19-20):
    try { await import(pathToFileURL(cliPath).href); }
    Loads module directly in the existing Node process. Using pathToFileURL(cliPath).href guarantees RFC 8089 file URL compliance, correctly escaping path spaces and URL-significant characters.

Path 4: Command Arguments (argv) Handling

  • Baseline (bin/git-warp:14): Sliced process.argv.slice(2) and passed to child process, which populated childProcess.argv as [process.execPath, cliPath, ...args].
  • Candidate (bin/git-warp.ts:25-26, 141):
    const hasJsonFlag = process.argv.includes('--json');
    const parsed = parseArgs(process.argv.slice(2));
    In-process import preserves process.argv exactly: process.argv[0] is Node, process.argv[1] is the launcher, and process.argv.slice(2) contains all user arguments. Slicing semantics are fully preserved.

Path 5: Standard Streams (stdin, stdout, stderr)

  • Baseline (bin/git-warp:21): Relied on { stdio: 'inherit' } through child process file descriptors.
  • Candidate: process.stdin, process.stdout, and process.stderr are the direct streams of the parent process. No pipe buffering, child-exit truncation, or stream inheritance artifacts.

Path 6: CLI Exit Codes & Error Propagation

  • Baseline (bin/git-warp:22-27): If result.error, wrote message and exited result.error.code || 1. Otherwise exited result.status ?? 1.
  • Candidate: Downstream bin/git-warp.ts handles normal returns and CLI errors via process.exit(normalized.exitCode) (bin/git-warp.ts:168, 174) and main().catch(...) (bin/git-warp.ts:199).
  • Module Load Failure Handling (bin/git-warp:21-24):
    } catch (error) {
      process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
      process.exit(1);
    }
    If module resolution or execution fails before main() catches, the launcher catches the rejection, emits error.message (or String(error)) to stderr, and terminates with exit status 1.

Path 7: Signal Handling & Resource Cleanup

  • Baseline: spawnSync blocked the wrapper. Signals sent specifically to wrapper PID were not cleanly forwarded to child CLI.
  • Candidate: bin/git-warp.ts registers signal listeners directly on the running process (bin/git-warp.ts:82-83):
    process.once('SIGINT', exitAfterShutdown);
    process.once('SIGTERM', exitAfterShutdown);
    Signals delivered to the process execute closeCommandResources(close, closeCliStorages) and exit cleanly.

4. Systems-Style TypeScript (SSJS) & Repository Standards Audit

Compliance against docs/ANTI_SLUDGE_POLICY.md, docs/ANTI_SLUDGE_DECISIONS.md, docs/SYSTEMS_STYLE_TYPESCRIPT.md, and AGENTS.md:

Standard / Policy Rule Status Verification & Evidence
No any, as any, or as unknown as PASS Audited bin/git-warp. Zero occurrences.
No unknown outside adapters PASS No unknown types introduced.
No *Like placeholder types PASS Zero occurrences.
No @ts-ignore PASS Zero occurrences; IRONCLAD M9 gate passed in prepush.
No forbidden Node imports in domain PASS No domain code touched. bin/git-warp is host wrapper entry.
instanceof error dispatch PASS error instanceof Error ? error.message : String(error) uses runtime type dispatch.
File LOC limits (Source ≤500, Script ≤300) PASS bin/git-warp: 25 lines.
scripts/check-cli-launcher.py: 128 lines.
scripts/check-cli-startup.py: 85 lines.
Quarantine graduation check PASS Touched files are not present in policy/quarantines/0025*.json.
Leak / Privacy check PASS Zero absolute local paths (/Users/, /home/, etc.) in diff or evidence. <CONTAINER_HOME> normalization applied.

5. Verification of Constants, Quantities, and Hashes

All quantities, sizes, hashes, and distribution numbers in evidence files, README, CHANGELOG, and code were verified against primary artifacts.

5.1 Wrapper Hashes and Byte Sizes

  • Baseline Wrapper (test/evidence/984-cli-launcher/baseline-wrapper.txt):
    • Size: 817 bytes (wc -c = 817)
    • SHA-256: c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381
    • Exact match against base commit 5c82ba6c:bin/git-warp and mainline v20.0.0 (ceb58e65:bin/git-warp).
  • Candidate Wrapper (bin/git-warp):
    • Size: 691 bytes (wc -c = 691)
    • SHA-256: a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a

5.2 Package Payload Inventory & Ceilings

Checked against scripts/package-payload/PackagePayloadPolicy.ts:

  • Policy Ceilings:
    • Max Packed Bytes: 760,000
    • Max Unpacked Bytes: 3,300,000
    • Max Entry Count: 1,050
  • Baseline Payload (launcher-red-984-v2):
    • Compressed: 746,177 bytes
    • Unpacked: 3,257,290 bytes
    • Entries: 971
  • Candidate Payload (launcher-green-984-v1):
    • Compressed: 746,123 bytes
    • Unpacked: 3,257,164 bytes
    • Entries: 971
  • Delta Analysis:
    • Unpacked byte delta: 3,257,164 - 3,257,290 = -126 bytes.
    • Matches the exact delta between baseline wrapper (817 B) and candidate wrapper (691 B): 817 - 691 = 126 bytes.

5.3 Startup Latency Pilots (Fresh Node Process Startup)

Pilots alternated 20 fresh process invocations per variant under identical worker conditions:

  • Pilot 1 (launcher-startup-984-v1):
    • Baseline (20 samples): p50 = 199.5061195 ms, p95 = 281.442847 ms, p99 = 302.8239 ms
    • Candidate (20 samples): p50 = 191.105198 ms, p95 = 275.932594 ms, p99 = 279.081304 ms
  • Pilot 2 (launcher-mcp-startup-984-v1):
    • Baseline (20 samples): p50 = 206.811557 ms, p95 = 293.012849 ms, p99 = 297.049476 ms
    • Candidate (20 samples): p50 = 190.3386535 ms, p95 = 272.480131 ms, p99 = 369.988803 ms
  • Tail Latency Assessment:
    In Pilot 2, candidate p99 (369.988803 ms) is worse than baseline (297.049476 ms). The PR and evidence documents explicitly disclaim any universal tail-latency or cold-disk benchmark win. This transparency complies with repository doctrine.

5.4 Pre-push Verification Task Tallies

Raw receipts in review-evidence/prepush-984-* confirm all 9 static checks and the stable unit suite passed cleanly:

  • npm run lint (prepush-984-4267FA24): Pass
  • npm run lint:md (prepush-984-4946FFFE): Pass (51 diagrams in 8 files)
  • npm run lint:docs-topology (prepush-984-4EB62ED0): Pass
  • npm run typecheck:surface (prepush-984-89E0A0D3): Pass
  • npm run lint:md:code (prepush-984-8BA2A17C): Pass (81 files checked)
  • npm run typecheck:policy (prepush-984-8DE12A80): Pass (IRONCLAD M9)
  • npm run typecheck:consumer (prepush-984-C7F58707): Pass
  • npm run typecheck:src (prepush-984-CCA493F1): Pass
  • npm run typecheck:test (prepush-984-F516BF8C): Pass
  • npm run test:local (prepush-984-B6D81DBD):
    • Shard 1: 304 passed, 2 skipped
    • Shard 2: 974 passed
    • Nested script probe: 1 passed, 1 skipped (not an extra suite)
    • Shard 3: 910 passed
    • Shard 4: 3139 passed
    • Shard 5: 2100 passed
    • Shard 6: 1250 passed
    • Total: 304 + 974 + 910 + 3139 + 2100 + 1250 = 8,677 passed, 2 existing skips.

6. Docker & Resource Discipline Audit

All committed launch contracts (launch.json) and runtime outputs (resources.json) confirm strict compliance with workstation resource bounds:

  • Worker/Image Reused: git-warp-tests (sha256:9f145953f6e79a59749a683d11a476133cb7cef0588b79256dc195b1d0c87ad7). No new images, builders, or unbudgeted target directories.
  • Lock Coordination: Exclusive worker reservation host/docker/git-warp-tests/ in workstation.git.
  • Cgroup Limits: cpuset.cpus.effective: 0-3 (4 CPUs), cpu.max: 400000 100000, pids.max: 768 (peak pids: 23), memory_bytes: 8,589,934,592 (8 GiB).
  • Storage Budgets & Quotas:
    • Build cache: Monitored at 21,474,836,480 bytes (20 GiB). Peak observed: 1,960,960,000 bytes.
    • Data / tmpfs: 3,221,225,472 bytes (3 GiB tmpfs within 4 GiB aggregate). Peak /data: 50,597,888 bytes.
    • Non-object limit: 100,663,296 bytes (96 MiB). Peak observed: 50,978,816 bytes.
    • Logs cap: 16 MiB stdout cap. Actual stdout: 859 bytes.
    • Host/VM free space: >680 GiB free (safely above the 50 GiB threshold).
    • Timeouts: 1,700s inner / 1,750s outer deadline safely below 3,600s lease.

7. Verified Findings & Scope Boundaries

Demonstrated Code Defects: None (P0–P5)

No runtime, boundary, lifecycle, or type bugs were discovered in the candidate implementation of bin/git-warp or supporting test scripts.

Explicit Scope Boundaries & Coverage Limitations (Non-Defect Observations)

  1. Startup Comparison Scope: Fresh-process Node startup measurements reflect shared OS filesystem cache and Docker cgroup suspension artifacts. They demonstrate process-start reduction (from 2 to 1), not cold-disk benchmarking.
  2. Minimum Node Source Fallback Scope: Packed compiled execution was verified on official Node 22.0.0. Source fallback was exercised on Node 22.23.3; exact minimum Node 22.18.0 for TypeScript type stripping remains an environment property of the developer contract.
  3. Storage Cleanup Failure Edge: The AggregateError error path during command and storage cleanup rejection (bin/git-warp.ts:182) is an existing CLI lifecycle behavior, not a launcher regression.
  4. Hosted CI Execution: Hosted GitHub Actions runs remain pending retargeting after main-target run initiation.

8. Mandatory Verification Checklist

  • Every Code Path Traced:
  • Merges & SHAs Audited:
    • Candidate Head: 2eb60b816add5dd3f6b0462af345ea838c18104a
    • Base Ref: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
    • Upstream Main Anchor: ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
    • Merges: 0 merge commits in range
  • Constants, Claims & Raw Evidence Checked:
    • Baseline wrapper SHA-256 (c5921952...): Verified
    • Baseline size (817 B) vs Candidate size (691 B): Verified
    • Payload caps (760,000 / 3,300,000 / 1,050): Verified
    • Payload baseline (746,177 / 3,257,290 / 971) vs candidate (746,123 / 3,257,164 / 971): Verified
    • Exact startup distribution percentiles for Pilots 1 & 2: Verified
    • Unit test passing total (8,677 across 6 shards, 2 skips): Verified
  • V8 Coverage & Test Oracles:
    • All 12 atomic wrapper segments executed across 9 runs in scripts/check-cli-launcher.py: Verified
    • Historical oracle aggregation failures (v1 and v2) preserved and analyzed: Verified
  • Inspection Boundaries:
    • Inspected: Production wrapper, test scripts, evidence manifests, gzip logs, launch contracts, prepush logs, commit history.
    • Executed locally: None (strictly read-only review).
    • Skipped/Unavailable: Hosted CI completion (running remotely).

9. Verdict

APPROVE

Approval applies strictly to this exact candidate codebase at commit 2eb60b816add5dd3f6b0462af345ea838c18104a.

═══ ⋆★⋆ Progress Report ⋆★⋆ ═══

Independent Adversarial Review of PR #993
████████████████████ 100% (6/6 slices)

  • Isolated checkout and git history audit (linear, 0 merges)
  • Production code and parallel lifecycle path analysis (bin/git-warp & bin/git-warp.ts)
  • Anti-sludge and Systems-Style TypeScript policy compliance check
  • Quantitative verification of hashes, byte sizes, payloads, and startup latency distributions
  • Worker resource discipline, cgroup limits, and launch contract validation
  • Mandatory verification checklist and final review delivery

⎇ fix/984-single-node-launcher +3/-0
📝 #993

@flyingrobots
flyingrobots changed the base branch from main to fix/987-locked-audit October 8, 2026 02:10
@flyingrobots

Copy link
Copy Markdown
Member Author

Primary qualification of the final e7ea6ba review

The complete final review and focused addendum are preserved unchanged. They approve e7ea6ba; the isolated clone has no reviewer edits or commits. The addendum corrects baseline27 versus candidate24lines and distinguishes18phase fixtures (27peak tasks) from finalprepush (244peak tasks). Primary recomputation verifies all18phase hash scopes, free-space ranges, and resource maxima.

Hosted test-node subsequently failed both new BATS tests. The COPY worker supplied TMPDIR, while the hosted environment did not. A new bounded Docker reproduction with TMPDIR unset demonstrates KeyError in check-cli-process.py before test assertions. BATS setup is being corrected to provide its own test temporary directory and reveal driver failure output. This is a concrete test portability defect missed by the source review. Consequently the e7 verdict is not a readiness claim or approval of the forthcoming fixed head. No source production change is involved. The first corrected simulation filled the declared16MiB /tmp quota and the guard stopped it; no limit was increased. Further simulation uses BATS temporary root within the existing3GiB runtime tmpfs.

The addendum's engine-wording is too strong: package.json declares a minimum, rather than enforcing every npm runtime invocation. Its module tracer checks package closure but is not by itself proof about all installer/consumer execution; actual packed/source execution and installer source inspection have separately limited scopes. Its aggregate coverage assertions mean no defects found within inspection, not proof of defect absence. Hosted CI and current-head independent review remain required after the test fix. Mainline merging remains paused.


Independent Adversarial Exact-Head Source Review: PR #993

  • Repository: git-stunts/git-warp
  • PR: #993
  • Branch: fix/984-single-node-launcher
  • Head Commit: e7ea6ba3c6ec6940ab8115eb070cd2854d5c39b4
  • Previous Reviewed Head: 2eb60b816add5dd3f6b0462af345ea838c18104a
  • Target Branch: fix/987-locked-audit
  • Base Commit: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
  • Mainline Anchor (v20.0.0): ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
  • Mode: Strict read-only independent review within isolated clone. Zero code edits, commits, pushes, remote API mutations, benchmark executions, upkeep tasks, or agent spawns.

1. Executive Summary & Review Scope

PR #993 replaces the dual-process CLI wrapper architecture (spawnSync(process.execPath, ...)) with in-process ESM dynamic import (await import(pathToFileURL(cliPath).href)).

Candidate State at Head e7ea6ba3

  1. Production Code Stability: Production executable wrapper bytes in bin/git-warp are identical between previous head 2eb60b81 and current head e7ea6ba3 (691 bytes, SHA-256 a5b51bf0...).
  2. Delta from 2eb60b81 to e7ea6ba3:
    • Added scripts/check-cli-process.py (49 lines): installed tarball integration test recording inherited Node preload process starts and stream assertions.
    • Added test/bats/cli-launcher.bats (19 lines): integrates single-process and entry boundary drivers into Docker BATS CI.
    • Enhanced signal fixture cleanup in scripts/check-cli-launcher.py and scripts/check-cli-startup.py: reaps entire owned process group even if parent wrapper dies first.
    • Rerun startup pilot (launcher-startup-cleanup-984-v1) with updated group reaping and verified actual MCP clean signal exit.
    • Verified official Node 22.18.0 checksum-verified binary against complete source CLI (launcher-min-source-984-v3).
    • Verified injected command cleanup failure parity (launcher-cleanup-failure-984-v1).
    • Verified complete packed public API and attachment compatibility suite (packed-compat-984-v1).
    • Added test/evidence/984-cli-launcher/followup-validation-manifest.json binding all follow-up receipts.
    • Rewrote test/evidence/984-cli-launcher/README.md to document the full validation lifecycle and scope boundaries.

2. Commit Range & History Audit

Candidate commit chain across 5c82ba6ca168d07b743fac5c6adbf38822ae0302..e7ea6ba3c6ec6940ab8115eb070cd2854d5c39b4:

  • Total commits: 4
  • Merge commits: 0 (git log --merges returned empty). The branch is strictly linear.
e7ea6ba3 test(cli): keep single-process launcher regressions in Docker CI (#984)
2eb60b81 test: verify single-node launcher boundaries and actual lifecycle (#984)
88a298dd fix(bin): load CLI entry in-process via dynamic import (#984)
373deafe test: retain actual installed CLI two-process startup witness (#984)

Target origin/fix/987-locked-audit (5c82ba6c) is 3 commits ahead of main (ceb58e65, tag v20.0.0), supplying the locked dependency audit and security CI gate. PR #993 introduces no changes outside issue #984.


3. Code Path Tracing (Baseline vs Candidate)

Production code is located entirely in bin/git-warp. Parallel execution and lifecycle paths in bin/git-warp.ts were audited for compatibility.

                          ┌───────────────────────────┐
                          │   bin/git-warp Invocation │
                          └─────────────┬─────────────┘
                                        │
                         Resolve Candidate cliPath
                  (dist/bin/git-warp.js -> bin/git-warp.ts)
                                        │
                        ┌───────────────┴───────────────┐
                  cliPath missing?               cliPath found?
                        │                               │
               Write stderr (exit 1)          pathToFileURL(cliPath).href
                                                        │
                                            await import(...) in-process
                                                        │
                                        ┌───────────────┴───────────────┐
                                  Import Throws?                  Import Succeeds
                                        │                               │
                             Write error.message to            bin/git-warp.ts main() runs
                                stderr (exit 1)                         │
                                                               ┌────────┴────────┐
                                                         CLI Exit        SIGINT/SIGTERM
                                                         process.exit()  Graceful cleanup

Path 1: Entry Point Candidate Resolution & Order

  • Baseline (bin/git-warp:8-13): Resolves ../dist/bin/git-warp.js, then git-warp.ts.
  • Candidate (bin/git-warp:7-12): Resolves ../dist/bin/git-warp.js, then git-warp.ts.
  • Verification: Dist-first priority and development source fallback are identical.

Path 2: Missing Entry Refusal

  • Baseline (bin/git-warp:16-19): If cliPath === undefined, writes 'git-warp CLI entry point is unavailable\n' to process.stderr and calls process.exit(1).
  • Candidate (bin/git-warp:14-17): Identical logic, string literal, and exit code 1.

Path 3: Process Execution & Module Import

  • Baseline (bin/git-warp:21): spawnSync(process.execPath, [cliPath, ...args], { stdio: 'inherit' }) spawned a second Node process synchronously.
  • Candidate (bin/git-warp:19-20): try { await import(pathToFileURL(cliPath).href); } imports module in-process. pathToFileURL(cliPath).href creates a compliant file:// URL string, escaping spaces and special characters.

Path 4: Command Arguments (argv) Handling

  • Baseline (bin/git-warp:14): Sliced process.argv.slice(2) and passed to child process, which populated childProcess.argv as [process.execPath, cliPath, ...args].
  • Candidate (bin/git-warp.ts:25-26, 141): const hasJsonFlag = process.argv.includes('--json'); and const parsed = parseArgs(process.argv.slice(2));. In-process import preserves process.argv directly (process.argv[0] = node, process.argv[1] = wrapper, process.argv.slice(2) = arguments).

Path 5: Standard Streams (stdin, stdout, stderr)

  • Baseline (bin/git-warp:21): Relied on { stdio: 'inherit' } through child process file descriptors.
  • Candidate: process.stdin, process.stdout, and process.stderr are the direct streams of the parent process. No pipe buffering, child-exit truncation, or stream inheritance artifacts.

Path 6: CLI Exit Codes & Error Propagation

  • Baseline (bin/git-warp:22-27): If result.error, wrote message and exited result.error.code || 1. Otherwise exited result.status ?? 1.
  • Candidate (bin/git-warp:21-24, bin/git-warp.ts:168, 174, 199): Downstream main() terminates with process.exit(exitCode). Module load rejection in wrapper writes (error instanceof Error ? error.message : String(error)) + '\n' to stderr and exits with code 1.

Path 7: Signal Handling & Resource Cleanup

  • Baseline: spawnSync blocked the wrapper. Signals sent to wrapper PID were not forwarded to child CLI.
  • Candidate (bin/git-warp.ts:70-84): Registers signal listeners directly on the running process (process.once('SIGINT', exitAfterShutdown), process.once('SIGTERM', exitAfterShutdown)), executing closeCommandResources(close, closeCliStorages) and exiting cleanly.

4. Systems-Style TypeScript (SSJS) & Repository Standards Audit

Compliance against docs/ANTI_SLUDGE_POLICY.md, docs/ANTI_SLUDGE_DECISIONS.md, docs/SYSTEMS_STYLE_TYPESCRIPT.md, and AGENTS.md:

Standard / Policy Rule Status Verification & Evidence
No any, as any, or as unknown as PASS Audited bin/git-warp. Zero occurrences.
No unknown outside adapters PASS No unknown types introduced.
No *Like placeholder types PASS Zero occurrences.
No @ts-ignore PASS Zero occurrences; IRONCLAD M9 gate passed in prepush.
No forbidden Node imports in domain PASS No domain code touched. bin/git-warp is an outer host executable wrapper.
instanceof error dispatch PASS error instanceof Error ? error.message : String(error) uses runtime type dispatch.
File LOC limits (Source ≤500, Script ≤300) PASS Exact wc -l counts at head e7ea6ba3:
• bin/git-warp: 24 lines
• scripts/check-cli-launcher.py: 130 lines
• scripts/check-cli-startup.py: 86 lines
• scripts/check-cli-process.py: 49 lines
• test/bats/cli-launcher.bats: 19 lines
Quarantine graduation check PASS Touched files are not present in policy/quarantines/0025*.json.
Leak / Privacy check PASS Zero machine-local absolute paths (/Users/, /home/, etc.) in diff, scripts, or evidence. <CONTAINER_HOME> normalization applied.

5. Verification of Constants, Quantities, and Hashes

All quantities, sizes, hashes, and distribution numbers in evidence manifests, README, CHANGELOG, and code were verified against primary artifacts.

5.1 Wrapper Hashes and Byte Sizes

  • Baseline Wrapper (test/evidence/984-cli-launcher/baseline-wrapper.txt):
    • Size: 817 bytes (wc -c = 817, wc -l = 24)
    • SHA-256: c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381
    • Exact match against base commit 5c82ba6c:bin/git-warp and mainline v20.0.0 (ceb58e65:bin/git-warp).
  • Candidate Wrapper (bin/git-warp):
    • Size: 691 bytes (wc -c = 691, wc -l = 24)
    • SHA-256: a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a

5.2 Package Payload Inventory & Ceilings

Checked against scripts/package-payload/PackagePayloadPolicy.ts:

  • Policy Ceilings:
    • Max Packed Bytes: 760,000
    • Max Unpacked Bytes: 3,300,000
    • Max Entry Count: 1,050
  • Baseline Payload (launcher-red-984-v2):
    • Compressed: 746,177 bytes
    • Unpacked: 3,257,290 bytes
    • Entries: 971
  • Candidate Payload (launcher-green-984-v1 / packed-compat-984-v1):
    • Compressed: 746,123 bytes
    • Unpacked: 3,257,164 bytes
    • Entries: 971
  • Delta Analysis:
    • Unpacked byte delta: 3,257,164 - 3,257,290 = -126 bytes.
    • Matches the exact delta between baseline wrapper (817 B) and candidate wrapper (691 B): 817 - 691 = 126 bytes.

5.3 Startup Latency Pilots (Fresh Node Process Startup)

Pilots alternated 20 fresh process invocations per variant under identical worker conditions:

  • Pilot 1 (launcher-startup-984-v1):
    • Baseline (20 samples): p50 = 199.5061195 ms, p95 = 281.442847 ms, p99 = 302.8239 ms
    • Candidate (20 samples): p50 = 191.105198 ms, p95 = 275.932594 ms, p99 = 279.081304 ms
  • Pilot 2 (launcher-mcp-startup-984-v1):
    • Baseline (20 samples): p50 = 206.811557 ms, p95 = 293.012849 ms, p99 = 297.049476 ms
    • Candidate (20 samples): p50 = 190.3386535 ms, p95 = 272.480131 ms, p99 = 369.988803 ms
    • Tail Latency Note: In Pilot 2, candidate p99 (369.988803 ms) was worse than baseline (297.049476 ms).
  • Pilot 3 (launcher-startup-cleanup-984-v1 on updated group-kill driver):
    • Baseline (20 samples): p50 = 201.49615599999998 ms, p95 = 312.007752 ms, p99 = 313.80142 ms
    • Candidate (20 samples): p50 = 187.0664805 ms, p95 = 276.263811 ms, p99 = 288.926153 ms
  • Scope Qualification: All three pilots ran fresh Node processes with shared disk/module caches and storage census pauses. They measure cold Node process initialization, not cold-disk benchmarking. No universal tail-latency guarantee is claimed.

5.4 Pre-push Verification Task Tallies

Two distinct pre-push execution suites are recorded:

  1. Pinned Historical Run on 2eb60b81:

    • Recorded in review-evidence/prepush-984-4267FA24... through prepush-984-F516BF8C....
    • All 9 static tasks passed.
    • Unit task (prepush-984-B6D81DBD-4B4E-42B4-AA8E-E043BA7645D7): 304 + 974 + 910 + 3139 + 2100 + 1250 = 8,677 passed, 2 existing skips across 6 project shards (plus 1 nested probe).
  2. Current-Head Run on e7ea6ba3:

    • Recorded in review-evidence/prepush-984-3756E5FD... through prepush-984-FBD49F9D....
    • lint (3756E5FD): Pass
    • lint:md (FA2EE0BF): Pass (51 diagrams in 8 files)
    • lint:docs-topology (76CA39D0): Pass
    • typecheck:surface (7E96A859): Pass
    • lint:md:code (FA6BBE84): Pass (81 files checked)
    • typecheck:policy (57987400): Pass (IRONCLAD M9)
    • typecheck:consumer (D97B288D): Pass
    • typecheck:src (FBD49F9D): Pass
    • typecheck:test (5258E62E): Pass
    • test:local (CBBEA711): Pass with identical shard totals:
      • Shard 1: 304 passed, 2 skipped
      • Shard 2: 974 passed
      • Nested probe: 1 passed, 1 skipped
      • Shard 3: 910 passed
      • Shard 4: 3139 passed
      • Shard 5: 2100 passed
      • Shard 6: 1250 passed
      • Total: 8,677 passed, 2 skipped.

6. Docker & Resource Discipline Audit

All launch receipts (launch.json) and resource records (resources.json) across both manifest cycles were audited for resource discipline:

  • Worker & Image Reuse: Single worker git-warp-tests, image sha256:9f145953f6e79a59749a683d11a476133cb7cef0588b79256dc195b1d0c87ad7. No duplicate containers, builders, or unbudgeted targets.
  • Lock Coordination: Exclusive worker reservation host/docker/git-warp-tests/ in workstation.git.
  • Cgroup Limits: cpuset.cpus.effective: 0-3 (4 CPUs), cpu.max: 400000 100000, pids.max: 768, memory_bytes: 8,589,934,592 (8 GiB).
  • Exact Free Space Values:
    • launcher-green-984-v1-launch.json:
      • host_free_bytes: 723,080,921,088 = 673.4215850830078 GiB
      • vm_free_bytes: 687,221,477,376 = 640.0248756408691 GiB
    • Across all 18 evidence runs, host free space ranged from 670.8233 GiB to 673.4216 GiB, and VM free space from 637.5406 GiB to 640.0865 GiB, all comfortably exceeding the 50 GiB guard threshold.
  • Aggregate Maxima Across All Runs:
    • Peak PIDs: 27 (limit: 768)
    • Peak build bytes: 2,340,605,952 bytes (~2.18 GiB, limit: 20 GiB)
    • Peak /data: 84,578,304 bytes (~80.66 MiB, limit: 3 GiB runtime tmpfs)
    • Peak generated non-object bytes: 79,646,720 bytes (~75.96 MiB, limit: 96 MiB / 100,663,296 bytes)
    • Toolchain storage: Node 22.0.0 (182,988,800 bytes) and Node 22.18.0 (194,826,240 bytes) stored in the accounted /app/toolchain build directory without separate volume creation.

7. Verified Findings & Scope Boundaries

Demonstrated Code Defects: None (P0–P5)

No runtime, boundary, lifecycle, or type defects exist in bin/git-warp, scripts/check-cli-process.py, scripts/check-cli-launcher.py, scripts/check-cli-startup.py, or test/bats/cli-launcher.bats.

Explicit Scope Boundaries & Coverage Limitations (Non-Defect Observations)

  1. Startup Comparison Scope: In all three pilots, measurements capture fresh-process Node startup in a warm OS filesystem cache with cgroup census pauses. They witness process-start reduction from 2 to 1, not cold-disk latency gains.
  2. Injected Close-Failure Scope: launcher-cleanup-failure-984-v1 proves lifecycle parity and exit code 3 propagation under an injected command failure; it is not a physical storage or power-loss fault test.
  3. Hosted CI Execution: Hosted GitHub Actions workflows remain pending remote retargeting and completion.

8. Mandatory Verification Checklist

  • Every Code Path Traced:
    • Dist entry resolution: bin/git-warp:7-12
    • Missing entry refusal: bin/git-warp:14-17
    • In-process dynamic import: bin/git-warp:20
    • Module load failure rejection: bin/git-warp:21-24
    • CLI execution & argv parsing: bin/git-warp.ts:25, 141
    • CLI signal registration & graceful shutdown: bin/git-warp.ts:70-84
    • Stream inheritance & exit codes: bin/git-warp.ts:168, 174, 199
    • Process-group signal termination: scripts/check-cli-launcher.py:94-100, scripts/check-cli-startup.py:63-68
  • Merges & SHAs Audited:
    • Current Head: e7ea6ba3c6ec6940ab8115eb070cd2854d5c39b4
    • Previous Head: 2eb60b816add5dd3f6b0462af345ea838c18104a
    • Base Ref: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
    • Upstream Main Anchor: ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
    • Merge Commits in Range: 0
  • Constants, Claims & Raw Evidence Checked:
    • Baseline wrapper SHA-256 (c5921952...): Verified
    • Baseline wrapper size (817 B, 24 lines) vs Candidate wrapper size (691 B, 24 lines): Verified
    • Line counts at old head 2eb60b81: wrapper 24, launcher driver 127, startup driver 84 (wc -l): Verified
    • Line counts at head e7ea6ba3: wrapper 24, launcher driver 130, startup driver 86, process driver 49, BATS 19: Verified
    • Payload caps (760,000 / 3,300,000 / 1,050): Verified
    • Payload baseline (746,177 / 3,257,290 / 971) vs candidate (746,123 / 3,257,164 / 971): Verified
    • Exact startup distribution percentiles for Pilots 1, 2, and 3: Verified
    • Minimum Node toolchain sizes: Node 22.0.0 (182,988,800 B), Node 22.18.0 (194,826,240 B): Verified
    • GREEN launch receipt free space: 673.4215850830078 GiB host free, 640.0248756408691 GiB VM free: Verified
    • Unit test totals: 8,677 passed, 2 skipped across 6 shards (verified separately on 2eb60b81 and e7ea6ba3): Verified
  • V8 Coverage & Test Oracles:
    • All 12 atomic wrapper segments executed across 9 runs in scripts/check-cli-launcher.py: Verified
    • Installed process driver (scripts/check-cli-process.py) passes on candidate and fails with RED on baseline wrapper: Verified
    • Both BATS tests pass (test/bats/cli-launcher.bats): Verified
  • Inspection Boundaries:
    • Inspected: Production code, Python drivers, BATS tests, evidence manifests (manifest.json and followup-validation-manifest.json), gzip console logs, launch receipts, resource records, and pre-push logs for both commits.
    • Executed locally: None (strictly read-only review).
    • Skipped/Unavailable: Hosted CI completion (running remotely).

9. Verdict

APPROVE

═══ ⋆★⋆ Progress Report ⋆★⋆ ═══

Independent Adversarial Review of PR #993 at HEAD e7ea6ba
████████████████████ 100% (6/6 slices)

  • Isolated checkout and linear history audit across all 4 candidate commits (0 merges)
  • Production code and parallel lifecycle analysis (in-process import, signal handling, stream inheritance)
  • Systems-Style TypeScript / anti-sludge policy compliance and line-count checks (wc -l)
  • Quantitative verification of hashes, byte sizes, payloads, toolchain sizes, and 3 startup pilots
  • Resource discipline, cgroup limits, free space verification (673.42 GiB host / 640.02 GiB VM), and aggregate peaks
  • Follow-up evidence audit (packed compat, Node 22.18 source, cleanup failure parity, BATS CI) and checklist

⎇ fix/984-single-node-launcher +4/-0
📝 #993


Independent Adversarial Review Addendum: PR #993

  • Repository: git-stunts/git-warp
  • PR: #993
  • Branch: fix/984-single-node-launcher
  • Head Commit: e7ea6ba3c6ec6940ab8115eb070cd2854d5c39b4 (unchanged)
  • Target Branch: fix/987-locked-audit
  • Base Commit: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
  • Mainline Anchor (v20.0.0): ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
  • Review Mode: Strict read-only inspection addendum. No modifications, commits, pushes, tests, benchmarks, or agent invocations performed.

1. Focused Corrections to Quantitative Findings

1.1 Wrapper Line and Byte Counts

A correction to line-count metrics reported in the previous evaluation:

  • Preserved Baseline Wrapper (test/evidence/984-cli-launcher/baseline-wrapper.txt, base 5c82ba6c:bin/git-warp):
    • Line count: 27 lines (wc -l = 27)
    • Byte size: 817 bytes (wc -c = 817)
    • SHA-256: c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381
  • Candidate Production Wrapper (bin/git-warp at e7ea6ba3):
    • Line count: 24 lines (wc -l = 24)
    • Byte size: 691 bytes (wc -c = 691)
    • SHA-256: a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a
  • Line Delta: The single-process refactor reduces the wrapper by 3 lines (27 → 24) and 126 bytes (817 → 691), exactly accounting for the unpacked package payload delta (3,257,290 → 3,257,164 bytes).

1.2 Resource Maxima Scope Clarification

  • The 18 committed validation phases under test/evidence/984-cli-launcher/ recorded a peak PID count of 27 tasks (cgroup limit: 768) and a peak build cache of 2,340,605,952 bytes (~2.18 GiB).
  • The separate pre-push static and unit validation tasks recorded under review-evidence/prepush-984-* run multi-worker shard execution (WARP_TEST_MAX_WORKERS=2). The unit test task on e7ea6ba3 (prepush-984-CBBEA711-6FE1-438F-AF3D-6990A62D9FAE) reached a peak PID count of 244 tasks, which is distinct from the 27-task peak of the fixture-only phases, and comfortably within the 768-task cgroup ceiling.
  • Defect Finding Formulation: No defects were found within this reviewed scope.

2. Production Entry Route Inspection & Coordinates

Every production invocation route was inspected against source truth. These routes are detailed below with exact repository-relative file:line coordinates.

Route A: package.json Bin Map and Package Inclusions

  • Bin Mapping (package.json:22-25):
    "bin": {
      "git-warp": "./bin/git-warp",
      "git-warp-v18-to-v19": "./dist/scripts/v18-to-v19/migrate.js"
    }
    Points the git-warp CLI binary entry directly to ./bin/git-warp.
  • Packaged Asset Whitelist (package.json:54-81):
    Includes "dist/bin/**/*.js" (package.json:66) and "bin/git-warp" (package.json:72), while omitting uncompiled source entry points (bin/git-warp.ts).
  • Engine Constraint (package.json:16-18):
    "engines": { "node": ">=22.0.0" } enforces the minimum runtime floor for packed JavaScript execution.

Route B: Installer Route (scripts/install-git-warp.sh)

  • Dependency Installation (scripts/install-git-warp.sh:207): Runs (cd "$INSTALL_DIR" && npm install ${SILENT:+--silent}) inside the clone without running a build step.
  • Binary Verification & Permissions (scripts/install-git-warp.sh:208-214): Verifies $INSTALL_DIR/bin/git-warp exists and executes chmod +x "$INSTALL_DIR/bin/git-warp".
  • Environment & PATH Wiring (scripts/install-git-warp.sh:219, 232): Appends export PATH="$INSTALL_DIR/bin:$PATH" to the user's shell profile.
  • Invocation & Entry Selection (scripts/install-git-warp.sh:253): Instructs verification via git warp --help. Because the repository checkout was installed without a dist/ build directory, candidate resolution in bin/git-warp:8-12 fails dist/bin/git-warp.js and falls back to resolve(dir, 'git-warp.ts'). Under Node >= 22.18, Node's native type stripping executes the TypeScript entry point directly in-process.

Route C: CI & Consumer Package Shim Route

  • Consumer Shim Invocation (test/fixtures/deno-smoke/consumer.mjs:26):
    execFileSync(join(process.cwd(), 'node_modules/.bin/git-warp'), ...) executes the npm-managed symlink.
  • Symlink Resolution (bin/git-warp:7-9):
    const dir = dirname(fileURLToPath(import.meta.url)); resolves the real target directory <pkg>/bin. cliCandidates immediately resolves ../dist/bin/git-warp.js as the packed compiled entry point.

Route D: Packed Entry Closure & Pruning Invariants

  • Artifact Policy Enforcement (scripts/package-payload/PackagePayloadPolicy.ts:11-12, 46):
    Both dist/bin/git-warp.js and bin/git-warp are in REQUIRED_PATHS. dist/bin/ is included in JAVASCRIPT_ONLY_PREFIXES, prohibiting .d.ts declarations from being packaged in the executable directory.
  • Module Graph Boundary Check (scripts/package-payload/TracePackageModules.ts:10-29):
    Traverses all runtime module imports from package roots and validates that every imported module exists within the packed inventory (dist/), ensuring no uncompiled source files (src/**/*.ts) are referenced in published output.

Route E: Long-Running MCP Process & Graceful Shutdown

  • Session & Interface Instantiation (bin/cli/commands/mcp.ts:37-67):
    Instantiates McpRuntimeSession and creates a line reader on process.stdin. Returns { completion, close } where close terminates the line reader, awaits completion, and awaits session.close().
  • In-Process Signal Handler (bin/git-warp.ts:70-84):
    installShutdownHandlers attaches once-listeners for SIGINT and SIGTERM directly to process. On signal receipt, shutdown() triggers closeCommandResources(close, closeCliStorages).
  • Lifecycle Integration (bin/git-warp.ts:157-171):
    emitWithCommandShutdown registers the command shutdown closure. Because shutdown is defined, main() awaits finishCompletedCommand(result.completion, shutdown) before exiting with normalized.exitCode (0 on normal close, 3 on close failure).

Route F: Normal Command Completion, Error Formatting, and Cleanup

  • Normal Completion (bin/git-warp.ts:173-174):
    Short-lived commands complete execution, call await closeCliStorages(), and exit cleanly via process.exit(normalized.exitCode).
  • Application Error Handling (bin/git-warp.ts:177-200):
    main().catch(...) attempts storage cleanup, wraps dual failures into AggregateError, formats machine-readable JSON or human-readable stderr, and terminates with process.exit(exitCode).
  • Wrapper Resolution / Load Failure (bin/git-warp:14-17, 21-24):
    If cliPath === undefined, writes to stderr and exits 1. If dynamic import(...) rejects (due to syntax, module load, or evaluation errors), writes error.message (or String(error)) to stderr and exits 1.

3. Scope Boundaries & Inspection Status

  • Inspected in this Addendum:
    • Exact baseline wrapper lines: 27 lines (817 bytes).
    • Production wrapper: 24 lines (691 bytes).
    • Package manifest bin maps and files array (package.json:22-25, 54-81).
    • Installer shell script (scripts/install-git-warp.sh:201-259).
    • Packed module trace pruner (scripts/package-payload/TracePackageModules.ts:10-29, PackagePayloadPolicy.ts:11-12, 46).
    • Long-running MCP lifecycle (bin/cli/commands/mcp.ts:37-67, bin/git-warp.ts:70-84, 157-171).
    • Pre-push multi-worker task peak (244 PIDs in prepush-984-CBBEA711-6FE1-438F-AF3D-6990A62D9FAE).
  • Executed locally: None (strict read-only inspection).
  • Scope Limitations:
    • Remote GitHub Actions CI remains pending and is a separate automated gate.
    • Startup measurements witness cold Node process initialization under warm filesystem caches, demonstrating single-process reduction rather than universal cold-disk benchmarking.

4. Final Verdict

APPROVE

═══ ⋆★⋆ Progress Report ⋆★⋆ ═══

Independent Adversarial Review Addendum for PR #993
████████████████████ 100% (6/6 slices)

  • Correct baseline line-count to 27 lines / 817 bytes vs candidate 24 lines / 691 bytes
  • Clarify fixture resource peak (27 PIDs) vs pre-push multi-worker peak (244 PIDs)
  • Complete production route checklist with exact source coordinates (package.json, installer, MCP, pruner, lifecycle)
  • Verify in-process signal handling, stream inheritance, and storage cleanup parity
  • Document inspection-only scope and frame defect conclusions
  • Final addendum delivery and source approval confirmation

⎇ fix/984-single-node-launcher +4/-0
📝 #993

@flyingrobots
flyingrobots changed the base branch from fix/987-locked-audit to main October 8, 2026 02:20
@flyingrobots

Copy link
Copy Markdown
Member Author

Primary qualification of the fixed-head review

Full raw feedback approves exact source head559f4b24e821e57ccd89a7817a1145af02e107d8 with a complete checklist. The isolated clone remains at that head; only the primary-supplied review-evidence directory is untracked, with no reviewer changes. Production and all three Python drivers are unchanged from the preceding reviewed head; the new code is the BATS-owned temporary-directory setup and failure diagnostic helper. Native missing-variable GREEN passes both tests; the older hosted failure remains preserved and is not counted as pass.

The review's package engines wording declares a supported floor; npm metadata alone does not enforce every process invocation. Its free-space figures are the pinned older GREEN receipt, not a fresh global minimum across all runs. Its18phase fixture maxima and old e7prepush244tasks have explicitly separate scopes; the four new hosted simulations and current prepush are separate. No source approval establishes hosted completion. The fixed-head real pre-push and fresh hosted checks remain separate required gates. Mainline merging remains paused.


Independent Adversarial Review: PR #993 at Exact Head 559f4b24

  • Repository: git-stunts/git-warp
  • PR: #993
  • Branch: fix/984-single-node-launcher
  • Head Commit: 559f4b24e821e57ccd89a7817a1145af02e107d8
  • Prior Reviewed Heads: 2eb60b816add5dd3f6b0462af345ea838c18104a, e7ea6ba3c6ec6940ab8115eb070cd2854d5c39b4
  • Target Branch: fix/987-locked-audit
  • Base Commit: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
  • Mainline Anchor (v20.0.0): ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
  • Review Mode: Strict read-only audit. No modifications, commits, pushes, remote API mutations, benchmark executions, upkeep tasks, or agent spawns.

1. Context & Qualification of Previous Review Miss

Prior head e7ea6ba3 passed all local guarded pre-push static and unit tasks, but hosted CI run (Node job 37716358053, job run 113113592926) failed both new BATS tests.

Root Cause Analysis of the Test-Environment Defect

  • Guarded Worker vs Hosted Docker: The primary validation worker explicitly exports TMPDIR into the container environment. The standard hosted Docker CI container does not set TMPDIR.
  • Driver Failure: Both scripts/check-cli-process.py:12 and scripts/check-cli-launcher.py:17 read os.environ['TMPDIR'] unconditionally. When TMPDIR is unset, Python raises KeyError: 'TMPDIR' prior to running assertions.
  • Controlled RED Reproduction: Preserved in launcher-hosted-env-red-984-v1, where running python3 scripts/check-cli-process.py with unset TMPDIR reproduces the exact KeyError: 'TMPDIR' traceback at line 12.
  • Previous Review Defect: The previous static review confirmed driver logic under the assumption of a declared TMPDIR and did not catch the environmental dependency in hosted runners. Prior approval is not readiness; this review evaluates the corrected candidate.

2. Commit Delta & History Audit at 559f4b24

Commit Chain & Linearity

Audit across 5c82ba6ca168d07b743fac5c6adbf38822ae0302..559f4b24e821e57ccd89a7817a1145af02e107d8:

  • Candidate Commits: 5
  • Merge Commits: 0 (git log --merges returned empty). The branch history is strictly linear.
559f4b24 test(cli): provide BATS-owned temp directories in hosted Docker (#984)
e7ea6ba3 test(cli): keep single-process launcher regressions in Docker CI (#984)
2eb60b81 test: verify single-node launcher boundaries and actual lifecycle (#984)
88a298dd fix(bin): load CLI entry in-process via dynamic import (#984)
373deafe test: retain actual installed CLI two-process startup witness (#984)

Target origin/fix/987-locked-audit (5c82ba6c) remains 3 commits ahead of mainline v20.0.0 (ceb58e65).

Code Delta Audit (e7ea6ba3 → 559f4b24)

The only code change in commit 559f4b24 is in test/bats/cli-launcher.bats:

@@ -6,14 +6,25 @@ setup_file() {
   require_docker_tests
 }
 
+setup() {
+  export TMPDIR="${BATS_TEST_TMPDIR}"
+}
+
+assert_driver_success() {
+  if [ "$status" -ne 0 ]; then
+    printf '%s\n' "$output" >&2
+  fi
+  [ "$status" -eq 0 ]
+}
+
 @test "installed CLI uses one Node process with stable command statuses" {
   cd "${BATS_TEST_DIRNAME}/../.."
   run python3 scripts/check-cli-process.py
-  [ "$status" -eq 0 ]
+  assert_driver_success
 }
 
 @test "launcher preserves entry boundaries, streams, signals and full native coverage" {
   cd "${BATS_TEST_DIRNAME}/../.."
   run python3 scripts/check-cli-launcher.py
-  [ "$status" -eq 0 ]
+  assert_driver_success
 }

Delta Invariants Verified:

  1. BATS Test Lifecycle & Scratch Directory Ownership: setup() runs before each @test. Exporting TMPDIR="${BATS_TEST_TMPDIR}" guarantees that child Python processes inherit a valid, isolated per-test directory managed and reaped by BATS.
  2. Failure Diagnostic Visibility: assert_driver_success dumps captured stdout/stderr ($output) to stderr when $status is non-zero, ensuring that CI logs report full tracebacks rather than opaque exit codes.
  3. Zero Production Changes: bin/git-warp is byte-identical across 88a298dd, 2eb60b81, e7ea6ba3, and 559f4b24 (691 bytes, 24 lines, SHA-256 a5b51bf0...).
  4. Zero Driver Changes: scripts/check-cli-process.py and scripts/check-cli-launcher.py are unchanged.

3. Production Entry Route Verification Checklist

Every production execution and packaging route was rechecked at head 559f4b24:

Route 1: Package Bin Map & Packaged Assets

  • Bin Map (package.json:22-25): Maps "git-warp": "./bin/git-warp".
  • Packaged Inclusions (package.json:54-81): Whitelists "dist/bin/**/*.js" (package.json:66) and "bin/git-warp" (package.json:72), explicitly omitting uncompiled source entry points (bin/git-warp.ts).
  • Engine Constraint (package.json:16-18): "engines": { "node": ">=22.0.0" } enforces the runtime floor for packed JavaScript execution.

Route 2: Installer Route (scripts/install-git-warp.sh)

  • Dependency Installation (scripts/install-git-warp.sh:207): Runs npm install inside the clone without a build step.
  • Executable Setup & PATH (scripts/install-git-warp.sh:208-214, 219, 232): Validates $INSTALL_DIR/bin/git-warp, sets chmod +x, and exports $INSTALL_DIR/bin to PATH.
  • Execution Fallback (scripts/install-git-warp.sh:253): Running git warp --help fails dist/bin/git-warp.js resolution (bin/git-warp:9) and falls back to bin/git-warp.ts (bin/git-warp:10). Under Node >= 22.18, Node's native type stripping executes the TypeScript entry point directly in-process.

Route 3: CI / Consumer Shim Invocation

  • Consumer Shim (test/fixtures/deno-smoke/consumer.mjs:26): Invokes node_modules/.bin/git-warp.
  • Symlink & Dist Resolution (bin/git-warp:7-9): Resolves target <pkg>/bin via import.meta.url, and cliCandidates immediately finds ../dist/bin/git-warp.js.

Route 4: Packed Module Closure & Declaration Pruning

  • Policy Enforcement (scripts/package-payload/PackagePayloadPolicy.ts:11-12, 46): dist/bin/git-warp.js and bin/git-warp are in REQUIRED_PATHS; dist/bin/ is in JAVASCRIPT_ONLY_PREFIXES, ensuring .d.ts files do not leak into the executable directory.
  • Dependency Closure Trace (scripts/package-payload/TracePackageModules.ts:10-29): Validates that all module references from packed roots resolve entirely within the packed distribution (dist/).

Route 5: Long-Running MCP Process & Graceful Signal Shutdown

  • Session Lifecycle (bin/cli/commands/mcp.ts:46-67): Returns { completion, close } managing line reader and McpRuntimeSession.
  • Signal Handling (bin/git-warp.ts:70-84): installShutdownHandlers attaches SIGINT and SIGTERM listeners directly to process.
  • Graceful Termination (bin/git-warp.ts:157-171): emitWithCommandShutdown triggers closeCommandResources(close, closeCliStorages) upon signal receipt, closing session and storages before exiting with status 0 (or 3 on close failure).

Route 6: Normal Completion, Error Formatting, and Cleanup

  • Normal Completion (bin/git-warp.ts:173-174): Short-lived commands call await closeCliStorages() and exit with normalized.exitCode.
  • Application Error Handling (bin/git-warp.ts:177-200): main().catch(...) runs cleanup, constructs AggregateError if cleanup fails, formats JSON/stderr, and exits with exitCode.
  • Wrapper Rejection (bin/git-warp:14-17, 21-24): Missing entry writes to stderr and exits 1; module load failure writes (error instanceof Error ? error.message : String(error)) to stderr and exits 1.

4. Quantitative & Hash Audit

All numbers, checksums, and distribution metrics were verified:

4.1 Production and Baseline Wrapper Coordinates

  • Baseline Wrapper (test/evidence/984-cli-launcher/baseline-wrapper.txt, base 5c82ba6c:bin/git-warp):
    • Line count: 27 lines (wc -l = 27)
    • Byte size: 817 bytes (wc -c = 817)
    • SHA-256: c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381
  • Candidate Production Wrapper (bin/git-warp at 559f4b24):
    • Line count: 24 lines (wc -l = 24)
    • Byte size: 691 bytes (wc -c = 691)
    • SHA-256: a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a

4.2 Script Line and Byte Counts at 559f4b24

  • scripts/check-cli-launcher.py: 130 lines (wc -l), 6,842 bytes
  • scripts/check-cli-startup.py: 86 lines (wc -l), 4,963 bytes
  • scripts/check-cli-process.py: 49 lines (wc -l), 2,720 bytes
  • test/bats/cli-launcher.bats: 30 lines (wc -l), 630 bytes
    All script and test files remain well below the 300 LOC limit.

4.3 Package Payload Figures

  • Ceilings: 760,000 compressed / 3,300,000 unpacked / 1,050 entries (PackagePayloadPolicy.ts:50-52)
  • Baseline Payload: 746,177 compressed / 3,257,290 unpacked / 971 entries
  • Candidate Payload: 746,123 compressed / 3,257,164 unpacked / 971 entries
  • Unpacked Delta: 3,257,164 - 3,257,290 = -126 bytes (matches 691 - 817 = -126 bytes exactly)

4.4 Manifest Hash Coverage & Follow-up Validation Receipts

All checksums across manifest.json, followup-validation-manifest.json, and hosted-environment-manifest.json were verified against disk:

  • launcher-hosted-env-red-984-v1: uncompressed public SHA 86b2bdca...
  • launcher-hosted-env-green-984-v1: uncompressed public SHA f33e419a... (refusal at 16 MiB /tmp)
  • launcher-hosted-env-green-984-v2: uncompressed public SHA 3e2c05d7... (ENOSPC when BATS ignored BATS_TMPDIR)
  • launcher-hosted-env-green-984-v3: uncompressed public SHA 0d46a727... (passed with BATS_TEST_TMPDIR in runtime tmpfs)

4.5 Resource Bounds & Concurrency Peaks

  • Fixture Phases (18 baseline/follow-up phases): Peak PIDs: 27, Peak build cache: 2,340,605,952 bytes (~2.18 GiB), Peak /data: 84,578,304 bytes.
  • Hosted Environment Simulation (launcher-hosted-env-green-984-v3): Peak runtime tmpfs: 45,486,080 bytes, Peak generated non-object bytes: 46,972,928 bytes.
  • Pre-push Multi-worker Test Phase (prepush-984-CBBEA711...): Peak PIDs: 244 tasks (reflects WARP_TEST_MAX_WORKERS=2 Vitest runner fork concurrency, well within the 768 cgroup limit).
  • Free Space on Guarded Worker: Host free: 673.4216 GiB, VM free: 640.0249 GiB (exceeds 50 GiB guard threshold).

5. Verified Findings & Scope Boundaries

Demonstrated Code Defects: None (P0–P5)

No defects were found within this reviewed scope on the candidate production code (bin/git-warp) or supporting test scripts. The environment defect that caused hosted CI failure has been corrected in test/bats/cli-launcher.bats.

Explicit Scope Boundaries & Non-Defect Observations

  1. Startup Comparisons: All three pilots measure cold Node process initialization under shared filesystem caches with cgroup census pauses, demonstrating process-start reduction from 2 to 1 rather than cold-disk latency claims.
  2. Injected Close-Failure Scope: launcher-cleanup-failure-984-v1 proves lifecycle parity under an injected command failure; it is not a physical storage or power-loss fault test.
  3. Hosted CI Execution: Hosted GitHub Actions workflows require fresh execution at head 559f4b24. Missing terminal hosted CI results are an acknowledged automated gate, not a source defect.

6. Mandatory Verification Checklist

  • Every Code Path Traced:
    • Dist entry resolution: bin/git-warp:7-12
    • Missing entry refusal: bin/git-warp:14-17
    • In-process dynamic import: bin/git-warp:20
    • Module load failure rejection: bin/git-warp:21-24
    • CLI execution & argv parsing: bin/git-warp.ts:25, 141
    • CLI signal registration & graceful shutdown: bin/git-warp.ts:70-84
    • Stream inheritance & exit codes: bin/git-warp.ts:168, 174, 199
    • Process-group signal termination: scripts/check-cli-launcher.py:94-100, scripts/check-cli-startup.py:63-68
    • BATS per-test temp directory isolation: test/bats/cli-launcher.bats:9-11
    • BATS failure output reporting: test/bats/cli-launcher.bats:13-18
  • Merges & SHAs Audited:
    • Current Head: 559f4b24e821e57ccd89a7817a1145af02e107d8
    • Target Base: 5c82ba6ca168d07b743fac5c6adbf38822ae0302
    • Upstream Main Anchor: ceb58e656ec5bc85f0ae5991bf2a55599693bbb3
    • Linear Commits: 5 commits, 0 merges
  • Constants, Claims & Evidence Checked:
    • Baseline wrapper SHA-256 (c5921952...): Verified
    • Baseline wrapper size (817 B, 27 lines) vs Candidate wrapper size (691 B, 24 lines): Verified
    • Script line counts (wc -l): launcher driver 130, startup driver 86, process driver 49, BATS 30: Verified
    • Payload caps (760,000 / 3,300,000 / 1,050): Verified
    • Payload baseline (746,177 / 3,257,290 / 971) vs candidate (746,123 / 3,257,164 / 971): Verified
    • All 4 hosted environment manifest phases verified against disk: Verified
  • V8 Coverage & Test Oracles:
    • All 12 atomic wrapper segments executed across 9 runs in scripts/check-cli-launcher.py: Verified
    • Installed process driver (scripts/check-cli-process.py) passes on candidate and fails with RED on baseline wrapper: Verified
    • Both BATS tests pass under corrected BATS_TEST_TMPDIR environment (launcher-hosted-env-green-984-v3): Verified
  • Inspection Boundaries:
    • Inspected: Production wrapper, BATS integration, Python drivers, evidence manifests, gzip logs, launch contracts, resource records, and prepush logs.
    • Executed locally: None (strictly read-only review).
    • Skipped/Unavailable: Remote hosted GitHub Actions run completion (separately acknowledged gate).

7. Verdict

APPROVE

═══ ⋆★⋆ Progress Report ⋆★⋆ ═══

Independent Adversarial Review of PR #993 at HEAD 559f4b2
████████████████████ 100% (6/6 slices)

  • Isolated checkout and linear history audit across all 5 candidate commits (0 merges)
  • Root-cause verification of hosted BATS test-environment failure and fix (BATS_TEST_TMPDIR)
  • Production code and parallel lifecycle analysis (in-process import, signal handling, stream inheritance)
  • Quantitative verification of hashes, byte sizes, payloads, line counts (wc -l), and resource scopes
  • Resource discipline, cgroup limits, free space verification, and multi-worker peak distinction (244 PIDs)
  • Complete production route checklist with exact source coordinates and final review delivery

⎇ fix/984-single-node-launcher +5/-0
📝 #993

@flyingrobots
flyingrobots changed the base branch from main to fix/987-locked-audit October 8, 2026 02:27
@flyingrobots
flyingrobots marked this pull request as ready for review October 8, 2026 02:43
Base automatically changed from fix/987-locked-audit to main October 8, 2026 04:38
@flyingrobots

flyingrobots commented Oct 8, 2026 •

Copy link
Copy Markdown
Member Author

Public path-policy correction: this displayed review copy normalizes machine-local and container-home labels to placeholders. Original review bytes and original SHA-256 identities remain preserved separately in Reader; the displayed copy is not byte-identical to that retained source. No finding, numeric result or code verdict is changed.

Independent Codex review of PR #993

Repository: git-stunts/git-warp. Issue: #984. Branch: fix/984-single-node-launcher. Reviewed candidate: 2d470d655b6603f45f062ed44e5c74fb09d02c4c. Target: main, at 795d32ae8d02b1929a42b5cb4df4b1f200205c69.

This is the separately authorized Codex fallback review, applying the installed agy-review protocol. It is not an agy response or a CodeRabbit approval. The supplied complete comment collection contains CodeRabbit's review-limit refusal, five global comments, zero submitted reviews, and zero review threads. The older bot range and older independent approvals do not approve this candidate. The parent reported agy unavailable because of its quota; I did not launch another reviewer or attempt to bypass either quota.

The review was read-only. The isolated checkout remained detached at the candidate, with only the pre-existing, author-supplied review-evidence/ directory untracked. No source edits, checkout changes, commits, pushes, GitHub mutations, tests, builds, dependency installation, containers, benchmarks, Reader operations, or agents were performed. Only this external feedback document was written.

Findings and verdict scope

No demonstrated launcher production defect was found. No P0–P5 code finding is raised.

The intended installed path selects the same entry as before and imports it into its current Node process. The CLI still owns argument parsing, command dispatch, streams, completion, storage closure, failure projection, and signal shutdown. The integration retains main's CLI failure-reporting, object-format, checkpoint-parent, and observed-write implementations byte-for-byte. This approval is for the exact candidate above and its launcher integration; it does not establish that required current-head CI, the full validation chain, release gates, or a later merge have completed.

Evidence qualifications that must accompany this review:

  • The historical count of 8,677 is the sum of six outer Vitest test totals, not a count of individual assertions. The nested coverage-manifest fixture separately logs one passed and one intentionally skipped fixture test; its enclosing coverage-completion.test.ts case is one of the 910 project tests. Do not add that child summary as another project suite. The wording “passing assertions” and “nested probe included in those totals” in the historical evidence should be read with this qualification.
  • Historical draft status, prerequisite target, pause statements, pre-push results, and hosted figures describe their recorded earlier heads. The collected PR/issue text is older than this main-target candidate. The parent must reconcile live target/readiness metadata and validate the final merge candidate separately. The old 20-check/50-BATS/94.08%-coverage claims were not used as current-head proof here; live GitHub querying was excluded from this assignment.
  • Native coverage below means executed V8 segments. It is not a four-metric Vitest result and does not authorize a coverage-ratchet update. Startup pilots are fresh-process measurements with shared filesystem caches and the historical guard's pauses; they do not prove cold-disk or universal/all-tail improvement.
  • Reader receipt UUIDs in historical prose and comments are preserved provenance references. Reader delivery/filing state was excluded from this delegated review and is the parent's verification responsibility.

Verification Checklist: production paths

Path Source coordinates and verification
npm executable and Git subcommand package.json:22 maps git-warp to bin/git-warp; package.json:54 includes the extensionless wrapper and dist/bin/**/*.js. bin/git-warp:7 derives the wrapper directory from its own module URL. scripts/install-git-warp.sh:207 installs source dependencies, :208 checks/chmods the executable, :219 and :232 place its directory on PATH, and :253 documents git warp --help. The installer itself was inspected, not executed.
Built-first selection Baseline 5c82ba6c:bin/git-warp:8 through :13 and candidate bin/git-warp:7 through :12 both select ../dist/bin/git-warp.js before git-warp.ts, using the first existing candidate. No fallback is attempted after a selected module fails to load. scripts/check-cli-launcher.py:43 through :50 supplies both entries, a spaced directory, distinct source refusal, argument Unicode/spaces, streams, status 7, and a symlink.
Source selection Candidate bin/git-warp:10 follows the same source fallback as baseline. The actual source-only closure is tested historically at Node 22.18.0; controlled source selection remains in scripts/check-cli-launcher.py:53. README.md:112 declares source development at least 22.18. This does not change package.json:16's packed-artifact floor of 22.0.0.
In-process execution Baseline 5c82ba6c:bin/git-warp:21 calls spawnSync(process.execPath, [cliPath, ...args], { stdio: 'inherit' }); candidate bin/git-warp:20 instead awaits import(pathToFileURL(cliPath).href). There is no process spawn, argv mutation, cwd change, or stream replacement in the candidate wrapper. File-URL construction handles the selected filesystem path without hand-built URL escaping.
Missing entry Baseline 5c82ba6c:bin/git-warp:16 and candidate bin/git-warp:14 emit the same stderr message and exit 1. scripts/check-cli-launcher.py:59 through :61 checks status and both streams.
Import/evaluation refusal bin/git-warp:19 through :24 catches module resolution/evaluation rejection, emits the Error message or non-Error string, and exits 1. scripts/check-cli-launcher.py:62 through :69 checks both branches. This boot refusal is separate from a running command's bounded failure projection. Neither is silently retried as another entry.
Argv and package discovery bin/git-warp.ts:30 and :31 pre-scan raw flags, and :159 parses process.argv.slice(2). The former child argv[1] was the selected entry; current argv[1] remains the wrapper. No production code in bin/ or src/ uses argv[1] to discover the CLI package or conditionally suppress main. bin/cli/shared.ts:147, :162, and :170 discover the package from their own module URL and parent package.json. Module main remains unconditional at bin/git-warp.ts:191.
All nine public commands bin/git-warp.ts:164 through :175 dispatches the same COMMANDS registry; bin/cli/commands/registry.ts:33 through :46 maps write, observe, fork, settle, receipt, doctor, repair, audit, and mcp. Every route passes through the same selected module, normalization and output handling. All handler and registry blobs equal target main. The wrapper introduces no second command implementation.
Human / JSON / JSONL output bin/git-warp.ts:125 through :152 emits through current stdout; the format is selected from the unchanged flags. Help and no-command early returns at :68 through :83 set the same 0/1 statuses. Running-command failures go to CliFailureReporterAdapter.ts:25 through :38, selecting stderr for human and stdout for machine formats. Controlled stdin forwarding is checked at scripts/check-cli-launcher.py:72 through :75.
Finite command closure bin/git-warp.ts:187 awaits closeCliStorages() before :188 exits with the normalized status. Runtime-owning handlers use bin/cli/v19/V19Runtime.ts:16 through :47 to close Runtime after success and preserve operation/close failures on rejection. bin/cli/shared.ts:32 through :41 closes all tracked storage compositions and retains their failures. Source inspection confirms the launcher does not intercept this asynchronous main promise with its import catch.
Long-running command completion bin/git-warp.ts:105 through :123 waits for completion, then shutdown, preserves the operation as the first aggregate member on dual failure, and otherwise rethrows the original failure. :179 through :184 preserves the distinction between completion-bearing commands and long-running commands without completion. Native installed fixtures cover completion success, operation failure, cleanup failure, dual failure, and the no-completion branch.
Output failure and cleanup bin/cli/lifecycle.ts:12 through :27 installs command shutdown before consuming output; :30 through :41 preserves output failure and shutdown failure. :45 through :63 drains the command before closing storage. The launcher does not introduce a cleanup owner or duplicate closure.
SIGINT / SIGTERM bin/git-warp.ts:88 through :102 memoizes shutdown and installs one listener for each signal on the actual running process. Successful closure exits 0; rejection invokes failureReporter.shutdownFailure, which emits a typed non-success result. Native fixtures wait for READY and signal the actual PID. Wrapper fixtures use os.kill(process.pid, stop) at scripts/check-cli-launcher.py:90; installed failure fixtures use the command's READY PID at scripts/check-cli-failures.py:135.
Actual MCP bin/cli/commands/mcp.ts:46 through :67 creates readline on current stdin and returns completion/close; :70 through :134 tracks pending operations/input failure and terminal stdin closure; McpRuntimeSession.ts:42 serializes Runtime work, :185 through :198 closes observations and Runtime, and :201 opens it lazily with unchanged repo/writer inputs. scripts/check-cli-startup.py:32 through :61 initializes the installed server, calls warp_lane_describe, and checks exact-wrapper-PID signal exit. No persistence/restart code is added to the launcher.
Observation streaming bin/cli/commands/observe.ts:110 through :160 preserves receipt completion, iterator cancellation, once-only resource closure and Runtime closure; :164 through :193 preserves open-failure cleanup. The same module path and ownership execute when the wrapper imports the CLI.
Direct and Docker routes Direct node bin/git-warp.ts / node dist/bin/git-warp.js run the same unconditional CLI module. docker/Dockerfile.node22:37 and the slim equivalent use an exec node shim directly to the compiled CLI; test/bats/helpers/setup.bash:7 also invokes compiled CLI directly. Those unchanged routes already use one Node process. The new test/bats/cli-launcher.bats:20 and :26 explicitly install/exercise the package wrapper, closing the generic BATS route's wrapper coverage gap.
Packed module closure PackagePayloadPolicy.ts:5 through :22 requires both wrapper and compiled entry; :46 keeps implementation declaration files out; TracePackageModules.ts:10 through :28 follows inventory-bound literal references and reports computed-load limitations through ComputedModuleLoads.ts:4. Static tracing alone is not execution of dynamic wrapper selection. Installed process, boundary and packed smoke receipts supply the corresponding execution evidence.

Verification Checklist: merge integration

All three merge commits in main..HEAD were inspected against both parents. The complete branch delta is 77 files: six non-evidence files and the historical launcher evidence bundle. Local ancestry is +8/-0 against the specified target.

Merge Both-parent audit and integration invariants
4d0be3fd30b87ced5291f933e3033ae188996148 Parents 559f4b24e821e57ccd89a7817a1145af02e107d8 and 528be426dff5917490ebbadfdd451fde1d7dd522. Its complete tree is identical to the first parent. Against second parent it contains the 77-file launcher delta. It retains the locked-audit prerequisite instead of undoing dependency/CI changes.
26919371e090daa0712c9ad134c29052af4ba588 Parents 4d0be3fd30b87ced5291f933e3033ae188996148 and 2b93462f3d9c97cfe0d13f77e181764947febb5e. First-parent diff imports 349 mainline files; second-parent diff is exactly the 77-file launcher delta. All branch-owned files except CHANGELOG equal first parent, and all imported production files except the wrapper equal second parent. CHANGELOG retains launcher, checkpoint-parent, bounded CLI failure, SHA-256 ref-CAS, and locked-audit entries.
2d470d655b6603f45f062ed44e5c74fb09d02c4c Parents 26919371e090daa0712c9ad134c29052af4ba588 and 795d32ae8d02b1929a42b5cb4df4b1f200205c69. First-parent diff imports 334 observed-write mainline files; second-parent diff is exactly the same launcher delta. All launcher/evidence blobs equal first parent; imported code equals second parent. CHANGELOG retains observed-write plus every prior entry.

The integration check includes the incoming PR #994 CLI entry and bounded failure adapters, not just a clean textual merge. bin/git-warp.ts:191 still handles command rejection through the mainline reporter, not through the wrapper's boot-error catch. Primary identity and siblings remain at CliFailurePropertyReader.ts:34, :77; shared budgets and cycles remain at CliFailureTraversal.ts:18 through :70; credential/token/path redaction remains at CliFailureRedactorAdapter.ts:16 through :47; typed status remains at CliFailureProjectionAdapter.ts:58; and aggregate completion/cleanup ordering remains at bin/git-warp.ts:109 through :122. The fresh exact-head native matrix below executes these installed paths through the new wrapper.

The incoming graph/storage algorithms are preserved rather than reimplemented here. Inspected integration anchors include GitTimelineHistoryAdapter.ts:193 (object-format-correct empty tree), :374 (absence CAS without a hard-coded SHA-1 null OID), CborCheckpointStoreAdapter.ts:125, :226, :236 (bounded immutable publication parents), GitPublicationParents.ts:8 (parent validation), bin/cli/commands/write.ts:35 through :42 (public live-write route), WriteRuntime.ts:130 through :143 (prepared write basis), and PatchBuilder.ts:230 onward (observed-write capture). The wrapper supplies the same repo/writer/intent inputs and does not alter these types, codecs, journal bytes, ref authority, causal identities, CRDT rules or restart logic. Their separate mainline correctness reviews are not being claimed as newly executed launcher tests.

Verification Checklist: tests, constants and historical claims

All changed scripts were read in full. They are Docker-only and remain under the 300-line script cap: launcher 130 lines / 6,842 bytes; process 49 / 2,720; startup 86 / 4,963; BATS 30 / 630. Production wrapper is 24 lines / 691 bytes. The preserved baseline is 27 lines / 817 bytes, a 126-byte reduction.

  • scripts/check-cli-launcher.py:17 gives controlled executions 20-second deadlines; :100 gives process reaping five seconds. Its one-second keepalive is a readiness-fixture timer, not a production shutdown or latency promise. Dist/source, symlink/spaces, Unicode argv, stdout/stderr/status, stdin, missing entry, Error/non-Error load refusal and both signals have distinct oracles. :96 kills the entire owned signal group even after its parent exits, and :130 removes its fixture directory.
  • scripts/check-cli-process.py:13 gives its bounded pack/init/install/CLI calls 30 seconds; npm install uses zero retries and a 15,000-ms fetch timeout at :22. :26 through :47 require precisely one recorded Node start and exits 0/3/3/1 for packed help/doctor/JSON-failure/unknown, with stream checks. :49 removes the owned fixture.
  • scripts/check-cli-startup.py:16 fixes 20 samples per variant; :70 alternates ordering, :75 caps each invocation at 20 seconds, and :82 reports the median and sorted elements 18/19 as its p95/p99 estimator. Signal fixtures use 20-second readiness/completion and five-second reap deadlines; :64 kills the whole owned group. Pack/install preparation is bounded by the outer guarded runner, not an unclaimed per-subprocess deadline.
  • test/bats/cli-launcher.bats:9 exports the BATS-owned per-test BATS_TEST_TMPDIR; :13 prints failed driver output. package.json:147 retains the Docker unit/integration/BATS route. Docker refusal remains in the BATS helper and both drivers. No host test was run.
  • Native aggregation at scripts/check-cli-launcher.py:105 through :127 uses the innermost containing V8 range separately for each execution, then unions coverage across executions. The retained v1/v2 aggregation failures are not successes; v3 records 12 executed segments across nine wrapper runs and no uncovered segment. Current BATS repeats that driver on the unchanged wrapper bytes.
  • The mainline failure constants remain depth 4, nodes 8, message 1,024 UTF-8 bytes, complete output 8,192 bytes, and internal exit 3 at CliFailureLimits.ts:2 through :6. They are conservative display bounds, not benchmark-derived targets. Source traversal/encoding plus exact-head installed cases verify the same limits through the launcher. scripts/check-cli-failures.py:93 runs 30 failure cases, :113 runs 12 signal cases, :151 runs five usage cases, and :155 runs 24 completion/output cases: 71 native CLI executions total.
  • PackagePayloadPolicy.ts:50 through :52 retains caps 760,000 compressed bytes / 3,300,000 unpacked bytes / 1,050 entries. Historical baseline 746,177 / 3,257,290 / 971 and candidate 746,123 / 3,257,164 / 971 match their raw console logs. The portable RED baseline override records 746,170 compressed bytes with the same 3,257,290 unpacked bytes and 971 entries; it intentionally uses later package metadata. The README explicitly cautions against equating compressed pack sizes across those runs.
  • The actual packed Node 22.0.0 and source-only Node 22.18.0 commands, official download URLs, checksum checks, retained failures and corrected source closure were inspected in their launch receipts. The source v3 command copies root *.ts as well as bin/src and omits dist. The raw v1/v2 failure and v3 success match the prose. Retained toolchain sizes 182,988,800 and 194,826,240 bytes match the raw v3 du output; their sum is 377,815,040 bytes. This is historical minimum-runtime evidence for the launcher route, not a new minimum-runtime campaign on this head.
  • packed-compat-984-v1 records the complete installed public API/attachment smoke, including a 67,108,864-byte (64 MiB) stream. The command and raw pass markers were inspected; it is explicitly historical compatibility evidence, not a current-head rerun.
  • README's historical hosted failure run/job identifiers are retained as identifiers, not fresh GitHub observations. The local missing-TMPDIR RED has an actual KeyError before assertions. The corrected environment v1 exits 125 with a /tmp resource refusal; v2 exits 1 with ENOSPC and 4,358 repeated tar warnings; neither is GREEN despite its phase name. V3 exits 0 and passes both BATS tests, with 45,486,080 runtime bytes and 46,972,928 generated nonobject bytes. The simulated setup unsets TMPDIR before the actual corrected setup exports BATS's per-test directory.

The startup figures in test/evidence/984-cli-launcher/README.md:27 were recomputed from every retained raw sample, using the driver's actual estimator:

Historical pilot Variant Samples Median ms p95 ms p99 ms
launcher-startup-984-v1 baseline 20 199.5061195 281.442847 302.8239
same candidate 20 191.105198 275.932594 279.081304
launcher-mcp-startup-984-v1 baseline 20 206.811557 293.012849 297.049476
same candidate 20 190.3386535 272.480131 369.988803
launcher-startup-cleanup-984-v1 baseline 20 201.49615599999998 312.007752 313.80142
same candidate 20 187.0664805 276.263811 288.926153

The candidate's worse second p99 is disclosed. The respective resource receipts record nine census pauses, totaling approximately 0.7655, 0.7848, and 0.8162 seconds. The new unpaused guard does not retroactively convert these into unpaused measurements or current-head latency guarantees.

Historical pre-push receipts for 2eb60b81 and e7ea6ba3 each bind nine static commands and one stable unit runner, all exit 0. The six outer shard counts are 304, 974, 910, 3,139, 2,100 and 1,250, summing to 8,677 project tests; two outer project tests are skipped. Raw summary coordinates are lines 74, 179, 406, 683, 837 and 941 in each corresponding console log. Lines 290–291 are the separate one-pass/one-skip child fixture; source ownership is test/unit/scripts/coverage-completion.test.ts:13 through :30. Historical counts are not exact-head test counts. Earlier reviewer line-count/free-space/maxima mistakes and the missed hosted TMPDIR defect were reconciled against the raw evidence rather than inherited as conclusions.

Verification Checklist: artifact identities and current evidence

The complete three historical manifests were parsed: manifest.json has 30 artifact entries, followup-validation-manifest.json has 24, and hosted-environment-manifest.json has 12. All 66 entries passed mechanical checks against the original external phase receipts: original SHA-256, normalized public payload SHA-256, and gzip archive SHA-256 where declared. Public normalization was verified byte-for-byte as the sole replacement of <RAW_CONTAINER_HOME> with <CONTAINER_HOME>. Logs declared unnormalized equal their originals. This covers all 22 historical phases, including failed/refused phases.

Every phase's launch source base, input archive hash/size, override inputs, command, image, guard identity and limits was inspected alongside its terminal resource result. A source_base alone was not treated as a content hash, and historical uncommitted test-driver development snapshots were not silently renamed as committed-head executions. The current source snapshot was independently reproduced exactly, as described below.

Key immutable identities:

Artifact SHA-256
Preserved baseline wrapper, matching both 5c82ba6c:bin/git-warp and ceb58e65:bin/git-warp c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381
Candidate wrapper a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a
Baseline CLI entry, equal at both baseline refs 6a5ef822dcbbed90288c0424e088e75cef192b121a8640e52428dc1433d014b7
Historical process RED raw log a322345ca4c5aceb43f2045565ccd1536dd3b61c67219c97dadc7cf6562a915f
Historical process GREEN raw log 3e01f6380a6faaf456d9b20c1a73b5e67603175f0b11a29617571c118252f81f
Historical native wrapper coverage v3 raw log b405e893ea713f390779e417e520f54f71cfb9a4eeb6d25f35a37455af4a6130
Fresh launcher-main-984-v2 source archive c180d7157f0ed7aaab64b17c4b7c4111545ae359fa41ff811d4c864fdce43a43
Fresh v2 launch receipt 9d1b70a447d8ff7fbcfcb326be8606fbc179a7981ac27f5dc019d906d9fa44c8
Fresh v2 resource receipt 9a4dfd8c46b737402cfb13cdef1d84be7015616b064118b34a271e8d8d3ccb85
Fresh v2 raw console f2f0eed7cc6df02b7f9649370ac87845791671bff4cec30de0097e80b0821ae6
Fresh unpaused guard 5e394e53a986ce05c03852dfdc80c99e1e9ba78226fec0045eb57b6a5c4bd71b

The original baseline matches the main/v20.0.0 launcher and CLI bytes; audit prerequisite changes do not alter that baseline. The portable RED launch specifically binds the baseline wrapper override to that exact hash. The original invalid preload probe remains a diagnostic failure, not reproduction proof.

Fresh external receipt coordinates are receipts/launcher-main-984-v2/{launch.json,resources.json,console.log} in the parent's retained validation bundle. The launch binds 2d470d655b6603f45f062ed44e5c74fb09d02c4c, the reused image sha256:9f145953f6e79a59749a683d11a476133cb7cef0588b79256dc195b1d0c87ad7, no baseline override, and the command npm run build --silent && bats test/bats/cli-launcher.bats && python3 scripts/check-cli-failures.py. These are primary-executed results inspected by this reviewer.

The clean author worktree was read mechanically using Python 3.9.6's same tarfile/PAX construction and the sorted git ls-files --cached --others --exclude-standard input selection. The in-memory reconstruction reproduced 24,258,560 bytes, 3,263 entries, and the exact recorded source archive hash. No alternate Git-archive algorithm or copied-clone timestamps were substituted. The reviewer clone's HEAD remained unchanged.

The fresh terminal result is exit 0, guard error null, both launcher BATS tests PASS, 71 installed CLI executions and no uncovered native CLI entry segment. I independently recomputed the raw selected-report array: 71 reports, 87 segments, uncovered []. This covers the incoming reporter/completion/signal integration through the actual installed wrapper. The earlier launcher-main-984-v1 binds 26919371..., not this candidate, and was not promoted to exact-head evidence.

Fresh package payload is 755,722 compressed bytes / 3,295,371 unpacked bytes / 993 entries, passing unchanged limits. Remaining headroom is 4,278 compressed bytes, 4,629 unpacked bytes and 57 entries. Historical 746,123 / 3,257,164 / 971 and its 13,877 / 42,836 / 79 headroom remain valid only for their pinned earlier artifact.

Verification Checklist: resources and repository standards

Historical launcher receipts bind the old paused guard 2e898488b42ef2d6885c79a124d3deef5cc17086f5b8846e75833145a75dd27d. Fresh v2 binds the unpaused 5e394e53... guard; its source was read and its bytes hash-checked. The parent-owned runner source was inspected for COPY snapshot installation, compatible dependency reuse, read-only container root, no host bind mounts, bounded tmpfs paths, two 1-MiB Docker logs, process-group cancellation, and worker stop in finally. It was not executed by this reviewer.

Fresh limits are the same 20 GiB monitored build budget, 3 GiB runtime tmpfs within the 4 GiB aggregate runtime budget, 96 MiB generated nonobject bound, 16 MiB phase stdout, four CPUs, 8 GiB memory/swap, 768 tasks, 1,700-second inner deadline and 1,750-second outer deadline. The monitor checks backing/host free space against 50 GiB and terminates its owned workload on measurement failure/refusal. The parent retains the canonical workstation resource host/docker/git-warp-tests/; the review used no worker and acquired no competing reservation. The build monitor is a sampled stopping guard, not a filesystem quota. Per-mount tmpfs limits are actual bounded filesystems, and rotated logging is separately bounded.

Fresh v2 launch records host free 709,646,110,720 bytes and VM free 674,486,329,344 bytes; the latter is also its measured minimum. Peaks are build 2,355,314,688 bytes, runtime 61,792,256 bytes, generated nonobject 62,275,584 bytes, stdout 167,086 bytes and 27 tasks. There are zero measurement pauses. Cgroup output reports no OOM or PID-limit event. The older 18 fixture-phase peak of 27 tasks is distinct from the four hosted-environment simulations (one reaches 39) and the separate historical pre-push unit task (244). No aggregate-current peak was inferred from one old receipt.

AGENTS.md, docs/ANTI_SLUDGE_POLICY.md, docs/ANTI_SLUDGE_DECISIONS.md, and docs/SYSTEMS_STYLE_TYPESCRIPT.md were read. No new TypeScript is generated; the sole changed production file is the host executable boundary. No any/unknown/cast placeholder, domain host import, ambient domain clock/entropy, message-based behavioral dispatch, domain model, or quarantine expansion is introduced. The changed files have no quarantine manifest entry. git diff --check is clean. Existing unrelated mainline code was preserved, not silently graduated or rewritten.

Manual SSJS scorecard on changed production code: all six green. There is no new domain concept needing a runtime class; filesystem/module validation stays in the executable boundary; loading behavior belongs to the launcher; no error-message parsing controls behavior; no domain clock or entropy is added; no cast or fake shape trust is added. Error-vs-non-Error dispatch uses runtime instanceof. The existing domain/storage invariants remain behind the same CLI composition path.

Executed, inspected, and excluded

Executed by this reviewer: read-only Git history/diff/blob comparisons, file reads, JSON/gzip parsing, all historical public/original/archive hash and normalization checks, arithmetic and percentile recomputation, fresh native selected-range recomputation, source archive reproduction in memory, guard identity verification, and whitespace inspection.

Inspected primary execution evidence: original RED/GREEN installed process counts, all boundary/native coverage and failure/refusal phases, real installed MCP signals, injected cleanup parity, actual packed/source minimum Node runs, packed API/attachment smoke, historical pre-push static/unit logs, hosted-environment correction, and fresh exact-head launcher/failure integration. Inspection of a pass receipt is not a test execution by this reviewer.

Excluded by assignment: test/build/container/benchmark execution, live GitHub querying, current full-chain and hosted readiness checks, independent reimplementation audits of already-landed mainline algorithms, Reader delivery/filing queries, and physical power-loss/device-fault campaigns. No device/config state machine was added by this launcher, and no physical durability result is claimed. The parent must finish required validation, metadata reconciliation, later merge reviews and readiness gates. Any later head invalidates this exact-head approval until reviewed.

All mandatory launcher source, both-parent integration, relevant error/lifecycle, constant, raw-evidence identity and numeric-claim areas were reviewed with the boundaries above. The remaining excluded work is execution/publication/readiness ownership, not an uninspected launcher defect area.

APPROVE

@flyingrobots

Copy link
Copy Markdown
Member Author

Independent Codex final integration review: PR #993

Reviewed head: 4df03ba9c3ef06441872b110a092e40049afdab4. Target: main at 0cb4d4fcfbd8da632aadc80aee246837a69dcac2. Repository: git-stunts/git-warp. Branch: fix/984-single-node-launcher. Issue: #984. Local ancestry against that target is +10/-0.

This addendum applies the same independent agy-review protocol as the complete earlier Codex review. The earlier report, feedback.md, is preserved unchanged: 29,886 bytes, SHA-256 d1c47dc013f26163a52b2b39984340eb98946515be58f0ad965f69a68c2de3a5. Its source/evidence checks are carried forward only after the exhaustive preservation comparisons below. The parent reports that exact original was posted and delivered to Reader receipt bc8c9c0a-5cb2-4fa9-b1a9-35977f1e0d26; external delivery/filing remains outside this review's allowed operations.

No demonstrated P0–P5 source defect was found. The final candidate preserves the one-process launcher, adopts main's narrow Runtime declaration reference without changing Runtime behavior, and passes the inspected exact-head launcher/CLI/disposal integration witnesses. Approval is limited to this exact head. It does not authorize merging or establish hosted, release, or later-head readiness. Completed current-head static and broad unit results are reported separately below.

This review was read-only. Only this external addendum was written. No source modifications, checkout/ref changes, commits, pushes, tests, builds, installations, containers, benchmarks, agents, GitHub queries/mutations or Reader operations were performed. The isolated clone remained detached at the specified head; its author-owned untracked review-evidence/ was preserved.

Verification Checklist: exhaustive preservation and corrected claim

The complete 0cb4d4fc...main...4df03ba9 branch diff remains 77 files. The complete 2d470d65..4df03ba9 delta is 46 files: the 45 files imported by the disposal change on main, plus the launcher evidence README correction. There is no unexplained extra file or production edit.

  • Compared Git blob identities for all 77 earlier branch-delta files. 75 are identical at the final head, including the wrapper, all three Python drivers, BATS file, baseline wrapper, all three manifests and all 66 historical evidence artifacts. The only exceptions are CHANGELOG's added mainline disposal entry and test/evidence/984-cli-launcher/README.md:35's explicit test-count correction. Both exceptions were inspected in full.
  • Compared every incoming mainline disposal-delta file against target main. All 44 non-CHANGELOG blobs match main exactly. Compared every final branch-delta file except CHANGELOG against first parent 723a6430; all 76 match. The combined CHANGELOG retains both parents' entries.
  • Compared the complete src/ and bin/ delta from the prior reviewed head. Its sole changed source file is src/application/Runtime.ts. The final bytes equal the old file with precisely the 58-byte prefix /// <reference lib="esnext.disposable" preserve="true" /> plus newline prepended. The entire remainder is byte-identical. Old source SHA-256 is a354d66c7e5ea8841dc3b18101a3c95afb7fd7dcc2b99e2080d2e17cf415a921; final source SHA-256 is 950162a4fa7d930c383c3d4cbf645fc3232c5bd4e3a489778a1986f66003467a.
  • Explicitly checked unchanged RuntimeActivity, GitStorage, WarpStorage, RuntimeHarness, RuntimeHarnessHostAdapter, declaration pruning, package runtime roots, publish compiler configuration, package metadata and package lock. The source addition contains no JavaScript statement, symbol replacement, polyfill, cleanup owner, new runtime dependency or compiler configuration override.
  • Commit 723a643029996b5b8aee81e6b9a6c886e88cd10d changes only the one README paragraph. It now says 8,677 passing project tests, and identifies the nested child summary as harness output that is not added as another project suite. The preserved six outer shard counts 304/974/910/3,139/2,100/1,250 still sum to 8,677; the two existing outer skips remain historical. The enclosing test at test/unit/scripts/coverage-completion.test.ts:19 owns the one-pass/one-skip child fixture. This resolves the previous report's wording qualification without altering or recounting the raw evidence.
  • Original wrapper identity remains 24 lines / 691 bytes / SHA-256 a5b51bf07411ae0c9cd53ccdff0a63f6cc6c2a4f149594017a8eaa1055b5dd9a. The baseline remains 27 lines / 817 bytes / c59219529facafaed3f4f7e4c244e1f0d5f305008e06de332e0d7940c9859381. Drivers remain 130, 49 and 86 lines; BATS remains 30 lines. Their previous file-limit, oracle and native-coverage inspections therefore apply unchanged.

The original complete report's 66 historical original/public/archive hash and normalization checks, startup sample recomputation, RED/GREEN qualifications, minimum Node and packed compatibility source coordinates are preserved by these exact blob comparisons. Historical evidence has not been renamed as final-head execution. All original review qualifications about measurement scope, old hosted status, Reader receipt identifiers and pending readiness remain applicable.

Verification Checklist: every production route carried forward

All coordinates below remain valid at the final head unless the Runtime source addition is explicitly reflected.

Route Final-head coordinates and verification
npm / Git executable and installer package.json:22 maps the bin, :54 through :81 selects packed assets; scripts/install-git-warp.sh:207, :208, :219, :232, :253 retain source installation, executable/PATH wiring and git warp --help. All these blobs are unchanged. Installer source was inspected previously; installer execution is not claimed.
Entry resolution, spaces and symlinks bin/git-warp:7 through :12 uses its module URL and built-first/source-second candidates; :20 imports the selected file URL in its current process. scripts/check-cli-launcher.py:43 through :56 tests dist priority, spaced/Unicode arguments, symlink resolution and TypeScript source fallback. The fresh BATS driver passes at the final head.
Missing/import refusal bin/git-warp:14 through :17 retains stderr/status 1 for missing entry; :19 through :24 catches Error and non-Error import rejection, emits stderr/status 1 and does not retry another entry. scripts/check-cli-launcher.py:59 through :69 has distinct oracles for these branches.
Argv, cwd and package location bin/git-warp.ts:30, :31, :159 still scan flags/parse argv.slice(2); argv[1] remains the wrapper. bin/cli/shared.ts:147, :162, :170 discover the package via their own module URLs. The wrapper changes neither cwd nor streams. No new caller tests argv[1] or suppresses main when imported.
All public commands bin/git-warp.ts:164 through :175 dispatches the same registry, and bin/cli/commands/registry.ts:33 through :46 retains write, observe, fork, settle, receipt, doctor, repair, audit and mcp. All dispatch/handler code remains unchanged. The public write route still calls withRuntime and lane.write at bin/cli/commands/write.ts:35 through :42.
Formats and streams bin/git-warp.ts:68 through :83 preserves help/no-command status; :125 through :152 preserves human/JSON/JSONL stdout; CliFailureReporterAdapter.ts:25 through :38 preserves human stderr vs machine stdout and typed status. scripts/check-cli-launcher.py:72 through :75 checks stdin.
Normal completion and failure bin/git-warp.ts:105 through :123, :179 through :188, and :191 retain completion → shutdown → exit, finite-command storage closure and main's own failure callback. bin/cli/lifecycle.ts:12 through :63 preserves output cleanup, operation-first aggregate identity and command-before-storage closure. Wrapper import refusal remains separate from running-command failure reporting.
Signal ownership bin/git-warp.ts:88 through :102 memoizes shutdown and registers SIGINT/SIGTERM on the actual process. scripts/check-cli-launcher.py:90 signals its wrapper PID; scripts/check-cli-failures.py:135 signals the installed command's READY PID. Successful and failing shutdown retain 0/3 status and the respective output rules. Fresh exact-head installed cases exercise both signals in all three formats.
Actual MCP bin/cli/commands/mcp.ts:46 through :67 creates the stdin reader and returns completion/close; :70 through :134 drains pending input work and retains input failures. McpRuntimeSession.ts:42, :185 through :207 retain serialized work, observation/runtime closure and lazy opening with the same repo/writer. Historical actual-MCP readiness/signal witnesses remain preserved; current native command fixtures separately exercise the launcher/reporting integration.
Streaming observation bin/cli/commands/observe.ts:110 through :160 preserves receipt/cancellation/once-only closure; :164 through :193 preserves open-failure cleanup. Neither the new standard-library reference nor the merge changes these paths.
Storage and Runtime cleanup bin/cli/shared.ts:32 through :41, bin/cli/v19/V19Runtime.ts:16 through :47, and final Runtime.ts:89 through :106, :175 through :182 preserve open-error cleanup, finite task cleanup, local-resource close and async-disposal delegation. Detailed lifecycle inspection follows below.
Parallel direct / Docker invocation The unchanged direct source and compiled entries execute unconditional main. docker/Dockerfile.node22:37, its slim equivalent, and test/bats/helpers/setup.bash:7 retain direct compiled entry execution. The new launcher BATS file explicitly tests the installed wrapper, so direct-entry generic BATS success is not substituted for wrapper proof.
Failure bounds and identity CliFailureLimits.ts:2 through :6 still specifies depth 4, nodes 8, message 1,024 UTF-8 bytes, full output 8,192 bytes and internal exit 3. CliFailurePropertyReader.ts:34, :77, CliFailureTraversal.ts:18 through :70, CliFailureProjectionAdapter.ts:58, and CliFailureRedactorAdapter.ts:16 through :47 preserve primary/sibling identity, budgets/cycles, typed status and credential/token/path redaction. Fresh 71-case installed coverage passes through the wrapper.
Packed runtime / declaration roots PackageRuntimeRoots.ts:18 through :24 maps the extensionless wrapper to the compiled CLI root for pruning. PackagePayloadPolicy.ts:5 through :22, :46, and :50 through :52 preserves required assets, executable declaration exclusions and size caps. PrunePrivateDeclarations.ts:9 through :28 roots all five public declarations, checks diagnostics and prunes only unreachable declarations. Actual installed compiler and lifecycle cases cover the emitted artifact.

Current Runtime lifecycle was read in full. Runtime.close() at Runtime.ts:176 returns RuntimeActivity's stored close promise. RuntimeActivity.ts:40 through :55 transitions open → closing → closed, waits for tracked work and awaits storage release, preserving rejection while marking closed in finally. :66 through :71 refuses work after close begins. Runtime.ts:180 delegates Symbol.asyncDispose to that same close path; it does not create another storage shutdown operation. WarpStorage.ts:18 through :24 memoizes storage closure and delegates disposal; GitStorage.ts:24 through :60 attempts CAS and history close and retains failures.

The installed lifecycle fixture uses the real testing composition: testing.ts:17 through :20 → RuntimeHarness.ts:27 through :55 → RuntimeHarnessHostAdapter.ts:10 through :25 → production Runtime.open(). It creates a real temporary Git repository, not a shaped fake Runtime. Harness closure at RuntimeHarness.ts:76 through :85 awaits Runtime close and then removes its owned repository. Native fixture test/type-check/packed-disposable/lifecycle.mjs:5 through :25 checks identical repeated-close promise, repeated disposal, concurrent close/dispose, and E_RUNTIME_CLOSED refusal, then closes its harness in finally. The declaration prefix changes none of these implementations or error/cancellation/restart semantics.

Verification Checklist: all merges and semantic integration

Prior exact-SHA merge audits are retained: 4d0be3fd30b87ced5291f933e3033ae188996148 against 559f4b24... / 528be426...; 26919371e090daa0712c9ad134c29052af4ba588 against 4d0be3fd... / 2b93462f...; and 2d470d655b6603f45f062ed44e5c74fb09d02c4c against 26919371... / 795d32ae.... They preserve the locked-audit, SHA-256 CAS, bounded checkpoint parents, CLI failure and observed-write invariants described in the unchanged complete report. None of their commit objects or resulting non-Runtime implementation blobs changed.

New final merge 4df03ba9c3ef06441872b110a092e40049afdab4 was checked against both full parents:

Incoming disposal branch integration history was also checked against both parents, rather than accepting its merge messages:

Incoming merge Both-parent preservation
b5bde5965c04a5225dd2dfdeda0eff2af42b055c Parents fa9d9d877e424d904798266698554e1822ce0afe / 528be426dff5917490ebbadfdd451fde1d7dd522. Whole tree equals first parent; second-parent delta is 45 disposal files.
c40a244075d4da8b1189e5f6c69bcfbf44a5fd72 Parents b5bde596... / 2b93462f3d9c97cfe0d13f77e181764947febb5e. First-parent delta imports 349 mainline files; second-parent delta is 45 disposal files. All disposal non-CHANGELOG blobs equal first parent; incoming CLI/CAS/checkpoint code is preserved. CHANGELOG retains both sides.
cbf97712730171852a0ddb9fdbd6ef35d1c82dfa Parents c40a2440... / 795d32ae8d02b1929a42b5cb4df4b1f200205c69. First-parent delta imports 334 observed-write files; second-parent delta is 45 disposal files. All disposal non-CHANGELOG blobs equal first parent; observed-write code is preserved. CHANGELOG retains both sides.
0cb4d4fcfbd8da632aadc80aee246837a69dcac2 Parents 795d32ae... / 6dc3d72bb651790c3fa12641d06ac3b9136ec8da. First-parent delta is those 45 disposal files; whole tree equals second parent. No integration-only code rewrite is hidden in the mainline merge.

The final semantic interaction is at the installed CLI's imported Runtime and the consumer's emitted declaration. The standard-library reference is a declaration dependency, not a runtime resource owner. The same module graph continues to instantiate the same Runtime class and call the same close() methods. No duplicate source/dist Runtime instance, mismatched symbol identity or altered failure projection is introduced. Native final-head launcher/failure/lifecycle witnesses and strict installed compiler cases below check these actual boundaries. Graph, CRDT, durable identity, journal/frontier, retained parent and ref-CAS implementations remain the mainline bytes; this addendum does not claim a new independent execution campaign for those unchanged algorithms.

Verification Checklist: declaration routes, fixtures, constants and figures

The only production disposal addition is Runtime.ts:1, a preserved narrow esnext.disposable standard-library reference. index.ts:13 and :19 expose Runtime's declaration; testing.ts:17 and RuntimeHarness.ts:1/:18 expose a Runtime-bearing testing type. Advanced, diagnostics and charts remain separate supported entrypoints, and the combined fixture imports root and advanced together. All five public entrypoints correspond to PublicPackageEntrypoints.ts:3 through :9 and the unchanged package export map.

tsconfig.publish.json emits declarations and rewrites relative TypeScript import extensions while including the five public roots and CLI. The preserved reference travels into the installed dist/src/application/Runtime.d.ts; it does not require a broad consumer ESNext library override or skipLibCheck. scripts/check-packed-disposable.sh:22 explicitly verifies the emitted narrow reference in the installed package. Source comments alone were not treated as emission proof: the full script passes on the final actual installed artifact.

Every new disposal fixture/config was read in full. The shared tsconfig.base.json uses ES2022, NodeNext module/resolution, ES2022/DOM/DOM.Iterable libraries, types: [], strict mode, exact optional properties, unchecked-index checking, skipLibCheck: false, noEmit, and no source alias. Eight cases are explicit at scripts/check-packed-disposable.sh:14: root-close, root-dispose, advanced, combined, explicit-disposable, testing, diagnostics, charts. The explicit-disposable control adds only ESNext.Disposable, not broad ESNext. Other cases receive that required narrow library from their installed Runtime declaration when reached. The exercised compiler is TypeScript 5.9.3; no untested universal compiler-version guarantee is inferred.

The script is 29 lines, fails on any failed compiler case or missing emitted reference, independently runs three native lifecycle modes, and returns the combined failure status. Docker admission is at :3. Installation uses zero retries and a 15,000-ms fetch timeout at :11; the script's aggregate process deadline and output/storage budgets come from the outer guarded runner. Its EXIT trap removes its owned package/consumer scratch. The lifecycle harness's own temporary repository stays under Node's TMPDIR-backed host adapter. No host fixture or benchmark was executed by this reviewer.

Incoming evidence test/evidence/981-disposable-consumer/README.md and docs/operations/package-payload.md:11 were checked against code and raw receipts:

  • Baseline Runtime, all five source entrypoints, base and publish compiler configuration have equal bytes at 5c82ba6c and main/v20.0.0 ceb58e65, as the historical source claim states. The initial installed compiler probe records TS2550 at Runtime.d.ts line 30 with TypeScript 5.9.3. The historical portable matrix records root-close/root-dispose/combined failure, root-dispose consumer symbol errors, advanced and explicit-disposable control success.
  • Historical payload baseline 746,177 / 3,257,290 / 971 and narrow-reference candidate 746,269 / 3,257,406 / 971 match raw logs. The +116 unpacked bytes correspond to retained reference comments in JavaScript and declaration output, not new executable statements. They remain historical coordinates, not final-head measurements.
  • Historical GREEN v1 exits 1 because the container lacks rg after eight compiler passes. V2 exits 0 with compiler/lifecycle passes but retains its ignored-file lint warning; it is not used as warning-free lint proof. V3 exits 0 and records explicit source/fixture lint, all eight compiler cases and three lifecycle passes. Runtime-parity v1 exits 1 before comparison because of console/no-undef. None is silently converted into another result.
  • Runtime-parity v2 strips only the recorded reference prefix in its copied guest source, compiles a separate bounded baseline output and compares generated JavaScript after removing that same single comment. Its raw log records baseline JS SHA-256 b54207d16ecb141d9e79b3785f6561363fc5779f04434439fc86002d3385b3d9 and candidate 532e9cd708bc36a84ec4987d7c0ee3831f3078d6a959b19a87dc8eaaa8902716, with comment_removed=True. This is the identified historical controlled comparison, not a claim that its guest source remained unmodified. The current source's prefix-only byte equality independently preserves that narrow semantic conclusion.
  • The historical matrix resource figures 50,536,448 runtime bytes, 50,917,376 generated nonobject bytes, 1,960,185,856 build bytes and 27 tasks match its resource receipt. Mainline merge/pause and Reader UUID statements are historical provenance, not new live observations.
  • The incoming manifest contains 21 artifacts across seven phases. Each original receipt hash, normalized public payload hash and compressed archive hash where declared was mechanically verified, including byte-for-byte sole container-home normalization. The README's numeric/code/hash claims agree with these raw artifacts. All pre-existing launcher manifests and measurements retain their earlier verified identities.

No source schema, broad compiler lib, engine floor, output limit, symbol, package dependency, runtime cleanup or identity invariant is weakened. Manual SSJS scorecard remains all six green: no new domain model; boundary standard-library dependency is explicit; Runtime still owns its existing behavior; no message parsing controls behavior; no domain time/entropy added; no cast or fake shape trust added. The annotation is type-only, not a runtime refactor. The wrapper's full executed-segment coverage remains separate. Policy documents previously read are unchanged; git diff --check is clean.

Verification Checklist: fresh final source and execution identity

Primary execution receipts are retained at receipts/launcher-main-984-v3/{launch.json,resources.json,console.log} in the external validation bundle. The source base is exactly 4df03ba9c3ef06441872b110a092e40049afdab4, with no baseline override. The command is npm run build --silent && bats test/bats/cli-launcher.bats && python3 scripts/check-cli-failures.py && bash scripts/check-packed-disposable.sh.

I reconstructed the clean author input using the same Python 3.9.6 tarfile/PAX algorithm and sorted tracked/nonignored source selection. It exactly reproduces 24,371,200 bytes / 3,305 entries / SHA-256 4c8d1113a75738469a641887bbb30c661386828d6f40b4811a8c41d3e80081c5. This is a content-and-metadata match to the launch input, not an assumption from its source-base label or a substitute Git archive.

Fresh artifact SHA-256
launcher-main-984-v3/launch.json 8d72b2d4b9559023eadd3d9dcb36286f0f20dc1bc479516b27b617bb1d6352b3
launcher-main-984-v3/resources.json 1e6e2f6c4f7deeddc10ffb2f9738e5cad2c54c8ca75d09160ddf1d33e5b0c18e
launcher-main-984-v3/console.log 6378492d7f02b36e2e7f8d9732ce9be2cfde4386739c8d7504001800b54793c1

Terminal result is exit 0, guard error null. Both launcher BATS tests pass. Native installed CLI cases cover 30 failure scenarios/formats, 12 signal scenarios/formats, five usage cases and 24 completion/output cases: 71 executions. I independently recomputed the raw selected-report array: 71 reports, 87 segments, uncovered []. All eight installed compiler cases and three real installed lifecycle cases pass. Source inspection is still distinct from primary execution: this reviewer ran none of those tests.

Both fresh package checks record 755,810 compressed bytes / 3,295,487 unpacked bytes / 993 entries. Against unchanged caps 760,000 / 3,300,000 / 1,050, remaining headroom is 4,190 / 4,513 / 57. Compared with prior exact-head v2, the measured changes are +88 compressed bytes, +116 unpacked bytes, and no entry-count change. Neither the old 746,123-byte artifact nor the prior 755,722-byte v2 measurement is represented as the final artifact.

Fresh v3 reuses the same image sha256:9f145953f6e79a59749a683d11a476133cb7cef0588b79256dc195b1d0c87ad7 and unpaused guard 5e394e53a986ce05c03852dfdc80c99e1e9ba78226fec0045eb57b6a5c4bd71b under the canonical workstation key host/docker/git-warp-tests/. Budget and process limits remain 20 GiB monitored build, 3 GiB runtime tmpfs within 4 GiB aggregate data, 96 MiB generated nonobject, 16 MiB phase stdout within 128 MiB project logs, four CPUs, 8 GiB memory/swap, 768 tasks, 1,700-second inner and 1,750-second outer deadlines, and 50 GiB host/backing free-space floors. Existing bounded tmpfs/read-only-root/rotated-log/COPY/accounting/child termination mechanisms are unchanged. The build monitor is not a filesystem quota.

Launch free-space values are host 709,758,906,368 bytes and VM 674,554,175,488 bytes; the latter is its measured minimum. Peaks are build 2,359,496,704, runtime 61,313,024, generated nonobject 61,800,448, stdout 167,664 bytes, and 24 tasks. It records zero workload measurement pauses and no PID/OOM limit events. Those are this focused phase's figures, not aggregate maxima of the subsequent broader validation.

The pre-commit retry receipt precommit-984-E2C707C0-C9E1-43E6-8759-96C468235ED6 records exit 0 / null guard. Its source-base label is first parent 723a6430, while its actual source snapshot already contains the staged incoming merge and has the same 4c8d1113... archive as final v3. Its exact command is the hook's fixture-targeted ESLint with --no-warn-ignored; it is a limited hook witness, not an assertion that every fixture was explicitly linted by that command. The older disposal v3 receipt separately records explicit --no-ignore fixture lint on identical fixture bytes. The parent's initial missing-jiti host-hook setup failure is reported context, not a Docker runtime regression or an extra successful gate. No review action bypassed a hook or changed configuration.

Verification Checklist: current static success and remaining gates

All nine final-head static invocation receipts were inspected. Every one binds source 4df03ba9... and the exact 4c8d1113... archive, with terminal exit 0 / null guard. They use the shared guarded worker serially. These are actual primary executions, not inherited old-head successes.

Command Exact phase
lint prepush-984-6EAB3302-9149-44CE-97D1-29BCA5CF20DD
lint:md prepush-984-DDFFE833-5E5E-48D8-8A8E-26449779CC54
lint:docs-topology prepush-984-1B109C35-29F7-4196-944C-D62F170A0B97
typecheck:surface prepush-984-95EEF039-C801-4155-8644-71EF6D5955B9
lint:md:code prepush-984-127AF2EF-9515-4142-8C95-3C6456A12D23
typecheck:policy prepush-984-06FCEA17-D055-48FF-83C1-C4D38448FA1E
typecheck:consumer prepush-984-1E0F3821-A87B-4EE0-B731-48CA0D0663F9
typecheck:src prepush-984-360254D5-D395-467B-BA72-1AC038CD9596
typecheck:test prepush-984-1F994AB0-DEEF-47FA-B281-F17C175F8D4D

The raw surface result records zero errors and warnings. Markdown code checking records 89 files, and Mermaid checking records 51 diagrams in eight files. The lint invocation includes test law, source-size, CAS ownership and machine-path subchecks; policy records 0/0 wildcards. These are nine top-level invocations, not a new invented count of hosted validation lanes.

The final broad unit invocation prepush-984-86500A05-BDDF-41BE-B3CA-A89ED9C5CE34 subsequently completed, and its terminal launch/resource/raw-console receipts were inspected before closing this addendum. It binds the same final head, archive, image and guard, with exit 0 / guard error null. Six outer summaries at raw console lines 73, 183, 409, 687, 844 and 950 record 305 + 1,045 + 910 + 3,152 + 2,138 + 1,268 = 8,818 passing project tests, with two existing outer skips. The one-pass/one-skip nested child summary at lines 294–295 is still harness output and is not added as another project suite. This is current-head broad completion, distinct from the historical 8,677-test count.

The unit raw console is 115,596 bytes with SHA-256 e137d20cd77852c10527fbdcf7cbcd34dca9f855bab854b4ca6c65b41fe69c05; launch receipt SHA-256 is d028803f5f7a21f4809ee2e1a33fd5fb1fba3d0d5b42f6155d0632b649a45c43; resource receipt SHA-256 is 49c491619623f3b519c28edb16b4a34fc4b55e6b7829ba3fd2d88b0d8f0f28e5. Unit phase peaks are 2,358,841,344 build bytes, 29,057,024 runtime /data bytes, 106,496 home bytes, 4,096 /tmp bytes, 28,610,560 generated nonobject bytes and 195 tasks. It records zero measurement pauses and no PID/OOM limit events; measured minimum VM free is 674,555,322,368 bytes. These remain phase-scoped values, not sums of shared image sizes or a new quota claim.

Current hosted checks, final PR/issue metadata, release gates and merge authorization were not queried or completed by this reviewer. The parent reports fresh CI 37753320178 and link run 37753320182 in progress; those reported run identifiers are not terminal hosted success evidence. The old 20-hosted-name, 50-BATS and coverage figures remain pinned historical evidence. All nine static invocations and the current 8,818-test broad run are complete; hosted and any other required readiness gates remain separate.

Execution and coverage boundaries

Executed by this reviewer: read-only Git history/diff/blob comparisons; exact source PAX reconstruction in memory; JSON/gzip/hash/normalization checks for incoming evidence; numeric arithmetic; native selected-range recomputation; source and receipt reads; and whitespace inspection. The original full report is unchanged and its source/evidence checklist is carried explicitly above.

Inspected primary execution: final source-bound build/launcher/71-case failure/disposal compiler/native lifecycle phase, all nine current-head static invocations, terminal 8,818-test broad unit run, pre-commit retry, and the seven historical incoming disposal phases. Unchanged prior 66 artifacts were not redundantly rerun or relabeled; their exact byte identity preserves the previous inspection.

Excluded: this reviewer's own tests/builds/containers/installations/benchmarks, GitHub and Reader operations, and source/ref mutations. No physical power-loss, device/config change, or cold-disk performance result is claimed. All mandatory launcher source, declaration/lifecycle integration, both-parent merge, preservation, relevant constants/figures and raw-evidence identity areas were reviewed. Remaining hosted and other readiness gates are the parent's active validation responsibility, not an uninspected source area or fabricated pass.

APPROVE

@flyingrobots

Copy link
Copy Markdown
Member Author

Code Lawyer Activity Summary — exact head 4df03ba9c3ef06441872b110a092e40049afdab4

Item Source / scope Files / commit Validation Outcome
Installed wrapper starts a second Node Issue984 / production bin/git-warp,4df03ba9 Native installed RED sees two starts; GREEN sees one for help/doctor/JSON-failure/usage with preserved0/3/3/1 statuses Fixed
Entry/stream/shutdown boundaries Independent review Wrapper and actual compiled CLI paths Built/source selection,spaces,symlink,Unicode argv,stdin/stdout/stderr,missing/load refusal,both exact-PID signals; complete native wrapper segments Verified
Current-main integration Both-parent source audit Four feature merges plus incoming981 merges Every incoming source blob preserved; one narrow Runtime reference and all declaration/lifecycle paths checked; all changelog entries retained Verified
Historical unit wording Evidence accuracy README:35,723a6430 Six outer project test totals8677; nested child fixture is harness output,not an added suite Clarified without changing raw measurements
Hosted TMPDIR regression Prior verified finding BATS setup Parent RED reproduces unset TMPDIR KeyError; owned BATS_TEST_TMPDIR GREEN; current installed BATS tests pass Resolved; no environment bypass
Final focused integration Guarded Docker Exact4df03ba9 Both launcher BATS,71 installed CLI failure/completion/signal cases,8 strict disposal compiler cases,3 installed lifecycle cases; native CLI87segments/uncovered[] Pass
Local full chain Real pre-push Docker Exact4df03ba9 All9 statics and8818 project tests,two existing skips; nested probe excluded; all51 diagrams render Pass
Independent review User-authorized separate Codex Exact4df03ba9 Complete final six-part Verification Checklist APPROVE, source/hash/merge/claim/error/lifecycle audit, all raw scopes reconciled Pass
Hosted required gates GitHub Actions CI37753320178 and links37753320182 All seven protected contexts successful Pass
Payload Actual final packed artifact Exact4df03ba9 755810 compressed/3295487 unpacked/993 entries under unchanged760000/3300000/1050 caps Pass

Full original/final independent reports are delivered intact to Reader receiptsbc8c9c0a-5cb2-4fa9-b1a9-35977f1e0d26 and76e2c09f-c72f-4bd1-91ec-ad0155340e5c and posted in full. One earlier public copy normalizes the raw container-home label and is explicitly marked as normalized; original bytes/hash remain in Reader. No quota refusal or bot status is counted as approval. No unresolved actionable thread or active changes-requested review remains after exhaustive connection collection.

Setup failure: initial merge-commit hook omitted the established Docker shim and failed missing-jiti host configuration loading. The same staged merge passed the real guarded Docker hook on retry; no hook/source/config/assertion was bypassed or weakened. This failure is distinct from a runtime regression.

Limits: reviewers inspected author-executed evidence and ran no tests. Startup samples use shared caches and old paused census; one p99 worsened,so no universal/cold-disk/all-tail improvement is claimed. Native segment coverage is separate from four-metric Vitest coverage. Historical minimumNode22.0/22.18 and compatibility receipts retain their original source scopes. No physical power-loss proof or release publication is claimed. Build storage is monitored,not quota-backed; owned worker stopped after bounded phases.

MERGE GATE: OPEN. Current main is included,all required contexts pass,independent exact-head approval is effective,and feedback is resolved or explicitly reconciled. Normal merging was already authorized. Match the checked head without bypass; verify resulting main tree and issue closure.

@flyingrobots
flyingrobots merged commit b2133e0 into main Oct 8, 2026
23 checks passed
@flyingrobots
flyingrobots deleted the fix/984-single-node-launcher branch October 8, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove the extra Node process from the installed CLI launcher

1 participant