Skip to content

ci: gate real Docker build startup and recreation - #3823

Merged
lidge-jun merged 7 commits into
devfrom
codex/platform-lane4-final
Sep 7, 2026
Merged

ci: gate real Docker build startup and recreation#3823
lidge-jun merged 7 commits into
devfrom
codex/platform-lane4-final

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Gate the actual Docker lifecycle probe in Cross-platform CI, include Docker packaging paths in scope detection, and require the Docker result in the aggregate. Extend the workflow oracle and strictly typecheck the new script using TypeScript 7's explicit-file mode. Existing workflow permissions and suite retry policies remain unchanged.

Final layer of the ordinary manual chain: #3818 OAuth teardown → #3819 body-size diagnostic provenance → #3822 container persistence and image probe → this CI integration. No GitHub native stack is registered.

Verification

  • Final candidate: 6f2ad1ef32c113ff5827c58959c85cefa923b15c. Cross-platform CI, lane=all passed (26 successful jobs). The verification ref points to the same commit as the final PR.
  • Independent Astra high implementation review completed; container lifecycle and workflow changes received explicit independent security/contract reviews.
  • Documentation build passed on isolated Linux at this exact source snapshot: 425 pages.
  • Local test suites, typecheck, and Docker execution were not run, as instructed by the maintainer. Pushes use --no-verify.
  • Lower-layer expensive CI is deliberately omitted; only failed final checks triggered narrowed diagnosis. No lower-layer green is fabricated.
  • Earlier combined runs passed all six Windows shards, four Linux shards, and two macOS shards. They exposed Docker harness assumptions, a TypeScript 7 CLI requirement, and then a real container shutdown/catalog persistence defect. These were corrected. One earlier macOS full-control run failed an unchanged Cursor watchdog test; its cause remains unproven, with no timeout/skip workaround. Superseded runs are not final-head success evidence.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Co-authored-by: Buseong Kim flight@skyline23.com
Co-authored-by: Ingwannu ingwannu@users.noreply.github.com

Maintainer integration

The repository owner explicitly authorized admin integration of this manual chain into dev. The final combined head 6f2ad1ef32c113ff5827c58959c85cefa923b15c passed all 26 CI jobs. One cancelled macOS shard was rerun with unchanged source, commands and limits; its original stall remains recorded rather than claimed fixed.

Independent integration review found no conflict with current dev a5f9c3497. A clean merge produced tree 2c51d5e8042011fe8362e267b224016c6061d684; the relevant OAuth/body/container tests passed there on isolated Linux (129 passed, zero failures). This focused result is distinct from the full CI proof on the combined PR head. The branch commits preserve original contributors through Co-authored-by trailers.

Exercise the source-build contract from #3421/#3604 and separate-home persistence from #3747 using disposable Docker resources. Preserve original token and both named volumes through container replacement; verify admission without upstream inference. Independent source/security review completed; actual Docker networking and runtime acceptance remain pending final CI.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (2)
  • ^dev$
  • ^preview$

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Team

Run ID: 4a8e54ac-def7-43a3-bb93-83d16ef3aecf

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@github-actions github-actions Bot added the chore Maintenance, CI, tests, refactors, or build changes (not a user-facing bug or feature). label Sep 6, 2026
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

…ing [skip ci]

CI run 34064754947 built and started the image, then proved internal-only networking suppressed host port publication. Keep actual Compose networking and seed a checked loopback-only provider into disposable state before startup. Verify loaded configuration and hashes through recreation.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
@lidge-jun

Copy link
Copy Markdown
Owner Author

리뷰 · 우선순위 63 / 80

이 PR은 플랫폼 체인 마지막 4층입니다. 베이스는 #3822의 docker 브랜치이고, 헤드 codex/platform-lane4-final 에 앞선 OAuth teardown·body 진단·docker-smoke 스크립트가 모두 들어 있습니다. 이 층 자체 변경은 CI 배선과 문서·워크플로 테스트입니다.

