Repository navigation
[BLOCKER R10-B12] 専用State App CAS・失効401・鍵なしreadbackと有限再開 #490
Description
AUTO v2.5 現行の受入条件(過去本文の外部事象待ちを上書き): AUTO v2.5: 17 originalとApp CAS/revoke401/鍵なしGETの正常NO_UPDATEまたは実失敗の安全終端を最優先。実policyにPREPARE承認不足が無いならNOT_REQUIREDとしBLOCKED_APPROVALの実障害は条件外(#501)。制御ACK喪失/HTTP409の安全境界は引き続き必要。形式的な#489の欠落を停止理由にしない。
正本: #311 / 将来留意点 #501。PUBLISH_DENY/runtimeEnabled=false、旧scheduleの安全撤去条件・必須CI・保護設定不変。
2026-11-01 完成優先の実行順序:P0/先行実装→適格イベントで最終検証
今すぐ進める: 単一真正source/17 local originalとState App CASの単発PUT・HTTP409・revoke401・鍵なし独立readbackの制御された実原本を完成。正常なno-approval終端をまず通す。
イベント成立時だけ行う: 実PREPARE承認不足がある場合のみそのBLOCKED_APPROVAL原本を追加。実偶発ACK喪失は自然発生時に追加。
運用: イベント不在のGET監査・成功Run再実行は繰り返さない。残余はEVENT_GATEDで保持し、発火時に本Issueの手順と受入条件を利用する。コード完成と正式受入は別。PUBLISH_DENY/runtimeEnabled=false・必須CI・旧schedule・元の受入条件を変更しない。
現行 v2.3: 実承認不足が存在しないときは、それを作るために人間・承認ゲートを追加しない。実policyに応じて適用判定を記録し、正常/失敗/隔離のState CAS・失効・独立readbackを進める。承認不足の実証は実在policyが要求する場合のみ。
子タスクID: R10-B12
分類・対象枝番: IMPLEMENT + VERIFY_LIVE / R10-02・親R10・W10-C
親: #311、関連親 #75。受入契約v2.1+ metadata/issue311-remaining-work-v22.json v2.2を優先し、現在の正式 85/94 PASS・9 PENDING は変更しない。各子タスクのコード完成/fixture PASSとoriginal live合格を区別。
共通条件: 既存成功Run rerun禁止、偽入力/任意失敗/未認可公開禁止、PUBLISH_DENY / runtimeEnabled=false・必須App15368・保護main維持。ソース変更は保護PR→必須CI→期待HEADマージ→original postmerge→実原本検証→#311/#75更新。
現在の阻害条件
共通approval block機能/テストだけでは実App Stateへの永続書込、独立リーダーでの確認や再開手順が未実証。W10-Cの実承認adapterと既存App CASを一回の正規要求で繋ぐ必要がある。
再現可能な実施手順
- B10+B11の同一source-bound request/17targets/policy evidenceを、既存認可されたState App adapterで1回だけCAS。
- PUT応答不明→GET-only、stale version→409、安全な隔離、期限切れ/失効をfail-closed。既存成功Stateと元receipt保全。
- 実App token revoke→401を同tokenで証明。別Runnerで鍵なしに原本State Git blob/revision/event hash/対象17状態・理由/最終成功・再開点を読取。
- 実original ZIPを独立取得・SHA256/CRC照合し元request・Stateと対応付ける。
- 承認復活時は元BLOCKED_APPROVALを自動SUCCESSにせず、新認可と再GETの有限再開を別リクエストとして実証。
受入条件(すべて満たした時のみ)
- 実policy+実承認不足+同一sourceの17対象terminal CASが成立
- State App単発PUT/revision/ACK喪失GET-only/409安全拒否/失効401がoriginal一致
- 別Runner鍵なしGETで全17のstatus/reason/lastSuccessfulStage/resumeと原本ZIP実SHAが一致
- 新認可がある場合のみ有限再開。自動成功・不明結果の強制成功なし
- B10/B11条件も満たしたときだけR10-02/親R10再判定
停止・再開条件
依存: B10/B11。実承認要求がない場合はEXTERNAL_GATEとして進捗停止を正確に記録。
報告要件: 根拠の原本 URL・PR/Run/HEAD・必要なState blob/SHA256・判定区分を示す。正式9未受入枝番のチェックを自動変更しない。
2026-10-31 単一ユーザー移行(今回の明示指示を適用)
本節は上記の任意の「別human intent」「第二人間」「追加Work操作」条件を置き換える。ShutenOishi本人の一回のChat要求を、認証済みGitHub操作で固定する。同じrequestIdの許可scope内のPREPARE・Issue調停・Draft候補・native CI・検証・記録は追加human要求なしで進める。実際のGitHub actor/author/merged_by/Runは独立GETし、Botを人間と呼ばない。
実行可能工程: immutable request(対象・scope・requestId・source SHA・expected HEAD・expiry・replay key)→hostile試験→保護PR→必須App15368 CI→期待HEAD保護マージ→original postmerge→必要な実ZIP/State独立GET。既存成功Runを再実行しない。
受入条件: 上記原本が同じ要求へ結合し、無権限・scope外・改ざん・期限切れ・replayをfail closed。追加の人間操作なしで許可範囲が完走した場合のみ本機能の完了。正式85/94は変更しない。
原本証跡: PR/HEAD、真正author/merged_by/actor、Run/attempt1、request blob、必要なZIP実SHA256/CRC/署名/Attestation、State revision、独立readback URLを記録。
外部条件: GitHub自身の実在する保護/承認規則、サービスquota、真正upstream、特定候補のPUBLISHのみ。有限timeout/retry・単発write/不明応答GET-only・最小権限は維持する。任意件数上限は理由と適用箇所を監査し、無条件に無制限化しない。
再開条件: 具体的な未成立の外部事実、または未実装adapter/検証工程を示す。不在監査だけを反復しない。
非公開統合試験は実在するupstream tag/full commitを使い、隔離資源・実GitHub API・実workflowで行う。新stableの偽造は不可。CONTROLLED_INTEGRATIONと将来真正stableのPUBLIC_E2Eを別判定し、正式契約の判定変更は保護PRのマージ・postmerge後に適用する。旧scheduleは代替受入まで維持。
R10は実policyと実承認状態を確認し、存在しないPREPARE承認不足を捏造しない。policyが承認を要求しない場合は「不足なし」を原本付きで記録し、任意の第二人間待ちを作らず、適用判定の契約改訂へ進む。実在する不足時のみBLOCKED_APPROVALを実証する。
本要求は非公開実装・契約変更の認可。PUBLISH_DENY/runtimeEnabled=falseを維持。正式公開は実在する特定候補への本人一回の明示PUBLISHと全既存公開ゲートが必要。
Activity
ShutenOishi commentedon Oct 31, 2026
2026-11-01 JST 受入契約補正(App実証とは別)
build PR#495 はW10-Cの真正承認不足/承認不要(NOT_REQUIRED)排他分岐を保護マージ。postmerge original 41218776675 source/hostile/independent_readback、resolver41218776652全SUCCESS。元ZIP実SHA
ee0ce6994e820b060c8f87a4fd9825c15b6686969421ffca999e7674aa261a34provider/CRC一致。ただし元receipt明記realAppCasPerformed=false、実State App CAS/失効401/独立readback受入ではない。17対象の真の終端、1回PUT/リビジョン/実ZIP/revoke401をこの子Issueの未達とする。正式85/94維持。ShutenOishi commentedon Nov 1, 2026
2026-11-01 JST — protected R10 NOT_REQUIRED implementation completed (live State CAS still pending)
29916f4673a4e9d125ef9607a408a61acc1a6681: required App15368 resolver/hostile SUCCESS, original Validate 41274768249 and approval hostile 41274768099 SUCCESS. Expected-head protected squash merged_by ShutenOishi to main663f9e61da5e0d3efc3d1aa18b13392d29b1cc22. Original postmerge Validate 41281567324 and approval-hostile 41281567213 SUCCESS/attempt1.record_approval_not_requiredevent: 17 original source-bound PENDING targets, exact request/Run/HEAD/scope/policyPath/blob/revision/expiry,requiredApprovals=0andobservedApprovals=0, canonical PREPARE, evidence hash and replay idempotency; preserves terminal, all target status, publicationAuthorized=false. Hostile tests reject forged approval/PUBLISH/stale/cross-request.1557766e5e6a86f9c596d88f9cec67507457ba5aadds strict source-bound original App local ID verification, preserving legacy exact central source. Its first App hostile CI failed because an old observation test fixture still used a fake legacy central ID; fixed fixture on next commit, new App hostile Run 41281753966 SUCCESS, latest-head Windows required summary Run 41281753952 pending. PR90 not merged before full required Windows success; no live dispatch created.ShutenOishi commentedon Nov 1, 2026
2026-11-01 P0:#311 (comment)
先行完了は承認不足がない真正source→17-target CAS terminal、実Provider PUT/revision、実409・失効401、安全な不明応答GET-only、鍵なしreadback。BLOCKED_APPROVAL専用の追加live検証はpolicyに実要求があった時だけ。正常経路を本物のブロック不足の再現待ちにしない。
ShutenOishi commentedon Nov 1, 2026
AUTO v2.5 正式子タスク受入 — 2026-11-01 JST
判定: COMPLETED_SCOPED(非公開AUTO v2.5 の要求された範囲)。将来の新stable/PUBLISHや自然障害を証明した意味ではない。正式歴史台帳85/94は不変。
新規の一回限りの真正17件原本: protected request build PR#506 #506 (HEAD 8dbe091、required resolver Run41303454534 SUCCESS、保護squash main 5c887e4、postmerge Validate Run41303544117 SUCCESS)。中央 original https://github.com/pgextwin/build/actions/runs/41303544119 SUCCESS、17件 App-bot local original集約 https://github.com/pgextwin/build/actions/runs/41303603386 SUCCESS、原本 coordinator の実ZIP/SHA256/CRC/actor/source/cycle/17 distinct child照合による CHILDREN_17_ORIGINAL_ZIP_VERIFIED_CAS_PENDING、集約 artifact13081379734 sha256:1a833495045d4b0d7a207c8803f42ffbc81d80e92654744b7cdfc3c1ba9c7157。orafce local original https://github.com/pgextwin/orafce/actions/runs/41303692512 SUCCESS(orafce PR#91 main 3a236c78e1118a7da8838ce76b78d43af163db1f、非更新時の不要な署名依存を分離、PG14-18/署名の実候補ゲート維持)。
専用App CAS + 別Runner読取: https://github.com/pgextwin/build/actions/runs/41303787995 全必須実行ジョブSUCCESS。writer job124839946407
NO_UPDATE_17_APP_CAS_DURABLE_READBACK_PENDING、キーなし独立 readback job124840082173ORIGINAL_17_GET_CAS_READBACK_DENIAL_PASS、proof artifacts 13082014973 (sha256:d3a92a51284d048ed37c58542a8168ce496a95f4273b04032638d64269f8cbb1) と13082590966 (sha256:132ac9bffade28cb3bcbd3922dc15d05059023e46ebd96cd7087539c2b900437)。GitHub Contents独立GET: issue311-state/checkpoints/request-lifecycle/r-20261101-r06appauto41303603386.json 実 blob
5a30f9fe7e9a71dbcbe65a286e6d906113252669、revision2、terminal NO_UPDATE、17/17 SUCCESS、sourceRun 41303603386 attempt1、completionRun 41303787995 attempt1、固定保護source SHA 5c887e4、publisherAuthorized=false、writeOutcomeUnknown=false、eventTransport=workflow_run.completed。独立finite watchdog https://github.com/pgextwin/build/actions/runs/41303544134、無鍵読取ジョブ124840191927 SUCCESS、既存terminal上書きなし。これらは GitHub REST / immutable ZIP actual byte verification by original Actions を区別し、ChatのGitHub RESTメタデータをローカルダウンロード原本と偽らない。失効・CAS・敵対的安全境界(成功済み原本を再利用、再実行なし): 現在のCAS runnerが独立readback内でreplay DENY、実State write/revoke401の負例を満たす。先行済み実App PUT ACK制御喪失/GET-only/revoke401 Run41014995197、実二Runner HTTP409 winner1/loser1 / 単発PUT /第三者読取 Run41032550321、GET一時障害最大3回の負例 Run41040267332。詳細の既存正式原本 #311 (comment) を継承。旧新legacy candidate Writer競合とは別境界であり#484には転用しない。
禁止と除外:
PUBLISH_DENY/runtimeEnabled=false、旧scheduleを代替未受入で撤去しない、将来の自然障害/未来stable/個別Releaseは#501の参照のみで直接扱わない。未認可公開なし。歴史85/94への自動加算なし。次: #484/#485の共有資源安全境界 → #486対象別旧schedule代替 → #487受入後の保護撤去。#490/#491は今回のAUTO範囲で再オープンや重複実証をしない。