Skip to content

[BLOCKER R10-B12] 専用State App CAS・失効401・鍵なしreadbackと有限再開 #490

Closed

Description

@ShutenOishi

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を一回の正規要求で繋ぐ必要がある。

再現可能な実施手順

  1. B10+B11の同一source-bound request/17targets/policy evidenceを、既存認可されたState App adapterで1回だけCAS。
  2. PUT応答不明→GET-only、stale version→409、安全な隔離、期限切れ/失効をfail-closed。既存成功Stateと元receipt保全。
  3. 実App token revoke→401を同tokenで証明。別Runnerで鍵なしに原本State Git blob/revision/event hash/対象17状態・理由/最終成功・再開点を読取。
  4. 実original ZIPを独立取得・SHA256/CRC照合し元request・Stateと対応付ける。
  5. 承認復活時は元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

  1. ShutenOishi commented on Oct 31, 2026

    @ShutenOishi
    ContributorAuthor

    2026-11-01 JST 受入契約補正(App実証とは別)

    build PR#495 はW10-Cの真正承認不足/承認不要(NOT_REQUIRED)排他分岐を保護マージ。postmerge original 41218776675 source/hostile/independent_readback、resolver41218776652全SUCCESS。元ZIP実SHA ee0ce6994e820b060c8f87a4fd9825c15b6686969421ffca999e7674aa261a34 provider/CRC一致。ただし元receipt明記 realAppCasPerformed=false、実State App CAS/失効401/独立readback受入ではない。17対象の真の終端、1回PUT/リビジョン/実ZIP/revoke401をこの子Issueの未達とする。正式85/94維持。

  2. ShutenOishi commented on Nov 1, 2026

    @ShutenOishi
    ContributorAuthor

    2026-11-01 JST — protected R10 NOT_REQUIRED implementation completed (live State CAS still pending)

    • build PR#498 latest HEAD 29916f4673a4e9d125ef9607a408a61acc1a6681: required App15368 resolver/hostile SUCCESS, original Validate 41274768249 and approval hostile 41274768099 SUCCESS. Expected-head protected squash merged_by ShutenOishi to main 663f9e61da5e0d3efc3d1aa18b13392d29b1cc22. Original postmerge Validate 41281567324 and approval-hostile 41281567213 SUCCESS/attempt1.
    • Added pure record_approval_not_required event: 17 original source-bound PENDING targets, exact request/Run/HEAD/scope/policyPath/blob/revision/expiry, requiredApprovals=0 and observedApprovals=0, canonical PREPARE, evidence hash and replay idempotency; preserves terminal, all target status, publicationAuthorized=false. Hostile tests reject forged approval/PUBLISH/stale/cross-request.
    • Crucial boundary: policy evidence must be independently authenticated by future trusted caller. This primitive does not perform original authenticated policy GET, real App PUT CAS, token revoke401, or independent keyless readback. Do not claim R10-02 or [BLOCKER R10-B11] 実承認不足の認証GETとBLOCKED_APPROVAL停止の実証 #489/[BLOCKER R10-B12] 専用State App CAS・失効401・鍵なしreadbackと有限再開 #490 accepted. Existing management-UI evidence (approvals disabled) must not be replaced by a fabricated missing approval.
    • Parallel R10 pilot: orafce PR#90 latest HEAD 1557766e5e6a86f9c596d88f9cec67507457ba5a adds 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.
    • Next safe sequence: complete PR90 CI→protected merge→original postmerge real ZIP 5/5; then update central 17-target coordinator and all 17 local adapters with canonical IDs, protected PR/required CI/postmerge, one new genuine authorized original source, actual source wire journal+17 App local Runs/ZIP, App State CAS/401 and separate keyless GET.
    • PUBLISH_DENY/runtimeEnabled=false, previous genuine success Runs, old schedule, required CI, branch protection and current policy remain unchanged.
  3. ShutenOishi commented on Nov 1, 2026

    @ShutenOishi
    ContributorAuthor

    2026-11-01 P0:#311 (comment)

    先行完了は承認不足がない真正source→17-target CAS terminal、実Provider PUT/revision、実409・失効401、安全な不明応答GET-only、鍵なしreadback。BLOCKED_APPROVAL専用の追加live検証はpolicyに実要求があった時だけ。正常経路を本物のブロック不足の再現待ちにしない。

  4. ShutenOishi commented on Nov 1, 2026

    @ShutenOishi
    ContributorAuthor

    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 job124840082173 ORIGINAL_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範囲で再オープンや重複実証をしない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions