Skip to content

fix(ci): seed patch-validator cache from protected main - #558

Merged
seonghobae merged 151 commits into
mainfrom
fix/patch-validator-default-branch-cache-seed
Sep 8, 2026
Merged

fix(ci): seed patch-validator cache from protected main#558
seonghobae merged 151 commits into
mainfrom
fix/patch-validator-default-branch-cache-seed

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Problem

patch-validator-image used type=gha,scope=noema-patch-validator-image while protected source ran it only for pull_request and workflow_dispatch. GitHub/Docker cache visibility is branch-scoped, so a later sibling PR cannot restore a cache written only by another PR branch; it can restore current/base/default-branch cache. Live evidence matched that model: #540 image run 34155490034 spent about 104 minutes building the static runtime, and later sibling #547 run 34165467851 again paid a roughly two-hour exact image build despite the identical cache scope.

Official authority:

Related: #66.

RED → causal repair

  • a67a5ab1f4b15ed5269497cfd1fd0c06cfc72a56: test-only deterministic RED requiring protected-main cache seeding while preserving workflow_dispatch; workflow intentionally unchanged, so no hosted RED is fabricated.
  • 2e83e1c6ad743adf0e4528383252c681eb6638ec: minimal production repair added push: branches: [main].
  • ec60444efd072afd7b58e988daa10269edea57b6: second test-only RED after review exposed that unconditional main pushes would enqueue the 150-minute image lane on unrelated protected merges.
  • f9f1445150969de9d278a0b0ae391a2d2e3b2a13: production repair added an explicit protected-main paths set for the image workflow, Dockerfile, package manifests/lockfile, validator runtime/helpers and receipt verifier.
  • f2aa8570d952cc0a371da161e651472c080e00ce: ordinary two-parent convergence after protected docs: reconcile protected runtime and commercial gap authority #547. Hosted CI 34172635652, job 101895784847, produced a real RED after exact checkout, live-base verification, lockfile control, install and typecheck: test/patch-validator-workflow.test.ts still assumed pull_request: had to be immediately adjacent to workflow_dispatch: and therefore rejected the intentionally added sibling push: trigger. The run had 1 failed / 4121 passed tests.
  • exact 2f91bf8641212ecae435b5fbcc9084cc0acd6295: minimum causal test repair. It preserves the original invariant that pull_request: is unfiltered by requiring the next non-empty event line to remain at top event indentation, without forbidding independent sibling triggers such as protected-main cache seeding. No production workflow, permission, security gate or publication boundary was weakened.

Protected ancestry and exact GREEN

Fresh compare immediately before merge authorization from protected main@699489cdbb8de3404154d9a3d6022c692ce85fd6 to exact 2f91bf8... is ahead-only, behind_by=0, merge-base exactly protected main. Effective changes are limited to .github/workflows/patch-validator-image.yml, test/patch-validator-image-build-cache.test.ts, and test/patch-validator-workflow.test.ts. Fresh review-thread inventory is empty and no submitted review introduces a blocking finding.

Unchanged exact-head gates are all terminal success:

  • application CI 34173491056: success;
  • reviewer-ci 34173491034: success;
  • required Security Scan 34173491124: success;
  • patch-validator-image 34173491077: success.

This PR is therefore promoted out of Draft for normal merge. The exact head must still match 2f91bf8... at the merge mutation; no predecessor or moved-head evidence transfers.

Operational effect after merge

The first repaired PR head can still pay the cold static build because the default branch has not yet run the repaired workflow. A normal merge necessarily changes .github/workflows/patch-validator-image.yml, so the protected merge commit itself satisfies the path filter and must run full exact image verification on main; that protected-main run is the first default-branch cache-seed/operational-acceptance candidate. Unrelated main merges do not enqueue that long lane. PR-scoped cancellation, stale-head refusal, pinned scanners/toolchain, static runtime verification, no-network/non-root smoke, SBOM/vulnerability receipts and fail-closed verification remain unchanged. No registry/release/foreign-domain authority is introduced.

Do not claim cache speed improvement until a later sibling image-authority PR demonstrates actual default-branch cache restore and measured build-duration change.

