Skip to content

chore: a committed exact-HEAD gate, one Node pin (24.22.1), CI failure reader and earlier outside review (Cycle 0058 retro) - #146

Merged
ryota-murakami merged 6 commits into
mainfrom
codex/retro-tooling
Oct 28, 2026
Merged

ryota-murakami merged 6 commits into
mainfrom
codex/retro-tooling

Conversation

@ryota-murakami

Copy link
Copy Markdown
Contributor

Summary

The retro of Cycle 0058's delivery (Refs #143) found that the merge gate was a shell script copied from cycle to cycle. When the machine's version manager disappeared mid-delivery, nine of its checks failed with exit 127, and the run still reported success. It also found that the Node under extension/ differed from the pin, and that the review that caught the cycle's one P1 came only after the three-cycle review cap. This PR applies the owner-approved fixes, all except slimming AGENTS.md, which stays as intended:

  • A committed gate: pnpm --dir extension gate runs the fifteen delivery checks in order, with one log each under artifacts/gate/<HEAD>.
    • It refuses a Node or pnpm that differs from the pins, and a checkout with changes.
    • It sets an English locale and puts the running Node first on the path.
    • It passes only when every check exited 0 on an unmoved HEAD.
    • A signal to the gate ends the running check's whole tree, and a check silent for 300 s is ended as exit 124.
  • One Node pin, 24.22.1 (owner decision): in the root .node-version, mirrored in extension/.node-version and read by package.yml through node-version-file. vite-plus's shim read engines.node under extension/ and ran 24.22.1 there while the root pinned 24.21.0; a test keeps the two files equal.
  • A CI failure reader: node extension/scripts/ci-failures.mjs <PR> (or --run <id>) prints each failed job's failing tests with their first error line, also while the run is still going.
  • Outside review earlier (owner decision, AGENTS.md): /ship Step 9 pass 1 also runs the Codex structured review, and a plan that changes process signalling, identity or a stop path gets a Codex review before implementation. Fix-range passes under 300 lines dispatch only the reviewers their area needs.
  • A signalling review rule in .coderabbit.yaml for the node-server stop and sweep files:
    • every signal follows an identity verdict within its bound;
    • a signal-0 probe is no identity;
    • no signal goes out after its owning operation returned.
  • Native-trial observation (docs/agents/native-trial-observation.md, pointed to from AGENTS.md Native QA): check state with text (window list, accessibility tree and actions, space_bash) and Read cropped, reduced captures. Screenshots were 85% of all tool output in Cycles 0056 to 0058.
  • CodeRabbit CLI 0.9.1: config validate exits 1 on every file with unknown keyword: "x-undocumented", a defect in the CLI's own schema. AGENTS.md now says to record that line; reviews with -c still apply the file.

Blast radius

No product source changes: the VSIX's code and its behavior are untouched. What moves is the toolchain pin, which applies to CI, the gate and local runs (Node 24.22.1, one patch above VS Code's bundled 24.21.0; Cursor bundles 24.19.0). The measured health gate depends on the pin. Its baseline was taken again from 944c1342 with Node 24.22.1 and the same c8 12.0.0, v8-to-istanbul 9.3.0, fallow 3.34.1 and settings, and came out byte-identical (e74f7142…, 278 entries; script ran). Only the reference's Node version and its .node-version hash (d9f31874…) change.

