Skip to content

chore(release): prepare v1.2.1 maintenance candidate - #321

Merged
abruption merged 7 commits into
mainfrom
chore/release-1.2.1
Oct 19, 2026
Merged

abruption merged 7 commits into
mainfrom
chore/release-1.2.1

Conversation

@abruption

@abruption abruption commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

Prepare v1.2.1, not yet published, on integrated main 32e76d2c85d945d66466f630d9729ec0be5288d8 after the owner-authorized sequence:

PR Main merge
#319 — bounded macOS Orca Claude discovery (#317) ba00540e24e4e378c002c11e7cbeb23b85003b9f
#320 — bounded skill frontmatter reader (#318) c5625a1667de50b2684067febed1772ed693eca7
#303 — canonical v0.3.3 skill snapshot (#302) 32e76d2c85d945d66466f630d9729ec0be5288d8

Each sequential merge used normal repository protections and updated-main checks. This preparation PR also fixes #322, the bounded SSH staging-initialization issue investigated after its first CI failure. It is therefore no longer a version/documentation-only change.

  • Set Python source/generated version 1.2.1 and update four README notices, release notes, indexes, translation hashes and publication-boundary tests.
  • Preserve the verified 1.2.0 publication record and historical preparation text. 1.2.1 remains an unpublished source candidate.
  • Keep plugin/companion skill versions independent. Canonical v0.3.3 skill SHA-256 remains 15378c6d503a69d1d738ac4739182e23257aa6f2f7fd31ef3fd2fa60e692867f.
  • Harden only the remote updater's staging-path ownership handoff for handled HUP/INT/TERM. No new CLI option, receipt schema, generation/ACK capability or retry authority is introduced.

CI investigation and fix

The original run 39203502096 / macOS Python 3.13 core job, at e8f1e7dccfd204939028bc0c4d0d39da381eee47, failed RemoteTransfer.test_interrupted_transfer_preserves_old_installation: installation/launcher preservation assertions passed, but one owned staging directory remained. The original failed run/log is preserved; it was not blindly rerun until green.

Controlled local fixtures using the actual generated receiver reproduced a real window: mktemp creates the directory before its path is assigned and before the previous script installs cleanup traps. HUP, INT and TERM during that window each left staging behind before this fix. Separate actual-decoder partial-transfer and foreground-cleanup-wait controls already passed on the old code. This establishes the initialization defect, not the actual scheduling or proven root cause of the original CI event.

The fix initializes the staging variable, registers owned-path EXIT cleanup first, defers the parent's handled signals, and ignores those signals only in the allocation child until its exact path is returned. It restores normal termination handling and honors pending cancellation before decoding input. Existing concurrent-publication locks, rollback/receipt validation and unknown/no-automatic-retry behavior remain unchanged. Tests preserve unrelated sentinel data and the old install's bytes, permissions, inode, launcher identity and usability.

Limits remain explicit: cancellation waits for allocator/filesystem I/O to return, not a universal deadline. Cleanup after SIGKILL, host loss or arbitrary repeated interruption of cleanup/publication is not guaranteed. A lost SSH outcome is still unknown and does not authorize automatic resend.

Validation and independent review

Final source: 3e65a667b8bb53db1df62c6501554b62c66c132e, clean, based on the integrated main above. The substantive runtime commit is 6289997a2df0028799f018b9b9a334de32b8deb7; subsequent test-only commits add the decoder-entry assertion and explicit Bash receiver variants, with byte-identical runtime.

  • Python 3.13.7 at 6289997: first full run 1316 tests OK, 19 skipped, 105.987 seconds, dev/faulthandler/ResourceWarning-as-error. Six asyncio slow-task debug messages are retained; no fatal/Traceback/ResourceWarning/unraisable matches were observed. This is not evidence resolving test(relay): investigate intermittent native CI crash and shutdown diagnostics #316.
  • Final head: remote-update tests 44 OK on each of Python 3.13 and Python 3.9; docs 65 OK; standalone generator and diff checks pass. Local ordinary Bash 3.2.57 passes the three creation-phase signals separately from sh. The CI variants print the actual available Bash version; Linux/Bash-version coverage is a current-head CI gate, not claimed already measured locally.
  • Removing only the pending-cancellation check in memory makes the new decoder-entry assertion fail for all three creation-phase signals (3 expected failures, 0 errors); production source was not mutated by this check.
  • Fresh 94bdb65 wheel/sdist build and distribution checks 41 OK, 3 PowerShell skips. Fresh wheel core, sdist core and wheel relay/MCP-extras installs outside the checkout pass -I site-packages imports, version/help, initialized fixture-home empty JSON discovery, missing-DB refusal and pip check. Final 3e65a66 differs only in test code, not installed runtime; actual final-tree archives are rebuilt by current-head CI.
  • Root independently imported all three installed environments with -I and verified version 1.2.1, site-packages origin and presence of the actual signal fix. Final standalone source SHA-256 is 6ce6c767af8439581580fa9b0e4b62bdddc10ceaf9f8bab9736126c9eed43779.