Summary by CodeRabbit

  • 새 기능

    • 패치 검증 이미지 워크플로가 main 브랜치의 관련 변경 사항에도 실행됩니다.
    • main 푸시와 수동 실행을 통해 공유 빌드 캐시를 준비할 수 있습니다.
  • 문서

    • 런타임 오케스트레이션, 워크플로 실행, 상태·체크포인트 기반의 보호된 구현 현황을 최신화했습니다.
    • 라이선스, 기술 격차, 권한 및 배포 준비 상태에 대한 설명을 갱신했습니다.
  • 테스트

    • 문서의 최신 권한 정보와 워크플로 트리거·캐시 설정 검증을 강화했습니다.

@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: eca401b5-5b9a-4235-b755-57579d6198ba

📥 Commits

Reviewing files that changed from the base of the PR and between 099d7d8 and 2f91bf8.

📒 Files selected for processing (16)
  • .github/workflows/patch-validator-image.yml
  • docs/CONTEXT_MAP.md
  • docs/LICENSING_AND_IP_TRANSFER.md
  • docs/PRD.md
  • docs/adr/0012-runtime-orchestration-bounded-contexts.md
  • docs/product-technical-gap-baseline.md
  • test/documentation-current-trust-authority.test.ts
  • test/documentation-durable-workflow-protected-authority.test.ts
  • test/documentation-live-open-pr-authority.test.ts
  • test/documentation-post-trust-integration-authority.test.ts
  • test/documentation-runtime-protected-authority.test.ts
  • test/documentation-workflow-concurrency-authority.test.ts
  • test/patch-validator-image-build-cache.test.ts
  • test/patch-validator-workflow.test.ts
  • test/product-technical-gap-current-candidate-contract.test.ts
  • test/runtime-bounded-context-fitness.test.ts

📝 Walkthrough

Walkthrough

패치 검증 이미지 워크플로에 main push 트리거를 추가했습니다. 런타임 권위, 보호된 source, 라이선스·배포 증거 문서를 갱신했습니다. 관련 문서와 워크플로 검증 테스트를 추가하거나 조정했습니다.

Changes

런타임 권위 및 검증

Layer / File(s) Summary
패치 검증 이미지 트리거
.github/workflows/patch-validator-image.yml, test/patch-validator-image-build-cache.test.ts, test/patch-validator-workflow.test.ts
지정된 이미지 관련 경로가 main에서 변경되면 워크플로가 실행됩니다. 기존 pull request 및 수동 실행 검증은 YAML 키 형식을 기준으로 확인합니다.
보호된 런타임 문서
docs/CONTEXT_MAP.md, docs/PRD.md, docs/adr/0012-runtime-orchestration-bounded-contexts.md, test/documentation-durable-workflow-protected-authority.test.ts, test/documentation-runtime-protected-authority.test.ts, test/runtime-bounded-context-fitness.test.ts
PR #528, PR #542, PR #544의 런타임 기반을 protected main 구현으로 기록합니다. durable claim, checkpoint, effect, terminal, cancellation, recovery 권한과 hostile stored-record 검증을 문서화합니다.
권위 기준 및 라이선스 증거
docs/product-technical-gap-baseline.md, docs/LICENSING_AND_IP_TRANSFER.md, test/documentation-current-trust-authority.test.ts, test/documentation-live-open-pr-authority.test.ts, test/documentation-post-trust-integration-authority.test.ts, test/documentation-workflow-concurrency-authority.test.ts, test/product-technical-gap-current-candidate-contract.test.ts
protected source, active candidate, exact head, 증거 기준, 라이선스·배포·SBOM·provenance의 잔여 격자를 갱신합니다. 현재 해시와 보호 이력을 검증하고 이전 권위 문구와 해시를 제외합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/patch-validator-default-branch-cache-seed

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae seonghobae added bug Something isn't working priority: medium Normal-priority or P2 work labels Sep 8, 2026 — with ChatGPT Codex Connector
@seonghobae
seonghobae marked this pull request as ready for review September 8, 2026 02:23
@seonghobae
seonghobae merged commit 59ae66d into main Sep 8, 2026
17 of 18 checks passed
@seonghobae
seonghobae deleted the fix/patch-validator-default-branch-cache-seed branch September 8, 2026 02:23
seonghobae added a commit that referenced this pull request Sep 8, 2026
Preserve #558's protected patch-validator image/cache contract while retaining #535's CO-backed reviewer and work-conserving control-plane delta. Ordinary two-parent convergence only; no predecessor gate authority is transferred.
seonghobae added a commit that referenced this pull request Sep 8, 2026
Preserve #559's three owned documentation-authority paths while taking current protected main, including #558 patch-validator cache seeding, as first parent. Ordinary two-parent convergence; predecessor gate authority does not transfer.
seonghobae added a commit that referenced this pull request Sep 8, 2026
Require the documentation lane to reflect protected #558 integration, the newly converged #535 exact head, and the newly observed #556 stacked head before production baseline text is repaired.
seonghobae added a commit that referenced this pull request Sep 8, 2026
Bring #559's owned baseline in line with protected #558 integration, exact #535 convergence, and the newly observed #556 stack while preserving canonical owner boundaries and release-evidence discipline.
seonghobae added a commit that referenced this pull request Sep 9, 2026
* test(docs): expose post-547 commercial authority drift