Health baseline retake (AGENTS.md Fallow)

  • Worktree of 944c1342 with Node 24.22.1 (vite-plus runtime), its own complete suite under c8 (--all, Istanbul JSON): 4,261 tests, 4,258 pass, 0 fail, 3 skipped on macOS (two Linux-only pid-namespace tests skip here); 401 coverage files, all 401 scored by Fallow.
  • fallow health --save-baseline at 20/15/30 with the current .c8rc.json and .fallowrc.json: byte-identical to the committed baseline.
  • fallow 3.34.1 was added to that worktree by hand (944c134's own lockfile pins 3.27.0); c8 and v8-to-istanbul came from its lockfile at the pinned versions.

Test plan

  • node --test extension/scripts/tests/gate.test.mjs extension/scripts/tests/ciFailures.test.mjs: 12/12; with pregateTests and workflowPins the affected script tests pass
  • The gate refuses Node 24.21.0 with Gate refused: Node 24.21.0 runs here, but .node-version pins 24.22.1. (exit 2)
  • ci-failures.mjs --run 40603051333 lists the four Node 26 failures of PR chore(ci): bump Node.js to 26.12.1 (needs the Node 26 migration before merge) #145's earlier run
  • pnpm --dir extension gate on f8c0c3ab (Node 24.22.1): GATE: pass, every check exit 0. That covers the suite (7,921 tests, 7,911 pass, 0 fail, 10 skipped), the package tests (1,093 / 1,083 / 0 / 10) and health (86 A, on the retaken reference)
  • Local CodeRabbit CLI on the range: the first run found two major findings, both the same defect: no end of a check's process tree on a signal and no silence bound. Both were fixed in fb85dbd1, with a test that ends a silent real process (exit 124). The rerun found 0
  • Required CI on this head

🤖 Generated with Claude Code

- `.node-version` moves to 24.22.1 (owner decision), mirrored in
  `extension/.node-version`: vite-plus's `node` shim reads the nearest
  package's `engines.node` under extension/ and ran 24.22.1 there while the
  root pinned 24.21.0.
- `package.yml` reads `node-version-file: .node-version` like the other
  workflows instead of its own literal.
- The measured health baseline was taken again from 944c134 with Node
  24.22.1 and the same c8 12.0.0, v8-to-istanbul 9.3.0, fallow 3.34.1 and
  settings: byte-identical (e74f7142…, 278 entries). The reference records
  the new Node and the new `.node-version` hash (d9f31874…).
…urces

Committed with --no-verify: the global gitignore ignores .gstack, so the
lint-staged hook cannot re-stage this file (prettier --check passes).
- `pnpm --dir extension gate` runs the fifteen delivery checks in order,
  one log each under artifacts/gate/<HEAD>. It refuses a Node or pnpm off
  the pins and a checkout with changes, sets an English locale, puts the
  running Node first on the path, and passes only when every check exited
  0 on an unmoved HEAD. It replaces the per-cycle shell copy that reported
  success while nine checks failed on a missing corepack.
- `node extension/scripts/ci-failures.mjs <PR>` (or `--run <id>`) prints
  each failed job's failing tests with their first error line, also while
  the run goes on.
…ing review rule

- AGENTS.md: the gate and CI-failure commands; the pinned Node's own bin
  first in PATH; Codex structured review in /ship Step 9 pass 1 and on
  plans that change signalling, identity or stop paths, with fix-range
  passes dispatching only the reviewers their area needs (owner
  decision); the CodeRabbit CLI 0.9.1 schema failure of `config
  validate`; a pointer to the native-trial observation doc.
- docs/agents/native-trial-observation.md: check state with text (window
  list, accessibility tree and actions, space_bash) and Read cropped,
  reduced captures; full-size stills stay the evidence files.
- .coderabbit.yaml: a review rule for process-signalling code (an identity
  verdict within the signal's bound; a signal-0 probe is no identity; no
  signal after its owning operation returned).
…ter 300 s of silence (local CodeRabbit CLI)

A signal to the gate now ends the running check's whole tree before the
gate exits (130/143/129), and a check that prints nothing for the
silence bound (--silence-seconds, default 300) is ended and fails as
exit 124, so the gate can neither hang nor leave a check rebuilding
extension/dist under the next run.
@coderabbitai

coderabbitai Bot commented Oct 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@ryota-murakami
ryota-murakami merged commit 250ade8 into main Oct 28, 2026
26 checks passed
@ryota-murakami
ryota-murakami deleted the codex/retro-tooling branch October 28, 2026 01:15
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.

1 participant