하는 일은 세 가지입니다. 첫째, .github/workflows/ci.ymldocker-smoke 잡을 추가해 bun scripts/ci/docker-smoke.ts 를 ubuntu-latest에서 돌립니다. 둘째, push paths와 dorny changes 필터에 Dockerfile/compose.yaml/.dockerignore/docker/** 를 넣어 Docker-only 변경도 비싼 잡 범위에 들어가게 합니다. 셋째, aggregate ci 잡 needs에 docker-smoke를 넣어 스모크 실패 시 전체 게이트가 막히게 합니다. gates Typecheck 단계에 docker-smoke.ts 단독 strict tsc도 추가했습니다.

왜 중요하냐면 3층 스크립트만 dev에 있어도 아무도 자동으로 안 돌립니다. 문서의 소스 빌드 계약이 깨져도 초록 CI가 나올 수 있습니다. 이 배선이 그 구멍을 막습니다. 워크플로 permissions를 넓히지 않았고, continue-on-error도 안 붙였고, 기존 스위트 재시도 정책·퍼블리시·인증 기본값도 안 건드렸습니다. remote-hub 가이드에 “CI가 하는 것/안 하는 것”(프로바이더 계정·OAuth 콜백·모든 CPU 아키텍처는 비포함)을 적어 과장 광고를 피했습니다.

소스 오라클 tests/ci-workflows/ci-workflows.test.ts 가 경로 allowlist, docker-smoke needs/if, exact shell 명령, aggregate needs 포함, gates typecheck 한 줄까지 고정합니다. 예전에 GUI 게이트가 조용히 빠진 적이 있어서(리뷰 노트 #97/#99), 같은 종류의 후퇴를 문자열 단언으로 막는 패턴과 맞습니다.

현재 dev HEAD와 비교하면 런타임 제품 코드는 이 층에서 안 바뀝니다. 가치는 “검증을 의무화”하는 쪽에 있습니다. 스택 전체를 한꺼번에 보면 최종 후보 헤드 1f5881d00 이고, 이미 Cross-platform CI lane=all 디스패치가 걸려 있습니다. 아래 층 커밋에 [skip ci]가 있는 것은 계획대로입니다. 성공 주장은 그 런이 끝날 때까지 하면 안 됩니다.

경로 .github/workflows/ci.yml docker-smoke if - PR에서는 changes.outputs.ci==true 일 때만 돕니다. Dockerfile 등이 필터에 추가되어 Docker-only PR도 걸립니다. scripts/** 은 원래부터 있었으므로 스모크 스크립트만 고친 PR도 이미 범위 안입니다.
경로 .github/workflows/ci.yml aggregate needs - docker-smoke 실패/누락이 게이트에 보입니다. 좋습니다.
경로 tests/ci-workflows/ci-workflows.test.ts - YAML 파싱 단언이 워크플로 리팩터에 깨지기 쉽지만, 그게 목탑니다. permissions undefined(상속 contents:read) 가정도 현재 워크플로와 맞는지 유지해야 합니다.
경로 docs-site/.../remote-hub.md - 한계를 명시한 문단은 운영 기대치를 낮춰 줍니다.

메인테이너의 판단이 필요한 지점

  • 최종 lane=all 런(34064754947)이 초록일 때만 admin merge할지. 계획이 그 방향입니다.
  • bottom-up merge commit 네 번 vs 최종 브랜치 한 번 squash. 계획은 리뷰된 커밋 조상 보존을 위해 merge commit bottom-up입니다.
  • docker-smoke가 인프라 flaky면 잠시 continue-on-error를 허용할지(비권장) , 프로브/#3822를 고칠지.

너의 추천
머지 순서: #3818#3819#3822#3823. 최종 CI가 Docker 잡 포함 초록이면 4층을 마지막으로 올리고, 머지 후 dev에서 한 번 더 통합 재확인하세요. 동시 dev 변경이 있으면 rebase가 아니라 계획대로 재검증·구분하세요. 라벨은 이 리뷰가 바꾸지 않습니다. 성공 전에는 CI 링크를 성공처럼 말하지 마세요.

이 댓글은 grok-bot이 작성했습니다

@lidge-jun
lidge-jun force-pushed the codex/platform-lane4-final branch from 1f5881d to a63cfb1 Compare September 6, 2026 22:55
The Docker diagnostic failed because loadConfig correctly rejects private destinations unless explicitly allowed. A bounded remote fixture reproduced the fallback and passed with the test-only flag. Validate the fixture before startup and report fixed seed-phase codes without exposing child errors.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
@lidge-jun
lidge-jun force-pushed the codex/platform-lane4-final branch from a63cfb1 to 7e037f6 Compare September 6, 2026 23:02
…eline [skip ci]

Remote source startup proved the expected tier/subagent migrations and schema-default persistence, followed by byte-stable second startup. Verify exact seed bytes before startup, six explicit migration/default additions at readiness, and an immutable post-start hash through bootstrap refusal and recreation.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
@lidge-jun
lidge-jun force-pushed the codex/platform-lane4-final branch from 7e037f6 to 8fd80f1 Compare September 6, 2026 23:12
t and others added 3 commits September 7, 2026 08:54
… ci]

Real Docker CI exposed foreground shutdown stripping routed catalog rows despite persistent volumes. Declare the existing service lifecycle mode in the runtime image so Docker-managed stop/recreate preserves routed state. Keep the routed fixture and exact-byte checks. Two independent lifecycle/security reviews accepted this bounded packaging change; isolated CLI before/after reproduced the defect and preservation with service mode.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
Add Docker packaging paths to the existing CI scope, execute the isolated lifecycle smoke, and include it in the aggregate gate. Extend the workflow oracle and typecheck the new script. Final integration will be dispatched explicitly with lane=all; redundant lower-layer runs are intentionally skipped.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
Final run 34064754947 passed root typechecks but rejected the standalone smoke-script command with TS5112. Explicit --ignoreConfig retains all strict script flags and preserves the existing root/project checks.

Co-authored-by: Buseong Kim <flight@skyline23.com>

Co-authored-by: Ingwannu <ingwannu@users.noreply.github.com>
@lidge-jun
lidge-jun force-pushed the codex/platform-lane4-final branch from 8fd80f1 to 6f2ad1e Compare September 6, 2026 23:55
@lidge-jun
lidge-jun marked this pull request as ready for review September 7, 2026 00:48
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner September 7, 2026 00:48
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 7, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-07T00:50:49.835184Z 6f2ad1e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@lidge-jun
lidge-jun changed the base branch from codex/platform-lane4-docker to dev September 7, 2026 00:48
@lidge-jun
lidge-jun merged commit 7fdb0e9 into dev Sep 7, 2026
65 of 72 checks passed
@lidge-jun
lidge-jun deleted the codex/platform-lane4-final branch September 7, 2026 00:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Maintenance, CI, tests, refactors, or build changes (not a user-facing bug or feature).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant