Repository navigation
[P2][HARDENING] 代替受入済み旧scheduleだけ安全撤去 #487
Description
AUTO v2.5 現行の受入条件(過去本文の外部事象待ちを上書き): AUTO v2.5: #486の各対象で代替が安全に実動作済みのscheduleだけ保護PR/必須CI/postmerge後に撤去可。未来のstableの公開や自然障害は撤去条件にしない。安全に代替できないscheduleは維持し、対象別に状態を記録。旧scheduleを一律無検証削除しない。
正本: #311 / 将来留意点 #501。PUBLISH_DENY/runtimeEnabled=false、旧scheduleの安全撤去条件・必須CI・保護設定不変。
2026-11-01 完成優先の実行順序:P3/先行実装→適格イベントで最終検証
今すぐ進める: 全旧scheduleの撤去差分案・依存/permission/concurrency監査準備。削除は先行実施しない。
イベント成立時だけ行う: #486の対象別代替受入かつ#484/#485の該当安全条件成立後、その対象だけ保護PRで撤去。
運用: イベント不在のGET監査・成功Run再実行は繰り返さない。残余はEVENT_GATEDで保持し、発火時に本Issueの手順と受入条件を利用する。コード完成と正式受入は別。PUBLISH_DENY/runtimeEnabled=false・必須CI・旧schedule・元の受入条件を変更しない。
子タスクID: R11-B09
分類・対象枝番: IMPLEMENT AFTER ACCEPTANCE / R11-01・親R11・W11-A
共通親: #311(94枝番正式台帳)、関連親: #75。
正本: metadata/issue311-remaining-work-v22.json(v2.2)、https://github.com/pgextwin/build/issues/311#issuecomment-6542333565(R11 PR#76最終監査)。
共通安全条件: 旧成功Run再実行・偽更新/actor/schedule・未認可公開禁止。runtimeEnabled=false、PUBLISH_DENY 維持。コード変更は保護PR→必須App15368 CI→期待HEADマージ→original postmerge→必要な実バイト/State独立照合→#311/#75記録。未実証のlive CAS/409/署名/公開をmockやchecksumから推定しない。
現在の阻害条件
全旧scheduleは代替証明が成立するまで残す。17/20repoという集計だけで削除しない。旧scheduleのpermission/concurrency/metadata/docs/依存workflowを一緒に確認しないと隠れた発火経路が残る。
再現可能な実施手順
- B08の対象別代替の正式受入とB06/B07に該当する排他/有限回復の成立を照合。
- 受入済み対象のschedule行・関連authorize/metadata/docsだけを最小PRで撤去(push/PR/workflow_runの必要経路を保存)。
- 必須CI→期待HEAD保護マージ→original postmerge→削除差分と公開バイト/状態に変更なしを独立確認。
- 全20repoでcron残存、許可された例外、外部task/worker/secret権限/公開gateを再監査。未受入scheduleは残す。
受入条件(すべて満たした時のみ)
- 削除する各scheduleに先立つ代替正常/負例受入IDがある
- 必要な各repoの最新HEAD/保護PR/必須CI/postmergeがPASS
- 対象scheduleと従属設定がゼロ、必要なpush/PR/workflow_runは維持
- 独立20repo再GETで残存0または未受入対象を明示
- B06/B07、B08成立後のみR11-01・R11-02・親R11を個別再判定
停止・再開条件
依存: B08及びB06-07。代替未受入のscheduleを先に消すことを禁止。
更新ルール: 元Run ID/HEAD/actor/ZIP実SHA256/State revision/判定区分を残し、#311の受入契約v2.1の子枝番を満たすまでは正式85/94を増やさない。
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
feat(r11): original 20-repo schedule crosswalk + bounded legacy/new W…
ShutenOishi commentedon Nov 1, 2026
2026-11-01 AUTO v2.5 / R11 増分実装原本
82a224f49e41f2ec530b2293afcc9e54a10b8a3c; PR mandatory Validate41312332571SUCCESS、R11 hostile41312332585SUCCESS。13086286443ZIP provider sha25609f07c7945d0bf84fad3b6ebe8c985b24bb9511ec0b01fb0a3a898e3dcf05758; original inventory independent original-GET logeabac23e8a292f6adb90a8843466d6ed645cd1e98fe5878189f104a0f23173b6; crosswalk exact output SHA2566fcbcf2425acf9dfaf91b79cc32a8f700b8408285f93d4d09b3aea297bfb03faand independent byte-match SUCCESS。#487 判定: ACTIVE / 安全撤去ガードの原本確認まで完了。 出力全行
retirementAuthorized=false、legacySchedulesRetained=true。撤去した旧cronは 0件。未成立: #484/#485の該当共有境界と#486の対象別正常・負例originalがそろったworkflow単位の保護撤去/CI/postmerge/再監査。代替未受入scheduleは引き続き保持。ShutenOishi commentedon Nov 1, 2026
2026-11-01 #487 安全撤去ゲート再監査。認証済みbuild Run41312453130の実artifact ZIP原本を独立再取得し、20 repoに 28 schedule workflows / 30 cron expressions 残存を確認。17 extension・build6・catalog4・website1(hypopg独立41分、build fleet 2cron含む)。現時点で削除許可エビデンスは0行。撤去実施0件。
#484/#485の旧新資源排他・有限回復、#486の削除対象ごとの機能別正常/負例original+独立reader成立後に限定して保護PR削除。website pages-smokeの外部drift監視や各Publisher/Release gateは誤ってNO_UPDATE17だけで代替認定しない。PUBLISH_DENY/runtimeEnabled=false、保護・署名・Attestation維持。ACTIVE継続、正式85/94不変。
ShutenOishi commentedon Nov 1, 2026
2026-11-01 AUTO v2.5 今回確認:撤去資格0・旧schedule保持
build PR#508 protected merge
974f008d1356e951be5bb7672962c6d81099f121、original postmerge Run41316910240 および別Runnerの28 workflow独立GitHub GETはSUCCESS。20repo/28 scheduled workflows/30 cronの真正source YAML/job/permission/needs inventoryを生成し一致検証したが、これは代替機能の正常・異常受入ではない。全scheduleのreplacementAccepted=false、retirementAuthorized=false維持。旧schedule撤去実績 0。撤去ゲート: #484旧新Writerの対象共有資源fence、#485同一要求State有限回復、#486当該scheduleの各機能ごとの正常/負例original/独立証拠IDが成立するまで削除を禁止。成立した対象だけ別保護PR→必須App15368 CI→期待HEADマージ→original postmerge→20repo独立再GET。未受入対象は維持。成功Run再実行・未認可公開・署名/Attestation/保護緩和禁止。PUBLISH_DENY/runtimeEnabled=false。正式85/94別。
[-][R11-BLOCKER R11-B09] 受入済み対象から旧scheduleを保護撤去・再監査[/-][+][P2][HARDENING] 代替受入済み旧scheduleだけ安全撤去[/+]ShutenOishi commentedon Nov 1, 2026
2026-11-02 [P2 POST_PUBLICATION_HARDENING] 旧schedule一律ゼロ化はゴールにしない。#486の機能別代替と当該writer安全条件が受入済みの場合のみ、そのscheduleをprotected PR/必須CI/postmergeで削除。未受入対象は従来正常運用を維持。全cron撤去を公開版やChatから更新するための必須条件にはしない。