The frozen dual-CLI review metadata is recorded below before updating this PR. Earlier 1311-test/doc-only preparation evidence is not used as validation of the new runtime change. Local builds remain rehearsal artifacts, not authenticated publication assets.

Independent pre-push review

independent-cli-review ran separate parallel non-interactive Claude Code 2.1.303 (requested and response-confirmed claude-opus-5-5) and Codex CLI 0.163.0 (isolated default; actual model name not exposed). Reviewer tools/tests/network/writes were disabled; neither saw the other's output. Both rounds ended with exit 0 and complete final responses, with input/source hashes unchanged:

  • Runtime/consumer/fixture review at 94bdb65: 49,254-byte packet, SHA-256 89f53b0e81dae6ffb3002304568ff7e61582d61785e2768fb39b0b4cbc286cd4.
  • Final Bash-test-only review at 3e65a66: 9,870-byte packet, SHA-256 9b70bcffb3e4115934da9c26124dd6d7bbb6175fcb338c61305e8a244d485536.

Neither reviewer established a mandatory correction. Root read the raw responses and checked the signal-path ordering, real fixture control/cleanup/assertion consumers, unchanged publisher/receipt contracts and installed source origin. Unverified Bash/ksh or inherited-signal behavior was not promoted to fact; the added Bash cases and printed actual version must be observed in current Linux CI. Optional broader shell/test assurances are not claimed. The local run.assert_called_once() is a mocked client-call assertion, not a live SSH submission measurement.

The original timing test and preservation assertions are retained. Added deterministic fixtures cover each creation-phase signal, a marked actual decoder chunk, and proof that the parent waits for foreground trap cleanup. No increased sleeps, blanket staging deletion, relaxed assertion or protection bypass is used.

Current-head CI rerun

Run 39207220021 at exact 3e65a667b8bb53db1df62c6501554b62c66c132e completed all 28 checks successfully, including the previously failing macOS Python 3.13 job and aggregate release gate. The original failed run remains unchanged.

The Ubuntu Python 3.9 job explicitly logged GNU Bash 5.2.21(1)-release (x86_64-pc-linux-gnu) and all three Bash creation-phase signal cases as ok, not skipped. Ordinary sh cases, the original interrupted-transfer case, actual decoder-phase interruption and foreground cleanup wait also passed. This is CI unit/component evidence for the local POSIX receiver, not live SSH or native-agent acceptance.

Configured Codex code and security reviews both completed on exact 3e65a667b8bb53db1df62c6501554b62c66c132e, with no findings or unresolved findings. GitHub reports Ready, MERGEABLE/CLEAN; this records the current gates, not owner approval to merge or publish.

The separately tracked #316 diagnostics and original #319 warning record are retained; passing this fix does not establish their cause or resolution. No live SSH destination, agent message/ACK, fleet, global installation or operational experiment is performed.

Publication boundary

This PR remains subject to current-head CI and automatic code/security review, followed by owner approval before merge. It does not authorize tag/draft creation, release workflow dispatch, publication or deployment. Recheck version availability/protections and require exact protected-main CI before any separately authorized publication. Verify all seven immutable assets and authenticated provenance, retain the mandatory human pypi environment approval, and never bypass audits or overwrite immutable assets. Current private Trusted Publisher binding is not claimed verified.

The PR was Draft during investigation and returned to Ready after independent verification so configured automatic code/security reviews run on the new head without a review mention. Their current-head completion is tracked separately from successful CI and does not itself authorize merge or publication.

@abruption abruption added this to the v1.2.1 milestone Oct 19, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T06:01:09.505936Z 3e65a66 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-19T06:01:48.149672Z 3e65a66 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@abruption
abruption marked this pull request as ready for review October 19, 2026 05:57
@abruption
abruption merged commit f19f2b5 into main Oct 19, 2026
28 checks passed
@abruption
abruption deleted the chore/release-1.2.1 branch October 19, 2026 06:18
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.

fix(ssh): clean owned update staging across initialization signals

1 participant