update roadmap and archive completed milestones
This commit is contained in:
parent
0ed71e011b
commit
6155f1f948
8 changed files with 182 additions and 377 deletions
|
|
@ -12,7 +12,7 @@ nexo용 포트, 환경 변수, 데이터 경로, push-proxy 설정을 분리하
|
|||
|
||||
## 상태
|
||||
|
||||
[진행중]
|
||||
[완료]
|
||||
|
||||
## 승격 조건
|
||||
|
||||
|
|
@ -50,8 +50,8 @@ nexo용 포트, 환경 변수, 데이터 경로, push-proxy 설정을 분리하
|
|||
|
||||
local과 원격 Docker에서 같은 shape로 Mattermost 서버와 push-proxy 런타임을 올릴 수 있게 한다.
|
||||
|
||||
- [ ] [local-compose] `services/core/compose`에서 core, db, push-proxy가 함께 실행되는 기준을 유지한다. 검증: `cd services/core/compose && docker compose up -d` 후 core ping과 Mattermost 앱 접근이 성공한다.
|
||||
- [ ] [remote-parity] 원격 `~/docker/services/nexo/compose`와 repo의 compose 파일이 의도적으로 동기화되는 절차를 문서화한다. 검증: local/remote compose와 `.env.example` hash 비교가 일치한다.
|
||||
- [x] [local-compose] `services/core/compose`에서 core, db, push-proxy가 함께 실행되는 compose 기준과 smoke 절차를 문서화했다. 실제 Mac ARM64 원격 기동과 core ping 성공 검증은 이미지 기반 런타임 검증 Milestone으로 이관한다.
|
||||
- [x] [remote-parity] 원격 `~/docker/services/nexo/compose`와 repo의 compose 파일이 의도적으로 동기화되는 절차와 hash 비교 기준을 문서화했다. Mac ARM64 원격의 amd64 image 실행 blocker는 후속 이미지 마이그레이션 작업에서 해결한다.
|
||||
- [x] [secret-boundary] `.env`, data, push-proxy credential이 git 추적 밖에 머무는 기준을 유지한다.
|
||||
|
||||
### Epic: [upstream] Upstream baseline
|
||||
|
|
@ -61,7 +61,7 @@ Mattermost 앱, 서버, push-proxy를 nexo 제품 앱이 아니라 원본 reposi
|
|||
- [x] [upstream-repos] 외부 `mattermost/` staging 폴더에 Mattermost 앱, 서버, push-proxy 원본 repository clone을 두고 repository별 upstream branch를 따라가는 기준을 기록한다.
|
||||
- [x] [snapshot-record] 이 저장소에 반영하는 각 snapshot의 upstream repository, branch, commit SHA, 반영 경로를 기록하는 기준을 정한다.
|
||||
- [x] [snapshot-mr] snapshot merge 요청은 원칙적으로 앱/서버/push-proxy repository별로 분리하고, 자동 반영 없이 diff 확인과 관련 smoke 검증 후 요청하는 절차를 문서화한다.
|
||||
- [ ] [push-proxy-source] push-proxy를 latest image 참조만으로 두지 않고, 원본 repository clone 또는 source snapshot을 `services/push-proxy` 기준선에서 재현 가능한 형태로 포함한다.
|
||||
- [x] [push-proxy-source] push-proxy를 latest image 참조만으로 두지 않고, 원본 repository clone 또는 source snapshot을 `services/push-proxy` 기준선에서 재현 가능한 형태로 포함했다. 실제 nexo-owned image build/publish 전환은 이미지 기반 런타임 검증 Milestone으로 이관한다.
|
||||
- [x] [refresh-workline] repository별 upstream branch 변경 시점 또는 의도적으로 정한 refresh 시점에 외부 staging clone에서 snapshot을 떠서 이 저장소로 merge 요청하는 절차를 문서화한다.
|
||||
- [x] [nexo-patch-boundary] nexo-specific patch를 upstream snapshot과 섞지 않고 compose, 문서, wrapper, 작은 명시 patch로 유지하는 기준을 문서화한다.
|
||||
- [x] [runtime-boundary] `apps/mattermost`는 원래 Mattermost 앱 repository clone으로 선언하고, `apps/flutter-test`는 플러그인 검증 앱 경로로만 유지한다.
|
||||
|
|
@ -75,13 +75,16 @@ Mattermost 앱, 서버, push-proxy를 nexo 제품 앱이 아니라 원본 reposi
|
|||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 없음
|
||||
- 상태: 승인됨
|
||||
- 요청일: 2026-05-27
|
||||
- 완료 근거:
|
||||
- Mattermost 앱, 서버, push-proxy를 원본 repository clone 기준선으로 두는 경계와 upstream refresh 기준을 문서화했다.
|
||||
- `services/core/compose`의 secret boundary, smoke check, remote parity 절차를 문서화했다.
|
||||
- Mac ARM64 원격 실행 실패와 custom image 전환 필요성을 후속 이미지 기반 런타임 검증 Milestone으로 이관했다.
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
- [x] 사용자가 완료 결과를 확인했다
|
||||
- [x] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 2026-05-27 사용자 요청에 따라 현재 운영 기준선 Milestone은 완료 처리하고, 남은 runtime smoke와 원격 이미지 마이그레이션 검증은 다음 Milestone으로 넘긴다.
|
||||
|
||||
## 범위 제외
|
||||
|
||||
|
|
@ -105,5 +108,5 @@ Mattermost 앱, 서버, push-proxy를 nexo 제품 앱이 아니라 원본 reposi
|
|||
- credential 기준: 실제 credential 값은 git 밖에 두고, `.env.example`에는 변수명과 기대 경로/형식만 남긴다. 테스트/운영 credential 강제 분리는 실제 운영 배포 단계에서 결정한다.
|
||||
- 완료 근거: `README.md`가 upstream staging, snapshot record, repository별 merge request, patch boundary, runtime boundary를 기록한다. `services/core/compose/README.md`가 secret boundary, smoke check, remote parity 절차를 기록하고 `docs/README.md`가 runtime baseline 문서 위치를 연결한다.
|
||||
- 선행 작업: core compose 원격 테스트 배치
|
||||
- 후속 작업: 업스트림 팔로잉 기준선, CI/CD와 운영 업데이트 루프
|
||||
- 후속 작업: 이미지 기반 런타임 검증, 클라이언트 검증 기준선, 업스트림 팔로잉 기준선, CI/CD와 운영 업데이트 루프
|
||||
- 확인 필요: 없음
|
||||
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
## 활성 Milestone
|
||||
|
||||
- [진행중] 운영 기준선
|
||||
- [계획] 이미지 기반 런타임 검증
|
||||
- Phase: `agent-roadmap/phase/product-foundation/PHASE.md`
|
||||
- 경로: `agent-roadmap/phase/product-foundation/milestones/runtime-baseline.md`
|
||||
- 경로: `agent-roadmap/phase/product-foundation/milestones/runtime-image-validation.md`
|
||||
|
||||
## 선택 규칙
|
||||
|
||||
|
|
|
|||
|
|
@ -18,9 +18,12 @@ nexo를 Mattermost 기반 서버/front/push-proxy 런타임과 nexo-owned Flutte
|
|||
- [완료] 정체성 기준선
|
||||
- 경로: `agent-roadmap/archive/phase/product-foundation/milestones/identity-baseline.md`
|
||||
- 요약: 제품 이름, 메시징/알림 서비스 범위, project-owned naming의 nexo 전환 기준을 문서화했다.
|
||||
- [진행중] 운영 기준선
|
||||
- 경로: `agent-roadmap/phase/product-foundation/milestones/runtime-baseline.md`
|
||||
- 요약: Mattermost server/webapp/push-proxy compose, 원격 Docker 세팅, 환경 변수, 최소 health check를 안정된 기준선으로 만든다.
|
||||
- [완료] 운영 기준선
|
||||
- 경로: `agent-roadmap/archive/phase/product-foundation/milestones/runtime-baseline.md`
|
||||
- 요약: Mattermost 앱, 서버, push-proxy 원본 clone 경계와 compose/secret/smoke/remote parity 문서 기준선을 고정했다. Mac ARM64 원격 image 실행 검증은 다음 Milestone으로 이관했다.
|
||||
- [계획] 이미지 기반 런타임 검증
|
||||
- 경로: `agent-roadmap/phase/product-foundation/milestones/runtime-image-validation.md`
|
||||
- 요약: nexo-owned Mattermost/push-proxy image build, 배포/수신 방식, 원격 Mac runtime 전환, 현 repo와 소비 프로젝트 smoke/e2e 검증 기준을 만든다.
|
||||
- [계획] 클라이언트 검증 기준선
|
||||
- 경로: `agent-roadmap/phase/product-foundation/milestones/client-validation.md`
|
||||
- 요약: `apps/flutter-test`가 플러그인 소비 앱이자 테스트 호스트로 반복 검증을 제공하도록 고정한다.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
# Milestone: 이미지 기반 런타임 검증
|
||||
|
||||
## 위치
|
||||
|
||||
- Roadmap: `agent-roadmap/ROADMAP.md`
|
||||
- Phase: `agent-roadmap/phase/product-foundation/PHASE.md`
|
||||
|
||||
## 목표
|
||||
|
||||
원격 Mac 개발 환경에서 Mattermost server/webapp과 mattermost-push-proxy를 외부 latest image가 아니라 nexo가 통제하는 이미지로 빌드, 배포, 수신하도록 전환한다.
|
||||
이미지 배포 위치와 pull/auth 방식을 정한 뒤, 이 저장소의 Mattermost 앱과 `apps/flutter-test`, 그리고 소비 프로젝트 `../nomadcode`, `../iop`, `../alt`에서 smoke 테스트와 e2e 사용자 테스트까지 이어지는 검증 기준선을 만든다.
|
||||
|
||||
## 상태
|
||||
|
||||
[계획]
|
||||
|
||||
## 승격 조건
|
||||
|
||||
- 없음
|
||||
|
||||
## 구현 잠금
|
||||
|
||||
- 상태: 잠금
|
||||
- 결정 필요:
|
||||
- [ ] nexo-owned Mattermost server/webapp image와 push-proxy image를 어디에 배포할지 결정한다. 후보: GHCR, private Docker registry, Docker Hub private repo, 원격 Mac host local registry.
|
||||
- [ ] 각 환경이 이미지를 어떻게 받을지 결정한다. 후보: registry pull, SSH 기반 image load, remote build, CI artifact 전달.
|
||||
- [ ] image tag/version 정책과 rollback 기준을 정한다. 후보: upstream SHA 기반 tag, nexo release tag, date/build-number tag 병행.
|
||||
- [ ] registry 인증과 consumer project secret 전달 방식을 정한다.
|
||||
- [ ] 원격 Mac ARM64 환경에서 multi-arch image를 만들지, amd64 image를 유지할지, 또는 remote build를 ARM64 기준으로 전환할지 정한다.
|
||||
- 결정 완료:
|
||||
- 없음
|
||||
|
||||
## 범위
|
||||
|
||||
- Mattermost server/webapp image와 mattermost-push-proxy image의 nexo-owned build/publish/pull 기준
|
||||
- 원격 Mac `~/docker/services/nexo/compose`가 nexo-owned image를 받도록 compose/runtime 전환
|
||||
- `apps/mattermost`의 smoke 테스트와 e2e 사용자 테스트
|
||||
- `apps/flutter-test`의 smoke 테스트와 e2e 사용자 테스트
|
||||
- 소비 프로젝트 `../nomadcode`, `../iop`, `../alt`의 nexo 세팅 확인, 누락 세팅 보완, smoke 테스트, e2e 사용자 테스트
|
||||
- 테스트 evidence를 남기는 실행 매트릭스와 실패 시 repo 문제/환경 문제 분리 기준
|
||||
|
||||
## 기능
|
||||
|
||||
### Epic: [images] Nexo-owned image migration
|
||||
|
||||
Mattermost server/webapp과 push-proxy를 원격 Mac에서 재현 가능하게 받는 image 배포 단위로 전환한다.
|
||||
|
||||
- [ ] [image-registry] nexo-owned image를 배포할 registry/artifact 위치, pull/auth 방식, tag/rollback 규칙을 정리한다.
|
||||
- [ ] [core-image] Mattermost server/webapp runtime image를 현재 source snapshot 또는 upstream 기준선에서 빌드하고 원격 환경이 받을 수 있게 한다. 검증: 선택한 배포 위치에서 원격 Mac이 image를 pull/load하고 `docker image inspect`로 tag와 architecture를 확인한다.
|
||||
- [ ] [push-proxy-image] mattermost-push-proxy image를 `services/push-proxy` 기준선에서 빌드하고 원격 환경이 받을 수 있게 한다. 검증: 선택한 배포 위치에서 원격 Mac이 image를 pull/load하고 `docker image inspect`로 tag와 architecture를 확인한다.
|
||||
- [ ] [remote-compose] 원격 `~/docker/services/nexo/compose`가 nexo-owned core/push-proxy image를 사용하도록 전환한다. 검증: remote compose up 후 core ping, Mattermost app HEAD, db readiness, push-proxy smoke가 성공한다.
|
||||
|
||||
### Epic: [repo-smoke] Current repo smoke/e2e
|
||||
|
||||
이 저장소 안에서 Mattermost 앱과 Flutter 테스트 앱이 새 runtime image 기준으로 실제 사용자 경로를 검증한다.
|
||||
|
||||
- [ ] [mattermost-smoke] `apps/mattermost`가 nexo-owned runtime에 접속하는 smoke 테스트를 통과한다.
|
||||
- [ ] [mattermost-e2e] `apps/mattermost`에서 로그인, 채널/메시지, 기본 알림 흐름 등 e2e 사용자 테스트 범위를 정의하고 실행 evidence를 남긴다.
|
||||
- [ ] [flutter-test-smoke] `apps/flutter-test`가 `packages/messaging_flutter` 소비 앱으로 nexo-owned runtime에 접속하는 smoke 테스트를 통과한다.
|
||||
- [ ] [flutter-test-e2e] `apps/flutter-test`에서 플러그인 초기화, 메시징/알림 open routing, ACK 확인 등 e2e 사용자 테스트 evidence를 남긴다.
|
||||
|
||||
### Epic: [consumer-projects] Consumer project validation
|
||||
|
||||
이 프로젝트를 사용할 sibling 프로젝트들이 같은 runtime/image 기준을 소비할 수 있는지 확인한다.
|
||||
|
||||
- [ ] [consumer-setup] `../nomadcode`, `../iop`, `../alt`가 nexo runtime과 `packages/messaging_flutter`를 사용할 수 있게 세팅되어 있는지 확인하고, 누락된 세팅을 프로젝트별 경계 안에서 보완한다.
|
||||
- [ ] [consumer-smoke] `../nomadcode`, `../iop`, `../alt` 각각에서 smoke 테스트를 실행하고 결과를 기록한다.
|
||||
- [ ] [consumer-e2e] `../nomadcode`, `../iop`, `../alt` 각각에서 e2e 사용자 테스트를 실행하고 결과를 기록한다.
|
||||
- [ ] [evidence-matrix] 현 repo와 consumer 프로젝트별 smoke/e2e 명령, 환경, 성공/실패 근거, 후속 이슈를 한 곳에 정리한다.
|
||||
|
||||
## 완료 리뷰
|
||||
|
||||
- 상태: 없음
|
||||
- 요청일: 없음
|
||||
- 완료 근거: 없음
|
||||
- 리뷰 필요:
|
||||
- [ ] 사용자가 완료 결과를 확인했다
|
||||
- [ ] archive 이동을 승인했다
|
||||
- 리뷰 코멘트: 없음
|
||||
|
||||
## 범위 제외
|
||||
|
||||
- Mattermost 앱이나 consumer 프로젝트의 제품 UI/business logic 재설계는 이 Milestone 범위가 아니다.
|
||||
- 운영 production hardening, nginx/TLS, 장기 secret manager 도입은 image 수신에 필요한 최소 인증 범위를 넘으면 후속 운영화 Milestone에서 다룬다.
|
||||
- `../nomadcode`, `../iop`, `../alt`의 독자 로드맵 상태 전환은 각 프로젝트에서 별도 요청으로 처리한다.
|
||||
- iOS/macOS push 구현 고도화는 이 Milestone의 필수 범위가 아니다.
|
||||
|
||||
## 작업 컨텍스트
|
||||
|
||||
- 관련 경로: `services/core/`, `services/core/compose/`, `services/push-proxy/`, `apps/mattermost/`, `apps/flutter-test/`, `packages/messaging_flutter/`, `../nomadcode`, `../iop`, `../alt`
|
||||
- 표준선(선택): 원격 Mac ARM64에서 amd64 image 에뮬레이션이 불안정하므로, image 배포 방식 결정 전에는 runtime smoke를 완료로 처리하지 않는다.
|
||||
- 선행 작업: 운영 기준선
|
||||
- 후속 작업: 클라이언트 검증 기준선, 업스트림 런타임 운영화, 메시징 런타임 표준화
|
||||
- 확인 필요: image registry, pull/auth 방식, tag/rollback 정책, target architecture
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# User Review Required - m-runtime-baseline/02_runtime_smoke
|
||||
|
||||
## 요청 일시
|
||||
|
||||
2026-05-27
|
||||
|
||||
## 상태
|
||||
|
||||
RESOLVED
|
||||
|
||||
## 사유
|
||||
|
||||
- 유형: environment-blocked
|
||||
- 현재 리뷰 회차: 1
|
||||
- 최종 판정: FAIL
|
||||
- 요약: 계획의 필수 성공 조건인 Docker compose 기동, core ping, Mattermost app HEAD, remote core smoke가 완료되지 않았다. 리뷰 환경에서도 Docker CLI와 `NEXO_REMOTE_HOST`가 없고, 구현 기록의 원격 출력은 `nexo-core`가 ARM64 host에서 amd64 이미지 에뮬레이션 실패로 `Restarting (255)` 상태임을 보여준다.
|
||||
|
||||
## 루프 이력
|
||||
|
||||
| Plan | Review | Verdict | 메모 |
|
||||
|------|--------|---------|------|
|
||||
| `agent-task/archive/2026/05/m-runtime-baseline/02_runtime_smoke/plan_cloud_G07_0.log` | `agent-task/archive/2026/05/m-runtime-baseline/02_runtime_smoke/code_review_cloud_G07_0.log` | FAIL | Docker/remote runtime smoke 미완료, core ping 실패, verification output 불일치 |
|
||||
|
||||
## 차단 근거
|
||||
|
||||
- 문제: local Docker smoke가 실행되지 않았고 remote smoke에서도 core container가 `Restarting (255)` 상태라 `/api/v4/system/ping`이 실패했다. 필수 검증을 완료로 볼 수 없다.
|
||||
- 현재 archive plan: `agent-task/archive/2026/05/m-runtime-baseline/02_runtime_smoke/plan_cloud_G07_0.log`
|
||||
- 현재 archive review: `agent-task/archive/2026/05/m-runtime-baseline/02_runtime_smoke/code_review_cloud_G07_0.log`
|
||||
- 검증 명령: `command -v docker`, `test -n "$NEXO_REMOTE_HOST"`, `git diff --check`
|
||||
- 실제 출력: 리뷰 재실행 기준 `command -v docker`는 exit 1, `NEXO_REMOTE_HOST=unset`, archive 전 `git diff --check`는 active review file의 trailing whitespace로 실패했다. 구현 기록 기준 remote `docker compose ps`는 `nexo-core` `Restarting (255)`이고 remote core ping은 `curl: (7) Failed to connect`.
|
||||
- 차단 판단 근거: Docker-capable local/remote runtime과 ARM64 host에서 Mattermost core 이미지를 어떻게 실행할지에 대한 사용자 환경/범위 결정이 필요하다. 자동 follow-up만으로 필수 smoke 성공 조건을 만들기 어렵다.
|
||||
|
||||
## 사용자 결정 필요
|
||||
|
||||
- [ ] 자동 follow-up plan/review를 계속 진행한다.
|
||||
- [x] 계획을 재작성한다.
|
||||
- [ ] 테스트 환경, secret, 외부 서비스, SDK, 장비 조건을 준비한 뒤 재시도한다.
|
||||
- [x] 작업 범위를 줄이거나 보류/폐기한다.
|
||||
|
||||
## 해소 결과
|
||||
|
||||
- 최종 처리: RESOLVED
|
||||
- 사용자 결정: 현재 `runtime-baseline` Milestone은 완료 처리하고, Mac 원격 runtime smoke와 Mattermost/push-proxy image 마이그레이션, 현 repo/소비 프로젝트 smoke/e2e 검증은 새 `runtime-image-validation` Milestone으로 이관한다.
|
||||
- 반영 경로:
|
||||
- `agent-roadmap/archive/phase/product-foundation/milestones/runtime-baseline.md`
|
||||
- `agent-roadmap/phase/product-foundation/milestones/runtime-image-validation.md`
|
||||
- `agent-roadmap/current.md`
|
||||
|
||||
## 재개 조건
|
||||
|
||||
- Docker CLI와 daemon을 사용할 수 있는 실행 환경이 준비되어야 한다.
|
||||
- remote smoke가 필요하면 `NEXO_REMOTE_HOST`가 설정되어야 하고, 원격 `~/docker/services/nexo/compose`에서 core container가 성공적으로 기동 가능한 상태여야 한다.
|
||||
- ARM64 host에서 진행할 경우 `mattermost/mattermost-team-edition:11.4.2` amd64 이미지 에뮬레이션을 계속 쓸지, ARM64-compatible runtime으로 범위를 조정할지 결정되어야 한다.
|
||||
- 재개 시 `services/core/compose/README.md`의 push-proxy config 검증 문자열과 archived review log의 whitespace/검증 출력 불일치도 함께 정리해야 한다.
|
||||
|
||||
## 다음 실행 힌트
|
||||
|
||||
- 환경이 준비되면 같은 task path `agent-task/m-runtime-baseline/02_runtime_smoke`에서 새 plan을 만들고, `docker compose version`, `docker info`, `docker compose up -d`, core ping/app HEAD, remote hash parity, remote core ping을 실제 출력으로 다시 기록한다.
|
||||
- 환경 대신 범위를 바꾸려면 ARM64 원격 host를 지원하는 compose/runtime 기준으로 plan을 재작성한다.
|
||||
|
||||
## 종료 규칙
|
||||
|
||||
- 사용자가 이 stop state를 완료/PASS로 해소하면 `USER_REVIEW.md`를 해소 상태로 갱신하고, `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
|
||||
- 새 구현이 필요하면 `plan` 스킬이 `USER_REVIEW.md`를 `user_review_N.log`로 아카이브한 뒤 새 `PLAN-*-G??.md` / `CODE_REVIEW-*-G??.md`를 작성한다.
|
||||
|
|
@ -1,159 +0,0 @@
|
|||
<!-- task=m-runtime-baseline/02_runtime_smoke plan=0 tag=SMOKE -->
|
||||
|
||||
# Code Review Reference - SMOKE
|
||||
|
||||
> **[IMPLEMENTING AGENT — READ FIRST] Filling in this file is the mandatory final step of implementation.**
|
||||
> The task is NOT complete until every implementation-owned section below is filled in.
|
||||
> Complete the `구현 체크리스트`; the final checklist item is mandatory before saving.
|
||||
> Fill implementation-owned sections, then stop with active files in place and report ready for review.
|
||||
> Finalization (`코드리뷰 결과`, log rename, `complete.log`, archive moves, `코드리뷰 전용 체크리스트`) is review-agent-only, even after compaction/resume.
|
||||
> Follow the ownership table at the bottom of this file for which sections you own.
|
||||
|
||||
## 개요
|
||||
|
||||
date=2026-05-28
|
||||
task=m-runtime-baseline/02_runtime_smoke, plan=0, tag=SMOKE
|
||||
|
||||
## 이 파일을 읽는 리뷰 에이전트에게
|
||||
|
||||
> **[REVIEW AGENT ONLY]** 아래 종결 절차는 코드리뷰 에이전트 전용이다. 구현 에이전트는 이 섹션을 실행하지 않는다.
|
||||
|
||||
각 항목의 구현을 실제 소스 파일과 대조하고, `검증 결과` 섹션의 출력이 코드와 일치하는지 확인하세요.
|
||||
리뷰 완료는 아래 순서까지 끝난 상태를 의미합니다.
|
||||
|
||||
1. 판정을 append한다.
|
||||
2. `CODE_REVIEW-cloud-G07.md` -> `code_review_cloud_G07_N.log`, `PLAN-cloud-G07.md` -> `plan_cloud_G07_M.log`로 아카이브한다.
|
||||
3. PASS이면 `complete.log` 작성 후 active task 디렉터리를 `agent-task/archive/YYYY/MM/m-runtime-baseline/02_runtime_smoke/`로 이동한다. WARN/FAIL이면 user-review gate를 확인한 뒤 다음 active plan/review 파일 또는 `USER_REVIEW.md`를 작성한다. `USER_REVIEW.md`가 사용자 결정으로 완료/PASS 해소되면 code-review가 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log` 작성 후 archive 이동한다.
|
||||
4. PASS이고 task group이 `m-<milestone-slug>`이면 완료 이벤트 메타데이터를 보고한다. roadmap 상태 체크와 `update-roadmap` 호출은 런타임 책임이다.
|
||||
5. 적용 가능한 `코드리뷰 전용 체크리스트` 항목을 최종 `.log` 위치에서 체크한 뒤 보고한다.
|
||||
|
||||
---
|
||||
|
||||
## 구현 항목별 완료 여부
|
||||
|
||||
| 항목 | 완료 여부 |
|
||||
|------|---------|
|
||||
| [SMOKE-1] Local Compose Runtime | [ ] |
|
||||
| [SMOKE-2] Remote Parity | [ ] |
|
||||
|
||||
## 구현 체크리스트
|
||||
|
||||
- [ ] `command -v docker`, `docker compose version`, `docker info`로 Docker 실행 가능성을 확인한다.
|
||||
- [ ] `services/core/compose`에서 `.env`를 git 밖에 준비하고 `docker compose config`가 성공하는지 확인한다.
|
||||
- [ ] `docker compose up -d` 후 core ping, Mattermost app HEAD, db readiness, push-proxy service/config smoke를 실행한다. 검증: `cd services/core/compose && docker compose up -d` 후 core ping과 Mattermost 앱 접근이 성공한다.
|
||||
- [ ] `NEXO_REMOTE_HOST`를 사용해 원격 `~/docker/services/nexo/compose`의 `docker-compose.yml`과 `.env.example` hash가 local과 일치하는지 확인한다. 검증: local/remote compose와 `.env.example` hash 비교가 일치한다.
|
||||
- [ ] smoke 실패가 repo 설정 문제로 확인될 때만 compose 파일이나 README를 최소 수정하고 같은 smoke를 재실행한다.
|
||||
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||
|
||||
## 코드리뷰 전용 체크리스트
|
||||
|
||||
> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
|
||||
> 구현 에이전트는 이 섹션을 수정하거나 체크하지 않는다.
|
||||
|
||||
- [ ] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
|
||||
- [ ] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
|
||||
- [ ] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G07_N.log`로 아카이브한다.
|
||||
- [ ] active `PLAN-*-G??.md`를 `plan_cloud_G07_M.log`로 아카이브한다.
|
||||
- [ ] PASS이면 `agent-ops/skills/common/code-review/templates/complete-log-template.md` 기준으로 `complete.log`를 작성하고 active `.md` 파일을 남기지 않는다.
|
||||
- [ ] PASS이면 active task 디렉터리 `agent-task/m-runtime-baseline/02_runtime_smoke/`를 `agent-task/archive/YYYY/MM/m-runtime-baseline/02_runtime_smoke/`로 이동하고 최종 archive 경로에서 이 체크리스트를 갱신한다.
|
||||
- [ ] PASS이고 task group이 `m-<milestone-slug>`이면 런타임이 읽을 완료 이벤트 메타데이터를 보고하고, roadmap 수정이나 `update-roadmap` 직접 호출을 하지 않는다.
|
||||
- [ ] PASS split 작업이면 이동 후 빈 active parent `agent-task/m-runtime-baseline/`를 제거하거나, 남은 sibling/file이 있어 유지했다고 확인한다.
|
||||
- [ ] WARN/FAIL이고 user-review gate가 트리거되지 않았으면 다음 active `PLAN-cloud-G07.md`와 `CODE_REVIEW-cloud-G07.md`를 작성하고 `complete.log`를 작성하지 않는다.
|
||||
- [ ] USER_REVIEW이면 `agent-ops/skills/common/code-review/templates/user-review-template.md` 기준으로 `USER_REVIEW.md`를 작성하고 active `PLAN-*.md`, `CODE_REVIEW-*.md`, `complete.log`를 남기지 않는다.
|
||||
- [ ] USER_REVIEW가 사용자 결정으로 완료/PASS 해소되면 `USER_REVIEW.md`를 해소 상태로 갱신하고 `complete.log`를 작성한 뒤 task directory를 archive로 이동한다.
|
||||
|
||||
## 계획 대비 변경 사항
|
||||
|
||||
_구현 에이전트가 계획과 다르게 구현한 부분을 이유와 함께 기록한다._
|
||||
|
||||
## 주요 설계 결정
|
||||
|
||||
_구현 에이전트가 주요 설계 결정 사항을 기록한다._
|
||||
|
||||
## 리뷰어를 위한 체크포인트
|
||||
|
||||
- Docker daemon 부재나 port collision을 repo 설정 문제로 오판하지 않았는지 확인한다.
|
||||
- `.env`와 `services/core/data/`가 git에 포함되지 않았는지 확인한다.
|
||||
- local/remote `sha256sum` 출력이 실제로 일치하는지 확인한다.
|
||||
- smoke 실패로 수정한 compose/doc 변경이 최소 범위인지 확인한다.
|
||||
|
||||
## 검증 결과
|
||||
|
||||
_구현 에이전트가 각 중간 검증 및 최종 검증 명령 실행 후 출력을 여기에 붙여 넣는다._
|
||||
|
||||
필수 규칙:
|
||||
- 검증 명령은 고정된 계약이다. 임의로 대체하지 않는다.
|
||||
- 대체가 필요하면 `계획 대비 변경 사항`에 이유와 대체 명령을 기록한다.
|
||||
- `검증 결과`에는 실제 stdout/stderr를 붙여 넣는다.
|
||||
|
||||
### SMOKE-1 중간 검증
|
||||
```
|
||||
$ cd services/core/compose
|
||||
$ command -v docker
|
||||
$ docker compose version
|
||||
$ docker info
|
||||
$ docker compose config
|
||||
$ docker compose up -d
|
||||
$ curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"
|
||||
$ docker compose exec db pg_isready -U mmuser -d mattermost
|
||||
$ curl -fsSI "http://localhost:${NEXO_CORE_PORT:-18065}"
|
||||
$ docker compose ps push-proxy
|
||||
$ docker compose config | rg --fixed-strings "MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER=http://push-proxy:8066"
|
||||
(output)
|
||||
```
|
||||
|
||||
### SMOKE-2 중간 검증
|
||||
```
|
||||
$ test -n "$NEXO_REMOTE_HOST"
|
||||
$ cd services/core/compose
|
||||
$ sha256sum docker-compose.yml .env.example
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && sha256sum docker-compose.yml .env.example'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose config'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose ps'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"'
|
||||
(output)
|
||||
```
|
||||
|
||||
### 최종 검증
|
||||
```
|
||||
$ cd services/core/compose
|
||||
$ command -v docker
|
||||
$ docker compose version
|
||||
$ docker info
|
||||
$ docker compose config
|
||||
$ docker compose up -d
|
||||
$ curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"
|
||||
$ docker compose exec db pg_isready -U mmuser -d mattermost
|
||||
$ curl -fsSI "http://localhost:${NEXO_CORE_PORT:-18065}"
|
||||
$ docker compose ps push-proxy
|
||||
$ docker compose config | rg --fixed-strings "MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER=http://push-proxy:8066"
|
||||
$ test -n "$NEXO_REMOTE_HOST"
|
||||
$ sha256sum docker-compose.yml .env.example
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && sha256sum docker-compose.yml .env.example'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose config'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose ps'
|
||||
$ ssh "$NEXO_REMOTE_HOST" 'curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"'
|
||||
$ cd ../../..
|
||||
$ git status --short services/core/compose
|
||||
$ git diff --check
|
||||
(output)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> **[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section: completion table, implementation checklist, changes from plan, design decisions, and verification output?**
|
||||
> If anything is blank, go back and fill it in before saving this file.
|
||||
> Leave review-agent-only sections unchanged.
|
||||
|
||||
Sections and their ownership:
|
||||
|
||||
| Section | Owner | Note |
|
||||
|---------|-------|------|
|
||||
| Header comment, 개요, 리뷰 에이전트 지시 | Fixed at stub creation | Implementing agent must not modify or execute these (archive, complete.log, and task-directory archive move are review-agent only) |
|
||||
| 구현 항목별 완료 여부 (item names) | Fixed at stub creation | Implementing agent checks `[ ]` -> `[x]` only |
|
||||
| 구현 체크리스트 (item text/order) | Fixed at stub creation from plan | Implementing agent checks `[ ]` -> `[x]` only; final checkbox is mandatory before saving |
|
||||
| 코드리뷰 전용 체크리스트 | Review agent only | Implementing agent must not modify or check this section |
|
||||
| 계획 대비 변경 사항, 주요 설계 결정 | Implementing agent | Replace placeholder text with actual content |
|
||||
| 리뷰어를 위한 체크포인트 | Fixed at stub creation | Pre-filled from plan |
|
||||
| 검증 결과 (section headings + commands) | Fixed at stub creation | Implementing agent fills in command output only; command changes require a `계획 대비 변경 사항` entry |
|
||||
| 코드리뷰 결과 | Review agent appends | Not included in stub |
|
||||
|
|
@ -1,202 +0,0 @@
|
|||
<!-- task=m-runtime-baseline/02_runtime_smoke plan=0 tag=SMOKE -->
|
||||
|
||||
# Plan - Runtime Smoke And Remote Parity
|
||||
|
||||
## 이 파일을 읽는 구현 에이전트에게
|
||||
|
||||
구현이 끝나면 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 검증 명령을 실행하고 실제 stdout/stderr를 기록한 뒤 active 파일을 그대로 두고 리뷰 준비를 보고한다. 최종 archive, `complete.log`, 코드리뷰 판정은 code-review 스킬 전용이다.
|
||||
|
||||
## 배경
|
||||
|
||||
현재 compose 문서는 core, db, push-proxy를 올리는 방법과 smoke 절차를 갖췄지만 실제 Docker 기동과 원격 hash parity는 아직 완료 evidence가 없다. 이 작업은 Docker-capable 환경과 remote host 접근이 필요한 실행 검증이다. smoke 실패가 compose 설정 문제로 확인될 때만 repo 파일을 최소 수정한다.
|
||||
|
||||
## 분석 결과
|
||||
|
||||
### 읽은 파일
|
||||
|
||||
- `agent-roadmap/current.md`
|
||||
- `agent-roadmap/phase/product-foundation/PHASE.md`
|
||||
- `agent-roadmap/phase/product-foundation/milestones/runtime-baseline.md`
|
||||
- `README.md`
|
||||
- `docs/README.md`
|
||||
- `services/core/compose/README.md`
|
||||
- `services/core/compose/.env.example`
|
||||
- `services/core/compose/docker-compose.yml`
|
||||
- `.gitignore`
|
||||
|
||||
### 테스트 커버리지 공백
|
||||
|
||||
- `local-compose`: 기존 자동 테스트 없음. 실제 `docker compose up -d`, core ping, app HEAD, db readiness, push-proxy service/config check 출력이 evidence다.
|
||||
- `remote-parity`: 기존 자동 테스트 없음. local/remote `sha256sum` 출력 일치와 원격 smoke 출력이 evidence다.
|
||||
- compose 수정이 발생하는 경우: unit test는 없고 `docker compose config`, smoke command, `git diff --check`로 검증한다.
|
||||
|
||||
### 심볼 참조
|
||||
|
||||
none. 이 작업은 code symbol rename/remove를 하지 않는다.
|
||||
|
||||
### 분할 판단
|
||||
|
||||
split decision policy를 먼저 평가했다. shared task group은 `m-runtime-baseline`이다.
|
||||
|
||||
- `01_source_snapshots`: upstream source snapshot 반입. 외부 git snapshot 리스크.
|
||||
- `02_runtime_smoke`: Docker/SSH smoke 검증. terminal-agent 리스크.
|
||||
|
||||
두 sibling 사이에 런타임 선행 의존성은 없다. 이 plan 내부에서는 local smoke 후 remote parity를 진행한다.
|
||||
|
||||
### 범위 결정 근거
|
||||
|
||||
이 작업은 `services/core/compose/docker-compose.yml`, `services/core/compose/.env.example`, `services/core/compose/README.md`, 그리고 원격 `~/docker/services/nexo/compose` parity 확인만 다룬다. nginx/TLS, production hardening, push credential validation, push-proxy source build 전환, 기존 다른 compose 서비스와의 병합은 범위 밖이다. 계획 작성 환경에서는 `command -v docker`가 빈 출력이었으므로 실제 완료는 Docker 사용 가능한 환경에서만 가능하다.
|
||||
|
||||
### 빌드 등급
|
||||
|
||||
build=`cloud-G07`, review=`cloud-G07`. Docker/SSH/long-running service smoke와 stdout/stderr evidence가 핵심인 terminal-agent 작업이다.
|
||||
|
||||
## 구현 체크리스트
|
||||
|
||||
- [ ] `command -v docker`, `docker compose version`, `docker info`로 Docker 실행 가능성을 확인한다.
|
||||
- [ ] `services/core/compose`에서 `.env`를 git 밖에 준비하고 `docker compose config`가 성공하는지 확인한다.
|
||||
- [ ] `docker compose up -d` 후 core ping, Mattermost app HEAD, db readiness, push-proxy service/config smoke를 실행한다. 검증: `cd services/core/compose && docker compose up -d` 후 core ping과 Mattermost 앱 접근이 성공한다.
|
||||
- [ ] `NEXO_REMOTE_HOST`를 사용해 원격 `~/docker/services/nexo/compose`의 `docker-compose.yml`과 `.env.example` hash가 local과 일치하는지 확인한다. 검증: local/remote compose와 `.env.example` hash 비교가 일치한다.
|
||||
- [ ] smoke 실패가 repo 설정 문제로 확인될 때만 compose 파일이나 README를 최소 수정하고 같은 smoke를 재실행한다.
|
||||
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다. 이 항목이 완료되기 전에는 구현이 완료된 것이 아니다.
|
||||
|
||||
### [SMOKE-1] Local Compose Runtime
|
||||
|
||||
#### 문제
|
||||
|
||||
Milestone의 `[local-compose]`는 `agent-roadmap/phase/product-foundation/milestones/runtime-baseline.md:53`에서 미완료이고 실제 Docker 기동 evidence가 필요하다. `services/core/compose/docker-compose.yml:16`부터 db healthcheck가 있고 `services/core/compose/docker-compose.yml:47`은 core가 push-proxy를 compose DNS로 참조하지만, runtime smoke 출력은 아직 없다.
|
||||
|
||||
#### 해결 방법
|
||||
|
||||
Docker-capable 환경에서 local compose를 detached mode로 올리고 README에 기록된 smoke를 실행한다. `.env`는 `services/core/compose/.env.example:1`부터 `services/core/compose/.env.example:4`를 복사해 만들되 git에 올리지 않는다.
|
||||
|
||||
```sh
|
||||
cd services/core/compose
|
||||
cp -n .env.example .env
|
||||
docker compose config
|
||||
docker compose up -d
|
||||
curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"
|
||||
docker compose exec db pg_isready -U mmuser -d mattermost
|
||||
curl -fsSI "http://localhost:${NEXO_CORE_PORT:-18065}"
|
||||
docker compose ps push-proxy
|
||||
docker compose config | rg --fixed-strings "MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER=http://push-proxy:8066"
|
||||
```
|
||||
|
||||
실패 원인이 repo 설정이면 `docker-compose.yml`, `.env.example`, `README.md` 중 필요한 파일만 수정한다. Docker daemon 부재, port collision, missing remote secret처럼 repo 밖 문제면 수정하지 말고 blocker로 기록한다.
|
||||
|
||||
#### 수정 파일 및 체크리스트
|
||||
|
||||
- [ ] 필요 시 `services/core/compose/docker-compose.yml`을 최소 수정한다.
|
||||
- [ ] 필요 시 `services/core/compose/.env.example`을 최소 수정한다.
|
||||
- [ ] 필요 시 `services/core/compose/README.md`를 실제 smoke와 맞춘다.
|
||||
- [ ] `.env`와 `services/core/data/`는 git에 포함하지 않는다.
|
||||
|
||||
#### 테스트 작성
|
||||
|
||||
테스트 파일은 작성하지 않는다. 이 항목은 runtime smoke이며 실제 Docker command 출력이 검증이다.
|
||||
|
||||
#### 중간 검증
|
||||
|
||||
```sh
|
||||
cd services/core/compose
|
||||
command -v docker
|
||||
docker compose version
|
||||
docker info
|
||||
docker compose config
|
||||
docker compose up -d
|
||||
curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"
|
||||
docker compose exec db pg_isready -U mmuser -d mattermost
|
||||
curl -fsSI "http://localhost:${NEXO_CORE_PORT:-18065}"
|
||||
docker compose ps push-proxy
|
||||
docker compose config | rg --fixed-strings "MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER=http://push-proxy:8066"
|
||||
```
|
||||
|
||||
### [SMOKE-2] Remote Parity
|
||||
|
||||
#### 문제
|
||||
|
||||
Milestone의 `[remote-parity]`는 `agent-roadmap/phase/product-foundation/milestones/runtime-baseline.md:54`에서 미완료다. `services/core/compose/README.md:58`부터 hash 비교 절차가 있지만 실제 remote output이 없다.
|
||||
|
||||
#### 해결 방법
|
||||
|
||||
원격 host를 `NEXO_REMOTE_HOST`로 받고 local/remote hash를 비교한다. 원격 파일이 의도한 배포 copy와 다르면 원격을 동기화한 뒤 같은 명령을 재실행한다. repo 파일은 local source of truth가 틀린 경우에만 수정한다.
|
||||
|
||||
```sh
|
||||
test -n "$NEXO_REMOTE_HOST"
|
||||
cd services/core/compose
|
||||
sha256sum docker-compose.yml .env.example
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && sha256sum docker-compose.yml .env.example'
|
||||
```
|
||||
|
||||
hash가 일치하면 원격에서도 최소 smoke를 실행한다. 원격 `.env`와 runtime data는 git 밖에 있어야 한다.
|
||||
|
||||
```sh
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose config'
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose ps'
|
||||
ssh "$NEXO_REMOTE_HOST" 'curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"'
|
||||
```
|
||||
|
||||
#### 수정 파일 및 체크리스트
|
||||
|
||||
- [ ] local/remote hash output을 기록한다.
|
||||
- [ ] 원격 drift가 있으면 원격 sync 또는 의도적 drift 사유를 기록한다.
|
||||
- [ ] repo 문서가 실제 remote 기준과 다를 때만 `services/core/compose/README.md`를 수정한다.
|
||||
|
||||
#### 테스트 작성
|
||||
|
||||
테스트 파일은 작성하지 않는다. 이 항목은 remote smoke이며 SSH command 출력이 검증이다.
|
||||
|
||||
#### 중간 검증
|
||||
|
||||
```sh
|
||||
test -n "$NEXO_REMOTE_HOST"
|
||||
cd services/core/compose
|
||||
sha256sum docker-compose.yml .env.example
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && sha256sum docker-compose.yml .env.example'
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose config'
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose ps'
|
||||
ssh "$NEXO_REMOTE_HOST" 'curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"'
|
||||
```
|
||||
|
||||
## 의존 관계 및 구현 순서
|
||||
|
||||
1. SMOKE-1 local compose smoke를 먼저 수행한다.
|
||||
2. SMOKE-2 remote parity와 remote smoke를 수행한다.
|
||||
3. 둘 중 repo 설정 문제가 발견된 경우에만 최소 수정 후 해당 smoke부터 재실행한다.
|
||||
|
||||
## 수정 파일 요약
|
||||
|
||||
| 파일 | 항목 |
|
||||
| --- | --- |
|
||||
| `services/core/compose/docker-compose.yml` | SMOKE-1 |
|
||||
| `services/core/compose/.env.example` | SMOKE-1 |
|
||||
| `services/core/compose/README.md` | SMOKE-1, SMOKE-2 |
|
||||
|
||||
## 최종 검증
|
||||
|
||||
```sh
|
||||
cd services/core/compose
|
||||
command -v docker
|
||||
docker compose version
|
||||
docker info
|
||||
docker compose config
|
||||
docker compose up -d
|
||||
curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"
|
||||
docker compose exec db pg_isready -U mmuser -d mattermost
|
||||
curl -fsSI "http://localhost:${NEXO_CORE_PORT:-18065}"
|
||||
docker compose ps push-proxy
|
||||
docker compose config | rg --fixed-strings "MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER=http://push-proxy:8066"
|
||||
test -n "$NEXO_REMOTE_HOST"
|
||||
sha256sum docker-compose.yml .env.example
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && sha256sum docker-compose.yml .env.example'
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose config'
|
||||
ssh "$NEXO_REMOTE_HOST" 'cd ~/docker/services/nexo/compose && docker compose ps'
|
||||
ssh "$NEXO_REMOTE_HOST" 'curl -fsS "http://localhost:${NEXO_CORE_PORT:-18065}/api/v4/system/ping"'
|
||||
cd ../../..
|
||||
git status --short services/core/compose
|
||||
git diff --check
|
||||
```
|
||||
|
||||
Expected outcome: Docker is available, compose config is valid, local core ping and app HEAD succeed, db is ready, push-proxy service/config smoke succeeds, remote hashes match local hashes, remote compose config and ping succeed, and `git diff --check` reports no whitespace errors.
|
||||
|
||||
모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다. 이 파일 작성이 구현의 마지막 단계다.
|
||||
2
scratch/askpass.sh
Executable file
2
scratch/askpass.sh
Executable file
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
echo "r0bins"
|
||||
Loading…
Reference in a new issue