Repository navigation
v0.2.53.0 fix: a stopped or retried server run does only what it reports, and what the chat reads about it is true - #144
Merged
Merged
Conversation
…e, one request limit, skill 1.0.52 (Issue #143)
…folder alone never authorizes a signal, and a pause during the detach is ended (Issue #143)
… the stopped-watch message replaces it (Issue #143)
# Conflicts: # extension/README.md
…ll-bound assertions name why their bounds are the contract (Issue #143) nodeServerJournalBounds.test.ts kept a debugging console.log and no fixed expectation (task 11 asks for a hard-coded byte count): it now asserts the 4,190,377 kept bytes two full runs measured, beside the upper bound. launchNodeServer.test.ts: gstack-timing-ok notes on the SIGKILL bound and the SIGTERM-before-SIGKILL order (comments only). Refs #143
- The LLM Wiki view keeps its message only while this window's marker settles: the own live marker counts as settling for 10 s after the run's end (the first retry of a failed marker change), and the view polls while it keeps a message, so a marker left standing never keeps "watching the chat" on screen (core review and red team). - A late pause during a stop's detach is ended only while that release's close is under way and the group still has members: a retry's identity check that answers after the close returned, or a group that already ended, signals nothing (state-machines specialist, red team). - The orphan record's cwd field says why it stays: no identity input, kept so records parse in every version (maintainability specialist). - The coverage audit's facts test now covers the bounded settle.
The LLM Wiki view keeps its message exactly while this window's change of its marker is pending (from the turn the run's end is recorded until the change is made or given up, retries included), instead of for 10 s after the run's end: a first change that failed no longer empties the message before its retry turns the marker into the reservation, and a change given up still clears it, through the view's own read at that end. The extra poll of pass 1 is gone (red team, pass 2).
…real start (Refs #143)
- A retried stop confirms the group again before SIGKILL: the second identity check starts NODE_SERVER_KILL_CHECK_LEAD_MS (1 s) before the kill bound, so SIGKILL goes only to a group confirmed then and still lands by the bound; a group found replaced gets nothing, and a check that has not answered by the bound sends nothing and fails the close (Codex structured P1, Codex adversarial High). - The VS Code debugger reports a stop of the bound session that arrives after its release began in the turn it arrives, so a `continued` from the detach cannot drop it before the run ends the group (Codex adversarial). - The LLM Wiki facts judge this window's marker settle in the same turn as the run facts, so a run that ends during the read keeps the view's message (Codex adversarial). - A response body that cannot be prepared for display says that the server answered and with which HTTP status (Claude adversarial).
… and the delivered version (Refs #143)
Co-Authored-By: Claude <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the
|
…s message once the run ended during the read (local CodeRabbit CLI, Refs #143)
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Cycle 0057 shipped live explanation of a repository's own Node HTTP server, and its review left 13 defects that this bug-fix cycle closes (Refs #143). Stopping a server could record a SIGKILL it never sent, retry a signal on a process identified by its folder alone, or let a pause during the debugger's release run on until SIGTERM. The chat could read a GET described as changing nothing, a
… n more bytescount taken from two different texts, and a 15-minute limit that never fires. With the database down it named no cause, and the LLM Wiki view's message flickered empty when a watch stopped.Now a stop signals only the process group it started, confirmed by its start time before SIGTERM and again just before SIGKILL, which still lands within 5 s. It journals exactly what it sent and ends a server that pauses during the release at once. The tool text, help and packaged README say what the run really does. Skill 1.0.52 makes the chat read the run's output before it attributes a failure; in the N58 trial it named a refused database connection as observed output. The Wiki view keeps its message until the next one replaces it.
Blast radius
The changes stay inside the
node-serverrun (launcher close, identity check, orphan sweep, VS Code debugger, request sender), its help and tool text, the bundled skill text and the LLM Wiki view's message. Browser and test runs, saved studies, replays and stored formats are untouched. The orphan record keeps its schema (itscwdfield stays so records parse across versions), and the MCP API stays 1.8. Evidence: the full suite (7,920 tests) and the package tests pass on the final head, and the pinned-clone real-process tests pass 4/4 againstlaststance/switch-timeandlaststance/nsxwith their databases (script ran).Test Coverage
All new code paths have test coverage: every task closed red first (the fixed source swapped back fails its test), and every review fix after that too.
Tests: 7,911 → 7,920 on the full suite (+9 from the review fixes; the cycle's parts added the rest before
/ship).Coverage: 100% value-weighted (100% including 0 weakly covered paths)
Test value: 0 tests written, 1 rejected by the authoring gate, 1 existing test extended, 0 paths weakly covered.
Tests ran: tests count unavailable (runner summary on the final head: 7,921 tests, 7,911 pass, 0 fail, 10 skipped)
Pre-Landing Review
Three review passes, each fixing every finding (a bug-fix cycle answers none Skip), reaching the ship review limit with
converged:false:cwddoc.continued(now reported at once) and a Wiki facts read mixing two moments (now judged in one turn). The Claude adversarial pass led to a clearer message for a body that cannot be shown. All were reproduced red before the fix.Every last-round finding is fixed, and no Critical or Major defect stays open, so no Issue records one. The local CodeRabbit CLI then found one more minor finding on the final range, fixed red first (
0ca807e1); its rerun found none.REVIEW_LOOP: 3 passes, converged:false (ship review limit), all findings fixed.
Gate edits: 51 listed, 31 read, 0 findings (patterns: RH-1,RH-3,RH-4,RH-12,RH-13,RH-14,RH-15,RH-16; unlisted idioms: none)
extension/src/ownedNodeServerRun.ts: kept. The late SIGKILL's catch is best effort; the close's own SIGTERM and SIGKILL sequence still ends the group.Outside review: Codex (structured and adversarial) completed; its findings are fixed above.
Exploratory QA
Functional smoke on each review pass, through the repository's own compiled tests (no editor, no database): the launcher's real fixture server, the run's host harness and the Wiki view with the real facts reader passed on every pass. The native editor check N58 passed on the pre-review candidate
6473c5c3in VS Code (details in #143); it did not run again on the review fixes.Design Review
No frontend files changed — design review skipped.
Eval Results
No prompt-related files changed — evals skipped. The bundled skill's text changed (1.0.52); its tests and the N58 native check cover it.
Scope Drift
Scope Check: CLEAN (tasks 1–14 of #143; the review fixes stay inside them).
Plan Completion
Tasks 1–13 done, each with a red-first test; task 14 (N58) PASS on
6473c5c3. The 15-check exact-HEAD gate and the local CodeRabbit CLI passed on the final head (below).Linked Spec
Linked to #143 (the cycle Issue; closed by hand after merge with its closing comment). Spec archive:
20261028-065450-32319-cycle-0058-a-stopped-or-retried-server-run-does-only-what-it.md, filed 2026-10-28.Issues
Refs #143
Verification Results
On the final head
ad13920c:0ca807e1; the rerun on that tree found 0.ad13920chas the same tree.afbf15ff; the run and launcher are unchanged since.The Node 26.12.1 pin bump (the owner's commit
12672469) landed on this branch. On it, CI's health check refused (its reference pins Node 24.21.0) and four tests failed on Node 26. On the owner's decision it is kept unchanged on its own draft PR #145, where the Node 26 migration happens, and reverted here (ad13920c), so this PR merges on the verified Node 24.21.0.TODOS
No TODO items completed in this PR.
Documentation
Status: updated. One factual edit, no blockers.
Scope: base 333c781 through the committed, staged and unstaged tree of codex/cycle-0058 (CHANGELOG.md, VERSION, extension/README.md, extension/package.json, constants.ts, protocol.ts, nodeServerHelp.ts, skill 1.0.52 and tests), plus the spec .gstack/tmp/c58/issue-body.md. Discovery covered root README.md, AGENTS.md, PRODUCT_GOAL.md, docs/agents/*.md, extension/README.md and extension/skills/codebook/SKILL.md; fixtures were excluded.
Documentation health:
killed, orphan keep and report, STALE_PAUSE on continue while stopping, one request time limit with RUNTIME_FAILED, the GET sentence, remainder byte count, REQUEST_FAILED message, skill 1.0.52, LLM Wiki view message) and matches the code read (protocol.ts, nodeServerHelp.ts, sendDeclaredRequest.ts, constants.ts).Coverage debt: none; all shipped behaviors have reference coverage in extension/README.md, the node-server help resource and the CHANGELOG. No how-to or tutorial pages were required for this bug-fix cycle. Diagram drift: none; no architecture diagrams in the audited docs.
Test plan
cd extension && corepack pnpm test: 7,921 tests, 7,911 pass, 0 fail, 10 skipped (gate onad13920c)cd extension && corepack pnpm test:package: 1,081 tests, 1,071 pass, 0 fail, 10 skippedCODEBOOK_NODE_SERVER_CLONES=… node --test extension/dist/tests/ownedNodeServerRun.pinnedClones.test.js: 4/4 passnode extension/scripts/package.mjs+check-package.mjs: exit 0ad13920c: every check exit 0ad13920c(merge waits for it)🤖 Generated with Claude Code