* test(docs): require current active commercial lanes

* docs: refresh commercial gap authority after #547

* test: advance patch-validator candidate authority

* test: reject superseded patch-validator candidate

* docs: refresh patch-validator exact authority

* test: require current #535 commercial authority

* docs: repair current commercial authority after hosted RED

* test(docs): require live post-558 commercial authority

Require the documentation lane to reflect protected #558 integration, the newly converged #535 exact head, and the newly observed #556 stacked head before production baseline text is repaired.

* docs(gap): repair post-558 live commercial authority

Bring #559's owned baseline in line with protected #558 integration, exact #535 convergence, and the newly observed #556 stack while preserving canonical owner boundaries and release-evidence discipline.

* test(docs): require latest observed #556 authority

Advance the documentation contract to the live #556 successor after its hosted release-test RED, while rejecting the superseded observation. Production baseline text follows in the causal repair commit.

* docs(gap): record live #556 successor and hosted RED

Update #559's sole documentation authority to the latest #556 exact head, preserve the observed hosted release-test failure as historical evidence, and keep the downstream stack non-authorizing until #535 reaches protected main.

* test(docs): require current #535 endpoint-repair authority

* docs: track current #535 gateway endpoint repair

* test(docs): require #535 coverage-repair authority

* docs: track #535 coverage-gate repair

* test(docs): require current central control-plane snapshot

* docs: refresh central control-plane snapshot

* test(docs): retire stale commercial authority assertions

* docs: refresh protected and claim-evidence authority

* test(docs): track protected #535 integration

* test(docs): track current claim-evidence head

* test(docs): bind post-535 protected authority

* test(docs): refresh current candidate contract

* test(docs): align claim-binding authority wording

* docs: refresh claim-evidence candidate authority

* test(docs): match hosted run authority casing

* docs: refresh live Noema commercial authority

* test(docs): track current Noema feature authority

* test(docs): bind commercial gap to live feature heads

* test(docs): require settled external-extension authority

* docs: converge commercial gap to current plugin admission

* test(docs): track active policy-approval RED

* docs: bind commercial gap to policy-approval RED

* docs: restore durable commercial gap owners

* docs: align external-extension authority after restack

* test: bind documentation authority to restacked #560

* test(d(docs): require complete gap authority schema

* docs: bind gap status to architecture authorities

* test(docs): reject stale tool-capability candidate

* docs: refresh current tool-capability evidence

* docs: refresh active extension authority

* docs: bind extension event chronology evidence

* docs: refresh extension chronology authority

* docs: bind gap baseline to hostile admission repair

* test(docs): bind live candidate to admission repair

* test(docs): preserve candidate ADR authority wording

* docs: refresh external-extension runtime-time authority

* test(docs): bind current runtime-time candidate authority

* test(docs): refresh live external-extension candidate authority

* docs: bind gap authority to invocation replay repair

* docs: converge on public replay authority repair

* docs: converge on activation revocation repair

* docs: converge on admission-bound invocation authority

* docs: bind commercial gap to exact admission provenance

* test(docs): require exact-admission candidate authority

* test(docs): bind candidate contract to exact admission

* docs: track crypto-provider RED authority

* test(docs): bind external-extension authority to Web Crypto repair

* docs: converge external-extension Web Crypto authority

* test(docs): follow current external-extension authority

* test(docs): assert public receipt binding authority

* test(docs): match activation revocation authority wording

* docs: converge baseline after #560 protected integration

* test: bind documentation authority to #560 integration

* test: treat external-extension admission as protected history

* test: extend protected integration history through #560

* test: move external-extension gap to lifecycle successor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Normal-priority or P2 work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant