diff --git a/.gitattributes b/.gitattributes index 2b17511..d60bbed 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ /session_peer.py text eol=lf /session_peer_core/*.py text eol=lf /tools/generate_session_peer.py text eol=lf +/skills/session-peer/SKILL.md text eol=lf diff --git a/README.ja.md b/README.ja.md index fb6b56e..355c657 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.3.2**。公開の根拠、macOSのファイアウォール案内、Directリスナー・TLS診断については、[メンテナンスリリースの案内](docs/ja/releases/v1.3.2.md)を参照してください。ControlのBetter Authセキュリティ更新はリポジトリのソースにあり、Python wheel/sdistには含まれないため、別途承認された配備が必要です。 +ソースバージョン:**1.3.3**。[メンテナンスノート](docs/ja/releases/v1.3.3.md)では、Python 3.14 の検証範囲、投稿手順と文書の保守、互換スキルコピーを説明します。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 d3c7cbf..993a4f9 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.3.2**. 공개 근거, macOS 방화벽 안내와 Direct 리스너·TLS 진단은 [유지보수 릴리스 안내](docs/ko/releases/v1.3.2.md)를 참고하십시오. Control의 Better Auth 보안 갱신은 저장소 소스에 있으며 Python wheel/sdist에는 포함되지 않으므로 별도로 승인된 배포가 필요합니다. +소스 버전: **1.3.3**. [유지보수 노트](docs/ko/releases/v1.3.3.md)에서 Python 3.14 검증 범위, 기여 안내·문서 유지보수, 호환 스킬 사본을 설명합니다. 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 21fda3d..771982f 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. -Source version: **1.3.2**. For publication evidence, macOS firewall guidance and Direct listener/TLS diagnostics, see the [maintenance release notes](docs/releases/v1.3.2.md). Control's Better Auth security update is in repository source, outside Python wheel/sdist, and requires a separately authorized rollout. +Source version: **1.3.3**. The [maintenance notes](docs/releases/v1.3.3.md) describe the Python 3.14 validation scope, contributor and documentation maintenance, and the compatibility skill snapshot. 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 dd18ade..463f004 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -33,7 +33,7 @@ session-peer使用各智能体自身的收件箱和队列;接收方智能体 ### 安装 需要Python 3.9或更高版本。核心本地与SSH CLI没有第三方Python依赖。 -源码版本:**1.3.2**。发布依据、macOS防火墙说明和Direct监听器/TLS诊断请参阅[维护版本说明](docs/zh-CN/releases/v1.3.2.md)。Control的Better Auth安全更新位于仓库源码中,不包含在Python wheel/sdist内,需另行批准部署。 +源码版本:**1.3.3**。[维护说明](docs/zh-CN/releases/v1.3.3.md)介绍 Python 3.14 的验证范围、贡献流程与文档维护,以及兼容技能副本。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 3ed2179..6a91265 100644 --- a/RELEASING.ja.md +++ b/RELEASING.ja.md @@ -1,5 +1,13 @@ # session-peerのリリース +## v1.3.3の準備 + +公開済みv1.3.2を基準に2026-10-30に準備しました。その準備時点ではv1.3.3は未公開の候補でした。統合ソース基準はバージョン準備前の`ec2f7fc808f1e22519348091d51c28a2fd522caf`であり、最終リリースコミットではありません。[保守リリースの案内](docs/ja/releases/v1.3.3.md)は、#349/#352のPR案内と警告のみの参照検査、#350/#353の通常のCPython 3.14フィクスチャー・パッケージCI、#351/#354の公開後文書整理、公開済みPythonスキルv0.4.1の互換コピーを扱います。将来の`SKILL.md`サポート資産は、`abruption/session-peer-skill`リポジトリの`v0.4.1`タグに対応するコミット`263b0c333d539dc4e885b16ae3369a26f33097d8`、SHA-256 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`、下限0.9.1/full 1.3.2、受信機`codexBin`下限1.0.1を使います。このコピーはwheel/sdistの外にあり、ランタイム1.3.3とは独立しています。 + +上記の統合ソース基準の[CI](https://github.com/abruption/session-peer/actions/runs/40982760413)と[CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)は成功しました。この結果は、準備コミットや最終的な保護されたmainソースの検査を代替しません。 まず[最初のCI](https://github.com/abruption/session-peer/actions/runs/40880779432)で新しい3.14の10セルが成功してから分類子を追加し、その後の[更新済み全体CI](https://github.com/abruption/session-peer/actions/runs/40882642483)も成功しました。 コアのPOSIXセルは3.9/3.13/3.14を検査し、Windowsは3.13を維持します。 + +準備はマージ・タグ作成・公開を承認しません。通常のレビュー、現行コミットの検査、最終的な保護されたmain CIの成功が必要です。別途承認された公開では、`SHA256SUMS`と`release-provenance.json`を含む固定資産7個、正確なタグ・ソース、認証済みattestation、依存関係監査、新規環境のインストールを検証し、必須のPyPI環境の人による承認を維持します。非公開のPyPIログイン・接続再確認を省略しても、その承認は免除しません。公開を先に宣言せず、古いタグ・資産を再利用しないでください。以下のv1.3.2記録は変更せず、実際のGitHub・PyPIの根拠を得てから[公開後の文書確認](#post-publication-documentation-check)を行います。新たなネイティブ・Windows 3.14・free-threadedの受け入れ、ランタイム認証・プロトコル・ACK動作、サービス配備、グローバルインストール、独立したスキル公開は含みません。 + ## 公開記録 — v1.3.2(2026-10-29確認) 2026-10-29の読み取り専用の再確認で、[GitHub v1.3.2リリース](https://github.com/abruption/session-peer/releases/tag/v1.3.2)がソース`f5e7c49554ff02771990a151e00b52f2abf3df0a`から正式な変更不能のリリースとして2026-10-28T01:52:40Zに公開されたことを確認しました。別途確認した[PyPIのバージョン記録](https://pypi.org/pypi/session-peer/1.3.2/json)では、wheelとsdistのアップロード時刻はそれぞれ2026-10-28T01:55:11.612762Zと2026-10-28T01:55:13.659910Zで、どちらも取り下げられていません。正確なファイルハッシュと根拠は[保守リリースの公開記録](docs/ja/releases/v1.3.2.md#v132-publication-record)にあります。 diff --git a/RELEASING.ko.md b/RELEASING.ko.md index f034ca7..f04996a 100644 --- a/RELEASING.ko.md +++ b/RELEASING.ko.md @@ -1,5 +1,13 @@ # session-peer 릴리스 +## v1.3.3 준비 + +공개된 v1.3.2를 기준으로 2026-10-30에 준비했습니다. 해당 준비 시점에 v1.3.3은 미공개 후보였습니다. 통합 소스 기준은 버전 준비 이전의 `ec2f7fc808f1e22519348091d51c28a2fd522caf`이며 최종 릴리스 커밋이 아닙니다. [유지보수 안내](docs/ko/releases/v1.3.3.md)는 #349/#352의 PR 안내와 경고 전용 참조 검사, #350/#353의 일반 CPython 3.14의 전용 테스트 구성(fixture) 기반 시험·패키지 CI, #351/#354의 공개 후 문서 정리, 공개된 Python 스킬 v0.4.1의 호환 사본을 다룹니다. 향후 `SKILL.md` 지원 자산은 `abruption/session-peer-skill` 저장소의 `v0.4.1` 태그에 해당하는 커밋 `263b0c333d539dc4e885b16ae3369a26f33097d8`, SHA-256 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`, 하한 0.9.1/full 1.3.2와 수신기 `codexBin` 하한 1.0.1을 사용합니다. 이 사본은 wheel/sdist 밖에 있으며 런타임 1.3.3과 독립적입니다. + +위 통합 소스 기준의 [CI](https://github.com/abruption/session-peer/actions/runs/40982760413)와 [CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)은 성공했습니다. 이 결과는 준비 커밋이나 최종 보호된 main 소스의 검사를 대신하지 않습니다. 먼저 [첫 CI](https://github.com/abruption/session-peer/actions/runs/40880779432)에서 신규 3.14 셀 10개가 통과한 뒤 분류자를 추가했고, 이후 [갱신된 전체 CI](https://github.com/abruption/session-peer/actions/runs/40882642483)도 통과했습니다. 코어 POSIX 셀은 3.9/3.13/3.14를 검증하며 Windows는 3.13을 유지합니다. + +준비는 병합·태그 생성·발행을 승인하지 않습니다. 정상 리뷰와 현재 커밋의 검사, 최종 보호된 main CI의 성공이 필요합니다. 별도로 승인된 발행에서는 `SHA256SUMS`, `release-provenance.json`을 포함한 고정 자산 7개, 정확한 태그·소스, 인증된 attestation, 의존성 감사와 새 환경 설치를 검증하고 필수 PyPI 환경의 사람 승인을 유지해야 합니다. 비공개 PyPI 로그인·연결 재확인 생략은 이 승인을 면제하지 않습니다. 공개를 미리 선언하거나 이전 태그·자산을 재사용하지 마십시오. 아래 v1.3.2 기록은 그대로 보존하고 실제 GitHub·PyPI 근거를 확보한 뒤에만 [공개 후 문서 확인](#post-publication-documentation-check)을 따릅니다. 새로운 네이티브·Windows 3.14·free-threaded 수락, 런타임 인증·프로토콜·ACK 동작, 서비스 배포, 전역 설치나 독립 스킬 발행은 포함하지 않습니다. + ## 공개 기록 — v1.3.2(2026-10-29 확인) 2026-10-29 읽기 전용 재확인에서 [GitHub v1.3.2 릴리스](https://github.com/abruption/session-peer/releases/tag/v1.3.2)가 소스 `f5e7c49554ff02771990a151e00b52f2abf3df0a`의 정식 불변 릴리스로 2026-10-28T01:52:40Z에 공개됐음을 확인했습니다. 별도로 확인한 [PyPI 버전 기록](https://pypi.org/pypi/session-peer/1.3.2/json)의 wheel과 sdist 업로드 시각은 각각 2026-10-28T01:55:11.612762Z와 2026-10-28T01:55:13.659910Z이며 둘 다 철회되지 않았습니다. 정확한 파일 해시와 근거는 [유지보수 공개 기록](docs/ko/releases/v1.3.2.md#v132-publication-record)에 있습니다. diff --git a/RELEASING.md b/RELEASING.md index 63c0f00..7f1764a 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,5 +1,13 @@ # Releasing session-peer +## v1.3.3 preparation + +Prepared on 2026-10-30 against published v1.3.2. At that preparation checkpoint, v1.3.3 was an unpublished candidate. Integrated source base: `ec2f7fc808f1e22519348091d51c28a2fd522caf`, before version preparation, not the final release commit. The [maintenance notes](docs/releases/v1.3.3.md) cover #349/#352 PR guidance and warning-only references, #350/#353 standard CPython 3.14 fixture/package CI, #351/#354 post-publication documentation, and the compatibility snapshot of published Python skill v0.4.1. The prospective `SKILL.md` support asset uses commit `263b0c333d539dc4e885b16ae3369a26f33097d8` in `abruption/session-peer-skill` at tag `v0.4.1`, SHA-256 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`, minimum 0.9.1/full 1.3.2 and receiver `codexBin` floor 1.0.1; it is outside wheel/sdist and independent of runtime 1.3.3. + +Integrated-base [CI](https://github.com/abruption/session-peer/actions/runs/40982760413) and [CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604) succeeded for the source base above. These results do not replace checks of the preparation head or final protected-main source. The 10 new 3.14 cells passed in the [initial CI](https://github.com/abruption/session-peer/actions/runs/40880779432) before the classifier was added, and the [updated full CI](https://github.com/abruption/session-peer/actions/runs/40882642483) passed after that addition. Core POSIX cells cover 3.9/3.13/3.14, while Windows remains at 3.13. + +Preparation does not authorize merge, tag creation or publication. Require normal review, successful current-head checks and final protected-main CI; a separately authorized publication must verify all 7 frozen assets, including `SHA256SUMS` and `release-provenance.json`, with exact tag/source, authenticated attestations, dependency audits and fresh installations, and retain required human PyPI environment approval. Skipping a private PyPI login/binding recheck does not waive that approval. Do not announce publication in advance or reuse old tags/assets. Keep the v1.3.2 records below unchanged and follow the [post-publication documentation check](#post-publication-documentation-check) only after actual GitHub and PyPI evidence exists. No new native/Windows 3.14/free-threaded acceptance, runtime authentication/protocol/ACK behavior, service rollout, global install or independent skill release is included. + ## Publication record — v1.3.2 (verified 2026-10-29) On 2026-10-29, a read-only recheck verified the [GitHub v1.3.2 release](https://github.com/abruption/session-peer/releases/tag/v1.3.2) as published, stable and immutable at 2026-10-28T01:52:40Z, from `f5e7c49554ff02771990a151e00b52f2abf3df0a`. The separately checked [PyPI version record](https://pypi.org/pypi/session-peer/1.3.2/json) has the wheel and sdist uploaded at 2026-10-28T01:55:11.612762Z and 2026-10-28T01:55:13.659910Z, both non-yanked. Exact file hashes and evidence are in the [maintenance publication record](docs/releases/v1.3.2.md#v132-publication-record). diff --git a/RELEASING.zh-CN.md b/RELEASING.zh-CN.md index c925228..e1e050f 100644 --- a/RELEASING.zh-CN.md +++ b/RELEASING.zh-CN.md @@ -1,5 +1,13 @@ # 发布session-peer +## v1.3.3准备 + +于2026-10-30以已发布的v1.3.2为基准准备。在当时的准备检查点,v1.3.3尚未发布,仅作为候选版本。集成源码基准为版本准备前的`ec2f7fc808f1e22519348091d51c28a2fd522caf`,并非最终发布提交。[维护说明](docs/zh-CN/releases/v1.3.3.md)涵盖#349/#352的PR说明与仅警告的引用检查、#350/#353的常规CPython 3.14测试夹具及软件包CI、#351/#354的发布后文档整理,以及已发布Python技能v0.4.1的兼容副本。将来的`SKILL.md`支持资产采用`abruption/session-peer-skill`仓库`v0.4.1`标签对应的提交`263b0c333d539dc4e885b16ae3369a26f33097d8`、SHA-256 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`、下限0.9.1/full 1.3.2及接收端`codexBin`下限1.0.1。该副本位于wheel/sdist之外,独立于运行时1.3.3。 + +上述集成源码基准的[CI](https://github.com/abruption/session-peer/actions/runs/40982760413)和[CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)均成功。这些结果不能替代准备提交或最终受保护main源码的检查。 首先在[初始CI](https://github.com/abruption/session-peer/actions/runs/40880779432)中通过新增的10个3.14单元后,才加入分类器,随后[更新后的完整CI](https://github.com/abruption/session-peer/actions/runs/40882642483)也成功。 核心POSIX单元覆盖3.9/3.13/3.14,Windows仍为3.13。 + +准备不授权合并、创建标签或发布。必须通过正常审查、当前提交检查及最终受保护main的CI。另行授权的发布须验证包含`SHA256SUMS`与`release-provenance.json`的7个固定资产、准确标签和源码、经过认证的attestation、依赖审计及全新环境安装,并保留PyPI环境必需的人工批准。省略私有PyPI登录或连接复查不代表免除该批准。不得提前宣称发布,也不得重用旧标签或资产。保留下方v1.3.2记录,取得实际GitHub和PyPI依据后才进行[发布后文档检查](#post-publication-documentation-check)。本准备不包含新的原生、Windows 3.14或free-threaded验收,不增加运行时认证、协议、ACK行为,也不部署服务、全局安装或发布独立技能。 + ## 发布记录 — v1.3.2(2026-10-29核验) 2026-10-29的只读复核确认,[GitHub v1.3.2版本](https://github.com/abruption/session-peer/releases/tag/v1.3.2)已从源码`f5e7c49554ff02771990a151e00b52f2abf3df0a`于2026-10-28T01:52:40Z正式发布且不可变。单独核验的[PyPI版本记录](https://pypi.org/pypi/session-peer/1.3.2/json)显示,wheel和sdist分别于2026-10-28T01:55:11.612762Z和2026-10-28T01:55:13.659910Z上传,均未被撤回。准确的文件哈希和依据见[维护版本发布记录](docs/zh-CN/releases/v1.3.2.md#v132-publication-record)。 diff --git a/docs/README.md b/docs/README.md index 6b66e87..da0ae5b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,6 +24,8 @@ installation paths. ## Development and history +- [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. + - [v1.3.2 maintenance notes](releases/v1.3.2.md) explain macOS firewall approval, Direct listener/TLS diagnostics, the MCP SDK floor and the Control security update outside Python archives, which requires a separate rollout. - [v1.3.1 maintenance notes](releases/v1.3.1.md) cover the Control dependency fix, compatibility skill update and publication/deployment boundaries. diff --git a/docs/i18n-manifest.json b/docs/i18n-manifest.json index 560874e..1ee647e 100644 --- a/docs/i18n-manifest.json +++ b/docs/i18n-manifest.json @@ -7,10 +7,10 @@ "zh-CN" ], "sources": { - "README.md": "20c893a35b81123c5fd9e37244227407de24f0b309e16101a838ca329ad7dfaa", - "RELEASING.md": "e3e202dd769ad47e0d22bfb5a2d48b3708fbf5f9f185b09262ba735417bdf46d", + "README.md": "61c50aee1b44a414334605c5536b649cc4598d37dac228719b6c22ba46006570", + "RELEASING.md": "4f39f1e5eb7e4cdb0f57dc68eb7eb04f67c6d027543252fe0adc5474c48adc79", "SECURITY.md": "8f018f6f98002312e143609b9734aeb971ca5217e146597c06b57b5645031046", - "docs/README.md": "b2113e46b366055cab95b77ab5940236bc8c18217144b9a6dbd08264773968c6", + "docs/README.md": "fff6dd61610f01c466969164005df237a2b39aa1e3bdd478bdb2c83fada18c57", "docs/agent-adapters.md": "bf185d3121c94829bb412071a25c4d943302e10a6b2e713111e653b8f8c3ea91", "docs/ai-assistant-guide.md": "9624ec96b92fb688fae3be3c94cb3564c77985091be451fbf1f056a1af9b9d9c", "docs/antigravity.md": "f2b5122a0ce6e6fb5bd4d8ed50ce2c8bd2dc9c98ec8ce328405cf7c2cd24229d", @@ -55,6 +55,7 @@ "docs/releases/v1.3.0.md": "a422901b83c85cfb48ac0ad2f99dbc82dca46c4929a3016acd15010e4a18188b", "docs/releases/v1.3.1.md": "1600b3f6e708ded1cd5d0cad7b5f2d78244e0e4b01d122d727f2a692fccaf652", "docs/releases/v1.3.2.md": "980437303a02644814116b12279d14bf83e6b50c87eab2e0c88e433808f372e3", + "docs/releases/v1.3.3.md": "bb2707cc5ef4b763ee61a804fd8ce75b762731b16681ac6c322636a35657b892", "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 f34e1e5..7b32e35 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -23,6 +23,8 @@ ## 開発と履歴 +- [v1.3.3 メンテナンス準備](releases/v1.3.3.md)は、Python 3.14 の CI・メタデータ、投稿・公開の案内、検証済みの互換スキル v0.4.1 コピーを扱います。公開と運用への配備は別です。 + - [v1.3.2メンテナンス案内](releases/v1.3.2.md)ではmacOSのファイアウォール承認、Directリスナー・TLS診断、MCP SDK下限、Python配布物の外にあるControlのセキュリティ更新と別途の配備について説明します。 - [v1.3.1メンテナンス案内](releases/v1.3.1.md)はControlの依存関係修正、互換スキル更新、公開と運用配備の範囲を説明します。 diff --git a/docs/ja/releases/v1.3.3.md b/docs/ja/releases/v1.3.3.md new file mode 100644 index 0000000..65f196c --- /dev/null +++ b/docs/ja/releases/v1.3.3.md @@ -0,0 +1,26 @@ +# v1.3.3保守リリースの準備 + +公開済みv1.3.2を基準に2026-10-30に準備しました。その準備時点ではv1.3.3は未公開の候補でした。統合ソース基準はバージョン準備前の`ec2f7fc808f1e22519348091d51c28a2fd522caf`であり、最終リリースコミットではありません。この作業はレビュー可能な変更の準備のみで、マージ・タグ作成・公開を承認しません。 + +## 変更点 + +- #349 / #352: PRテンプレートの既定参照を、イシューを閉じない`Refs`にし、意図的な完了と関連する検証・バージョンの根拠を明示します。読み取り専用の警告は、信頼するmainのコードと限定的なPR本文の判定規則を使います。本文を実行せず、イシュー状態を書き換えず、GitHubの終了参照パーサー全体やイシューが閉じない保証を提供するものでもありません。 +- #350 / #353: Ubuntu/macOSの通常のGIL有効CPython 3.14 CIを拡張します。コアはUbuntu/macOSの3.9/3.13/3.14とWindows 3.13を検査します。MCPは3.10/3.13/3.14のSDK下限1.30.0・最新の互換1.xプロファイルを維持して12セル、Relayは3.11/3.13/3.14で6セルです。パッケージ・インストールの3セルはUbuntu 3.13、Ubuntu 3.14、macOS 3.14です。分類子には3.14を含め、Python下限はコア3.9、MCP 3.10、Relay 3.11のままです。[ソースの試験行列](https://github.com/abruption/session-peer/blob/ec2f7fc808f1e22519348091d51c28a2fd522caf/tests/README.md)を参照してください。 +- #351 / #354: 現行READMEの公開案内を特定の最新版に固定せず、日付付きのv1.3.2公開記録を別途追加します。過去の準備記録を保存し、既存の公開後チェックリストを明確にして、4言語のDirectガイドに残った古い未公開表記を修正します。 +- 互換コピーと将来の`SKILL.md`サポート資産を、独立して公開された[Pythonスキルv0.4.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.4.1)に同期します。これは互換コピーの更新であり、新しいスキル公開や別途インストール済みのスキルの更新ではありません。 + +## 正確なソースと互換性 + +マージされたソースは#352 `6f9026e46138db544fb9c990387fcd4ccf37400f`、#353 `88f2c906e3f4bae8b377fcfac049a65fd68dea64`、#354 `ec2f7fc808f1e22519348091d51c28a2fd522caf`です。 + +スキルコピーは`abruption/session-peer-skill`リポジトリの`v0.4.1`タグに対応するコミット`263b0c333d539dc4e885b16ae3369a26f33097d8`に基づき、annotatedタグオブジェクトは`ba08d19af33cad0f7d032b7fe18c82d6ddd6793f`です。UTF-8で27126バイト、SHA-256は`fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`です。スキル版は0.4.1、基本ランタイム下限は0.9.1、文書のCLI対応範囲基準は1.3.2、受信機`codexBin`下限は1.0.1です。これらの値はランタイム1.3.3とは独立しています。サポートコピーはPython wheel/sdistには含まれません。 + +## 範囲とリリースゲート + +3.14の検査はフィクスチャー試験とパッケージ検証であり、新たな実際のネイティブエージェント、Windows 3.14、free-threaded Pythonの受け入れ検証ではありません。バージョン更新と文書変更は、ランタイムの認証・プロトコル・配送・ACK動作を追加しません。不明な結果、自動再送禁止、実験的機能の既存の境界を維持します。 + +上記の統合ソース基準の[CI](https://github.com/abruption/session-peer/actions/runs/40982760413)と[CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)は成功しました。この結果は、準備コミットや最終的な保護されたmainソースの検査を代替しません。 まず[最初のCI](https://github.com/abruption/session-peer/actions/runs/40880779432)で新しい3.14の10セルが成功してから分類子を追加し、その後の[更新済み全体CI](https://github.com/abruption/session-peer/actions/runs/40882642483)も成功しました。 + +公開済みv1.3.2のタグ・資産と日付付き記録は変更しません。正確な準備コミットをレビューし、そのコミットの検査を通過した後、以降のリリース手順より前に保護されたmainのCI成功も確認します。別途承認された公開では、`SHA256SUMS`と`release-provenance.json`を含む固定資産7個を、正確なタグ・ソースと認証済みattestationに照合し、新規環境のインストールを試験して、必須のPyPI環境の人による承認を維持します。非公開のPyPIログイン・接続再確認を省略しても、この承認は免除しません。実際のGitHub・PyPIの根拠を得てから既存の公開後文書チェックリストを使い、提供状況を先に宣言しないでください。 + +この準備はサービス配備・再起動、グローバルインストール、独立したスキル公開を行いません。Node Control配備と受信機・スキル環境の更新は、別途承認される運用作業です。 diff --git a/docs/ko/README.md b/docs/ko/README.md index 19921d3..8bcd77e 100644 --- a/docs/ko/README.md +++ b/docs/ko/README.md @@ -23,6 +23,8 @@ ## 개발과 이력 +- [v1.3.3 유지보수 준비](releases/v1.3.3.md)는 Python 3.14 CI·메타데이터, 기여·공개 안내, 검증된 호환 스킬 v0.4.1 사본을 다룹니다. 발행과 운영 배포는 별개입니다. + - [v1.3.2 유지보수 안내](releases/v1.3.2.md)에서 macOS 방화벽 승인, Direct 리스너·TLS 진단, MCP SDK 하한과 Python 배포물 밖의 Control 보안 업데이트 및 별도 배포 필요성을 설명합니다. - [v1.3.1 유지보수 안내](releases/v1.3.1.md)는 Control 의존성 수정, 호환 스킬 갱신과 발행·운영 배포의 범위를 설명합니다. diff --git a/docs/ko/releases/v1.3.3.md b/docs/ko/releases/v1.3.3.md new file mode 100644 index 0000000..965d644 --- /dev/null +++ b/docs/ko/releases/v1.3.3.md @@ -0,0 +1,26 @@ +# v1.3.3 유지보수 준비 + +공개된 v1.3.2를 기준으로 2026-10-30에 준비했습니다. 해당 준비 시점에 v1.3.3은 미공개 후보였습니다. 통합 소스 기준은 버전 준비 이전의 `ec2f7fc808f1e22519348091d51c28a2fd522caf`이며 최종 릴리스 커밋이 아닙니다. 이번 작업은 검토 가능한 변경을 준비할 뿐 병합·태그 생성·발행을 승인하지 않습니다. + +## 변경 사항 + +- #349 / #352: PR 템플릿의 기본 이슈 참조를 종료하지 않는 `Refs`로 바꾸고, 의도적인 완료 표시와 관련 검증·버전 근거를 명시하도록 정리합니다. 읽기 전용 경고는 신뢰된 main의 코드와 제한된 PR 본문 판별 규칙을 사용합니다. 본문을 실행하거나 이슈 상태를 쓰지 않으며, GitHub의 전체 종료 참조 파서나 이슈 종료 방지 보장이 아닙니다. +- #350 / #353: Ubuntu/macOS의 일반 GIL 활성 CPython 3.14 CI를 확장합니다. 코어는 Ubuntu/macOS의 3.9/3.13/3.14와 Windows 3.13을 검증합니다. MCP는 3.10/3.13/3.14의 SDK 하한 1.30.0·최신 호환 1.x 프로필 12개 셀, Relay는 3.11/3.13/3.14의 6개 셀을 검증합니다. 패키지·설치 셀 3개는 Ubuntu 3.13, Ubuntu 3.14, macOS 3.14입니다. 분류자에 3.14를 포함하며 Python 하한은 코어 3.9, MCP 3.10, Relay 3.11로 유지합니다. [소스 시험 행렬](https://github.com/abruption/session-peer/blob/ec2f7fc808f1e22519348091d51c28a2fd522caf/tests/README.md)을 참고하십시오. +- #351 / #354: 현재 README의 공개 안내를 특정 최신 버전에 고정하지 않도록 정리하고, 별도의 날짜별 v1.3.2 공개 기록을 추가합니다. 과거 준비 기록은 보존하고 기존 공개 후 점검표를 명확히 하며, 네 언어 Direct 가이드의 오래된 미공개 표기를 바로잡습니다. +- 호환 사본과 향후 `SKILL.md` 지원 자산을 독립적으로 공개된 [Python 스킬 v0.4.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.4.1)에 맞춥니다. 이는 호환 사본 갱신이며 새 스킬 발행이나 별도 설치된 스킬의 갱신이 아닙니다. + +## 정확한 소스와 호환성 + +병합된 소스는 #352 `6f9026e46138db544fb9c990387fcd4ccf37400f`, #353 `88f2c906e3f4bae8b377fcfac049a65fd68dea64`, #354 `ec2f7fc808f1e22519348091d51c28a2fd522caf`입니다. + +스킬 사본은 `abruption/session-peer-skill` 저장소의 `v0.4.1` 태그에 해당하는 커밋 `263b0c333d539dc4e885b16ae3369a26f33097d8`에서 가져왔으며, annotated 태그 객체는 `ba08d19af33cad0f7d032b7fe18c82d6ddd6793f`입니다. UTF-8 27126바이트이며 SHA-256은 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`입니다. 스킬 버전은 0.4.1, 기본 런타임 하한은 0.9.1, 문서의 CLI 기능 범위 기준은 1.3.2, 수신기 `codexBin` 하한은 1.0.1입니다. 이 숫자는 런타임 1.3.3과 독립적입니다. 지원 사본은 Python wheel/sdist에 포함되지 않습니다. + +## 범위와 릴리스 게이트 + +3.14 검사는 전용 테스트 구성(fixture) 기반 시험과 패키지 검증이며, 실제 네이티브 에이전트·Windows 3.14·free-threaded Python을 새로 수락 검증한 것은 아닙니다. 버전 상향과 문서 변경은 런타임 인증·프로토콜·전달·ACK 동작을 추가하지 않습니다. 불확실한 결과의 처리, 자동 재전송 금지와 실험적 기능의 기존 범위는 유지합니다. + +위 통합 소스 기준의 [CI](https://github.com/abruption/session-peer/actions/runs/40982760413)와 [CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)은 성공했습니다. 이 결과는 준비 커밋이나 최종 보호된 main 소스의 검사를 대신하지 않습니다. 먼저 [첫 CI](https://github.com/abruption/session-peer/actions/runs/40880779432)에서 신규 3.14 셀 10개가 통과한 뒤 분류자를 추가했고, 이후 [갱신된 전체 CI](https://github.com/abruption/session-peer/actions/runs/40882642483)도 통과했습니다. + +공개된 v1.3.2의 태그·자산과 날짜별 기록은 그대로 보존합니다. 정확한 준비 커밋을 검토하고 해당 커밋의 검사를 통과한 뒤, 이후 릴리스 단계 전에 보호된 main의 CI 성공도 확인해야 합니다. 별도로 승인된 발행에서는 `SHA256SUMS`, `release-provenance.json`을 포함한 고정 자산 7개를 정확한 태그·소스 및 인증된 attestation과 대조하고, 새 환경 설치를 시험하며 필수 PyPI 환경의 사람 승인을 유지해야 합니다. 비공개 PyPI 로그인·연결 재확인 생략은 이 승인을 면제하지 않습니다. 실제 GitHub·PyPI 근거를 확보한 뒤 기존 공개 후 문서 점검표를 사용하고 제공 여부를 미리 선언하지 마십시오. + +이 준비는 서비스 배포·재시작, 전역 설치나 독립 스킬 발행을 수행하지 않습니다. Node Control 배포와 수신기·스킬 환경 갱신은 별도로 승인된 운영 작업입니다. diff --git a/docs/releases/v1.3.3.md b/docs/releases/v1.3.3.md new file mode 100644 index 0000000..829da27 --- /dev/null +++ b/docs/releases/v1.3.3.md @@ -0,0 +1,26 @@ +# v1.3.3 maintenance preparation + +Prepared on 2026-10-30 against published v1.3.2. At that preparation checkpoint, v1.3.3 was an unpublished candidate. The integrated source base is `ec2f7fc808f1e22519348091d51c28a2fd522caf`, before version preparation; it is not the final release commit. This work prepares a reviewable change only. It does not authorize merge, tag creation or publication. + +## Changes + +- #349 / #352: refresh the PR template to default to non-closing `Refs`, make intentional completion explicit, and request relevant validation and version evidence. A read-only warning uses code from trusted main and a limited PR-body heuristic. It neither executes body text nor writes issue state, and it is not GitHub's complete closing-reference parser or a guarantee against closure. +- #350 / #353: extend standard, GIL-enabled CPython 3.14 CI on Ubuntu/macOS. Core covers 3.9/3.13/3.14 on Ubuntu/macOS and retains Windows 3.13; MCP keeps SDK floor 1.30.0 and latest compatible 1.x profiles across 3.10/3.13/3.14 (12 cells), and Relay covers 3.11/3.13/3.14 (6 cells). Three packaging/install cells cover Ubuntu 3.13, Ubuntu 3.14 and macOS 3.14. The classifier includes 3.14; Python floors remain core 3.9, MCP 3.10 and Relay 3.11. See the [source test matrix](https://github.com/abruption/session-peer/blob/ec2f7fc808f1e22519348091d51c28a2fd522caf/tests/README.md). +- #351 / #354: use version-neutral publication guidance in current READMEs, add a separate dated v1.3.2 publication record, preserve historical preparation records, make the existing post-publication checklist explicit, and correct the four-language Direct guide's stale unpublished label. +- Synchronize the compatibility snapshot and prospective `SKILL.md` support asset to the independently published [Python skill v0.4.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.4.1). This is a compatibility-copy update, not a new skill release or an update to separately installed skills. + +## Exact source and compatibility + +The merged sources are #352 `6f9026e46138db544fb9c990387fcd4ccf37400f`, #353 `88f2c906e3f4bae8b377fcfac049a65fd68dea64` and #354 `ec2f7fc808f1e22519348091d51c28a2fd522caf`. + +The skill snapshot comes from commit `263b0c333d539dc4e885b16ae3369a26f33097d8` in `abruption/session-peer-skill` at tag `v0.4.1`, annotated tag object `ba08d19af33cad0f7d032b7fe18c82d6ddd6793f`: 27126 UTF-8 bytes, SHA-256 `fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`. Its version is 0.4.1, basic runtime minimum 0.9.1, documented CLI coverage 1.3.2 and receiver `codexBin` floor 1.0.1. These numbers are independent of runtime 1.3.3. The support copy is outside the Python wheel/sdist. + +## Boundaries and release gates + +The 3.14 checks are fixture and package validation, not new live native-agent, Windows 3.14 or free-threaded Python acceptance. The version bump and documentation changes add no runtime authentication, protocol, delivery or ACK behavior. Existing unknown-outcome/no-automatic-resend and experimental-feature boundaries remain. + +Integrated-base [CI](https://github.com/abruption/session-peer/actions/runs/40982760413) and [CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604) succeeded for the source base above. These results do not replace checks of the preparation head or final protected-main source. The 10 new 3.14 cells passed in the [initial CI](https://github.com/abruption/session-peer/actions/runs/40880779432) before the classifier was added, and the [updated full CI](https://github.com/abruption/session-peer/actions/runs/40882642483) passed after that addition. + +Keep all published v1.3.2 tags/assets and its dated records unchanged. Review the exact preparation head and require successful current-head checks, then successful protected-main CI before any later release step. A separately authorized publication must verify all 7 frozen assets, including `SHA256SUMS` and `release-provenance.json`, against the exact tag/source and authenticated attestations, test fresh installations and retain the required human PyPI environment approval. Skipping a private PyPI login/binding recheck does not waive that approval. Use the existing post-publication documentation checklist after actual GitHub and PyPI evidence exists; do not announce availability in advance. + +Preparation performs no service deployment/restart, global installation or independent skill publication. Node Control deployment and receiver/skill environment updates remain separately authorized operations. diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index 503a93e..1196c31 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -22,6 +22,8 @@ ## 开发与历史 +- [v1.3.3 维护准备](releases/v1.3.3.md)涵盖 Python 3.14 CI/元数据、贡献与发布指南,以及已核验的兼容技能 v0.4.1 副本。发布与运维部署相互独立。 + - [v1.3.2维护说明](releases/v1.3.2.md)说明macOS防火墙授权、Direct监听器/TLS诊断、MCP SDK下限,以及位于Python分发包之外且需要单独部署的Control安全更新。 - [v1.3.1维护说明](releases/v1.3.1.md)介绍Control依赖修复、兼容技能更新以及发布与运行环境部署的界限。 diff --git a/docs/zh-CN/releases/v1.3.3.md b/docs/zh-CN/releases/v1.3.3.md new file mode 100644 index 0000000..f58a1dd --- /dev/null +++ b/docs/zh-CN/releases/v1.3.3.md @@ -0,0 +1,26 @@ +# v1.3.3维护准备 + +于2026-10-30以已发布的v1.3.2为基准准备。在当时的准备检查点,v1.3.3尚未发布,仅作为候选版本。集成源码基准是版本准备前的`ec2f7fc808f1e22519348091d51c28a2fd522caf`,并非最终发布提交。本工作仅准备可供审查的变更,不授权合并、创建标签或发布。 + +## 变更 + +- #349 / #352: 将PR模板的默认引用改为不会关闭issue的`Refs`,明确标示有意完成,并要求相关验证与版本依据。只读警告使用受信任main的代码和有限的PR正文判定规则。它不执行正文,不写入issue状态,也不是GitHub完整的关闭引用解析器,更不保证issue不会关闭。 +- #350 / #353: 扩展Ubuntu/macOS上常规启用GIL的CPython 3.14 CI。核心覆盖Ubuntu/macOS的3.9/3.13/3.14,并保留Windows 3.13;MCP保留3.10/3.13/3.14的SDK下限1.30.0与最新兼容1.x配置,共12个单元;Relay覆盖3.11/3.13/3.14,共6个单元。3个打包与安装单元是Ubuntu 3.13、Ubuntu 3.14和macOS 3.14。分类器包含3.14,Python下限仍为核心3.9、MCP 3.10、Relay 3.11。参见[源码测试矩阵](https://github.com/abruption/session-peer/blob/ec2f7fc808f1e22519348091d51c28a2fd522caf/tests/README.md)。 +- #351 / #354: 当前README的发布说明不再固定某个最新版本,另行添加带日期的v1.3.2发布记录。保留历史准备记录,明确既有发布后检查表,并纠正四种语言Direct指南中过时的未发布表述。 +- 将兼容副本及将来的`SKILL.md`支持资产同步至独立发布的[Python技能v0.4.1](https://github.com/abruption/session-peer-skill/releases/tag/v0.4.1)。这是兼容副本更新,并非发布新技能或更新另行安装的技能。 + +## 准确源码与兼容性 + +已合并的源码为#352 `6f9026e46138db544fb9c990387fcd4ccf37400f`、#353 `88f2c906e3f4bae8b377fcfac049a65fd68dea64`及#354 `ec2f7fc808f1e22519348091d51c28a2fd522caf`。 + +技能副本来自`abruption/session-peer-skill`仓库`v0.4.1`标签对应的提交`263b0c333d539dc4e885b16ae3369a26f33097d8`,annotated标签对象为`ba08d19af33cad0f7d032b7fe18c82d6ddd6793f`:UTF-8共27126字节,SHA-256为`fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed`。技能版本为0.4.1,基本运行时下限为0.9.1,文档CLI覆盖基准为1.3.2,接收端`codexBin`下限为1.0.1。这些数字独立于运行时1.3.3。支持副本不包含在Python wheel/sdist中。 + +## 范围与发布门禁 + +3.14检查属于测试夹具及软件包验证,并非新的实际原生代理、Windows 3.14或free-threaded Python验收。版本更新和文档变更不增加运行时认证、协议、传递或ACK行为。未知结果、禁止自动重发和实验功能的既有边界保持不变。 + +上述集成源码基准的[CI](https://github.com/abruption/session-peer/actions/runs/40982760413)和[CodeQL](https://github.com/abruption/session-peer/actions/runs/40982759604)均成功。这些结果不能替代准备提交或最终受保护main源码的检查。 首先在[初始CI](https://github.com/abruption/session-peer/actions/runs/40880779432)中通过新增的10个3.14单元后,才加入分类器,随后[更新后的完整CI](https://github.com/abruption/session-peer/actions/runs/40882642483)也成功。 + +保留已发布v1.3.2的标签、资产和带日期记录。审查准确的准备提交并要求该提交的检查成功,之后的发布步骤前还须确认受保护main的CI成功。另行授权的发布必须将包含`SHA256SUMS`与`release-provenance.json`的7个固定资产,与准确标签、源码及经过认证的attestation对照,测试全新环境安装,并保留PyPI环境必需的人工批准。省略私有PyPI登录或连接复查不代表免除该批准。取得实际GitHub和PyPI依据后,采用既有发布后文档检查表;不得提前宣称可用。 + +本准备不执行服务部署或重启、全局安装或独立技能发布。Node Control部署以及接收端和技能环境更新,仍为需要另行授权的运维工作。 diff --git a/session_peer.py b/session_peer.py index 3544e84..d9be16f 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.3.2" +__version__ = "1.3.3" 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 6bfb99c..809f868 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.3.2" +__version__ = "1.3.3" GITHUB_REPO = "abruption/session-peer" # Claude Code refuses a same-machine message once its serialized form passes diff --git a/skills/session-peer/SKILL.md b/skills/session-peer/SKILL.md index cfb98b6..44e2cf6 100644 --- a/skills/session-peer/SKILL.md +++ b/skills/session-peer/SKILL.md @@ -3,9 +3,9 @@ name: session-peer description: Send user-requested messages to Claude Code, Codex, or a live registered Antigravity TUI on this machine, an SSH host, or a paired device using session-peer. Use for cross-session handoffs and notifications when the available native tools do not cover the requested target. allowed-tools: Bash, Read metadata: - version: "0.4.0" + version: "0.4.1" runtime-min-version: "0.9.1" - runtime-full-version: "1.3.0" + runtime-full-version: "1.3.2" --- # Session messaging @@ -21,7 +21,7 @@ exist only in 1.0.0 and newer; confirm them with `session-peer send --help` before use. For security fixes, recommend Python runtime 1.0.3 or newer; `runtime-min-version` and `runtime-full-version` describe CLI compatibility, not security currency. -The published CLI coverage reference is session-peer 1.3.0. +The published CLI coverage reference is session-peer 1.3.2. It excludes the separately identified experimental handoff workflow. If the command is missing, explain that installing the skill did not install the runtime and recommend one of the supported installation paths in the [repository README](https://github.com/abruption/session-peer#installation-options). @@ -292,7 +292,7 @@ the other sources' sessions. This applies to local and SSH listing. ## Python 1.3 workflows -The following optional workflows require Python runtime 1.3.0 or newer. The basic CLI compatibility floor remains 0.9.1, and the published CLI coverage reference is 1.3.0. Check the resolved runtime version and affirmative command help, along with each feature's platform and permission requirements. Receiver `codexBin` retains its independent 1.0.1 floor. Experimental handoff is excluded from the command coverage represented by `runtime-min-version` and `runtime-full-version`. See the [published runtime release](https://github.com/abruption/session-peer/releases/tag/v1.3.0). +The following optional workflows require Python runtime 1.3.0 or newer. The basic CLI compatibility floor remains 0.9.1, and the published CLI coverage reference is 1.3.2. Check the resolved runtime version and affirmative command help, along with each feature's platform and permission requirements. Receiver `codexBin` retains its independent 1.0.1 floor. Experimental handoff is excluded from the command coverage represented by `runtime-min-version` and `runtime-full-version`. See the [published runtime release](https://github.com/abruption/session-peer/releases/tag/v1.3.0). - [Explanation](https://github.com/abruption/session-peer/blob/v1.3.0/docs/cli-reference.md#delivery-explanation): text-only `send --dry-run --explain` covers local, SSH and paired routes with normal message input. `doctor --explain` describes a diagnostic snapshot, not a selected target's readiness; `handoff status --explain` describes stored read-only evidence. JSON combinations and handoff SEND correlation/ACK/observe/wait combinations are refused. Explanations reuse existing results without extra probes, activation, submission or receipt authority; existing dry-run version checks are separate. Paired context is negotiated by the existing probe, allowlisted and bounded to 8 KiB; older receivers retain known native facts and leave missing context unknown. A preview grants no permission, reserves no target and provides no ACK evidence. Exit zero alone does not prove non-submission; unknown or unexpected submission never permits automatic resend. Wake still requires an explicit user request. - [Route presets](https://github.com/abruption/session-peer/blob/v1.3.0/docs/cli-reference.md#route-presets) and the separate [recipient addressbook](https://github.com/abruption/session-peer/blob/v1.3.0/docs/cli-reference.md#recipient-addressbook-v130) support macOS/Linux local/SSH Claude/Codex only. Manage entries only on user request. `preset show` reads stored route/revision data; `list --preset` discovers current sessions. Actual preset send requires `--to` and `--preset-revision`; replace/remove use `--expect-revision`. The `dp1` value hash repeats when identical name/route values are restored, and later changes do not cancel an already expanded invocation. For addresses, review `address resolve` before add/reselect, using its `as1` observation revision; actual send requires current `--address-revision` (`ab1`) and exact canonical `--confirm-target`. Reselect/remove use revision checks, and each add/reselect creates a new binding ID. Claude retains `tg1`; Codex `aw1` is a rechecked writer observation, with generation unsupported and no atomic storage/incarnation guarantee. SSH binds the verified key from the actual selection connection and pins it for send. Discover inspects at most 16 explicitly selected addresses, groups identical route/home/key contexts and preserves partial failures; it adds no network scan, broadcast or automatic reselection. Labels/revisions do not authenticate people, grant permission or prove ACK. Stop for operator review on private-storage/ACL/mount refusals; do not repair permissions or fall back automatically. @@ -302,3 +302,31 @@ The following optional workflows require Python runtime 1.3.0 or newer. The basi - [Runtime notice preferences](https://github.com/abruption/session-peer/blob/v1.3.0/docs/cli-reference.md#updating): macOS/Linux local offline `update --dismiss-runtime-notice VERSION` or `--clear-runtime-notice-dismissal` changes only the automatic notice for an exact version. These commands do not check, install or approve a release; remote/SSH/check combinations are refused. Explicit checks retain real latest/outdated results; skill notices and global opt-out remain unchanged. Windows lacks this preference. Example versions are not release announcements. Runtime publication does not publish or install this independently managed skill. Adopt only a separately approved immutable skill release after verifying its recorded tag, source commit and SKILL hash. Update the Python runtime's compatibility snapshot in a separate change using that exact published skill source; existing runtime releases remain immutable. + +## Python 1.3.2 maintenance + +Optional MCP requires Python 3.10+ and the `session-peer[mcp]` extra; runtime +1.3.2 requires SDK `mcp>=1.30,<2`. The core CLI still supports Python 3.9 without +mandatory external dependencies. Separate a new extra installation from an +explicit upgrade using an existing environment's manager, interpreter and extras. +A standalone update does not update that environment. The dependency-floor change +does not establish exploitability in the stdio-only server; see the +[fixed MCP reference](https://github.com/abruption/session-peer/blob/v1.3.2/docs/mcp.md). + +For Direct receivers in Python 1.3.2+, startup `ready:true` means the local +listener is ready; `directReadyConfirmed:false` does not confirm remote access. +Keep a missing field on an older receiver unknown. TCP acceptance, TLS, +authenticated access, native submission and consumption/ACK are separate facts. +Opt-in `--diagnostic-events` provides bounded stage/counter and normal-close +summaries, not a heartbeat, lossless stream or ACK. Ask the owner to review the +expected Python application's incoming-connection permission if needed; do not +disable the firewall, widen binds, reset keys/DBs or retry uncertain operations. +See the [Direct diagnostic contract](https://github.com/abruption/session-peer/blob/v1.3.2/docs/paired-devices.md#macos-direct-listener-checks-341). + +Receiver modules are in wheel/sdist, not the standalone script; an operator must +separately update their package environment and explicitly restart the receiver. +Node Control's Better Auth/core 1.7.7 update is outside Python artifacts too. +Pending OAuth sign-ins may need restarting; that is not authority to revoke +sessions, rotate keys or recreate databases. Perform these operational changes +only on an explicit operator request; see the +[maintenance boundaries](https://github.com/abruption/session-peer/blob/v1.3.2/docs/releases/v1.3.2.md#incident-and-compatibility-boundaries). diff --git a/tests/core/test_skill_frontmatter.py b/tests/core/test_skill_frontmatter.py index 585c94f..3cb52ec 100644 --- a/tests/core/test_skill_frontmatter.py +++ b/tests/core/test_skill_frontmatter.py @@ -1,5 +1,6 @@ """Bounded metadata only; no skill instruction execution or manager changes.""" import errno +import hashlib import os from pathlib import Path import tempfile @@ -26,6 +27,16 @@ class SkillFrontmatter(unittest.TestCase): + def test_published_v041_snapshot_is_exact_and_metadata_remains_readable(self): + path = Path(__file__).resolve().parents[2] / "skills/session-peer/SKILL.md" + content = path.read_bytes() + self.assertEqual(27126, len(content)) + self.assertEqual("fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed", + hashlib.sha256(content).hexdigest()) + self.assertGreater(len(content), LIMIT) + self.assertEqual({"version": "0.4.1", "runtimeMinVersion": "0.9.1"}, + peer.installed_skill_metadata(path)) + def setUp(self): directory = tempfile.TemporaryDirectory(prefix="skill-metadata-") self.addCleanup(directory.cleanup) diff --git a/tests/docs/test_docs_i18n.py b/tests/docs/test_docs_i18n.py index 712f680..6418188 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(52, len(sources), "Update the translation manifest for new canonical docs") + self.assertEqual(53, 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 cbfe007..931a27e 100644 --- a/tests/docs/test_stable_candidate.py +++ b/tests/docs/test_stable_candidate.py @@ -11,6 +11,42 @@ class StableCandidate(unittest.TestCase): + def test_v133_preparation_preserves_source_and_publication_boundaries(self): + localized_gates = { + "": ("unpublished candidate", "does not authorize merge, tag creation or publication", + "required human PyPI environment approval", "final protected-main source"), + "ko/": ("미공개 후보", "병합·태그 생성·발행을 승인하지 않습니다", + "PyPI 환경의 사람 승인", "최종 보호된 main 소스의 검사"), + "ja/": ("未公開の候補", "マージ・タグ作成・公開を承認しません", + "PyPI環境の人による承認", "最終的な保護されたmainソースの検査"), + "zh-CN/": ("尚未发布", "候选版本", "不授权合并、创建标签或发布", + "PyPI环境必需的人工批准", "最终受保护main源码的检查"), + } + expected = ("1.3.3", "2026-10-30", "ec2f7fc808f1e22519348091d51c28a2fd522caf", + "6f9026e46138db544fb9c990387fcd4ccf37400f", + "88f2c906e3f4bae8b377fcfac049a65fd68dea64", + "263b0c333d539dc4e885b16ae3369a26f33097d8", + "ba08d19af33cad0f7d032b7fe18c82d6ddd6793f", + "fdf5697c04f4a37194986622afb3a7966bb02631c128cf18a323e3fbe5ae90ed", + "27126", "0.4.1", "0.9.1", "1.3.2", "1.0.1", + "40982760413", "40982759604", "SHA256SUMS", "release-provenance.json") + for locale, suffix in (("", ""), ("ko/", ".ko"), ("ja/", ".ja"), ("zh-CN/", ".zh-CN")): + with self.subTest(locale=locale): + notes = (ROOT / ("docs/" + locale + "releases/v1.3.3.md")).read_text(encoding="utf-8") + for marker in expected: + self.assertIn(marker, notes) + for marker in localized_gates[locale]: + self.assertIn(marker, notes) + self.assertIn("releases/v1.3.3.md", (ROOT / ("RELEASING" + suffix + ".md")).read_text(encoding="utf-8")) + self.assertNotIn("```", notes) + notes = (ROOT / "docs/releases/v1.3.3.md").read_text(encoding="utf-8") + for boundary in ("unpublished candidate", "not the final release commit", + "does not authorize merge, tag creation or publication", + "not new live native-agent, Windows 3.14 or free-threaded Python acceptance", + "required human PyPI environment approval", + "do not replace checks of the preparation head"): + self.assertIn(boundary, notes) + def test_v121_preparation_records_patch_sources_and_publication_gates(self): notes = [(ROOT / ("docs/" + locale + "releases/v1.2.1.md")).read_text(encoding="utf-8") for locale in ("", "ko/", "ja/", "zh-CN/")] @@ -255,8 +291,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.3.2") - self.assertIn('__version__ = "1.3.2"', + self.assertEqual(session_peer.__version__, "1.3.3") + self.assertIn('__version__ = "1.3.3"', (ROOT / "session_peer_core/common.py").read_text(encoding="utf-8")) def test_current_readmes_and_runbooks_match_source_version(self): @@ -264,7 +300,15 @@ def test_current_readmes_and_runbooks_match_source_version(self): for stem in ("README", "RELEASING"): with self.subTest(stem=stem, suffix=suffix): text = (ROOT / (stem + suffix + ".md")).read_text(encoding="utf-8") - self.assertIn("1.3.2", text) + if stem == "README": + 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: + first_preparation = re.search(r"^## (v\d+\.\d+\.\d+)[^\n]*$", text, re.MULTILINE) + self.assertIsNotNone(first_preparation) + self.assertEqual("v" + session_peer.__version__, first_preparation.group(1)) self.assertNotIn("1.0.0rc4", text) if stem == "RELEASING": self.assertIn("--draft=false --prerelease=false --latest", text) @@ -287,16 +331,16 @@ def test_release_notes_keep_scope_and_limits_visible(self): def test_stable_release_keeps_operational_deployment_separate(self): profiles = ( - ("", "Source version: **1.3.2**.", + ("", "Source version: **1.3.3**.", "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.3.2**.", + (".ko", "소스 버전: **1.3.3**.", "2026-10-28 준비 시점의 마지막 확인 공개 안정판은 **1.3.1**이었습니다.", "개발 후보 1.2.1은 미공개입니다"), - (".ja", "ソースバージョン:**1.3.2**。", + (".ja", "ソースバージョン:**1.3.3**。", "2026-10-28の準備時点で、最後に確認した公開済み安定版は**1.3.1**でした。", "開発候補1.2.1は未公開です"), - (".zh-CN", "源码版本:**1.3.2**。", + (".zh-CN", "源码版本:**1.3.3**。", "在2026-10-28的准备检查时,最后确认的已发布稳定版本为**1.3.1**。", "开发候选版本1.2.1尚未发布"), ) @@ -304,7 +348,7 @@ def test_stable_release_keeps_operational_deployment_separate(self): text = (ROOT / ("README" + suffix + ".md")).read_text(encoding="utf-8") self.assertIn(source_version, text) self.assertNotIn(obsolete_checkpoint, text) - self.assertIn("releases/v1.3.2.md", text) + self.assertIn("releases/v1.3.3.md", text) for stale_version in ("1.2.0", "1.2.1", "1.3.0"): self.assertNotIn(stale_unpublished.replace("1.2.1", stale_version), text) self.assertIn("https://github.com/abruption/session-peer/releases", text)