Skip to content

Fleet-wide 14-extension manual-only formal publication: migration parity and acceptance #61

Closed

Description

@ShutenOishi

Important

Current acceptance basis (2026-10-12 JST): The original 2026-10-11 exploratory acceptance list below is preserved as historical context. It is superseded where it proposed autonomous candidate merge / Catalog auto-merge by the merged Chat-first minimal publication policy. The target is explicit human ChatGPT-instructed Release PUBLISH; Catalog App PR proposal and manual Chat PR merge; no second human approval or unattended release.

Fleet migration + first live E2E: ACCEPTED. 14/14 central & local watch/candidate/manual promotion configuration, latest-main Windows CI and watcher scheduling were rechecked. Real signed wal2json 2.7 Release -> Catalog App PR #54 -> Website EN/JA public smoke 38249404653 passed; see first E2E audit.

Single remaining closure condition: 13/14 extension main branches currently report protected:false; ensure CI-success-required PR protection without a mandatory outside reviewer, or produce evidence of equivalent effective protection. Do this via narrow authenticated GitHub admin UI; do not bypass CI or interfere with upcoming PG14 EOL matrix changes. See final fleet-wide branch-protection audit. Keep issue OPEN until independently verified; no new Release/feature work is needed to resolve this item.


Decision (2026-10-11 JST)

Adopt automatic upstream watch → immutable candidate preparation → Windows matrix and independent artifact verification → one deliberate manual formal Release confirmation → automatically validated Catalog/Website propagation for the whole pgextwin fleet. Human/independent reviewer approval per candidate is not required by product policy; integrity and required CI are mandatory. No automatic formal Release under any circumstance. This is an investigation and migration-preparation issue; creating this issue does not authorize release, merge, permission or live-workflow mutations.

Verified live scope

18 organization repositories: 14 extension repositories + build, catalog, website, .github. All 14 have config/extension.json targeting PG14–18 and at least one publicly published, non-draft GitHub Release (16 assets per latest Release at inspection). Catalog already contains all 14 JSON records. Preserve existing published assets/tags and installed user links.

