diff --git a/README.ja.md b/README.ja.md index a56d0b6..ab1e3a1 100644 --- a/README.ja.md +++ b/README.ja.md @@ -33,7 +33,7 @@ session-peer 1.0.2による実際のローカル通信です。CodexがClaude Co ### インストール Python 3.9以上が必要です。基本のローカル・SSH CLIに外部Python依存パッケージはありません。 -公開済みランタイム:**1.4.0**。2026-11-03にGitHubとPyPIの公開状況を確認しました。[公開記録](docs/ja/releases/v1.4.0.md#v140-publication-record)に、正確なソース、アップロード時刻、配布ファイルのハッシュを記載しています。[リリースノート](docs/ja/releases/v1.4.0.md)では、範囲を制限したMCP探索、配信の事前確認と診断、経路プリセット、独立スキルとの互換性を説明します。Pythonの公開、Node Controlの配備、独立管理するスキルの更新は別々の作業です。 +ソースバージョン:**1.4.1**(2026-11-03の準備時点では未公開の候補で、最後に確認した公開済みランタイムは1.4.0)。[メンテナンスノート](docs/ja/releases/v1.4.1.md)は文書と公開済みスキルv0.5.1の互換コピーを説明し、ランタイム不具合の修正は主張しません。前の[公開記録](docs/ja/releases/v1.4.0.md#v140-publication-record)に、正確なv1.4.0ソース、アップロード時刻、ハッシュを記載しています。Pythonの公開、Node Controlの配備、独立管理するスキルの更新は別々の作業です。 任意の[MCPエクストラ](docs/ja/mcp.md)は`mcp>=1.30,<2`を必要とします。MCPのPython 3.10+要件と依存関係のないPython 3.9コアは変更しません。既存のMCP環境では明示的なパッケージ更新が必要です。 diff --git a/README.ko.md b/README.ko.md index e1b4192..57c02ef 100644 --- a/README.ko.md +++ b/README.ko.md @@ -33,7 +33,7 @@ session-peer 1.0.2를 사용해 실제 로컬 요청과 회신을 주고받았 ### 설치 Python 3.9 이상이 필요합니다. 기본 로컬·SSH CLI는 외부 Python 패키지에 의존하지 않습니다. -공개 런타임: **1.4.0**. 2026-11-03에 GitHub와 PyPI의 공개 상태를 확인했습니다. [공개 기록](docs/ko/releases/v1.4.0.md#v140-publication-record)에 정확한 소스, 업로드 시각과 배포 파일 해시를 남겼습니다. [릴리스 노트](docs/ko/releases/v1.4.0.md)는 범위를 제한한 MCP 탐색, 전달 사전 점검·진단, 경로 프리셋과 독립 스킬 호환성을 설명합니다. Python 공개, Node Control 배포, 별도로 관리하는 스킬의 갱신은 서로 구분합니다. +소스 버전: **1.4.1** (2026-11-03 준비 시점: 미공개 후보, 마지막으로 확인한 공개 런타임은 1.4.0). [유지보수 노트](docs/ko/releases/v1.4.1.md)는 문서와 공개된 스킬 v0.5.1 호환 사본을 설명하며, 런타임 결함 수정을 주장하지 않습니다. 이전 [공개 기록](docs/ko/releases/v1.4.0.md#v140-publication-record)에 정확한 v1.4.0 소스, 업로드 시각과 해시를 남겼습니다. Python 공개, Node Control 배포, 별도로 관리하는 스킬의 갱신은 서로 구분합니다. 선택형 [MCP extra](docs/ko/mcp.md)는 이제 `mcp>=1.30,<2`를 요구합니다. MCP의 Python 3.10+ 요건과 의존성 없는 Python 3.9 핵심 CLI는 유지됩니다. 기존 MCP 환경에는 명시적인 패키지 업그레이드가 필요합니다. diff --git a/README.md b/README.md index 25f9692..84eba48 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ in this ~22-second animation, not a screen recording; send success alone is not ### Install Python 3.9+. The core local/SSH CLI has no third-party Python dependencies. -Published runtime: **1.4.0**, verified on GitHub and PyPI on 2026-11-03. The [publication record](docs/releases/v1.4.0.md#v140-publication-record) identifies the exact source, upload times and artifact hashes. The [release notes](docs/releases/v1.4.0.md) describe bounded MCP discovery, delivery preflight and diagnostics, route presets, and independent skill compatibility. Python publication, Node Control deployment and independently managed skill updates are separate. +Source version: **1.4.1** (2026-11-03 preparation checkpoint: unpublished candidate; latest verified published runtime 1.4.0). The [maintenance notes](docs/releases/v1.4.1.md) describe documentation and the published skill v0.5.1 compatibility copy; they do not claim a runtime defect fix. The previous [publication record](docs/releases/v1.4.0.md#v140-publication-record) identifies the exact v1.4.0 source, upload times and hashes. Python publication, Node Control deployment and independently managed skill updates are separate. The optional [MCP extra](docs/mcp.md) now requires `mcp>=1.30,<2`; its Python 3.10+ requirement and the dependency-free Python 3.9 core remain unchanged. Existing MCP environments need an explicit package upgrade. diff --git a/README.zh-CN.md b/README.zh-CN.md index 79aefd2..6d6a5ab 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -33,7 +33,7 @@ session-peer使用各智能体自身的收件箱和队列;接收方智能体 ### 安装 需要Python 3.9或更高版本。核心本地与SSH CLI没有第三方Python依赖。 -已发布运行时:**1.4.0**。已于2026-11-03确认GitHub和PyPI上的发布状态。[发布记录](docs/zh-CN/releases/v1.4.0.md#v140-publication-record)列出了确切源码、上传时间和分发文件哈希。[发布说明](docs/zh-CN/releases/v1.4.0.md)介绍有限范围的MCP发现、传递预检与诊断、路由预设以及独立技能的兼容性。Python发布、Node Control部署及独立管理的技能更新是不同的工作。 +源码版本:**1.4.1**(2026-11-03准备检查时点:尚未发布的候选版本,最后确认的已发布运行时为1.4.0)。[维护说明](docs/zh-CN/releases/v1.4.1.md)介绍文档和已发布技能v0.5.1的兼容副本,不宣称修复了运行时缺陷。上一版本的[发布记录](docs/zh-CN/releases/v1.4.0.md#v140-publication-record)列出了确切的v1.4.0源码、上传时间和哈希。Python发布、Node Control部署及独立管理的技能更新是不同的工作。 可选的[MCP extra](docs/zh-CN/mcp.md)现在要求`mcp>=1.30,<2`;MCP的Python 3.10+要求和无外部依赖的Python 3.9核心保持不变。现有MCP环境需要显式升级软件包。 diff --git a/RELEASING.ja.md b/RELEASING.ja.md index 0c1e22e..8425e6e 100644 --- a/RELEASING.ja.md +++ b/RELEASING.ja.md @@ -1,5 +1,13 @@ # session-peerのリリース +## v1.4.1 準備 + +公開済みv1.4.0を基準に2026-11-03に準備しました。この日付の確認時点でv1.4.1は未公開のメンテナンス候補です。統合メンテナンス基準はバージョン準備前の`192b77ec4a168859c26fe886ff42901f24060608`であり、最終リリースコミットではありません。[メンテナンスノート](docs/ja/releases/v1.4.1.md)はPR #366 / #369の独立公開スキルv0.5.1互換コピーと公開案内を扱います。ランタイム不具合や#370のテスト修正は主張せず、#367とLong-termの作業は別です。 + +予定する`SKILL.md`サポート資産はスキルv0.5.1、ソース`95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`、UTF-8で31688バイト、SHA-256`922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`、最小0.9.1/文書全体の基準1.4.0、受信側`codexBin`下限1.0.1で、wheel/sdistの外にあります。スキルのリリースAPIは`immutable=false`を返し、正確なソース・ハッシュの固定はGitHubによる不変性の保証ではありません。不変のランタイムv1.4.0のスキル資産はv0.4.1のままです。 + +所有者は通常のマージ・タグ作成・公開を承認しましたが、保護の迂回は承認していません。現在のHEADのレビューと検査、最終的な保護されたmainのCI、固定7資産、`SHA256SUMS`、`release-provenance.json`、認証済み証明、依存関係監査、新しい環境でのwheel/sdistインストール検査、PyPI環境の必須の人による承認が必要です。ここでは条件の完了を主張しません。非公開ログイン・関連付けの再確認を省略しても人による承認は必要です。既存のタグ・資産と履歴を保持し、実際の公開を別に記録します。新たなnative/SSH/ACK/プラットフォーム検証、グローバルインストール、運用への配備は含みません。 + ## v1.4.0公開記録(2026-11-03確認) ランタイムv1.4.0は`476c67e636ef02cb93797dd2f42252dfe577625f`からGitHubに`2026-11-02T04:36:59Z`に公開されました。PyPIのwheelとsdistのアップロード時刻は、それぞれ`2026-11-02T04:38:34.686393Z`と`2026-11-02T04:38:36.363777Z`です。[公開記録](docs/ja/releases/v1.4.0.md#v140-publication-record)に正確なハッシュと準備・公開の成功根拠を示しています。ランタイムの不変スキルアセットはv0.4.1のままであり、後に独立して公開されたスキルv0.5.1へリポジトリのスナップショットを同期しても、このアセットやインストール済みスキルは変わりません。以下の日付付き準備セクションは当時の記録として残します。公開した事実だけでは、本番配備や新たなネイティブ・ACK受入を証明しません。 diff --git a/RELEASING.ko.md b/RELEASING.ko.md index 823761d..423a4dd 100644 --- a/RELEASING.ko.md +++ b/RELEASING.ko.md @@ -1,5 +1,13 @@ # session-peer 릴리스 +## v1.4.1 준비 + +공개된 v1.4.0을 기준으로 2026-11-03에 준비했습니다. 이 날짜의 확인 시점에서 v1.4.1은 미공개 유지보수 후보입니다. 통합 유지보수 기준은 버전 준비 이전의 `192b77ec4a168859c26fe886ff42901f24060608`이며, 최종 릴리스 커밋이 아닙니다. [유지보수 노트](docs/ko/releases/v1.4.1.md)는 PR #366 / #369의 독립 공개 스킬 v0.5.1 호환 사본과 공개 안내를 다룹니다. 런타임 결함이나 #370 테스트 수정을 주장하지 않으며, #367과 Long-term 작업은 별도입니다. + +예정된 `SKILL.md` 지원 자산은 스킬 v0.5.1, 소스 `95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`, UTF-8 31688바이트, SHA-256 `922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`, 최소 0.9.1/문서 전체 기준 1.4.0과 수신측 `codexBin` 하한 1.0.1이며 wheel/sdist 밖에 있습니다. 스킬 릴리스 API는 `immutable=false`를 반환하고, 정확한 소스·해시 고정은 GitHub의 불변성 보장이 아닙니다. 불변 런타임 v1.4.0의 스킬 자산은 v0.4.1로 유지됩니다. + +소유자는 정상 병합·태그·발행을 승인했으며 보호 절차 우회는 승인하지 않았습니다. 현재 HEAD 리뷰·검사, 최종 보호된 main CI, 고정 자산 7개, `SHA256SUMS`, `release-provenance.json`, 인증된 증명, 의존성 감사, 새 환경의 wheel/sdist 설치 검사와 PyPI 환경의 필수 사람 승인이 필요합니다. 여기서 이 조건의 완료를 주장하지 않으며, 비공개 로그인·연결 재확인을 생략해도 사람 승인은 유지합니다. 기존 태그·자산과 역사를 보존하고 실제 공개 기록은 별도로 남깁니다. 새로운 native/SSH/ACK/플랫폼 검증, 전역 설치나 운영 배포는 포함하지 않습니다. + ## v1.4.0 공개 기록 (2026-11-03 확인) 런타임 v1.4.0은 `476c67e636ef02cb93797dd2f42252dfe577625f`에서 GitHub에 `2026-11-02T04:36:59Z`에 공개됐습니다. PyPI wheel과 sdist 업로드 시각은 각각 `2026-11-02T04:38:34.686393Z`, `2026-11-02T04:38:36.363777Z`입니다. [공개 기록](docs/ko/releases/v1.4.0.md#v140-publication-record)에 정확한 해시와 준비·게시 성공 근거를 연결했습니다. 런타임의 불변 스킬 자산은 v0.4.1을 유지하며, 이후 별도로 공개된 스킬 v0.5.1로 저장소 스냅샷을 동기화해도 이 자산이나 설치된 스킬은 변경하지 않습니다. 아래 날짜별 준비 절은 당시 기록으로 보존합니다. 공개 사실만으로 운영 배포나 새로운 네이티브·ACK 수락이 입증되지는 않습니다. diff --git a/RELEASING.md b/RELEASING.md index 820eeb6..4bc5d13 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,5 +1,13 @@ # Releasing session-peer +## v1.4.1 preparation + +Prepared on 2026-11-03 against published v1.4.0. At this dated checkpoint, v1.4.1 is an unpublished maintenance candidate. Integrated maintenance base: `192b77ec4a168859c26fe886ff42901f24060608`, before version preparation, not the final release commit. The [maintenance notes](docs/releases/v1.4.1.md) cover the independently published skill v0.5.1 compatibility copy and publication guidance from PR #366 / #369. They claim no runtime defect fix or #370 test repair; #367 and Long-term work remain separate. + +The prospective `SKILL.md` support asset uses skill v0.5.1, source `95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`, 31688 UTF-8 bytes, SHA-256 `922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`, minimum 0.9.1/full 1.4.0 and receiver `codexBin` floor 1.0.1, outside wheel/sdist. The skill release API reports `immutable=false`; exact source/hash pinning is not GitHub-enforced immutability. The immutable runtime v1.4.0 skill asset remains v0.4.1. + +The owner has authorized normal merge, tagging and publication, not protection bypasses. Require current-head review/checks, final protected-main CI, all 7 frozen assets, `SHA256SUMS`, `release-provenance.json`, authenticated attestations, dependency audits, fresh wheel/sdist installation checks and the required human PyPI environment approval. These gates are not asserted complete here; skipping the private login/binding recheck does not waive human approval. Preserve old tags/assets and history; record actual publication separately. No new native/SSH/ACK/platform qualification, global install or operational rollout is included. + ## Publication record — v1.4.0 (verified 2026-11-03) Runtime v1.4.0 was published from `476c67e636ef02cb93797dd2f42252dfe577625f` on GitHub at `2026-11-02T04:36:59Z`; PyPI uploaded the wheel and sdist at `2026-11-02T04:38:34.686393Z` and `2026-11-02T04:38:36.363777Z`. The [publication record](docs/releases/v1.4.0.md#v140-publication-record) links exact hashes and successful preparation/publication evidence. The runtime's immutable skill asset remains v0.4.1; subsequent repository snapshot synchronization to the separately published skill v0.5.1 does not replace it or update installed skills. Keep the dated preparation sections below as history; publication does not establish operational rollout or new native/ACK acceptance. diff --git a/RELEASING.zh-CN.md b/RELEASING.zh-CN.md index d23c1a1..cbf8282 100644 --- a/RELEASING.zh-CN.md +++ b/RELEASING.zh-CN.md @@ -1,5 +1,13 @@ # 发布session-peer +## v1.4.1准备 + +于2026-11-03基于已发布的v1.4.0准备。在该日期的检查时点,v1.4.1仍是未发布的维护候选版本。整合维护基准为版本准备之前的`192b77ec4a168859c26fe886ff42901f24060608`,并非最终发布提交。[维护说明](docs/zh-CN/releases/v1.4.1.md)涵盖PR #366 / #369的独立发布技能v0.5.1兼容副本及发布指南。不宣称修复运行时缺陷或#370测试问题;#367和Long-term工作仍独立处理。 + +预期的`SKILL.md`支持资产为技能v0.5.1,源码`95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`,UTF-8大小31688字节,SHA-256`922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`,最低0.9.1/完整文档基准1.4.0,接收端`codexBin`下限1.0.1,且不包含在wheel/sdist中。技能发布API返回`immutable=false`;固定确切源码/哈希并不等于GitHub强制保障不可变性。不可变运行时v1.4.0的技能资产仍为v0.4.1。 + +所有者已批准正常合并、打标签和发布,但未批准绕过保护。仍须通过当前HEAD审查与检查、最终受保护main的CI,验证全部7个固定资产、`SHA256SUMS`、`release-provenance.json`和已认证的证明,执行依赖审计、全新环境wheel/sdist安装检查,并保留PyPI环境必需的人工批准。此处不宣称这些条件已完成;省略私有登录/绑定复查也不免除人工批准。保留旧标签、资产和历史,另行记录实际发布。不包含新的native/SSH/ACK/平台验证、全局安装或运维部署。 + ## v1.4.0发布记录(2026-11-03确认) 运行时v1.4.0已从`476c67e636ef02cb93797dd2f42252dfe577625f`于`2026-11-02T04:36:59Z`在GitHub发布;PyPI的wheel和sdist上传时间分别为`2026-11-02T04:38:34.686393Z`和`2026-11-02T04:38:36.363777Z`。[发布记录](docs/zh-CN/releases/v1.4.0.md#v140-publication-record)列出确切哈希及准备、发布成功的依据。运行时的不可变技能资产仍为v0.4.1;后续将仓库快照同步到独立发布的技能v0.5.1,不会替换该资产或更新已安装的技能。以下按日期记录的准备章节保留为历史。发布本身不证明生产部署或新的原生、ACK验收已完成。 diff --git a/docs/README.md b/docs/README.md index 2a62728..4f7cd8a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,6 +24,8 @@ installation paths. ## Development and history +- [v1.4.1 maintenance preparation](releases/v1.4.1.md) records documentation and the published skill v0.5.1 compatibility copy; runtime behavior, independent skill installation and operations remain separate. + - [v1.4.0 preparation](releases/v1.4.0.md) records the merged MCP policy, preflight, diagnostics and preset changes at the 2026-11-02 source checkpoint; publication and independent skill adoption remain separate. - [v1.3.3 maintenance preparation](releases/v1.3.3.md) covers Python 3.14 CI/metadata, contributor and publication guidance, and the verified compatibility skill v0.4.1 snapshot. Publication and operational deployment remain separate. diff --git a/docs/i18n-manifest.json b/docs/i18n-manifest.json index 41cd7d6..be48b03 100644 --- a/docs/i18n-manifest.json +++ b/docs/i18n-manifest.json @@ -7,10 +7,10 @@ "zh-CN" ], "sources": { - "README.md": "aa7dd29355e264d502101687786bf16272cab0ca507bc932960cde8d9282f493", - "RELEASING.md": "b7f0fff21a057eb161af5aab9aafe16d30b4b59597f657b42aa53879f4475209", + "README.md": "2e3264c33d9c762ff76fcce6bd1d4d5781db476579b59d21deb70bc40909a9a0", + "RELEASING.md": "1992e716e5d1a8dd3adb20094c1c8cd65416a5ab449a3f50100a5c945f9a6358", "SECURITY.md": "8f018f6f98002312e143609b9734aeb971ca5217e146597c06b57b5645031046", - "docs/README.md": "28c870c47298c52bd7d3d27d7b940d74e7bdd4a9b7a69000ed2bee7ea5d6fd0b", + "docs/README.md": "5627c8308695e6a3be9104206fc28978f2206d1d2aa7db73de534e2c8cf16e2c", "docs/agent-adapters.md": "bf185d3121c94829bb412071a25c4d943302e10a6b2e713111e653b8f8c3ea91", "docs/ai-assistant-guide.md": "9624ec96b92fb688fae3be3c94cb3564c77985091be451fbf1f056a1af9b9d9c", "docs/antigravity.md": "f2b5122a0ce6e6fb5bd4d8ed50ce2c8bd2dc9c98ec8ce328405cf7c2cd24229d", @@ -57,6 +57,7 @@ "docs/releases/v1.3.2.md": "980437303a02644814116b12279d14bf83e6b50c87eab2e0c88e433808f372e3", "docs/releases/v1.3.3.md": "bb2707cc5ef4b763ee61a804fd8ce75b762731b16681ac6c322636a35657b892", "docs/releases/v1.4.0.md": "0bab24fe860f537aa668b3b695b692f1772aca6112f8aa116645f5920ac5b8dc", + "docs/releases/v1.4.1.md": "459fb876e216b5943bb5c2e4d8337f9752ca66f4ceaa934b700f7d09f83fd6a2", "docs/validation/69-rc.md": "e490c6a9ad0fec9108b91c74922cedac7ddf214ed405f8f5523da22f48a4b222", "docs/validation/85-antigravity.md": "f89b175191cd98ab03d4029b487065133814b3c8dd8de8cd0a5cc367e2579e4f", "docs/wake.md": "cde135da2ea7be21c815bb265e694f737dbe467d8e76bb82eb118e3b86e29d22", diff --git a/docs/ja/README.md b/docs/ja/README.md index 1b3011f..1f9a80b 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -23,6 +23,8 @@ ## 開発と履歴 +- [v1.4.1メンテナンス準備](releases/v1.4.1.md)は文書と公開済みスキルv0.5.1の互換コピーを記録します。ランタイム動作、独立スキルのインストール、運用は別です。 + - [v1.4.0準備](releases/v1.4.0.md)は、2026-11-02のソース確認時点でマージ済みのMCPポリシー、事前検査、診断、プリセットの変更を記録します。公開と独立したスキルの適用は別です。 - [v1.3.3 メンテナンス準備](releases/v1.3.3.md)は、Python 3.14 の CI・メタデータ、投稿・公開の案内、検証済みの互換スキル v0.4.1 コピーを扱います。公開と運用への配備は別です。 diff --git a/docs/ja/releases/v1.4.1.md b/docs/ja/releases/v1.4.1.md new file mode 100644 index 0000000..15b0fe6 --- /dev/null +++ b/docs/ja/releases/v1.4.1.md @@ -0,0 +1,18 @@ +# v1.4.1 メンテナンスリリース準備 + +公開済みのv1.4.0を基準に2026-11-03に準備しました。この日付の確認時点でv1.4.1は未公開の候補です。統合メンテナンスの基準はバージョン準備前の`192b77ec4a168859c26fe886ff42901f24060608`であり、最終リリースコミットではありません。所有者はリリースを承認しましたが、通常のリポジトリ保護、現在のHEADのレビュー、最終的な保護されたmainのCIは引き続き必要です。 + +## 範囲 + +- PR #366は独立して公開されたスキルv0.5.0を取り込み、PR #369は互換コピーをv0.5.1に同期し、4言語のv1.4.0公開記録と現在の状態の案内を追加しました。このパッチは、その文書と互換コピーのメンテナンスを配布物に反映します。バージョン値以外のランタイム動作は変えず、ランタイム不具合の修正を主張しません。 +- 予定する`SKILL.md`サポート資産は、公開済みの[スキルv0.5.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.5.1)、ソース`95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`、UTF-8で31688バイト、SHA-256`922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`です。メタデータはスキル0.5.1/最小ランタイム0.9.1/文書全体の基準1.4.0を維持し、受信側`codexBin`の下限も1.0.1のままです。このランタイムパッチがコピーを含むことだけを理由に、文書の基準を1.4.1へ引き上げません。スキルのリリースAPIは`immutable=false`を返し、正確なソースとハッシュの固定はGitHubによる不変性の保証を意味しません。 +- 不変のランタイムv1.4.0の`SKILL.md`資産はスキルv0.4.1のままです。既存のタグ、資産、過去の準備・公開記録を保持します。ランタイムパッケージの更新は、別管理のスキルや他のグローバルMCP環境を更新せず、受信プロセスの再起動やNode Controlサービスの配備も行いません。 +- [#370](https://github.com/abruption/session-peer/issues/370)は、出力失敗を注入するとテスト内の読み取りが無期限に待つ経路を記録しています。元のCI停止原因は未確定であり、このパッチは#370を修正しません。[#367](https://github.com/abruption/session-peer/issues/367)のペアリング済みデバイス一括検出とLong-term研究は別です。新機能、新たな実Native/SSH、Windows 3.14・free-threaded Python、消費・ACK、プラットフォームサポートの検証は主張しません。 + +基本Python 3.9、MCP Python 3.10+、SDK要件`mcp>=1.30,<2`は変更しません。サポートスキルはwheel/sdistに含まれません。 + +## 公開条件 + +正確な準備HEADと最終的な保護されたmainソースで、検査とレビューの成功が必要です。固定された7資産、`SHA256SUMS`、`release-provenance.json`と認証済みの証明を正確なタグ・ソースに対してビルド・検証し、依存関係監査と新しい環境でのwheel/sdistインストール検査を実施します。これらは未完了のリリース条件であり、この準備で成功を主張する結果ではありません。非公開ログイン・関連付けの再確認を省略しても、PyPI環境の必須の人による承認は維持します。保護を迂回したり、公開済みタグを移動したりしません。 + +日付付きのこのノートを固定し、実際のGitHub/PyPI公開根拠は別に追加します。前のリリースは[v1.4.0公開記録](v1.4.0.md#v140-publication-record)を参照してください。公開と運用への配備は別です。 diff --git a/docs/ko/README.md b/docs/ko/README.md index c9f9dac..922055a 100644 --- a/docs/ko/README.md +++ b/docs/ko/README.md @@ -23,6 +23,8 @@ ## 개발과 이력 +- [v1.4.1 유지보수 준비](releases/v1.4.1.md)는 문서와 공개된 스킬 v0.5.1 호환 사본을 기록합니다. 런타임 동작, 별도 스킬 설치와 운영은 구분합니다. + - [v1.4.0 준비](releases/v1.4.0.md)는 2026-11-02 소스 확인 시점에 병합된 MCP 정책·사전검사·진단·프리셋 변경을 기록합니다. 발행과 별도 스킬 적용은 구분합니다. - [v1.3.3 유지보수 준비](releases/v1.3.3.md)는 Python 3.14 CI·메타데이터, 기여·공개 안내, 검증된 호환 스킬 v0.4.1 사본을 다룹니다. 발행과 운영 배포는 별개입니다. diff --git a/docs/ko/releases/v1.4.1.md b/docs/ko/releases/v1.4.1.md new file mode 100644 index 0000000..6e9b1a0 --- /dev/null +++ b/docs/ko/releases/v1.4.1.md @@ -0,0 +1,18 @@ +# v1.4.1 유지보수 릴리스 준비 + +공개된 v1.4.0을 기준으로 2026-11-03에 준비했습니다. 이 날짜의 확인 시점에서 v1.4.1은 미공개 후보입니다. 통합 유지보수 기준은 버전 준비 이전의 `192b77ec4a168859c26fe886ff42901f24060608`이며, 최종 릴리스 커밋이 아닙니다. 소유자가 릴리스를 승인했어도 정상 저장소 보호 절차, 현재 HEAD 검토와 최종 보호된 main CI를 거쳐야 합니다. + +## 범위 + +- PR #366은 별도로 공개된 스킬 v0.5.0을 반영했고, PR #369는 호환 사본을 v0.5.1로 동기화하며 네 언어의 v1.4.0 공개 기록과 현재 상태 안내를 추가했습니다. 이번 패치는 이 문서·호환 사본 유지보수를 배포물에 반영합니다. 버전 값 외의 런타임 동작은 바뀌지 않으며, 런타임 결함을 수정했다고 주장하지 않습니다. +- 예정된 `SKILL.md` 지원 자산은 공개된 [스킬 v0.5.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.5.1), 소스 `95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`, UTF-8 31688바이트, SHA-256 `922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`입니다. 메타데이터는 스킬 0.5.1 / 최소 런타임 0.9.1 / 문서 전체 기준 1.4.0을 유지하며, 수신측 `codexBin` 하한도 1.0.1입니다. 이번 런타임 패치에 사본이 포함된다는 이유로 문서 기준을 1.4.1로 올리지 않습니다. 스킬 릴리스 API는 `immutable=false`를 반환하며, 정확한 소스·해시 고정이 GitHub의 불변성 보장을 뜻하지는 않습니다. +- 불변 런타임 v1.4.0의 `SKILL.md` 자산은 스킬 v0.4.1로 유지됩니다. 기존 태그·자산과 과거 준비·공개 기록을 보존합니다. 런타임 패키지 갱신은 별도로 관리되는 스킬이나 다른 전역 MCP 환경을 갱신하지 않으며, 수신기를 재시작하거나 Node Control 서비스를 배포하지도 않습니다. +- [#370](https://github.com/abruption/session-peer/issues/370)은 출력 실패를 주입했을 때 테스트 코드의 읽기가 무기한 대기할 수 있음을 기록하며, 원래 CI 정지 원인은 아직 확인되지 않았습니다. 이번 패치는 #370을 수정하지 않습니다. [#367](https://github.com/abruption/session-peer/issues/367)의 페어링 기기 전체 조회와 Long-term 연구는 별도입니다. 새 기능, 새로운 실제 Native/SSH, Windows 3.14·free-threaded Python, 소비·ACK 또는 플랫폼 지원 검증을 주장하지 않습니다. + +기본 Python 3.9, MCP Python 3.10+ 및 SDK 요구사항 `mcp>=1.30,<2`는 그대로입니다. 지원 스킬은 wheel/sdist에 포함되지 않습니다. + +## 발행 조건 + +정확한 준비 HEAD와 최종 보호된 main 소스의 검사·리뷰 통과가 필요합니다. 고정 자산 7개, `SHA256SUMS`, `release-provenance.json`과 인증된 증명을 정확한 태그·소스에 맞춰 빌드·검증하고, 의존성 감사와 새 환경의 wheel/sdist 설치 검사를 수행해야 합니다. 이는 남은 릴리스 조건이며 이번 준비에서 완료를 주장하는 결과가 아닙니다. 비공개 로그인·연결 재확인을 생략해도 PyPI 환경의 필수 사람 승인은 유지합니다. 보호 절차를 우회하거나 공개된 태그를 옮기지 않습니다. + +날짜가 명시된 이 노트를 고정하고 실제 GitHub/PyPI 공개 근거는 별도로 추가합니다. 이전 릴리스는 [v1.4.0 공개 기록](v1.4.0.md#v140-publication-record)을 참고하세요. 발행과 운영 배포는 별개입니다. diff --git a/docs/releases/v1.4.1.md b/docs/releases/v1.4.1.md new file mode 100644 index 0000000..ead02d2 --- /dev/null +++ b/docs/releases/v1.4.1.md @@ -0,0 +1,18 @@ +# v1.4.1 maintenance release preparation + +Prepared on 2026-11-03 against published v1.4.0. At this dated checkpoint, v1.4.1 is an unpublished candidate. The integrated maintenance base is `192b77ec4a168859c26fe886ff42901f24060608`, before version preparation, not the final release commit. The owner authorized the release; normal repository protections, current-head review and final protected-main CI still apply. + +## Scope + +- PR #366 adopted the separately published skill v0.5.0; PR #369 synchronized the compatibility copy to v0.5.1 and added four-language v1.4.0 publication records and current status guidance. This patch packages that documentation and compatibility-copy maintenance. Runtime behavior is unchanged apart from the version value; no runtime defect is claimed fixed. +- The prospective `SKILL.md` support asset is the published [skill v0.5.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.5.1), source `95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`, 31688 UTF-8 bytes, SHA-256 `922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`. Metadata remains skill 0.5.1 / minimum runtime 0.9.1 / documented full coverage 1.4.0; receiver `codexBin` floor remains 1.0.1. Coverage is not raised to 1.4.1 merely because this runtime patch carries the copy. The skill release API reports `immutable=false`; exact source/hash pinning does not imply GitHub-enforced immutability. +- The immutable runtime v1.4.0 `SKILL.md` asset remains skill v0.4.1. Existing tags, assets and historical preparation/publication records are preserved. A runtime package upgrade does not update independently managed skills or other global MCP environments, and does not restart receivers or deploy Node Control services. +- [#370](https://github.com/abruption/session-peer/issues/370) records an unbounded read in a test fixture under injected output failure; the original CI stall cause remains unconfirmed. This patch does not fix #370. [#367](https://github.com/abruption/session-peer/issues/367) paired-device aggregate discovery and Long-term research remain separate. No new feature, live Native/SSH, Windows 3.14/free-threaded Python, consumption/ACK or platform-support qualification is claimed. + +Core Python 3.9, MCP Python 3.10+ and SDK requirement `mcp>=1.30,<2` are unchanged. The support skill stays outside wheel/sdist. + +## Publication gates + +Require successful checks/reviews of the exact preparation head and final protected-main source. Build and verify all 7 frozen assets, `SHA256SUMS`, `release-provenance.json` and authenticated attestations against the exact tag/source, then run dependency audits and fresh wheel/sdist installation checks. These are pending release gates, not results asserted by this preparation. Required human PyPI environment approval remains even when the private login/binding recheck is skipped; do not bypass protections or move a published tag. + +Freeze these dated notes and add actual GitHub/PyPI publication evidence separately. See the [v1.4.0 publication record](v1.4.0.md#v140-publication-record) for the previous release. Publication and operational rollout remain separate. diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index 7b96351..93427c9 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -22,6 +22,8 @@ ## 开发与历史 +- [v1.4.1维护准备](releases/v1.4.1.md)记录文档及已发布技能v0.5.1的兼容副本;运行时行为、独立技能安装和运维仍相互区分。 + - [v1.4.0准备](releases/v1.4.0.md)记录2026-11-02源码检查时点已合并的MCP策略、预检、诊断和预设变更;发布与独立技能的采用仍是不同步骤。 - [v1.3.3 维护准备](releases/v1.3.3.md)涵盖 Python 3.14 CI/元数据、贡献与发布指南,以及已核验的兼容技能 v0.4.1 副本。发布与运维部署相互独立。 diff --git a/docs/zh-CN/releases/v1.4.1.md b/docs/zh-CN/releases/v1.4.1.md new file mode 100644 index 0000000..8a23da2 --- /dev/null +++ b/docs/zh-CN/releases/v1.4.1.md @@ -0,0 +1,18 @@ +# v1.4.1维护版本发布准备 + +于2026-11-03基于已发布的v1.4.0准备。在该日期的检查时点,v1.4.1仍是未发布的候选版本。整合维护基准为版本准备之前的`192b77ec4a168859c26fe886ff42901f24060608`,并非最终发布提交。所有者已批准发布,但仍须遵守常规仓库保护、当前HEAD审查和最终受保护main的CI要求。 + +## 范围 + +- PR #366引入了独立发布的技能v0.5.0;PR #369将兼容副本同步到v0.5.1,并补充了四种语言的v1.4.0发布记录和当前状态说明。本补丁将这些文档及兼容副本维护纳入分发文件。除版本值外,运行时行为不变;不宣称修复了运行时缺陷。 +- 预期的`SKILL.md`支持资产来自已发布的[技能v0.5.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.5.1),源码`95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3`,UTF-8大小31688字节,SHA-256为`922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31`。元数据保持技能0.5.1/最低运行时0.9.1/完整文档基准1.4.0;接收端`codexBin`下限仍为1.0.1。不会仅因本运行时补丁携带该副本,就把文档基准提高到1.4.1。技能发布API返回`immutable=false`;固定确切源码和哈希不代表GitHub强制保障不可变性。 +- 不可变运行时v1.4.0的`SKILL.md`资产仍是技能v0.4.1。保留现有标签、资产和历史准备/发布记录。运行时软件包升级不会更新独立管理的技能或其他全局MCP环境,也不会重启接收器或部署Node Control服务。 +- [#370](https://github.com/abruption/session-peer/issues/370)记录了注入输出失败后,测试代码的读取可能无限等待的路径;原始CI停滞原因仍未确定,本补丁不修复#370。[#367](https://github.com/abruption/session-peer/issues/367)的配对设备汇总发现及Long-term研究仍是独立事项。不宣称新增功能或完成新的实际Native/SSH、Windows 3.14/free-threaded Python、消费/ACK或平台支持验证。 + +基础Python 3.9、MCP Python 3.10+及SDK要求`mcp>=1.30,<2`均保持不变。支持技能仍不包含在wheel/sdist中。 + +## 发布条件 + +必须通过确切准备HEAD及最终受保护main源码的检查和审查。针对确切标签/源码构建并验证全部7个固定资产、`SHA256SUMS`、`release-provenance.json`和已认证的证明,随后执行依赖审计及全新环境的wheel/sdist安装检查。这些是尚待完成的发布条件,不是本次准备已完成的结果。即使省略私有登录/绑定复查,PyPI环境必需的人工批准仍须保留;不得绕过保护或移动已发布标签。 + +固定这份注明日期的说明,并另行补充实际GitHub/PyPI发布证据。上一版本请参阅[v1.4.0发布记录](v1.4.0.md#v140-publication-record)。发布与运维部署相互独立。 diff --git a/session_peer.py b/session_peer.py index 54dd871..8bd4835 100644 --- a/session_peer.py +++ b/session_peer.py @@ -45,7 +45,7 @@ except ImportError: # Native Windows uses its own read-only writer inspection. fcntl = None -__version__ = "1.4.0" +__version__ = "1.4.1" GITHUB_REPO = "abruption/session-peer" # Claude Code refuses a same-machine message once its serialized form passes diff --git a/session_peer_core/common.py b/session_peer_core/common.py index 24dcf85..c556aa6 100644 --- a/session_peer_core/common.py +++ b/session_peer_core/common.py @@ -45,7 +45,7 @@ except ImportError: # Native Windows uses its own read-only writer inspection. fcntl = None -__version__ = "1.4.0" +__version__ = "1.4.1" GITHUB_REPO = "abruption/session-peer" # Claude Code refuses a same-machine message once its serialized form passes diff --git a/tests/docs/test_docs_i18n.py b/tests/docs/test_docs_i18n.py index 5c48d60..ffe8e69 100644 --- a/tests/docs/test_docs_i18n.py +++ b/tests/docs/test_docs_i18n.py @@ -64,7 +64,7 @@ class DocumentationTranslationsTest(unittest.TestCase): def test_every_canonical_document_has_each_translation(self): sources = canonical_documents() - self.assertEqual(54, len(sources), "Update the translation manifest for new canonical docs") + self.assertEqual(55, len(sources), "Update the translation manifest for new canonical docs") canonical_docs = { path.relative_to(ROOT / "docs") for path in (ROOT / "docs").rglob("*.md") diff --git a/tests/docs/test_stable_candidate.py b/tests/docs/test_stable_candidate.py index 37ebec3..5ba9b55 100644 --- a/tests/docs/test_stable_candidate.py +++ b/tests/docs/test_stable_candidate.py @@ -11,6 +11,25 @@ class StableCandidate(unittest.TestCase): + def test_v141_maintenance_keeps_runtime_and_skill_release_boundaries(self): + expected = ("2026-11-03", "1.4.1", "1.4.0", "0.5.1", "0.9.1", "1.0.1", + "192b77ec4a168859c26fe886ff42901f24060608", + "95cf5e1dd92654775b2f0ea86c1cb4b6107f49c3", "31688", + "922512869577cc3d8b9d305641479e2dd659f0e669298584ca06f1ca15de1d31", + "immutable=false", "#366", "#369", "#370", "#367", + "SHA256SUMS", "release-provenance.json", "0.4.1") + for locale, suffix in (("", ""), ("ko/", ".ko"), ("ja/", ".ja"), ("zh-CN/", ".zh-CN")): + with self.subTest(locale=locale): + notes = (ROOT / ("docs/" + locale + "releases/v1.4.1.md")).read_text(encoding="utf-8") + for marker in expected: + self.assertIn(marker, notes) + for stem in ("README", "RELEASING"): + self.assertIn("releases/v1.4.1.md", (ROOT / (stem + suffix + ".md")).read_text(encoding="utf-8")) + english = (ROOT / "docs/releases/v1.4.1.md").read_text(encoding="utf-8") + self.assertIn("no runtime defect is claimed fixed", english) + self.assertIn("This patch does not fix #370", english) + self.assertIn("Required human PyPI environment approval remains", english) + def test_v140_publication_record_preserves_preparation_and_pinned_skill_history(self): source = "476c67e636ef02cb93797dd2f42252dfe577625f" facts = (source, "2026-11-03", "2026-11-02T04:36:59Z", @@ -338,8 +357,8 @@ def test_source_version_keeps_experimental_acceptance_gates(self): self.assertIn(marker, english) def test_package_and_generated_core_version_agree(self): - self.assertEqual(session_peer.__version__, "1.4.0") - self.assertIn('__version__ = "1.4.0"', + self.assertEqual(session_peer.__version__, "1.4.1") + self.assertIn('__version__ = "1.4.1"', (ROOT / "session_peer_core/common.py").read_text(encoding="utf-8")) def test_current_readmes_and_runbooks_match_source_version(self): @@ -348,8 +367,8 @@ def test_current_readmes_and_runbooks_match_source_version(self): with self.subTest(stem=stem, suffix=suffix): text = (ROOT / (stem + suffix + ".md")).read_text(encoding="utf-8") if stem == "README": - prefixes = {"": "Published runtime: ", ".ko": "공개 런타임: ", - ".ja": "公開済みランタイム:", ".zh-CN": "已发布运行时:"} + prefixes = {"": "Source version: ", ".ko": "소스 버전: ", + ".ja": "ソースバージョン:", ".zh-CN": "源码版本:"} line = next(line for line in text.splitlines() if line.startswith(prefixes[suffix])) self.assertTrue(line.startswith(prefixes[suffix] + "**" + session_peer.__version__ + "**")) else: @@ -378,16 +397,16 @@ def test_release_notes_keep_scope_and_limits_visible(self): def test_stable_release_keeps_operational_deployment_separate(self): profiles = ( - ("", "Published runtime: **1.4.0**", + ("", "Source version: **1.4.1**", "At the 2026-10-28 preparation checkpoint, the last verified published stable release was **1.3.1**.", "Development candidate 1.2.1 is unpublished"), - (".ko", "공개 런타임: **1.4.0**", + (".ko", "소스 버전: **1.4.1**", "2026-10-28 준비 시점의 마지막 확인 공개 안정판은 **1.3.1**이었습니다.", "개발 후보 1.2.1은 미공개입니다"), - (".ja", "公開済みランタイム:**1.4.0**", + (".ja", "ソースバージョン:**1.4.1**", "2026-10-28の準備時点で、最後に確認した公開済み安定版は**1.3.1**でした。", "開発候補1.2.1は未公開です"), - (".zh-CN", "已发布运行时:**1.4.0**", + (".zh-CN", "源码版本:**1.4.1**", "在2026-10-28的准备检查时,最后确认的已发布稳定版本为**1.3.1**。", "开发候选版本1.2.1尚未发布"), )