Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions docs/analysis/12-anvil-project-process-status-review-2026-08-13.md
Original file line number Diff line number Diff line change
Expand Up @@ -529,10 +529,10 @@ tag authorization: hold
| PR #110 review/merge | 완료 | exact head `c394f7d...`의 Go CI green, unresolved thread 0에서 merge commit `794d0ae...`로 `main` 병합. CodeRabbit 완료 리뷰는 merge 직후 회수 |
| strict secret gate | 완료 | tracked tree PASS, scanner allowlist/regex 완화 없음 |
| KVM release-candidate gate | 완료 | full E2E `All test steps passed`, lifecycle/semantic/flock smoke는 선행 handoff에서 통과 |
| `allow_hosts` 제거 | 구현·local/remote 검증 완료, PR #111 merge 대기 | field/validation/iptables string matcher 제거, non-empty/empty/`null`/mixed-case key loud rejection, unrelated unknown metadata 호환 |
| VM 삭제 실패 cleanup | 구현·local/remote 검증 완료, PR #111 merge 대기 | CodeRabbit 사후 Major finding. forced dm failure 뒤 양 loop/store/TAP-IP cleanup continuation test, KVM resource inventory clean |
| `allow_hosts` 제거 | 완료·`main` 병합 | field/validation/iptables string matcher 제거, non-empty/empty/`null`/mixed-case key loud rejection, unrelated unknown metadata 호환 |
| VM 삭제 실패 cleanup | 완료·`main` 병합 | CodeRabbit 사후 Major finding. forced dm failure 뒤 양 loop/store/TAP-IP cleanup continuation test, KVM resource inventory clean |
| npm audit | 폐쇄 | High 2/Moderate 2 → 0, clean install/check/build 통과 |
| Web/secret CI | 구현 완료, PR 대기 | `web-and-security`, `secret-scan` 독립 job, `contents: read` |
| Web/secret CI | 완료·`main` 강제 표면 편입 | `web-and-security`, `secret-scan` 독립 job, `contents: read`, merge commit CI green |
| version policy | 결정 규칙 확정 | upstream 첫 post-`v0.7.0` tag `vX.Y.Z` → `anvil-vX.Y.Z`; downstream-only 번호 금지 |

### 14.2 PR #110 사후 review disposition
Expand All @@ -554,17 +554,20 @@ CodeRabbit가 merge 완료 직후 4개 actionable comment를 게시했다.
password rotation, key rollout, permission remediation을 실행할 인증 경로가 없다.
2. **Next version number:** upstream latest/main이 계속 `v0.7.0`이라 결정 규칙의 입력이
없다. 번호는 의도적으로 미할당이다.
3. **Remote integration:** PR #111 code-bearing SHA의 Go/Web/secret CI는 green이다.
CodeRabbit는 rate limit로 실제 review를 수행하지 못했으며 PR merge가 남았다.
4. **Branch protection:** 새 CI context가 `main`에 병합된 뒤 적용해야 한다. collaborator가
owner 1명뿐이라 admin-enforced approval 1 설정 후 두 번째 reviewer가 필요하다.
3. **Remote integration:** PR #111은 merge commit `60ce239ce68555a419994f37c431dcb377825e1f`로
병합됐다. 해당 merge commit의 CI run `31630049807`에서 Go/Web/secret 3개 job이
모두 green이다. CodeRabbit는 rate limit로 실제 review를 수행하지 못해 approval로
세지 않았고 별도 manual actual-diff review에서 blocking/Important finding은 없었다.
4. **Branch protection bootstrap:** 이 최종 증적 commit 직후 strict status checks,
approval 1, conversation resolution, admin enforcement를 적용·read-back한다. collaborator가
owner 1명뿐이라 적용 후 두 번째 eligible reviewer가 추가될 때까지 새 PR merge는 차단된다.

### 14.4 갱신 판정

```text
released baseline: anvil-v0.7.0 = operate
main after PR #110: release-gate evidence merged
next-gates branch: code-review -> remote CI/merge
main after PR #111: implementation + release-gate CI merged
governance bootstrap: protection apply/read-back pending
host security gate: blocked (access unavailable)
next version number: blocked (no post-v0.7.0 upstream tag)
tag authorization: hold
Expand Down
12 changes: 6 additions & 6 deletions docs/operations/2026-08-13-allow-hosts-removal-handoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- branch: `agent/next-release-gates`
- PR: [#111](https://github.com/HardcoreMonk/anvil/pull/111)
- code-bearing commit: `0aec994089459a64d7bf9e8584f59f4bf6243e4e`
- merge commit: `60ce239ce68555a419994f37c431dcb377825e1f`
- 설계:
[`2026-08-13-allow-hosts-removal-design.md`](../superpowers/specs/2026-08-13-allow-hosts-removal-design.md)
- 계획:
Expand Down Expand Up @@ -50,6 +51,7 @@ legacy apply contract가 실제로 살아 있음을 보였다.
- `git diff --check`: PASS
- full KVM `e2e_test.sh`: `All test steps passed`
- PR #111 exact code-bearing SHA CI: Go/Web/secret 3 jobs green
- `main` merge commit CI run `31630049807`: Go/Web/secret 3 jobs green

## Audit

Expand All @@ -62,7 +64,6 @@ legacy apply contract가 실제로 살아 있음을 보였다.

## Blockers

- PR #111 merge가 아직 남아 있다.
- 다음 public version number는 upstream post-`v0.7.0` tag 부재로 미할당이다.
- deployment host credential/key/permission remediation이 외부 접근 부재로 미완료다.

Expand All @@ -79,15 +80,14 @@ legacy apply contract가 실제로 살아 있음을 보였다.

## Current Lifecycle Stage

local implement, verification, code review, exact code-bearing SHA remote CI와 release
handoff 작성이 끝났다. PR merge 전이므로 `operate`에는 진입하지 않았다.
implement, verification, code review, exact code-bearing SHA remote CI와 `main` 병합이
끝났다. public tag/deployment는 host/version blocker 때문에 `operate` 진입하지 않았다.

## Next Action

PR #111의 final head CI를 확인하고 병합한다.
배포 전 외부 profile에서 제거된 key가 없는지 확인하고 host/version blocker를 해소한다.

## Follow-Up Tasks

1. 외부 profile에서 `allow_hosts` key 제거 여부를 배포 전 확인
2. 통합 PR review/merge
3. host security blocker와 upstream-derived version blocker 해소 전 tag 금지
2. host security blocker와 upstream-derived version blocker 해소 전 tag 금지
35 changes: 15 additions & 20 deletions docs/operations/2026-08-13-release-gate-closure-handoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,17 +150,15 @@ flock prove-broken은 daemon authorship guard가 실제로 roster 밖 author를

## Blockers

1. 다음 anvil version이 확정되지 않음. 현 정책은 upstream ephemera version 정렬이고
upstream latest는 여전히 `v0.7.0`이다.
2. `allow_hosts`는 “다음 tagged anvil release에서 제거” 계약이지만 제거 lifecycle이
아직 실행되지 않음.
3. deployment host credential/key/permission remediation이 완료되지 않음.
4. npm audit High 2건과 production Moderate 2건의 release disposition이 없음.
1. 다음 anvil version은 post-`v0.7.0` upstream tag가 없어 의도적으로 미할당이다.
2. deployment host credential/key/permission remediation은 인증·도달 경로 부재로
완료되지 않았다.

## Warnings

- `main` branch protection/required review가 없음.
- CI가 Web check/build/audit와 secret scan을 강제하지 않음.
- strict `main` branch protection은 최종 bootstrap 증적 직후 외부 설정으로 적용한다.
- owner가 한 명뿐이므로 approval 1/admin enforcement 적용 뒤 두 번째 eligible reviewer가
추가될 때까지 새 PR merge가 차단된다.
- PR #109 merge 당시 actionable documentation review comment 2개가 미해결이었다.
- `CONTEXT.md` 마지막 문장 절단, `RELEASE_NOTES.md` release workflow 이력 drift,
Svelte migration spec의 끊어진 ADR 링크가 남아 있다.
Expand Down Expand Up @@ -199,21 +197,18 @@ full lifecycle/TDD로 수정·검증했다.

## Current Lifecycle Stage

local `code-review`와 code-bearing exact SHA remote CI가 완료됐다. version, deprecated
contract, security operations와 dependency blocker가 남아 있어 `release` 또는 `operate`에
진입하지 않았다.
후속 PR #111에서 deprecated contract 제거, dependency/CI 보강, cleanup failure-path 수정이
`main`에 병합됐고 merge commit CI까지 통과했다. host와 upstream version input blocker가
남아 있어 public `release` 또는 `operate`에는 진입하지 않았다.

## Next Action

1. draft PR #110에서 human review를 받고 Important finding을 처리
2. merge 권한이 확인되면 PR을 ready 상태로 전환해 병합
3. 아래 Follow-Up blocker가 남아 있으므로 merge와 별개로 tag는 생성하지 않음
1. strict `main` protection을 적용하고 read-back
2. host와 upstream version input blocker가 남아 있으므로 tag는 생성하지 않음

## Follow-Up Tasks

1. `allow_hosts` 제거를 별도 full lifecycle/TDD로 수행
2. upstream/version 정책 근거가 생긴 뒤 다음 anvil version 확정
3. deployment host security operations 종료
4. npm audit disposition 및 Web/secret CI 편입
5. branch protection/required review 설정
6. PR #109 documentation comment와 canonical document drift 정리
1. upstream에 post-`v0.7.0` tag가 생긴 뒤 다음 anvil version 확정
2. deployment host security operations 종료
3. branch protection/required review 설정
4. 두 번째 eligible reviewer 추가
38 changes: 26 additions & 12 deletions docs/operations/2026-08-13-release-governance-hardening-handoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
- branch: `agent/next-release-gates`
- PR: [#111](https://github.com/HardcoreMonk/anvil/pull/111)
- code-bearing commit: `0aec994089459a64d7bf9e8584f59f4bf6243e4e`
- evidence commit: `72f721331274101f2ea276f84caebe62f5c147ae`
- merge commit: `60ce239ce68555a419994f37c431dcb377825e1f`
- 설계:
[`2026-08-13-release-governance-hardening-design.md`](../superpowers/specs/2026-08-13-release-governance-hardening-design.md)
- 계획:
Expand Down Expand Up @@ -52,10 +54,21 @@ patched graph:
- Go full/race/named builds/vet/gofmt/govulncheck: 통과
- Markdown relative links 155건, `git diff --check`: PASS

PR #111 code-bearing exact SHA의 `build-and-test`, `web-and-security`, `secret-scan`은 모두
green이다. CodeRabbit status는 service review-rate-limit으로 pass됐지만 실제 review는
수행되지 않았다. 이를 approval로 세지 않았고 manual actual-diff review에서 blocking
finding은 없었다. branch-protection read-back은 merge 후 추가한다.
PR #111 final head `72f721331274101f2ea276f84caebe62f5c147ae`의
`build-and-test`, `web-and-security`, `secret-scan`은 모두 green이다. CodeRabbit status는
service review-rate-limit으로 pass됐지만 실제 review는 수행되지 않았다. 이를 approval로
세지 않았고 manual actual-diff review에서 blocking/Important finding은 없었다. PR은 merge
commit `60ce239ce68555a419994f37c431dcb377825e1f`로 병합됐다.

merge commit의 GitHub Actions run `31630049807`에서도 다음 세 job이 모두 통과했다.

- `build-and-test`
- `web-and-security`
- `secret-scan`

이 문서 갱신은 관리자까지 강제하는 보호 규칙을 활성화하기 직전의 마지막 bootstrap
commit이다. 최종 외부 설정의 진실 기준은 이 commit 직후 수행하는 GitHub branch
protection API read-back이다.

## Audit

Expand All @@ -70,7 +83,7 @@ finding은 없었다. branch-protection read-back은 merge 후 추가한다.

1. next public version number는 post-`v0.7.0` upstream tag 부재로 미할당이다.
2. deployment host A1/A2는 인증/도달 경로 부재로 미완료다.
3. PR #111 merge와 merge 후 branch protection 적용이 남았다.
3. strict branch protection 적용과 read-back이 남았다.

## Warnings

Expand All @@ -87,16 +100,17 @@ finding은 없었다. branch-protection read-back은 merge 후 추가한다.

## Current Lifecycle Stage

local implement/verification/code review와 code-bearing exact-SHA remote CI 완료. PR merge와
external protection이 남아 있어 `operate` 미진입이다.
implement/verification/code review, exact-SHA remote CI, PR merge, merge-commit CI가
완료됐다. external protection 적용 직전이며 host/version blocker 때문에 public release
`operate`에는 진입하지 않았다.

## Next Action

PR #111 final head CI를 확인해 병합한 뒤 branch protection을 적용한다.
이 bootstrap 문서를 병합한 뒤 `main`에 strict status check, approval 1,
conversation-resolution, admin enforcement를 적용하고 API로 read-back한다.

## Follow-Up Tasks

1. exact-SHA remote CI와 review/merge
2. `main` protection 적용/read-back
3. 두 번째 eligible reviewer 추가
4. host A1/A2와 upstream version input 전 tag 금지
1. `main` protection 적용/read-back
2. 두 번째 eligible reviewer 추가
3. host A1/A2와 upstream version input 전 tag 금지
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- branch: `agent/next-release-gates`
- PR: [#111](https://github.com/HardcoreMonk/anvil/pull/111)
- code-bearing commit: `0aec994089459a64d7bf9e8584f59f4bf6243e4e`
- merge commit: `60ce239ce68555a419994f37c431dcb377825e1f`
- trigger: merged PR #110에 대한 CodeRabbit 사후 Major review
- 설계:
[`2026-08-13-vm-deletion-failure-cleanup-design.md`](../superpowers/specs/2026-08-13-vm-deletion-failure-cleanup-design.md)
Expand Down Expand Up @@ -70,6 +71,7 @@ E2E가 남긴 root-owned Town Wall log 8개와 0-byte rootfs placeholder 7개는
- govulncheck reachable 0, tracked secret scan PASS
- full KVM E2E: 통과
- PR #111 exact code-bearing SHA Go/Web/secret CI: 통과
- `main` merge commit CI run `31630049807`: Go/Web/secret 3 jobs 통과
- `git diff --check`: 통과

## Audit
Expand All @@ -82,7 +84,6 @@ E2E가 남긴 root-owned Town Wall log 8개와 0-byte rootfs placeholder 7개는

## Blockers

- PR #111 merge가 남아 있다.
- 실제 kernel이 resource를 계속 busy로 유지하면 후속 detach도 실패할 수 있다. 이 경우
error와 metric이 남으며 release gate는 host inventory clean 전까지 열려 있다.
- deployment host security operations가 미완료다.
Expand All @@ -99,15 +100,14 @@ E2E가 남긴 root-owned Town Wall log 8개와 0-byte rootfs placeholder 7개는

## Current Lifecycle Stage

implement, local/KVM verification, code review, exact code-bearing SHA remote CI, release
handoff 완료. PR merge 전이므로 `operate` 미진입이다.
implement, local/KVM verification, code review, exact code-bearing SHA remote CI와 `main`
병합 완료. 실제 배포는 host/version blocker 때문에 `operate` 미진입이다.

## Next Action

PR #111 final head CI를 확인하고 병합한다.
배포 전 host resource inventory를 재확인하고 host/version blocker를 해소한다.

## Follow-Up Tasks

1. branch exact-SHA CI/CodeRabbit review
2. 배포 전 host resource inventory 재확인
3. host/security/version blockers 전 tag 금지
1. 배포 전 host resource inventory 재확인
2. host/security/version blockers 전 tag 금지