Repository navigation
mcporter 0.14.1 cutover record corrected (leftover 0.13.13 daemon retired); socraticode mixed-version procedure - #345
Merged
seathatflowsinourveins merged 7 commits intoSep 26, 2026
Conversation
…retired); socraticode mixed-version procedure - The mcporter cutover record said no daemon ran at the switch and that a 0.14.1 daemon started afterwards. In fact the coordinator's pre-switch baseline call through 0.13.13 auto-started a 0.13.13 daemon on the production socket at 20:09:44Z, and it served 0.14.1 clients until 2026-09-26. It was drained and stopped with the native 'mcporter daemon stop', and a production call started a 0.14.1 daemon (retire.txt). Adds a receipt addendum and a dated correction in the decision record. - socraticode 1.15.0: a pinned source review of v1.14.0 and v1.15.0 found the coordination code byte-identical, with two mixed-version effects: graph flip-flop (strict version inequality) and an in-process-only generation-cleanup race. It also records a coordinated cutover procedure. The deferral to 2026-10-01T11:01Z stands. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
- Attribute to the coordinator's unretained records two things the retained output doesn't show: which call started the daemon, and that its children were socraticode 1.14.0. - Narrow the watcher and write guarantees to what the lock actually protects: operations that go through the lock, within one lock directory. - codebase_stop: cooperative cancel locally, SIGTERM only for another process's lock. - proper-lockfile: a stale directory is removed at the next acquisition and does not vanish on its own. Step 4 of the procedure now waits on live holders, not on directory absence. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… residual) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ow-up files Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
deleted the
claude/mcporter-daemon-correction-20260926
branch
September 26, 2026 16:39
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.
What
This PR is on hold for the v2026.09.26.1 release window, until session 9a sends WINDOW DONE. It edits
evidence/receipts/mcporter-0141-qualification-20260925.json, whichrelease_duetracks.1. mcporter 0.14.1: cutover record corrected, leftover 0.13.13 daemon retired
The 2026-09-25 cutover record said two things that were wrong:
On 2026-09-26 a read-only check found PID 129979 still running
tools/mcporter-0.13.13 … daemon start --foregroundon the production socket~/.mcporter/daemon/user.sock, whilebin/mcporternamed 0.14.1:startedAtwas 20:09:44Z on 09-25;The coordinator's session record gives the cause, though the record itself is not retained. My own pre-switch baseline call,
mcporter list socraticode, went through 0.13.13 at 20:09:43.395Z, in the same command as the relink. That was after a 20:09:11Z precondition check had found no daemon. So the precondition was stale by the time of the switch.evidence/artifacts/mcporter-0141-daemon-correction-20260926/retire.txt.activeCallssummed to 0.mcporter daemon stopthrough 0.14.1 exited 0. The PID, its two children and the socket were then gone.call socraticode.codebase_healthexited 0 and started PID 744797 ontools/mcporter-0.14.1, which is now the only mcporter daemon process.limitations[4]("a mixed-version daemon cutover" not exercised) still holds. This was a retirement, not a qualification of mixed-version operation.2. socraticode 1.15.0: mixed-version source review and cutover procedure
This adds a dated update to the socraticode section of
docs/decisions/2026-09-25-workstation-sota-refresh.md. It is a pinned source review at v1.14.0 (2218f251) and v1.15.0 (f6191f07); nothing was run.lock.ts,watcher.ts,indexer.ts,graph-inputs.ts,graph-analysis.ts,code-graph.ts,symbol-graph-store.tsandstartup.ts.proper-lockfiledirectories underos.tmpdir()/socraticode-locks. They go stale after 120 s, refresh every 30 s and are not retried. There is one watcher per project, whatever its version. Mixing versions causes no lock stealing and no duplicate writes.graph-inputs.ts:609checks the builder's version with a strict inequality, so each version rebuilds a graph the other built.coordinateProject, an in-memory promise chain). A server that starts during another's build may delete that build's staging generation. This comes from reading the code and was not reproduced;codebase_graph_buildrecovers from it.codebase_stopSIGTERMs the index-lock holder, even when it belongs to another session.Checks
scripts/validate.py(uv, py3.13) returned{"components": 69, "hashed_files": 6892, "profiles": 4, "receipts": 158, "status": "passed"}. That covers integrity and scope only.core.hooksPathisscripts/git-hooks, and gitleaks found no leaks.Review
The Codex cross-family review (
codex exec -s read-only, gpt-6-astra, high) of the first head returned DISAGREE with 5 findings:codebase_stopwas described as always sending SIGTERM.The fixes are in
2361d77c:lockfile.js:67-86);The Codex recheck marked all 5 FIXED and found one new wording defect: contention skips rather than queues (
indexer.ts:1052-1062).0c6ddcc7fixes it. The recheck also matched the sha256 and byte counts of all 5 files againstmanifests/evidence.json. There is no third review round, because the review loop is bounded.SOTA sources
cutover.jsonrollback text.lib/lockfile.js, the version both installs carry.🤖 Generated with Claude Code