Extension(s) Fleet central policy Local watch / candidate policy Formal release path Change needed
pg_bigm, pg_cron, pg_hint_plan, pgaudit, set_user, pg_repack, pg_ivm, pg_qualstats BUILD/manual-only (8 entries) present; SHA-pinned auto-candidate draft + Windows dispatch release/* attested build + publishing job Retire bypass and add shared manual main-only publish gate
plpgsql_check BUILD/manual-only present promote.yml main-only confirm_release=PUBLISH; central allowlist currently only this repo Generalize without weakening exact candidate/major/hash/attestation gates
hypopg, wal2json, pg_partman, pg_stat_monitor, orafce not registered (5 entries missing) no update-watch.yml, config/update-watch.json, or config/candidate-build.json release/* attested build + publishing job Install validated watch/candidate and same publish gate

Non-negotiable behavior

  1. Maintain UTC 00:00 daily scheduling (09:00 JST; GitHub cron can start late). Support no-op when no stable upstream changes, and stable release-specific watch patterns for all 14. Existing PG14 support continues only while maintained according to metadata/postgresql.json; never promise unsupported majors.
  2. Central fleet metadata/automation-fleet.json and local candidate policies must agree; migrate the five new repositories local files and CI first, and update central fleet last, to avoid central-enabled-but-unprepared repos. Add mismatch/fail-closed tests and fleet metrics for 14/14.
  3. Candidate identity: immutable upstream commit/full SHA, upstream tag/version per PG major where applicable, automation-owned branch, source/license/security review and Windows runtime Test Contract. Validate all applicable major ZIPs, PACKAGE-INFO, SPDX 2.3, Grype reports, GitHub build provenance and SBOM attestations. Grype remains report-only, so a passing report must not be presented as vulnerability safety clearance.
  4. Investigate making candidate transition automatic after independently verified exact-head CI/audit (or using immutable evidence without a merged PR), so the only routine manual action is formal Release confirmation. Keep source or ABI-affecting exceptional candidates quarantined; never bypass branch protection or security checks.
  5. Expose one reused, fail-closed, main-only workflow_dispatch publication operation per extension with confirm_release=PUBLISH, target release tag, immutable candidate decision/run/PR reference, strict actor check, fresh main identity, exact PG matrix, create-only tag semantics, source-specific release preflight and post-publish verification. No independent human review / approval PR / second authorization is required.
  6. Remove release/* publisher job invocations from all 13 legacy windows.yml before enabling new gate. A manual branch dispatch without explicit PUBLISH must never publish. Consider a central manual-publish policy switch separate from the existing unattended-publication.json default-DENY/OBSERVE. The latter must NOT be flipped to UNATTENDED.
  7. After confirmed public Release, independent Catalog verification may automatically propose and scoped auto-merge only the verified generated distribution record, then Website may publish/verify automatically. catalog PR Step 10: disable Grype built-in kernel-header suppression #21 cannot currently be enabled as-is: its auto-merge guard demands central UNATTENDED AND automaticFormalRelease=true; refactor these so manual formal release with independently signed/public receipt permits downstream sync while auto formal release stays prohibited. Keep unrelated PR/Dependabot auto-merge forbidden. Expand beyond pilot plpgsql_check only with exact allowlists/tests. Prefer narrow short-lived App token and existing branch protection.
  8. Release-state machine: NO_UPDATE, DETECTED, CANDIDATE_BUILDING, VERIFIED, BLOCKED, AWAITING_MANUAL_PUBLISH, PUBLISHING, PUBLISHED, CATALOG_SYNC_PENDING, WEBSITE_VERIFIED; guard duplicate tag/run, stale SHA, upstream tag movement, replays and interrupted partial drafts. Idempotent downstream reconcile and incident/status reporting.
  9. Do not modify historic Releases, retag, delete assets, weaken rulesets, publish pending candidates, or claim CI queued/in_progress/action_required success.

Evidence and current blockers

Migration sequence / acceptance

  • A. Extend registry schemas, cross-repository 14-extension parity/audit tests, handoff and status reporting. Read-only findings first.
  • B. Install new extension watchers, tag strategies, candidate policies and verifier in the five new repos, safely and independently. Run real dry-run detection plus maintained-PG Windows regression.
  • C. Prepare shared manual promotion gate, make 13 caller workflows remove legacy publisher and add explicit PUBLISH dispatch, with exact full-SHA pin upgrades and release tests; validate no accidental release from release/*, PR, push or scheduled watch.
  • D. Prove exact-head candidate lifecycle, quarantined failure paths and optional automatic verified candidate merge (no human requirement). Keep formal publish manual.
  • E. Refactor Catalog PR Step 10: disable Grype built-in kernel-header suppression #21 to allow auto downstream merge ONLY after deliberate manual formal Release with newly verified signed public assets. Complete Website public audit and incident recovery; keep central unattended mode OBSERVE/DENY.
  • F. After local CI and fail-closed configuration checks all pass, merge central 14-entry BUILD fleet policy last. Check daily watch decisions and fresh candidate artifacts for every eligible extension.
  • G. Conduct at least one real end-to-end test of a new stable candidate to verified candidate and manually confirmed Release to Catalog and Website, then check all 14 have consistent operational controls. Do not treat a planned design or passing dry-run as end-to-end proof.

Out of scope for this preparation issue: initiating Releases; rewriting existing Releases; unreviewed merges or branch-protection changes; switching on fully unattended formal publication.

Activity

  1. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 rollout progress — staged 14-extension manual Release pipeline

    Shared safety layer merged with required Build CI SUCCESS:

    • Build PR #63 -> main 2e36e655c419daa1ac56a23274e19e6279594f99: 14 authoritative fleet members; original 9 retain BUILD and new 5 (hypopg, wal2json, pg_partman, pg_stat_monitor, orafce) are OFF / candidateEnabled=false. Both the original fleet and unattended-publication code and regression fixtures now reject premature five-member activation. Build CI SUCCESS 38138996807 and main follow-up 38139363420.
    • Build PR #64 -> main 21252863d89ea09f8147d670157e7a07cfba19e0: validated 14 source/release naming conventions, per-PG SHA identities for pgaudit/pg_hint_plan, dated pg_bigm tag, maintained-PG lifecycle (PG14 EOL), and fail-closed manual candidate/watch receipt with central/local allowlist and operator PUBLISH. Required CI SUCCESS 38139313923.
    • Build PR #65 -> main 455f0ccc667697f600700a6e64bcfd6c57b6a977: all-14 shared attested publisher with immutable receipt, per-PG source/PACKAGE-INFO, exact ZIP/SPDX/Grype matrix and GitHub attestation checks, CREATE-ONLY Git tag, immutable numeric draft Release ID and 16 SHA256 (or 3N+1 after PG14 EOL), guarded public Release download rehash. CI SUCCESS 38140571897.

    13 extension-specific staging PRs created, latest-head Windows CI still running/pending; do not claim merged:

    All 13 stage-local PRs now include: (1) removal of old release/* automatic formal publisher, (2) local config/release-promotion.json manual gate, (3) new promote.yml with main-only operator workflow_dispatch / confirm_release=PUBLISH, immutable common build commit 455f0ccc667697f600700a6e64bcfd6c57b6a977, fresh PG14–18 attested build, full release/recovery state guard. New five additionally have stable-only watch pattern, UTC 00:00 schedule, dry-run default and centrally gated bot candidate preparation + candidate audit.

    Current guarded state: central metadata/release-promotion.json.allowedRepositories deliberately remains plpgsql_check ONLY and new five remain centrally OFF. Do not enable the 13 to issue formal Releases until each exact-head CI passes, candidate/metadata source pins verified, and central policy is updated after controlled rollout. Historical published Releases/tags and Website Catalog remain unchanged. The latest-head Windows checks for the 13 active PRs are queued/pending at this checkpoint, and early runs with Chocolatey package installation failures are not SUCCESS evidence. Public formal release must stay a deliberate operation; no independent reviewer/approval PR required.

    Remaining: achieve green full exact-head Windows CI for the 13, merge staged local workflows with central deny state, pin legacy upstream SHAs and validate new candidate flows, expand central allowlist and transition 5 OFF→BUILD only after local contracts, generalize Release→Catalog signed record generator and scoped auto-merge under manual-only without turning unattended-publication.json mode to UNATTENDED, validate website fleet smoke, reconcile Issues #44 and #47. Keep Issue #61 OPEN pending full rollout.

  2. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 checkpoint — 14-extension manual-only migration

    Shared Build PRs #63, #64 and #65 are merged with CI SUCCESS. Current tested common Build SHA: 455f0cc. Central fleet registry has original 9 BUILD plus new 5 OFF. New common source identity, fail-closed manual operator receipt and ID-scoped attested publisher are merged and NEVER self-dispatch.

    All 13 extension staging PR branches now remove the push-triggered release/* publisher, add main-only promote.yml with explicit operator confirm_release=PUBLISH and central policy gating, include local manual-dispatch policy and fresh signed PG-major source/ZIP/SBOM/Grype checks. The five new repos also introduce stable-only daily watch, dry-run by default and central candidate audit. All 13 Windows CI workflows were updated to the validated common SHA above (bounded 3-attempt Chocolatey install retries). Original 8 candidate-verifier pins were refreshed to ecf8424. Latest PR CI queued/pending; no local PR has been merged on incomplete checks.

    Build PR #66 adds immutable same-version stable-tag baseline SHA pinning through bot-owned manifest-only candidate PR, exact-head Windows CI, and VERIFIED candidate audit; latest-head Build CI 38141383888 is QUEUED. Do not merge until required Build CI SUCCESS.

    13 local PRs: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18; hypopg #3, wal2json #3, pg_partman #8, pg_stat_monitor #4, orafce #5. Central release-promotion allowedRepositories deliberately remains ONLY pgextwin/plpgsql_check, and new five entries OFF; no automated formal release permitted. Past released tags/assets untouched.

    Remaining: required latest-head CI/approval where pending, safely merge local replacement workflows, run source-pin bot candidate and exact PG audit, activate 5 OFF->BUILD only after local validation, expand central manual allowlist only after full acceptance, generalize signed Release->Catalog->Website (Catalog PR #21 currently UNATTENDED-dependent, unsafe to enable as-is), then close resolved Issues #44/#46/#47 with proof. Keep Issue #61 OPEN.

  3. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 14-extension manual-only migration — current implementation checkpoint

    Completed, merged with mandatory Build CI SUCCESS

    • build #63: central 14 registry; initial 9 BUILD, five new OFF (fail closed)
    • build #64: correct source identity for 14 heterogeneous upstream tag / per-PG ZIP naming; 14-source denial tests
    • build #65: general fleet-promotion-gate.py + fleet-publish-release.py, PUBLISH-main-only, merged owned candidate/audit and attested PG-major ZIP/SPDX/Grype, create-only tags, exact release ID/digest
    • build #66: create bot-owned SHA-pin-only candidates for stable upstream tags that have no version bump yet; mandatory CI 38141383888 SUCCESS, merged as a036f8315c103b316c8a8313ee3410e03ef0fcb3

    Staged local changes — 13 PRs NOT YET MERGED, latest-head Windows CI must pass:

    Critical cutover sequence, do not reorder:

    1. plpgsql_check #24 must pass exact-head CI and merge before policy expansion. Its old immutable pilot gate requires allowedRepositories == ['pgextwin/plpgsql_check'] and would DENY future Release if central list is expanded without switching to the generic gate. This PR keeps Catalog auto dispatch for plpgsql unchanged.
    2. Merge initial eight safe replacement PRs only after latest-head required Windows PG14–18 CI SUCCESS and preservation of protected main. Merge five OFF local PRs only once central 14 registration and their own CI passes. Manual formal Release authorization remains centrally DENIED for new five.
    3. build #67 is a staged unmerged 9-BUILD allowedRepositories expansion with five OFF explicit exclusion tests. Merge only after Step 13: add upstream and PostgreSQL update detection automation #24 + eight replacement PRs have merged successfully. Do not turn unattended-publication.json on.
    4. Test all 14 main post-merge CI; for 9 BUILD lanes check daily watch/candidate decision. For five OFF, inspect safe, non-mutating watch run; then only through separate future reviewed policy allow them to BUILD/manual PUBLISH.
    5. Independently verify signed Catalog/Website downstream; catalog #21 presently assumes UNATTENDED + automaticFormalRelease, contradictory to manual-only publication and must NOT be enabled as-is.
    6. Do not dispatch any formal Release or create/retag/delete historic assets as part of this rollout.

    Initial local PR CI failures on pg_bigm/pg_cron/pgaudit/wal2json included transient Chocolatey Install PostgreSQL failures while other PG-major jobs succeeded; these are NOT grounds to lower CI requirements. Newly updated heads have fresh Windows runs queued/in progress. This checkpoint does not claim 13 local merges or 14/14 LIVE acceptance.

  4. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 later checkpoint: Build #66 merged; secure promotion cutover and downstream policy under CI

    • build PR #66 final-head CI 38141383888 SUCCESS, merged a036f8315c103b316c8a8313ee3410e03ef0fcb3. Stable unchanged refs without full SHA now generate bot-owned pin-only candidate PRs, not Releases; changed ref/version on pin-only is denied.
    • plpgsql_check PR #24 upgrades old single-pilot pinned Promotion to shared 14-source gate/publisher before central allowlist expansion; PowerShell and release regression preflight CI passed, final PG14–18 matrix run 38141872775 currently QUEUED at last check. Do not merge until all five SUCCESS.
    • build PR #67 stages nine BUILD-only manual Promotion allowlist; five new repositories deliberately excluded while OFF; CI 38141944468 queued. Do not merge until plpgsql_check Step 13: add upstream and PostgreSQL update detection automation #24 and eight other local replacement PRs all pass native CI and merge.
    • Thirteen local PRs with release/* publisher retirement plus new main-only explicit PUBLISH and SHA-pinned generic signature checks remain OPEN under latest-head PG14–18 CI. The five new local PRs contain verified stable-release watchers and candidate-audit, and central policy stays OFF. No new Release or tag created.
    • build PR #68 stages separate default disabled metadata/manual-release-downstream.json instead of requiring UNATTENDED/automaticFormalRelease; CI 38142438280 queued. catalog PR #21 was amended to use this policy and to require native exact-HEAD pull_request CI, never manual workflow_dispatch as replacement for protected checks; CI 38142538922 queued. Production Catalog automerge stays OFF pending dedicated App PR identity and branch protection acceptance.
    • build Issue #44 was closed as not planned/superseded, NOT 'unattended implementation complete': its zero-touch formal Release objective conflicted with manual-only decision. Outstanding narrow App setup and downstream validation are tracked here.

    Do not claim 14/14 main cutover until PR-native full CI, protected merge, post-main Windows/watch/audit and lifecycle verification complete. Maintain former formally published assets untouched. No automatic formal Release, approval JSON, extra reviewer or branch-protection relaxation introduced.

  5. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 JST — Fleet-wide manual-only Release migration checkpoint

    Merged and CI-verified: Build PR #63 (14 registry entries: first 9 BUILD, newer 5 OFF), Build PR #64 (strict heterogeneous 14-extension tag/source/asset identities), generalized candidate/manual-PUBLISH + ID-scoped attested publisher, and Build PR #68 (downstream Catalog policy initially disabled, automaticFormalRelease=false), merge 22779a0.

    Eight original extensions have separate OPEN cutover PRs, now also pinning current upstream tag to fully peeled 40-character Git commit SHAs: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18. All remove old release/* automatic publisher; include main-only workflow_dispatch PUBLISH. pg_hint_plan and pgaudit pin each of the 5 PG14–18 series independently. Native exact-head Windows CI is pending, so DO NOT MERGE YET.

    Five new local OPEN PRs include stable-only daily UTC00/JST09 watch, immutable candidate config, explicit candidate audit and manual-only Promotion, with old release/* publisher removed: hypopg #3, wal2json #3, pg_partman #8, pg_stat_monitor #4, orafce #5. Central mode remains OFF for all five until local CI and manual release gates are accepted.

    Build PR #67 conflicted with newer main; safely superseded and closed by Build PR #69, built on current main and currently OPEN, with exact nine-BUILD manual Promotion allowlist/five-OFF denials. Do not merge #69 before eight local PRs have passed exact-head PG14–18 CI and merged. Catalog PR #21 now checks central POST_MANUAL_RELEASE_ONLY (rather than UNATTENDED) and requires native exact-head pull_request validation, but is default-disabled and still awaiting latest CI.

    No formal Release/tag was created or modified; no automatic formal publication, Catalog autocommit or protection change. Keep Issue #61 and Step23 #47 OPEN until full 14/14 rollout proven. The only routine human gate is operator-confirmed manual PUBLISH; no separate human reviewer/approval JSON.

  6. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 14-extension cutover checkpoint (operator-only PUBLISH)

  7. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    Fleet manual-only migration — latest verified checkpoint (2026-10-11 JST)

    Merged with protected, exact-head CI SUCCESS:

    • plpgsql_check #24, complete PG14–18 Windows 38141872775 SUCCESS and syntax/preflight SUCCESS; merge ca255bd87523288ecbf4b9ec2bf7047e683d3723. The pilot now uses the generic 14-extension candidate/manual-PUBLISH verifier and ID-scoped signer BEFORE policy expansion.
    • catalog #21, original head was behind protected main so merge was refused; main merged safely into PR branch with no overlapping files, required native validate 38144303529 SUCCESS, main merge 36eace0f2b1f7fafd98b98634d7b871095044564. The independent post-manual-Release Catalog auto-merge controller remains DEFAULT OFF in both local config and central build#68; its tests deny any automatic formal Release and untrusted PR head.

    Additional Catalog post-manual Release compatibility: catalog #46 changes the Wave 3 signed public Release ingestion from historical release-branch-only to also accept manual main promote.yml after verifying signed ZIP+SPDX/SHA256 and exact upstream source, actual workflow run's main SHA/path/event and non-bot operator. Denies normal CI, fake runs and mixed legacy/main origins. Current protected PR head 62c2d21a561eefac90fb9723254e96a13c87cb84 incorporates Catalog main #21 and required validate run 38145064880 is QUEUED; do not merge before SUCCESS.

    13-local PR structural audit PASS on staged branches (NOT merged): first eight and new five have zero release/* automatic publisher jobs, exact main-only confirm_release=PUBLISH generalized Promotion, SHA-pinned build, local manual-dispatch opt-in, source commits pinned to full upstream SHA (pgaudit and pg_hint_plan per PG major). New five also have stable-only daily JST09/UTC00 watch/candidate and candidate-audit. Their latest-head PG14–18 Windows CI runs are pending/queued; some earlier runs are cancelled because PR heads advanced, not successful proof. Do not cherry-pick stale head checks. Original eight URLs: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18. New five: hypopg #3, wal2json #3, pg_partman #8, pg_stat_monitor #4, orafce #5.

    build #69 has required main-eligible CI 38143630569 SUCCESS, but MUST stay OPEN until all 8 original local PRs have passed latest-head CI and merged. It allows human PUBLISH only for original nine BUILD, deliberately excludes five new centrally OFF entries. Next: 13 CI & protected merges, then policy, five OFF->BUILD separately, generalized release->Catalog for non-Wave3 groups and live Website audit. No Release/tag created, no independent human reviewer, no protections weakened. Keep Issue #61 OPEN.

  8. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 continuation checkpoint — manual-only 14-extension cutover (not yet complete)

    Already merged in central build: 14-record authoritative fleet with original 9 BUILD and five SAFE OFF, immutable heterogeneous 14-extension source/tag/ZIP identity checks, generalized fail-closed fleet-promotion-gate.py and ID-scoped signed fleet-publish-release.py. Current build main SHA 22779a0c0177381993edbad03f937cc459a8d51b; build validation 38143248500 SUCCESS.

    13 local migration PRs staged but NOT merged:

    • Original eight: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18. Source refs (including five per-major refs for pgaudit and pg_hint_plan) have now been independently peeled to immutable upstream commit SHAs and added to these PR branches. Exact-head PR Windows runs for those newest commits 38144940035, 38144951790, 38144962198, 38144965380, 38144971641, 38144977328, 38144984964, 38144991996 currently PENDING with zero jobs; not accepted as CI success, likely require GitHub Actions run approval/UI review. Do not merge until required head-exact CI actually succeeds.
    • Five staged OFF: hypopg #3, wal2json #3, pg_partman #8, pg_stat_monitor #4, orafce #5. All five have read-only stable upstream watch, SHA-pinned candidate config, candidate-audit and main-only manual promote.yml, with legacy release-branch auto-publish removed. Latest PR Windows CI 38141614336, 38141619732, 38141623955, 38141627914, 38141632852 each currently IN_PROGRESS with multiple PG14–18 successes; no false all-green claim or early merge.

    Strict security posture: central metadata/release-promotion.json STILL allowlists only plpgsql_check, and five new repos remain OFF. build PR #69 passes CI 38143630569 but is intentionally UNMERGED until original 8 local cutovers complete with exact-head CI. Never enable automatic formal releases; independent human PR approval/approval JSON are not required, while human operator workflow_dispatch + literal PUBLISH + candidate origin/SHA audit + fresh signed build + ID-scoped immutable Release checks remain required.

    Downstream: Catalog PR #21 was merged to main with the post-manual-release-only controller; central metadata/manual-release-downstream.json and Catalog local config currently enabled=false, automaticFormalRelease=false. Do not auto-enable App token or scope 14-way merge until generator and source-bound attestation verification generalize beyond plpgsql_check, required validate checks pass natively, and the policies are explicitly allowed.

    Next order: approve/run exact-head pending CI for 8; merge accepted five OFF repos (may be safely done before central BUILD); merge 8 only once all local release-branch retirement + replacement workflows/CI verified; then and only then merge central PR #69; review staged new-five BUILD activation separately and maintain permanent manual formal publication. Update Issue #47 only with verified evidence, never close the fleet issue prematurely.

  9. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 continuation — all five NEW fleet repositories safely merged with policy OFF

    All five local staged cutovers have been MERGED into their own protected main after exact-HEAD PG14, PG15, PG16, PG17, PG18 Windows x64 CI each SUCCESS (5/5):

    Each merged main has config/release-promotion.json and a SHA-pinned, operator-only promote.yml, retired release/** push publisher, UTC 00 daily watch with main-push dry-run, SHA-pinned candidate policy and artifact-audit dispatch path. All five remain centrally OFF: no enabled candidate automation, no formal publication. Their post-merge main push Windows/watch runs are queued/running; do not claim those runs passed until separately confirmed. No historic Release, tag or public downloads changed.

    Original eight migration branches now have full upstream SHA pins peeled from the actual existing stable tags (including 5 refs each for pg_hint_plan and pgaudit), plus local manual Release gates; exact-head PR Windows runs 38144940035, 38144951790, 38144962198, 38144965380, 38144971641, 38144977328, 38144984964, 38144991996 are PENDING/QUEUED (first seven pending, pg_ivm queued, no current exact-head acceptance). GitHub Cloud Browser approval/dispatch may be required; do not merge those eight yet.

    Central allowlist PR #69 exact-head CI 38143630569 SUCCESS but deliberately OPEN until original eight local replace-publisher PRs are CI green and merged. Central release-promotion.json still allows only plpgsql_check. Downstream verified Catalog auto-merge is additionally disabled by central and local policies; do not turn automatic formal release on. No new release dispatched.

  10. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 continuation: 14-extension manual-only cutover acceptance checkpoint

    Reconciled against live GitHub, not the original stale Issue snapshot:

    1. Central foundations merged and green: build PR policy(fleet): register remaining five extensions as OFF (no candidate or Release activation) #63 (fleet registry 9 BUILD + 5 OFF), feat(release): fail-closed source, tag and ZIP identities for all 14 extensions #64 (heterogeneous 14 extension tag/SHA/ZIP identities), feat(release): 14-extension ID-scoped signed publisher, invoked only after manual gate #65/feat(candidate): SHA-pin unchanged stable upstream refs through verified bot candidate #66/policy: stage manual-only formal Promotion for nine BUILD extensions after safe cutover #67/policy(catalog): default-deny automatic distribution after verified manual Release #68 (generalized main-only promotion/attested Release and downstream trust) are in build/main 22779a0c0177381993edbad03f937cc459a8d51b, main CI 38143248500 SUCCESS. Central publication allowlist metadata/release-promotion.json is still plpgsql_check only, fail closed for other repos.
    2. New 5 local migration merged: hypopg, wal2json, pg_partman, pg_stat_monitor, orafce now have promote.yml with explicit manual confirm_release=PUBLISH, local authorization policy, new stable-only watch/candidate source patterns and immutable Windows candidate-audit. The dangerous release/** Windows publisher is removed. They remain central OFF pending full main Windows CI and final 14-way rollout. Main push watch performs dry-run and does not create candidates while OFF.
    3. Existing 8 migration PRs are OPEN, no unsafe partial merge: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18. The PRs now include source SHA pin, new manual-only operator promote.yml, local promotion policy, retired release-branch publisher, full PG14–18 CI and candidate verifier. Latest exact-head Windows runs are pending/queued, not yet all SUCCESS, so no merge reported.
    4. build PR #69 passed central CI 38143630569 SUCCESS but remains OPEN by design; it expands manual Promotion allowlist only to the existing nine BUILD repos. Merge after the eight local paths pass and merge; do not prematurely claim manual publication availability for them.
    5. The latest Catalog PR #46 (allow signed operator-only main promote.yml origin for Wave 3 in independent Catalog verification; reject mixed legacy/manual sources) passed native validate CI 38145064880 SUCCESS and was merged now into catalog/main as c49d0c69b501f131fbc6376b54e764bb59c7cbf0. It did not publish a Release or alter catalog records.
    6. Current operational policy: unattended-publication.json remains OBSERVE/default DENY, formal Releases must only occur upon deliberate human operator workflow_dispatch/PUBLISH; the downstream Catalog auto-merge is not the same as formal auto-publication. No Releases, tags, security settings or old assets were changed.

    Next blockers: success of 8 latest local PG14–18 Windows matrix checks, local protected merge, then protected central PR #69, cautious enablement of the five OFF lanes after their own main matrix acceptance, and end-to-end stable candidate → verified → deliberate manual Release → independent Catalog/Website proof. Keep Issue OPEN; CI queued/pending is not a pass.

  11. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 23:27 JST — manual-only 14-extension rollout checkpoint

    Completed common foundations: build PRs #63 (14 registry, five OFF), #64 (all source/tag/asset identities), #65 (signed Release ID-scoped publisher), #66 (full-SHA pinning), #68 (default-DENY post-manual Catalog policy); mandatory Build CI SUCCESS.

    New five local cutovers MERGED: hypopg, wal2json, pg_partman, pg_stat_monitor, orafce. Each removed release-branch automatic publication and added stable-only watch/candidate, immutable candidate audit and main-only operator PUBLISH promotion. Central policy remains OFF for these five. Exact main PG14–18 CI: wal2json run 38145705539 SUCCESS; pg_stat_monitor 38145529215 SUCCESS; hypopg 38145579632 in_progress; pg_partman 38145847444 in_progress; orafce 38145879641 queued.

    Original eight local cutover PRs OPEN: pg_bigm #28, pg_cron #19, pg_hint_plan #16, pgaudit #16, set_user #16, pg_repack #16, pg_ivm #16, pg_qualstats #18. pg_ivm latest exact-head CI 38144984964 SUCCESS; remaining seven queued/running. No merge before all required checks succeed.

    Central Build PR #69: add the original 9 to manual Promotion allowedRepositories, preserving five OFF and explicit PUBLISH. Exact head CI 38143630569 SUCCESS. HOLD until eight legacy release-branch publishers are retired on main to avoid dual active publication routes.

    Central Build PR #70 (#70): enable the additional five OFF→BUILD for automatic immutable candidate CI, but DO NOT add to formal publication allowlist or enable automatic Release. Initial CI 38147829202 failed on obsolete nine-member test count; corrected on head aea59b1. Recheck 38148021955 queued. HOLD until all five new local main PG14–18 Windows CI jobs succeed and this exact-head Build CI is SUCCESS.

    Formal Release remains manual only. No new Release, tag, Catalog or Website mutation, no auto publication and no branch protection changes in this sequence. Post-manual signed Catalog auto-sync, fleet-wide candidate evidence and 14/14 end-to-end acceptance remain OPEN.

  12. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 23:49 JST — restart-log CI regression found and isolated

    14-extension consistency audit identified a real new-repository main regression, not a transient Chocolatey install failure: pg_partman main Windows run 38145847444, PG15 job 114489946791. PostgreSQL installed successfully at its pinned 15.19.0 version and BGW's intentionally denied role emitted permission denied for schema partman; the failure is a PowerShell Substring(startIndex) exception in pilot/bgw/smoke-test.ps1:124, because the restarted server's log was shorter than the previously stored text offset.

    A scoped fix has been committed in pg_partman PR #10, commit 19bedbc18c7de7073c045e4dd4ada582d6e54f09, preserving denied-role and fresh-maintenance/crash-recovery assertions, and repairing all three restart log-offset reads. Native PG14–18 Windows CI 38148676010 and optional BGW technical pilot 38148675441 were QUEUED at last check, NOT yet accepted.

    Central build PR #70 was repaired to expect 14 BUILD candidate lanes and its exact-head required infrastructure CI 38148242334 succeeded. Do not merge #70 before (1) PG_partman PR #10 passes native CI and protected merge followed by main Windows re-verification, (2) all other new-five main Windows matrices are green, and (3) preceding nine-member manual-PUBLISH allowlist #69 has completed its eight-local publisher cutover. Keep formal publication manual-only and central OBSERVE/DENY; no new Release, tags or downstream publications were created by these repairs.

  13. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 manual-only 14-extension cutover continuation (CI-gated; NOT complete)

    Next gated sequence: eight exact-head CI successes → eight merges → Build #69 latest CI and merge; finish pg_partman #11/main CI and all five new main matrices → refresh Build #70 onto latest main, run full tests and only then merge candidate-only 14 BUILD. Keep this Issue #61 OPEN for downstream Catalog/Website and real E2E acceptance.

  14. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-11 late checkpoint — additional blockers resolved/staged without publishing

    1. Shared Build feat(fleet): activate remaining 5 automated candidate BUILD lanes, keep Release manual #70 now has mandatory CI SUCCESS at exact head 5e7f93ba3a33f9032c37a9996be153150c6570b9 (run 38148242334), after fixing obsolete 9-member assumptions. Remains OPEN because new five local full main CI must succeed first. It only enables candidate BUILD; no formal Release allowlist changes.
    2. Latest new-five main CI: HypoPG 38145579632 SUCCESS; wal2json 38145705539 SUCCESS; pg_stat_monitor 38145529215 SUCCESS. orafce 38145879641 still in progress.
    3. pg_partman main Windows 38145847444 FAILURE on PG15 functional smoke at pilot/bgw/smoke-test.ps1:124: string log-offset Substring startIndex beyond log length during pg_ctl restart. A new narrow pg_partman PR #9 avoids stale evidence by distinct denied-role, normal restart and crash recovery logs, preserving all negative ACL/crash assertions. Its PG14–18 CI 38148573620 queued; do not activate its BUILD until PR CI and new main CI SUCCESS.
    4. Original eight manual-only Promotion cutover PRs are still OPEN pending exact-head CI. pg_bigm 38144940035, pg_hint_plan 38144962198, set_user 38144971641, pg_ivm 38144984964 SUCCESS; remaining pg_cron, pgaudit, pg_repack and pg_qualstats still pending. Keep central manual Promotion allowlist Build PR #69 held until the old release branch publishers are retired, avoiding dual publication.
    5. Post-manual downstream Catalog groundwork Catalog PR #47 added isolated, pure 14-extension release-tag/ref/PG-major/asset SHA256 record mapping and fail-closed fixtures. This has no executable promotion, no Catalog write, no auto merge and no workflow replacement. CI 38148917132 queued. Future actual integration requires independent remote ZIP/SBOM/Grype rehash, provenance+SBOM attestation, exact-HEAD mandatory PR checks and scoped GitHub App; default deny remains.

    No formal Releases/tags were created or modified, and no branch protection or GitHub App permissions were weakened. Keep Issue OPEN pending full 14/14 acceptance.

  15. ShutenOishi commented on Oct 11, 2026

    @ShutenOishi
    ContributorAuthor

    Read-only 14/14 Catalog ↔ GitHub public Release inventory audit (2026-10-11 JST)

    A fresh GitHub API scan of all 14 extension repositories, each pgextwin/catalog/extensions/<extension>.json, and each repository's newest published Release found:

    • 14/14 Catalog latest.releaseTag values equal the newest GitHub Release tag.
    • 14/14 newest Releases expose exactly 16 assets each: five PG14–18 ZIPs, five SPDX JSON files, five Grype JSON files and one SHA256SUMS.txt, 224 assets total.
    • 70/70 Catalog PG-major available ZIP records point to filenames present in their respective newest Release; corresponding 70 SPDX and 70 Grype filenames are present.
    • 70/70 ZIP Catalog SHA-256 metadata fields are 64 lowercase hex characters, and all 70 direct ZIP URLs have the expected exact Release-tag/asset-name structure.
    • Includes heterogeneous upstream per-major ref naming for pgaudit and pg_hint_plan; no incorrect assumption that the ZIP stem is always the formal Release version.

    Scope limitation: metadata-only consistency, not remote ZIP download/re-hashing or new attestation verification. Existing independently signed Release evidence remains authoritative; no Release was published or Catalog data changed in this audit.

    Remaining commonization gap: Catalog currently has pilot-only .github/workflows/sync-release.yml / scripts/propose_verified_release.py (plpgsql_check) and separate Wave 3 sync-wave3.yml / propose_verified_wave3.py (pg_partman, orafce, pg_stat_monitor). No demonstrated common signed post-manual-PUBLISH ingestion path covers all 14, particularly heterogeneous original 8 + HypoPG/wal2json. Continue fail-closed generator/attestation unification and restrict downstream Catalog auto-merge to verified operator-PUBLISH releases only. Do not switch on unattended formal Release.

  16. 12 remaining items

  17. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 — authenticated Work Dispatch confirmed, CI in progress (2026-10-12 JST)

    • GitHub Cloud Browser manually started exactly one new Windows CI workflow_dispatch run 38223928048, event workflow_dispatch, branch auto-candidate/63cfbe30c2e37120e6d6, exact head_sha=6d46199c4d4d8aa5cfb5306f698bd9287e427140.
    • Draft candidate PR #5 still OPEN, unmerged, automation-owned, marker unchanged; only config/extension.json differs from repaired main; upstream 2.7 full SHA 1fd8720d0145fba505822727c30cf0c5cc96f66f unchanged.
    • Same exact head pull_request CI 38223050512 already SUCCESS PG14–18 all five, but its candidate-audit job was skipped as expected for pull_request; it does not substitute for Dispatch artifact audit.
    • Work Dispatch run 38223928048 was IN PROGRESS at this comment; PG17 Windows job already SUCCESS and its wal2json-pg17-windows-x64 Actions artifact uploaded; PG14/15/16/18 were still running PostgreSQL installation steps. Candidate-report/audit not yet complete. Keep Complete the initial eight-extension roadmap #5 DRAFT, do not merge or publish until exact-head Dispatch success and candidate-audit VERIFIED, stable watch decision 38200640208 aligned.

    No formal Release, PUBLISH, Catalog, Website or existing Release/tag mutation performed.

  18. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 — candidate repair and exact-head validation ACCEPTED; PR #5 MERGED (2026-10-12 JST)

    Immutable candidate and required CI

    • Work started real Windows workflow_dispatch 38223928048 on auto-candidate/63cfbe30c2e37120e6d6, exact head_sha=6d46199c4d4d8aa5cfb5306f698bd9287e427140.
    • Run completed SUCCESS (2026-10-12T08:41:56Z). PG14/15/16/17/18: all five Windows MSVC build, logical DML JSON functional smoke, package, SPDX 2.3 SBOM and Grype pipeline jobs SUCCESS. Independent Verify candidate Windows matrix and immutable artifacts / report job 114730695153 SUCCESS.
    • Uploaded five PG-specific artifacts plus candidate-audit Artifact ID 11736540404. Audit job log records status=VERIFIED, schemaVersion=1, matrixResult=success, runId=38223928048, branchSha=6d46199c4d4d8aa5cfb5306f698bd9287e427140, each PG major status=SUCCESS and identical pinned sourceSha=1fd8720d0145fba505822727c30cf0c5cc96f66f.
    • Candidate ZIP SHA256 receipts: PG14 6d8fff0cad7f1c94ace5d2e4d9262d83f0b10f53aef6c3e09729e63058d76db7; PG15 5665a31e920bdfbe9f1ed5ea2760e776ea8f75eefa011b47b3e7ea4802639491; PG16 c192886df9f6ebf126e1e18bb7c7844a194da0f6d844d93d9a82826319ef7c73; PG17 51c9bf732bd3eea24ec00f66fc72f4eee7da3bdf4ebc22ea4403c20078a87498; PG18 ad8bedaa13f377e1030c332487cd715ca4355740c733fb03960fc9a53b5ebbcd.
    • The original immutable candidate-decision upstream watch 38200640208 SUCCESS, artifact ID 11725565420, job log confirms matching candidate ID, upstream tag wal2json_2_7, version 2.7, fixed commit. Same-head PR Windows run 38223050512 also SUCCESS for PG14–18.

    Merge record

    • Retained original automation-owned PR author github-actions[bot], ownership marker and original candidate commit history; effective PR diff exactly config/extension.json (three upstream ref/version/commit fields). No force pushes.
    • Marked wal2json PR #5 ready only after full Dispatch + evidence verification; squash MERGED with expected head 6d46199c4d4d8aa5cfb5306f698bd9287e427140.
    • New wal2json/main = 1198ff30137ee3fd01a9e168647a7167324bb713 (2026-10-12T08:43:18Z). Main config/extension.json: wal2json 2.7 / wal2json_2_7 / pinned 1fd8720d0145fba505822727c30cf0c5cc96f66f. Build-script fix #6 remains integrated; ABI/export checks intact.
    • New post-merge main Windows push CI 38225309663 was QUEUED at this audit; do not claim postmerge SUCCESS until it completes.

    Scope / next decision

    Candidate repaired and merged; formal publication NOT AUTHORIZED by this request. No promote.yml, confirm_release=PUBLISH, new Release/tag, Catalog/Website or historical asset mutation. Any later formal Release requires a fresh explicit user instruction and independent main-only Promotion checks. Keep Build Issue #61 OPEN until genuine signed Release→Catalog→Website E2E acceptance.

  19. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 — formal Release preflight READY, human Work Dispatch required (2026-10-12 JST)

    Explicit user authorization: publish wal2json 2.7 only if all safety gates pass, using the new v2.7-windows.1 tag; then independently validate and propose one Catalog update. This audit did not initiate a formal Release.

    Live primary evidence

    • wal2json/main remains 1198ff30137ee3fd01a9e168647a7167324bb713.
    • Exact main push Windows CI 38225309663 SUCCESS on that SHA: PG14, PG15, PG16, PG17, PG18 all build + functional smoke + package + SPDX 2.3 + Grype steps SUCCESS.
    • Automation-owned wal2json PR #5 CLOSED/MERGED, author github-actions[bot], expected head 6d46199c4d4d8aa5cfb5306f698bd9287e427140, merged commit 1198ff30137ee3fd01a9e168647a7167324bb713, exactly one effective file config/extension.json. Manifest contains wal2json_2_7, version 2.7, upstream full SHA 1fd8720d0145fba505822727c30cf0c5cc96f66f, PG14–18, x64.
    • Exact-head candidate workflow_dispatch 38223928048 SUCCESS, all five PG jobs success; candidate-audit artifact 11736540404 and independent audit job 114730695153 SUCCESS; audit output status=VERIFIED, branchSha=6d46199c4d4d8aa5cfb5306f698bd9287e427140, matrixResult=success, all five sourceSha pinned and ZIP SHA256 receipts present.
    • Candidate-decision watch 38200640208 SUCCESS, candidate-decision artifact 11725565420; decision JSON matches upstream tag/version/commit and candidateId=63cfbe30c2e37120e6d6.
    • Audited .github/workflows/promote.yml (manual main-only, explicit PUBLISH), local config/release-promotion.json (enabled/manual-dispatch), live central metadata/release-promotion.json allowlist and metadata/automation-fleet.json BUILD/manual-only. Gate rejects non-human or bot actor and advanced main SHA; Promotion builds signed binaries and requires independent attestation and create-only publishing.
    • Release v2.7-windows.1 not found via releases/tags endpoint (HTTP 404). Git tag refs/tags/v2.7-windows.1 not found (HTTP 404); matching-refs lookup returned empty list; only published wal2json Release currently v2.6-windows.1. Recheck immediately before Dispatch.
    • Catalog main at 71a06ba5e1bffaac3fda28541a524d6e4c2e7eea; sync-verified-release.yml supports exact extension=wal2json, release_tag=v2.7-windows.1 and independently validates signed Release before App proposes exactly extensions/wal2json.json as PR. No Catalog run or PR initiated yet.

    Explicit handoff (NO alternate publication channel)

    The standard Chat GitHub connection cannot originate workflow_dispatch. Delegate ONLY authenticated human GitHub UI wal2json/.github/workflows/promote.yml on main with:
    candidate_pr=5, candidate_run_id=38223928048, decision_run_id=38200640208, release_tag=v2.7-windows.1, confirm_release=PUBLISH.
    Work must independently recheck exact main SHA, main CI, candidate/pr SHA and absence of Release/tag before a single Dispatch. No repeat if failed or an unknown active attempt. Return run URL and ID to normal Chat for authorize/release_build/publish verification. Do not run Catalog sync before signed public Release verification.

    Current state: all observed preflight gates PASS; formal Promotion NOT STARTED from normal Chat. No Release assets/tags or Catalog/Website changed. Build Issue #61 remains OPEN pending first genuine signed Release-to-Website E2E.

  20. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 — formal PUBLISH fully successful; Release audited, Catalog synchronization pending (2026-10-12 JST)

    Formal Release successfully published

    • Promotion run 38230537748: workflow_dispatch on exact trusted main SHA 1198ff30137ee3fd01a9e168647a7167324bb713, human actor/triggering_actor, completed SUCCESS.
    • Authorization job 114748631991: explicit PUBLISH, verified candidate_pr=5, candidate_run_id=38223928048, decision_run_id=38200640208, central/local manual-only policy and immutable audit receipt, SUCCESS (receipt artifact 11738258222).
    • Dedicated PG14, PG15, PG16, PG17, PG18 release_build Windows x64 jobs SUCCESS, including independent signed rebuild, upstream license, build-provenance attestations, SBOM attestations, gh attestation verify and SBOM predicate checks. Final publish job 114753316427 SUCCESS, logs Formal Release verified: v2.7-windows.1; recovery artifact 11738458344 preserved, no retry.
    • Public stable Release v2.7-windows.1, Release ID 410447206, draft=false, prerelease=false, published 2026-10-12T09:46:28Z (18:46:28 JST). Exact tag refs/tags/v2.7-windows.1 resolves directly to 1198ff30137ee3fd01a9e168647a7167324bb713; existing 2.6 remains published unchanged.
    • Independently checked release asset manifest via GitHub Releases API: 16 distinct uploaded assets, exactly 5 ZIP, 5 SPDX 2.3 JSON, 5 Grype vulnerability reports and SHA256SUMS.txt; no missing/extra filenames, all positive sizes and correctly formatted full 64-hex GitHub asset SHA256 digests. Final publish Action verifies exact hashes and signatures. SHA256SUMS.txt asset digest sha256:6025fa8a59f9f5f6c3933cd79bf397c5ce42786990d166f14e8acf645b2dbc11.
    • ZIP published per-major GitHub asset digest: PG14 6e4f549c4c43e1695ea400bd045d412b4bec54e13b8be1dd6bdd257d0e7a26b0; PG15 fb11e93550a6e413dab55d9688fb64017e0a0ca63bdd4e009d125176b00548f2; PG16 3d13ec8d8797f5808d896f5b28b0a8a069fa4e183d57acb5b84bd98ca4409545; PG17 933de356db8b40faccdcef183863a6e2b6a8864a4353ffc311db65e644259515; PG18 bd06bc2755c6ef7ebbde4ddcb04cf5e908c7a01ed8336dd869a4ea77cb6afc56. These are formal re-build hashes, not the previous candidate build hashes.
    • Note on independent content retrieval: public asset binary bytes cannot be directly fetched by the connected Chat APIs; publish workflow verifies bytes/attestations, GitHub's published asset API supplies digest. Catalog's independent verify_signed_fleet_release.py must re-download all public bytes and validate the checksums and signatures before proposal; until its success, do not call Catalog verification complete.

    Catalog next step — only UI workflow_dispatch is unavailable from Chat connector

    • Current pgextwin/catalog/main SHA 71a06ba5e1bffaac3fda28541a524d6e4c2e7eea, record extensions/wal2json.json still points to v2.6. No new wal2json Catalog PR or sync-verified-release.yml run was found in GitHub's current Actions/PR listing.
    • Delegate only authenticated GitHub UI workflow_dispatch of Catalog sync-verified-release.yml on main with extension=wal2json, release_tag=v2.7-windows.1, once and no duplicates. Before triggering, verify public Release stable and that no equivalent active/completed sync was already dispatched. Do not modify any repo, App/Actions settings, auto-merge, branch protection, or other extensions.
    • On Work return, normal Chat will independently inspect sync workflow (tests, remote asset download, signature checks, one-record App PR), PR diff extensions/wal2json.json only, latest-head native required CI SUCCESS, merge via Chat with expected_head_sha, then verify Catalog main and Website EN/JA direct ZIP links, SHA256, SBOM/Grype/provenance evidence. Do not claim Website completion yet.

    State: formal wal2json 2.7 stable Release PUBLISHED / VERIFIED by signed Promotion; Catalog/Website NOT YET UPDATED. Leave Build Issue #61 OPEN until first new real Release→Catalog→Website E2E passes.

  21. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 Catalog sync real E2E — independent Release VERIFIED, proposer GitHub App key INVALID (2026-10-12 JST)

    New actual Catalog dispatch: pgextwin/catalog run 38233480853, workflow_dispatch on main SHA 71a06ba5e1bffaac3fda28541a524d6e4c2e7eea, operator-authenticated, outcome FAILURE. Inputs extension=wal2json, release_tag=v2.7-windows.1. Failed job 114758353610.

    Substantive independent public Release verification PASSED before failure

    • 84 offline tests PASS (log Ran 84 tests).
    • scripts/verify_signed_fleet_release.py downloaded and independently checked the published 16 Release assets, SHA256SUMS and per-major signatures/attestations; emitted:
      {"status":"VERIFIED","repository":"pgextwin/wal2json","tag":"v2.7-windows.1","promotionRunId":38230537748,"packagingCommit":"1198ff30137ee3fd01a9e168647a7167324bb713","postgresqlMajors":[14,15,16,17,18],"assetCount":16,"recordChanged":true}.
    • validate_landscape.py, validate_catalog.py and validate_catalog.py --verify-remote all PASS, 14 extension records.
    • Immutable verified-catalog-proposal artifact ID 11740220407 was uploaded successfully with the verified extensions/wal2json.json proposal and report: https://github.com/pgextwin/catalog/actions/runs/38233480853/artifacts/11740220407 .

    Exact blocker — GitHub App secret, NOT Release integrity or validator code

    • Next step actions/create-github-app-token failed before it could create a token:
      Failed to create token for "pgextwin/catalog" ... Invalid keyData, ERR_OSSL_ASN1_NOT_ENOUGH_DATA, error:0680008E:asn1 encoding routines::not enough data.
    • Workflow receives a client ID and secret reference; this is malformed/incorrect/incomplete RSA PEM key material or a secret-value encoding mismatch. Actual secret cannot be retrieved; avoid making a definitive claim about which setup mistake occurred.
    • No App-owned Catalog branch or PR was created. Catalog main still 71a06ba5e1bffaac3fda28541a524d6e4c2e7eea; extensions/wal2json.json remains 2.6. The public wal2json 2.7 Release and its existing immutable assets remain successfully published and unchanged. Website 2.7 not yet verified/published through Catalog.
    • Auto-merge opt-in stays disabled; no bypass/handcrafted Catalog PR, no catalog/main changes, no second sync Dispatch, no duplicate Release/Promotion.

    Minimal UI-only repair / next run

    1. In GitHub management UI, reuse existing Catalog-only GitHub App; confirm PGEXTWIN_CATALOG_PROPOSER_APP_CLIENT_ID maps to that App and its installation is restricted to pgextwin/catalog, Contents write/PR write.
    2. Check PGEXTWIN_CATALOG_PROPOSER_APP_PRIVATE_KEY GitHub Actions secret source (repository vs org) without exposing its value. Generate/download a valid new private PEM key for the same App if original is no longer accessible; replace the effective Actions secret with the full raw PEM including BEGIN/END and preserved line breaks (no truncated value, surrounding quotes, file path or opaque base64 unless decoded as required). Do not paste the key into issue/log/chat.
    3. After saving, reverify no same-release branch/PR or newer successful sync, then human-dispatch sync-verified-release.yml on main once with extension=wal2json, release_tag=v2.7-windows.1. On continued failure, STOP and report run ID. No security gate relaxation or source code edits.
    4. Return new run URL to normal Chat for independently checking verification, App PR, one-file diff, exact-head CI, Chat-only merge, Website JA/EN direct ZIP/sha/evidence.

    Status: formal wal2json 2.7 Release=SUCCESS, Catalog verified artifact READY, App token creation BLOCKED, Catalog PR/main and Website NOT DONE. Keep Build Issue #61 OPEN pending actual E2E acceptance.

  22. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    wal2json 2.7 — first real manual-only Release → App-owned Catalog PR → public Website E2E ACCEPTED (2026-10-12 JST)

    GitHub App secret recovery and Catalog independent verification

    • The previously failing run 38233480853 remains FAILURE; its independent VERIFIED artifact 11740220407 is preserved. No failed run was silently marked successful or retried.
    • Following human GitHub UI-only repair of the existing Catalog GitHub App private-key secret, a new authenticated one-time workflow_dispatch Catalog sync 38242208610 executed on trusted Catalog main 71a06ba5e1bffaac3fda28541a524d6e4c2e7eea: SUCCESS.
    • Independent public Release verification, full ZIP/SPDX/Grype SHA256/attestation rehash, 14-record remote schema validation and offline tests, dedicated App token generation, isolated App-only checkout and one-record PR proposal all SUCCESS. verified-catalog-proposal artifact ID 11744000343.
    • Existing App identity was reused with narrowed catalog repository scope. No App recreation, broadening of permissions, automatic Catalog merge, or Release publisher policy change by normal Chat.

    Verified one-record PR & Chat-only merge

    • Dedicated App created pgextwin/catalog PR #54 (catalog: verified wal2json v2.7-windows.1), author pgextwin-catalog-proposer[bot], branch auto-catalog/wal2json-v2.7-windows.1, exact head 002f662f7e1e61e0d4ba2422b0240b2bcfe8c4d7.
    • Inspected full diff: exactly one file, extensions/wal2json.json, from upstream 2.6 to 2.7, Release v2.7-windows.1, PG14–18 distinct ZIP downloads, SPDX/Grype SHA256, provenance/SBOM attestations and capability-source commit 1198ff30137ee3fd01a9e168647a7167324bb713.
    • Latest exact-head native required PR CI 38242336452 completed SUCCESS (tests, schema validation, remote source and published-release checks). Auto-merge opt-in workflow 38242385003 was SKIPPED, as desired.
    • Normal Chat independently rechecked unchanged expected main/base, App PR author, exactly-one-file diff, current head and both workflow successes, then squash MERGED PR Work-only gate: create HypoPG and wal2json extension repositories #54 with expected_head_sha. New Catalog main d0bb16bb8701ce497786a151edc23a44d02cab39. Post-merge main extensions/wal2json.json reads upstream version 2.7, tag v2.7-windows.1, publishedAt 2026-10-12T09:46:28Z.
    • Post-merge Catalog main Validate catalog 38249404043 SUCCESS on exact d0bb16bb8701ce497786a151edc23a44d02cab39.
    • Direct second parity inspection: for every PG14,15,16,17,18, Catalog downloadUrl == official GitHub Release browser_download_url and Catalog ZIP/SBOM/Grype SHA256 == GitHub Release asset digests; all five buildProvenanceAttestation.available and sbomAttestation.available true. 5/5 x 3 asset types and all attestation availability matches.

    Public Website acceptance PASSED

    • Catalog main push automatically initiated Website live acceptance run 38249404653 on d0bb16bb8701ce497786a151edc23a44d02cab39, consuming trusted website reusable pages-smoke.yml SHA; whole workflow and public-smoke job 114811499571 SUCCESS.
    • Live public https://pgextwin.github.io/website/en/ and /ja/ HTML/JS/CSS checks PASS. Browser-based Chrome Headless Japanese+English Pages validation PASS, 14 Catalog cards, 20 Landscape cards, all 14 implemented, 0 candidate, 6 not-planned, interactive search/filter and 375px mobile layout scrollWidth=375 (no horizontal overflow).
    • Cross-repo fleet Release ↔ Catalog parity PASS for all 14 extensions: 70 ZIP / 70 SPDX SBOM / 70 Grype report mapped to latest public Releases, including wal2json: v2.7-windows.1, ZIP=5, SBOM=5, Grype=5. Exactly 5 wal2json direct download URLs and all 15 hashes independently matched the official Release API in normal Chat.
    • Published Pages checks verified locale switch, Japanese/English labels, dynamic Catalog v2, download table, displayed SHA256 and proof metadata from Catalog, and HTTPS links. Existing website/main did not require modification; it dynamically consumes latest catalog/main.
    • Browser/live website checks ran in GitHub Actions due to direct external page access limitations in this Chat environment; full job logs provide live HTTP/browsing evidence. No unverified claim of independent local browser access.

    Scope/security and issue state

    • Formal wal2json Release v2.7-windows.1, Release ID 410447206, signed Promotion 38230537748 SUCCESS; existing Releases/tags/assets unchanged.
    • G acceptance achieved with a real new stable upstream → immutable candidate/PG14–18 verified audit → deliberate operator PUBLISH → 16 signed Release assets → independent rehash → narrow App PR → manual exact-head CI gated merge → live Japanese/English Website checks. There is no automatic formal publish and no automatic Catalog PR merge.
    • Build Issue Fleet-wide 14-extension manual-only formal publication: migration parity and acceptance #61 is fleet-wide broader than this single wal2json E2E; keep OPEN pending a separate evidence-based review of other acceptance sections A–F (especially consistency of all 14 operational controls), not merely because this single E2E passed.

    Current outcome: wal2json 2.7 publication, Catalog v2.7 propagation and public Website live acceptance all PASS/COMPLETE.

  23. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-12 JST — Commander final acceptance audit: E2E COMPLETE, 13/14 main branches lack GitHub-enforced CI protection

    User request: Reconcile Issue #61 for closure using the 2026-10-12 reduced Chat-first/manual-PUBLISH scope, not obsolete autonomous Catalog merge or candidate auto-merge designs.

    Accepted and reverified

    • wal2json signed manual Promotion 38230537748 completed SUCCESS, human workflow_dispatch on packaging SHA 1198ff30137ee3fd01a9e168647a7167324bb713; public Release v2.7-windows.1 contains exactly 16 assets (five ZIP/SPDX/Grype plus checksum file).
    • Independently verified Catalog proposal dispatch 38242208610 SUCCESS; the scoped GitHub App created Catalog #54, exactly one file extensions/wal2json.json. Exact-head protected Catalog PR CI 38242336452 SUCCESS; PR merged manually, Catalog main d0bb16bb8701ce497786a151edc23a44d02cab39.
    • Post-merge Catalog CI 38249404043 SUCCESS and live EN/JA Website verification 38249404653 SUCCESS; release ↔ Catalog metadata and hash parity recorded in prior comment #6124361080, covering all 14 extensions.
    • Central metadata/automation-fleet.json: 14/14 BUILD, immutable candidate candidateEnabled=true, manual-only, scheduled 00:00 UTC; central release-promotion.json allowlists exactly 14.
    • Direct read of all 14 local config/candidate-build.json: enabled true/manual-only, and all 14 config/release-promotion.json: enabled true/manual-dispatch.
    • Direct read of all 14 update-watch.yml: daily 0 0 * * *, watcher and candidate reusables present. Latest observed scheduled watcher run SUCCESS for each of 14; UTC cron remains best effort.
    • Direct read of all 14 promote.yml: workflow_dispatch, main ref guard, confirm_release=PUBLISH, central promotion gate, attested build, signed publish. All 14 windows.yml have PR, main push and dispatch CI only, and no active legacy release/* publishing trigger or release publisher.
    • Latest observed main Windows run SUCCESS for each of 14, at the exact SHA currently reported by each repository's main branch. Build infrastructure CI 38216182717 and fleet status 38213312972 SUCCESS.
    • unattended-publication.json remains OBSERVE/DENY; candidate auto-merge, formal auto-Release, Catalog auto-merge all false. catalog/config/verified-release-auto-merge.json disabled. The outdated pilot manual-release-downstream.json also remains disabled and does not gate the real generic Catalog proposer.
    • Original Issue sections demanding unattended candidate merge or Catalog auto-merge are superseded by the merged Chat-first minimal contract, not unresolved work to implement.

    Newly found blocker: CI green is not equivalent to GitHub-enforced main merge checks

    • Direct GET repos/{repo}/branches/main returns protected:false for 13/14 extension repositories, every extension other than plpgsql_check (protected:true). pgextwin/catalog/main is protected true. Representative repository rulesets GET returned [] for wal2json, pg_bigm, pg_partman. Branch-protection detail endpoints return HTTP 403 for the standard Chat GitHub connection (cannot administer/read protections), but public protected:false is conclusive that these branches have no effective branch protection.
    • The 13 missing: pg_bigm, pg_cron, pg_hint_plan, pgaudit, set_user, pg_repack, pg_ivm, pg_qualstats, hypopg, wal2json, pg_partman, pg_stat_monitor, orafce.
    • This is not proof that a failed build was merged; all observed relevant CI passed and operator + promotion checks were honored. It means the repository layer itself does not enforce the owner's stated CI success required, no independent reviewer mandatory policy against a future accidental merge/direct push.

    Closure decision

    Keep #61 OPEN until a narrow Work/GitHub-admin UI task enables appropriate main PR protection and exact-head required Windows CI checks across these 13 (no reviewer count requirement, no bypass/permissions weakening), with care not to require skipped candidate-report checks or static PG14 forever (PG14 EOL 2026-11-12). Ensure local latest matrix CI still works and GitHub branch API reflects protection, then close #61 as completed using the reduced policy. Avoid new dashboards, auto Release, auto merge Apps, irrelevant code changes or fabricated Releases. If maintaining a full moving-PG matrix as required checks needs a stable aggregator job, request a minimal Chat review and PR before enabling an unsafe/incomplete rule, not a broad new automation system.

  24. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-12 JST — #61 read-only recheck during #75 Phase B/C (no admin or Release changes)

    Normal Chat performed fresh GitHub REST GET /repos/pgextwin/{extension}/branches/main across all 14 extensions: 13/14 remain protected=false; only plpgsql_check is protected=true. This is unchanged from the final acceptance audit #6124548906. The pgextwin/build/main shared-infrastructure branch also currently reports protected=false. Attempt to read plpgsql_check/branches/main/protection through the standard Chat GitHub connection returned HTTP 403; no effective required-status-check / PR-only / bypass detail can be inferred from the boolean alone.

    Direct exact-commit GitHub Check Runs inspection confirms per-major contexts such as windows / PostgreSQL 14 / Windows x64 through 18 and a windows / Resolve extension and PostgreSQL matrix context. Do not set the resolver alone as required: it does not prove all Windows builds passed. Do not permanently pin a PG14-major check beyond PG14 EOL 2026-11-12. Add/validate a stable summary check depending on the entire maintained-major Windows matrix via normal Chat code PR before setting that as required in UI.

    A narrow Work/GitHub admin-only operation remains necessary for effective protection configuration; no code/PR/CI task should be dispatched to Work. Keep #61 OPEN pending actual protected=true, enforced PR + exact-head CI checks, zero mandatory outside reviews, and appropriate push/admin bypass controls. Neither branch protection nor CI has been weakened or changed during this recheck.

    Phase B is separately accepted in Build #77; Phase C remains a nonpublishing Draft #78. Full detail: #75 audit.

  25. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-13 JST — fixed-name Windows matrix required check rollout (operator Chat)

    Work UI audit returned: 13 named extension main branches have neither Classic protection nor Rulesets; plpgsql_check/main already protected but uses PG-major-specific checks; build/main also unprotected and was read-only scope. Work changed no settings. #61 stays OPEN until each repo gets CI-required PR protection and Chat verifies effective settings.

    Pilot independently ACCEPTED: plpgsql_check PR #26, exact head 199eefdbad4db7333b61b1210915070866b20944, PR Windows CI 38265233560 SUCCESS. The check-run API on exact head reported Windows required summary success and all PostgreSQL 14,15,16,17,18 Windows jobs success, plus resolver and release-gate regression. Shared reusable build pinned for pilot/other repos resolves maintained majors via resolve-matrix.ps1, which throws for $supported.Count -eq 0; the summary job runs always() and ONLY accepts literal needs.windows.result=success, denying fail/cancel/skip/missing. PR #26 was marked ready and squash-merged using expected head; merge commit 5df0d0e7e90719390c0c864d50dd6d56a51ec561. Main push run 38271236680 started; independent main run verification tracked separately.

    13/13 rollout PRs CREATED (three-file scoped changes: .github/workflows/windows.yml, scripts/required_windows_summary.py, tests/test_required_windows_summary.py; existing promote.yml and candidate audit untouched; no Release or dispatch):

    Repository PR exact PR head before CI
    pg_bigm #29 b5ad51d1cfc1b7488dc8d9a30e4e476cac87f223
    pg_cron #20 7fb4379f775192588bfe8ce7e5d25dcc4e5d9566
    pg_hint_plan #17 86b269f1abf22db8940655a9929d242c2063df5a
    pgaudit #17 293c0d9d1d2c3c093510f9f7bf75234ed6da0829
    set_user #17 b64b3ff316ea29ac68e12a30159085895b0417d5
    pg_repack #17 0af6f01a230427e35ae38162edfd61665a3c45ea
    pg_ivm #17 93d0672bff2754395b451f2129f9992cbe4c8053
    pg_qualstats #19 e77e1a835cb9f6a6fb11f3fe687a088ef4dbcf25
    hypopg #4 65c2cef0deae948621dd9df2beb7f687ff845e47
    wal2json #7 91ed205efb453334f7678f8845897fd20534dea5
    pg_partman #12 87d0bd859afef2fac41615989231dbf74af10bb7
    pg_stat_monitor #5 cfc9358c89d39bfd5a1ab700b9a09c8c972feeb2
    orafce #6 435250d1bd878d288744846d00cdc8c0eba2bf5a

    Status at PR creation: 13 PR workflows started; latest-head Windows matrix and fixed summary not yet all complete. DO NOT APPLY branch protection until each exact-head PR, merged main and check context independently succeed. No admin settings changed. Preserve existing plpgsql_check rules unchanged; #75 push publication must stay DISABLED.

  26. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-13 JST — 13 rollout PRs exact-head scope accepted, CI NOT finished: settings remain BLOCKED

    Independent PR audit: All 13 PRs listed in the rollout record retain the exact expected head SHA and are mergeable. Every PR touches exactly:

    1. .github/workflows/windows.yml
    2. scripts/required_windows_summary.py
    3. tests/test_required_windows_summary.py

    All 13 check runs started, but as of this report NONE of the 13 had completed a SUCCESS Windows matrix and stable summary check. Do not merge any yet or present any of these repos as branch-protection-configurable. The plpgsql_check pilot PR is merged and its PR CI succeeded, but its main push CI is still in_progress.

    PR run IDs to resume from (all blocked pending completion)

    Repo PR PR Windows run Last observed
    pg_bigm 29 38271749031 in_progress
    pg_cron 20 38271756820 in_progress
    pg_hint_plan 17 38271760773 in_progress
    pgaudit 17 38271767374 queued
    set_user 17 38271773157 queued
    pg_repack 17 38271778749 queued
    pg_ivm 17 38271785229 queued
    pg_qualstats 19 38271808647 queued
    hypopg 4 38271817923 queued
    wal2json 7 38271822486 queued
    pg_partman 12 38271829575 queued
    pg_stat_monitor 5 38271834952 queued
    orafce 6 38271841197 queued

    Pilot plpgsql_check merged main SHA 5df0d0e7e90719390c0c864d50dd6d56a51ec561; push run 38271236680 remains in_progress at this inspection.

    Acceptance continuation without Work

    For each listed extension: retrieve latest PR head and Windows run, demand check-run Windows required summary SUCCESS on that exact head plus all dynamically maintained-PG matrix jobs SUCCESS and resolver SUCCESS; verify complete three-file diff and no other failed check; merge with expected_head_sha only then verify new main SHA/push run has fixed summary SUCCESS and all maintained-major successes. Repeat until 13/13 or record per-repo BLOCKED.

    Work UI acceptance gate

    READY: none of the 13 until above per-repo merge+main-push proofs exist. Work must NOT set branch rules prematurely. When READY, set classic/ruleset main PR-only protection + exactly named required context Windows required summary from GitHub Actions (plus stable existing checks as appropriate), required checks latest head, approvals=0, no admin/direct push/force push/bypass, no deletion; independent normal-Chat readback before closing #61.

    Existing plpgsql_check/main classic protection must not be relaxed; adding/changing its fixed-name context is a separate explicit scope after main CI succeeds. build/main was read-only in Work's audit and must not be silently included; new change requires separate scope.

    No formal Release, workflow_dispatch, live #75 publication trigger, or admin rules changed. #61 OPEN.

  27. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-13 JST — fixed-name Windows CI: 13/13 PRs merged, main push verification outstanding

    Following the prior 13 PR CI runs (all completed/success), independent exact PR SHA check-runs for every extension verified: Windows required summary=success, windows / Resolve extension and PostgreSQL matrix=success, all five PG14–18 Windows jobs success, no failed check, and exactly three-file scoped PR diff. The identical strict fail-closed scripts/checks were accepted in merged plpgsql_check #26. All 13 PRs have now been squash-merged using exact expected PR head SHA (where applicable); no Release/promote/dispatch or admin setting changed.

    Repo Merged PR Current main commit SHA Main push Windows run Last observed
    pg_bigm #29 4cb780c1331befe72e2aa6a5a614075382bbfd17 38310071139 in_progress
    pg_cron #20 7ca5b89379c373baaf6d5f92de89af9cea3390ad 38310078142 in_progress
    pg_hint_plan #17 252dbd6a3f23b1f53d1abd0efdf63d69dc937be4 38310087809 in_progress
    pgaudit #17 b80b383176d89150a344c16b233636f824099091 38310093946 queued
    set_user #17 04515cbf35a5b0ff8d291d5a14f5725f828fe2fa 38310097734 in_progress
    pg_repack #17 2af574185502083e86446d8b580138cac39e3422 38310104864 queued
    pg_ivm #17 9daf034e302c965958b326a8c3cf321b8c23c4aa 38310203805 queued
    pg_qualstats #19 3c5402e77ea7c3a15edec7c5b9753d29c4e7b76d 38310197838 queued
    hypopg #4 e3ceeb454c704b17a2ec712c59746135de325f09 38310222820 queued
    wal2json #7 ae9ea6aaff26d36fd88f7160861f4d232e763178 38310229245 queued
    pg_partman #12 379f27fb2005a84e2a3909a10f7e53a225d51fc3 38310250408 queued
    pg_stat_monitor #5 0c3335b5878f61a1f9af59b4627ddc72013d32bf 38310258414 queued
    orafce #6 3e66c672ffa43f581a88bd9f94bbf1367f139f98 38310266006 queued

    Pilot plpgsql_check: merged PR #26 main SHA 5df0d0e7e90719390c0c864d50dd6d56a51ec561; main push run 38271236680 SUCCESS. Existing Classic protection is NOT changed; its fixed-name context must be added only under separate explicit admin UI scope, preserving its other required checks.

    NEXT: Independently verify main exact commit SHA, push run = SUCCESS, Windows required summary SUCCESS, resolver and maintained-PG Windows jobs all SUCCESS for each 13 repository. Only after these proofs is a repository marked READY for Work admin UI to configure PR-only required-CI main branch protection using fixed context Windows required summary. Until then each is BLOCKED / awaiting post-merge CI. The Work UI audit had found all 13 unprotected; no settings are changed yet.

    Scope exclusions: build/main is independently unprotected; must be a separate permission scope, not silently added. Issue #75 publication trigger remains disabled. No formal Release, Workflow Dispatch, token, or admin settings changed. Keep #61 OPEN until Work settings and independent readback accepted.

  28. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-13 JST — Independent post-merge main Windows matrix acceptance: 13/13 READY for Work protection UI

    Re-audited all 13 repositories via authenticated normal-Chat GitHub REST read-only APIs after all fixed-name-summary PRs were merged. Checked for each repository current refs/heads/main commit SHA == expected squash merge SHA == workflow run head_sha, workflow event push, workflow run completed / success, and latest-commit GitHub Check Runs showing:

    • exactly one Windows required summary: completed/success
    • exactly one windows / Resolve extension and PostgreSQL matrix: success
    • exactly five windows / PostgreSQL N / Windows x64 for N=14,15,16,17,18: each success
    • zero failed/cancelled/timed_out/action_required check runs.
    • All 13 branch lookup results still returned protected:false; READY means eligible for subsequent Work configuration, NOT protected.
    Repository Merged PR Exact current main / CI head SHA Confirmed successful main push run CI acceptance Branch protection
    pgextwin/pg_bigm #29 4cb780c1331befe72e2aa6a5a614075382bbfd17 38310071139 READY NOT SET
    pgextwin/pg_cron #20 7ca5b89379c373baaf6d5f92de89af9cea3390ad 38310078142 READY NOT SET
    pgextwin/pg_hint_plan #17 252dbd6a3f23b1f53d1abd0efdf63d69dc937be4 38310087809 READY NOT SET
    pgextwin/pgaudit #17 b80b383176d89150a344c16b233636f824099091 38310093946 READY NOT SET
    pgextwin/set_user #17 04515cbf35a5b0ff8d291d5a14f5725f828fe2fa 38310097734 READY NOT SET
    pgextwin/pg_repack #17 2af574185502083e86446d8b580138cac39e3422 38310104864 READY NOT SET
    pgextwin/pg_ivm #17 9daf034e302c965958b326a8c3cf321b8c23c4aa 38310203805 READY NOT SET
    pgextwin/pg_qualstats #19 3c5402e77ea7c3a15edec7c5b9753d29c4e7b76d 38310197838 READY NOT SET
    pgextwin/hypopg #4 e3ceeb454c704b17a2ec712c59746135de325f09 38310222820 READY NOT SET
    pgextwin/wal2json #7 ae9ea6aaff26d36fd88f7160861f4d232e763178 38310229245 READY NOT SET
    pgextwin/pg_partman #12 379f27fb2005a84e2a3909a10f7e53a225d51fc3 38310250408 READY NOT SET
    pgextwin/pg_stat_monitor #5 0c3335b5878f61a1f9af59b4627ddc72013d32bf 38310258414 READY NOT SET
    pgextwin/orafce #6 3e66c672ffa43f581a88bd9f94bbf1367f139f98 38310266006 READY NOT SET

    Aggregate: 13/13 READY; 0/13 BLOCKED for Windows CI; 0/13 protected as of this independent API read. This satisfies the prerequisite to hand each listed repo to Work for Web admin UI settings. Do not mistake code acceptance for branch-rule completion.

    Exact Work UI action scope (only 13 above)

    For each repository, reconfirm the current main SHA, successful listed run, and that the exact GitHub Actions required check context is Windows required summary. Then create/update effective main protection with required PR; required successful fixed-name check with strict latest base/head synchronization; 0 required approving reviews (no second reviewer); enforcement on administrators, no bypass actor, no direct push/force push/deletion. Preserve other valid existing protections if any; never remove legitimate checks merely to pass. Do not select PG14–18 dynamic check names as sole future-proof requirement. If any setting cannot be enforced or the main SHA has changed without equivalent fresh successful runs, mark that repository BLOCKED and do not claim acceptance. Return per-repo exact effective settings/UI evidence for normal Chat to independently read back.

    Explicit exclusions: plpgsql_check/main is already protected (existing Classic settings, separately scoped). Its fixed-name Windows required summary may be added only in a separate explicit setting change, without weakening previous protections; pilot main SHA 5df0d0e7e90719390c0c864d50dd6d56a51ec561, push CI 38271236680 SUCCESS. build/main is currently unprotected, not authorized for a settings change in this 13-repo Work dispatch. Issue #75 remains separate; no publication trigger authorization.

    Issue #61 remains OPEN until Work admin UI changes plus independent normal Chat effective protection readback on all 13. No Release, workflow_dispatch, publisher promotion, tag changes, or protection edits were executed in this audit.

  29. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    2026-10-13 JST — Work Classic protection applied; normal-Chat independent readback (PARTIALLY VERIFIED, close gate HOLD)

    Work reported applying and reopening Classic protection UI for all 13 target repos: main-only PR required; GitHub Actions Windows required summary required; strict=true; approvals=0; admin/no actor bypass; force push/deletion forbidden. This is Work's reported evidence, not a fully independent API verification of those hidden fields.

    Independently VERIFIED for all 13 via connected GitHub REST:

    • GET /repos/pgextwin/{repo}/branches/main: current main HEAD exactly matches previous accepted squash-merge SHA; protected:true; protection.enabled:true; protection.required_status_checks.contexts=["Windows required summary"]; checks [{"context":"Windows required summary","app_id":15368}]; enforcement_level:"everyone".
    • GET /repos/pgextwin/{repo}/rulesets returned [] in each repo, consistent with reported Classic rules.
    • GET /repos/pgextwin/{repo}/actions/runs/{id}: prescribed run is push, same HEAD, completed/success.
    • GET /repos/pgextwin/{repo}/commits/{sha}/check-runs: Windows required summary completed SUCCESS, Resolver SUCCESS, each PG14/15/16/17/18 Windows x64 SUCCESS; no failed/cancelled/timed-out check.
    Repository Exact current main SHA (unchanged) Independently verified push CI run protected Fixed required context Code/CI/visible-rule
    pg_bigm 4cb780c1331befe72e2aa6a5a614075382bbfd17 38310071139 true Windows required summary PASS
    pg_cron 7ca5b89379c373baaf6d5f92de89af9cea3390ad 38310078142 true Windows required summary PASS
    pg_hint_plan 252dbd6a3f23b1f53d1abd0efdf63d69dc937be4 38310087809 true Windows required summary PASS
    pgaudit b80b383176d89150a344c16b233636f824099091 38310093946 true Windows required summary PASS
    set_user 04515cbf35a5b0ff8d291d5a14f5725f828fe2fa 38310097734 true Windows required summary PASS
    pg_repack 2af574185502083e86446d8b580138cac39e3422 38310104864 true Windows required summary PASS
    pg_ivm 9daf034e302c965958b326a8c3cf321b8c23c4aa 38310203805 true Windows required summary PASS
    pg_qualstats 3c5402e77ea7c3a15edec7c5b9753d29c4e7b76d 38310197838 true Windows required summary PASS
    hypopg e3ceeb454c704b17a2ec712c59746135de325f09 38310222820 true Windows required summary PASS
    wal2json ae9ea6aaff26d36fd88f7160861f4d232e763178 38310229245 true Windows required summary PASS
    pg_partman 379f27fb2005a84e2a3909a10f7e53a225d51fc3 38310250408 true Windows required summary PASS
    pg_stat_monitor 0c3335b5878f61a1f9af59b4627ddc72013d32bf 38310258414 true Windows required summary PASS
    orafce 3e66c672ffa43f581a88bd9f94bbf1367f139f98 38310266006 true Windows required summary PASS

    Important independent-verification limitation — all 13: GET /repos/pgextwin/{repo}/branches/main/protection returns HTTP 403 (Resource not accessible by integration) through the current GitHub connection on every repository. The narrow required_status_checks, required_pull_request_reviews, and enforce_admins protection endpoints are similarly denied on a sample repo. As a result, independent Chat cannot verify required_status_checks.strict=true, PR requirement, approval count 0, admin/no actor bypass, force push/delete toggles, or all detail settings from the current connector alone. enforcement_level:everyone in the branch summary gives useful evidence for required status checks but is not sufficient proof of all the above.

    Decision: Work UI reported READY 13/13; independent visible-rule/CI verification PASS 13/13; full independent detailed-branch-protection verification remains BLOCKED 13/13 by GitHub connector administration-read permission (not by CI or evidence of misconfiguration). Consequently, under the user's requirement close only after all effective conditions independently verified, KEEP Issue #61 OPEN, and DO NOT treat this note as authorization to enable Issue #75 publication.

    Narrow next step: obtain authenticated read-only administration evidence for the 13 Classic protection objects (fields above) through a legitimately authorized connection/API or verifiable GitHub admin UI evidence; cross-check detail fields and re-read main SHA/required context, then decide whether to close. Do not create broad-scope automation tokens or relax any setting merely to make the API readable.

    Separate/out of scope: plpgsql_check/main is still protected, main SHA 5df0d0e7e90719390c0c864d50dd6d56a51ec561, and its existing required-check list (currently per-major checks) has not been changed; build/main remains protected:false, unchanged and separately scoped. No Release, Dispatch, new publishing trigger, workflow changes, or branch protection mutations were performed in this audit.

  30. ShutenOishi commented on Oct 12, 2026

    @ShutenOishi
    ContributorAuthor

    Issue #61 FINAL ACCEPTANCE — 2026-10-13 JST (13/13 verified; recommend CLOSED)

    Decision basis: use the authenticated GitHub Cloud Browser's saved Classic protection UI snapshots as valid primary evidence for fields that the installed GitHub App cannot read, combined with fresh independent connected-GitHub branches/main reads and already independently verified exact-SHA Windows CI. This is an expressly delimited multi-source acceptance, not a claim that the detailed protection REST API returned success.

    Independent review of the supplied Work evidence archive

    Archive: pgextwin-issue61-classic-final-audit-20261013.zip (retained in user Project Library; not published as a GitHub release).
    SHA256: 70771ea70fd7aebdbd4505e84d6d9e48cd4d0188821269a983f8e8cb6e6c2839.
    Contents: README.md, ui-audit.json, api-evidence.json, 13 distinct JPEG screenshots and 13 full saved-rule UI DOM captures.

    Normal Chat materialized and independently inspected the actual archive bytes:

    • 13/13 SAVED RULE REOPENED DOMs, not merely the Work summary, independently parsed; all link to correct repo-specific saved rule URL and show Branch name pattern: main and Applies to 1 branch.
    • All 13 show checked Require a pull request before merging, Require status checks to pass before merging, Require branches to be up to date before merging (strict), and Do not allow bypassing the above settings (also administrators).
    • All 13 show unchecked Require approvals (effective approval count 0; no API numeric field inferred), no Code Owners/most recent push approval, no specified actor PR bypass, no Allow force pushes, no Allow deletions.
    • All 13 saved rules show one required check Windows required summary, issuer GitHub Actions; JPEGs are present and independently inspected sample screenshots show matching checked/unchecked states.
    • 13/13 ui-audit.json records corroborate the DOM; each has missing=[], violations=[], status=VERIFIED; Work reports no Save changes click in read-only audit.
    • 13/13 archive API branch-summary projections match stored accepted SHA and the same required fixed-name check; 13 detail API attempts returned 403, explicitly not independently verified through that endpoint.

    Fresh live authenticated normal-Chat API recheck

    For all 13 GET /repos/pgextwin/{repo}/branches/main: commit.sha matches accepted merge/main CI head, protected=true, protection.enabled=true, required_status_checks.contexts=["Windows required summary"], checks=[{"context":"Windows required summary","app_id":15368}], enforcement_level="everyone". Prior complete run-level audit #61 acceptance established main push, exact head, completed/success, Windows required summary, Resolver, and PG14–18 all success.

    Repository Saved Classic rule (Work UI) Current main SHA, confirmed by normal Chat Accepted successful main Windows CI
    pg_bigm Rule 84704508 4cb780c1331befe72e2aa6a5a614075382bbfd17 38310071139
    pg_cron Rule 84704615 7ca5b89379c373baaf6d5f92de89af9cea3390ad 38310078142
    pg_hint_plan Rule 84704674 252dbd6a3f23b1f53d1abd0efdf63d69dc937be4 38310087809
    pgaudit Rule 84704686 b80b383176d89150a344c16b233636f824099091 38310093946
    set_user Rule 84704702 04515cbf35a5b0ff8d291d5a14f5725f828fe2fa 38310097734
    pg_repack Rule 84704719 2af574185502083e86446d8b580138cac39e3422 38310104864
    pg_ivm Rule 84704733 9daf034e302c965958b326a8c3cf321b8c23c4aa 38310203805
    pg_qualstats Rule 84704745 3c5402e77ea7c3a15edec7c5b9753d29c4e7b76d 38310197838
    hypopg Rule 84704761 e3ceeb454c704b17a2ec712c59746135de325f09 38310222820
    wal2json Rule 84704770 ae9ea6aaff26d36fd88f7160861f4d232e763178 38310229245
    pg_partman Rule 84704777 379f27fb2005a84e2a3909a10f7e53a225d51fc3 38310250408
    pg_stat_monitor Rule 84704795 0c3335b5878f61a1f9af59b4627ddc72013d32bf 38310258414
    orafce Rule 84704805 3e66c672ffa43f581a88bd9f94bbf1367f139f98 38310266006

    Verification boundaries and close decision

    Final acceptance: PASS for Issue #61, close as completed.

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