chore: sync proto files and clean up review docs

This commit is contained in:
toki 2026-06-28 08:05:46 +09:00
parent 7112edfeef
commit 2dd8bb8a56
5 changed files with 142 additions and 7 deletions

View file

@ -49,12 +49,12 @@ task=m-node-resource-model-unification/01_contract_schema, plan=0, tag=API
> **[REVIEW AGENT ONLY]** 이 체크리스트는 코드리뷰 에이전트만 사용한다.
- [ ] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [ ] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
- [ ] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G07_0.log`로 아카이브한다.
- [ ] active `PLAN-*-G??.md`를 `plan_cloud_G07_0.log`로 아카이브한다.
- [ ] `.gitignore`의 Agent-Ops 관리 block이 task artifact를 unignore하는지 확인한다.
- [ ] PASS이면 `complete.log`를 작성하고 active task 디렉터리를 archive로 이동한다.
- [x] `코드리뷰 결과`에 `PASS`, `WARN`, `FAIL` 중 하나의 판정을 append한다.
- [x] 판정과 `차원별 평가`, Required/Suggested/Nit 분류가 서로 일치한다.
- [x] active `CODE_REVIEW-*-G??.md`를 `code_review_cloud_G07_0.log`로 아카이브한다.
- [x] active `PLAN-*-G??.md`를 `plan_cloud_G07_0.log`로 아카이브한다.
- [x] `.gitignore`의 Agent-Ops 관리 block이 task artifact를 unignore하는지 확인한다.
- [x] PASS이면 `complete.log`를 작성하고 active task 디렉터리를 archive로 이동한다.
- [ ] WARN/FAIL이면 다음 active plan/review 또는 `USER_REVIEW.md`를 작성한다.
## 계획 대비 변경 사항
@ -225,3 +225,85 @@ $ git diff --check
```
> **[IMPLEMENTING AGENT - BEFORE SAVING] Have you filled in every implementation-owned section?**
## 코드리뷰 결과
- 리뷰 일자: 2026-06-28
- 종합 판정: PASS
### 차원별 평가
| 차원 | 평가 | 근거 |
|------|------|------|
| Correctness | Pass | provider adapter reference validation이 enabled adapter instance 기준으로 동작하고, legacy runtime concurrency 의미는 contract/comment로 정리됐다. |
| Completeness | Pass | 계획된 contract/proto/comment, config validation, regression coverage가 충족됐고 review artifact drift는 최종화 절차에서 보정한다. |
| Test coverage | Pass | provider adapter reference, missing/disabled/ambiguous/CLI case와 기존 duplicate/category/legacy compatibility tests가 존재하며 관련 Go tests가 통과했다. |
| API contract | Pass | Edge-Node runtime wire, Control Plane-Edge status wire, Edge config/runtime refresh 계약이 SDD 기준과 일치한다. |
| Code quality | Pass | validator는 기존 `edgevalidate` 경계에 좁게 추가됐고 불필요한 debug/TODO/죽은 코드는 보이지 않는다. |
| Implementation deviation | Pass | `config.LoadEdge`는 legacy load compatibility를 유지하고 runtime validation은 `edgevalidate`/refresh path에 둔 결정이 계획의 선택지와 일치한다. |
| Verification trust | Pass | 리뷰 중 계획된 Go test, Edge package test, `make proto`, `make proto-dart`, `git diff --check`를 재실행해 통과를 확인했다. |
| Spec conformance | Pass | SDD S01/S02 Evidence Map이 contract/proto/comment diff, config validation unit test, missing/disabled adapter validation output으로 충족된다. |
### 발견된 문제
없음
### 리뷰 중 직접 보정
- `make proto-dart`를 실행해 `proto/iop/runtime.proto`, `proto/iop/control.proto`의 comment-only 계약 변경을 Dart generated proto comment에 동기화했다.
### 확인한 검증
```text
$ go test -count=1 ./packages/go/... ./proto/gen/... ./apps/edge/internal/configrefresh ./apps/edge/internal/node
ok iop/packages/go/audit 0.002s
? iop/packages/go/auth [no test files]
ok iop/packages/go/config 0.055s
? iop/packages/go/events [no test files]
? iop/packages/go/jobs [no test files]
? iop/packages/go/metadata [no test files]
ok iop/packages/go/hostsetup 0.011s
ok iop/packages/go/observability 0.024s
? iop/packages/go/policy [no test files]
? iop/packages/go/version [no test files]
? iop/proto/gen/iop [no test files]
ok iop/apps/edge/internal/configrefresh 0.015s
ok iop/apps/edge/internal/node 0.005s
```
```text
$ go test -count=1 ./apps/edge/...
ok iop/apps/edge/cmd/edge 0.053s
ok iop/apps/edge/internal/bootstrap 0.285s
ok iop/apps/edge/internal/configrefresh 0.022s
ok iop/apps/edge/internal/controlplane 4.452s
ok iop/apps/edge/internal/edgecmd 0.023s
ok iop/apps/edge/internal/edgevalidate 0.006s
ok iop/apps/edge/internal/events 0.003s
ok iop/apps/edge/internal/input 0.005s
ok iop/apps/edge/internal/input/a2a 0.007s
ok iop/apps/edge/internal/node 0.005s
ok iop/apps/edge/internal/openai 1.513s
ok iop/apps/edge/internal/opsconsole 0.006s
ok iop/apps/edge/internal/service 0.440s
ok iop/apps/edge/internal/transport 2.045s
```
```text
$ make proto
protoc --go_out=. --go_opt=module=iop --proto_path=. proto/iop/runtime.proto proto/iop/node.proto proto/iop/control.proto proto/iop/job.proto
```
```text
$ make proto-dart
protoc --plugin=protoc-gen-dart=/config/.local/bin/protoc-gen-dart --dart_out=apps/client/lib/gen --proto_path=. --proto_path=/config/.local/include proto/iop/runtime.proto proto/iop/node.proto proto/iop/control.proto proto/iop/job.proto
```
```text
$ git diff --check
(no output)
```
### 다음 단계
PASS: active plan/review를 log로 아카이브하고 `complete.log`를 작성한 뒤 task directory를 `agent-task/archive/YYYY/MM/` 아래로 이동한다.

View file

@ -0,0 +1,45 @@
# Complete - m-node-resource-model-unification/01_contract_schema
## 완료 일시
2026-06-28
## 요약
Node resource model contract/schema subtask completed in 1 review loop with final verdict PASS.
## 루프 이력
| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_cloud_G07_0.log` | `code_review_cloud_G07_0.log` | PASS | contract/proto/comment, provider adapter validation, and regression evidence satisfied SDD S01/S02; reviewer synced Dart generated proto comments with `make proto-dart`. |
## 구현/정리 내용
- `NodeRuntimeConfig.concurrency` and `runtime.concurrency` are documented as legacy compatibility metadata rather than node-wide admission source.
- `nodes[].providers[]` is documented as the Node resource/provider catalog, and provider adapter references are validated against enabled same-node adapter instances in `edgevalidate`.
- `ProviderSnapshot` remains a legacy wire name while documenting resource/provider snapshot compatibility.
- Review cleanup synchronized client Dart generated proto comments for the comment-only proto contract changes.
## 최종 검증
- `go test -count=1 ./packages/go/... ./proto/gen/... ./apps/edge/internal/configrefresh ./apps/edge/internal/node` - PASS; packages/go, proto/gen, configrefresh, and edge node packages passed.
- `go test -count=1 ./apps/edge/...` - PASS; all Edge packages passed.
- `make proto` - PASS; Go protobuf generation completed without additional Go generated diff.
- `make proto-dart` - PASS; Dart protobuf comments were synchronized with proto source.
- `git diff --check` - PASS; no whitespace or conflict-marker output.
## Roadmap Completion
- Milestone: `agent-roadmap/phase/operational-observability-provider-management/milestones/node-resource-model-unification.md`
- Completed task ids:
- `contract-schema`: PASS; evidence=`agent-task/archive/2026/06/m-node-resource-model-unification/01_contract_schema/plan_cloud_G07_0.log`, `agent-task/archive/2026/06/m-node-resource-model-unification/01_contract_schema/code_review_cloud_G07_0.log`; verification=`go test -count=1 ./packages/go/... ./proto/gen/... ./apps/edge/internal/configrefresh ./apps/edge/internal/node`, `go test -count=1 ./apps/edge/...`, `make proto`, `make proto-dart`, `git diff --check`
- Not completed task ids: 없음
## 잔여 Nit
- 없음
## 후속 작업
- 없음

View file

@ -707,6 +707,8 @@ class EdgeNodeSnapshot extends $pb.GeneratedMessage {
@$pb.TagNumber(5)
$0.NodeConfigPayload ensureConfig() => $_ensure(4);
/// provider_snapshots uses the runtime ProviderSnapshot wire name for node
/// resources/providers. category distinguishes CLI/API/local inference.
@$pb.TagNumber(6)
$pb.PbList<$0.ProviderSnapshot> get providerSnapshots => $_getList(5);
}

View file

@ -1024,6 +1024,10 @@ class NodeCommandResponse extends $pb.GeneratedMessage {
$pb.PbList<ProviderSnapshot> get providerSnapshots => $_getList(8);
}
/// ProviderSnapshot is the legacy wire name for a node resource/provider status
/// snapshot. category identifies whether the resource is API, CLI, or local
/// inference; provider-pool dispatch is limited to catalog resources referenced
/// by models[].providers.
class ProviderSnapshot extends $pb.GeneratedMessage {
factory ProviderSnapshot({
$core.String? adapter,
@ -2483,7 +2487,9 @@ class OpenAICompatAdapterConfig extends $pb.GeneratedMessage {
void clearRequestTimeoutMs() => $_clearField(7);
}
/// NodeRuntimeConfig is the runtime tuning pushed to the node.
/// NodeRuntimeConfig carries legacy node runtime metadata. Execution admission
/// must not use this as a node-wide global gate; provider/resource capacity owns
/// concurrency.
class NodeRuntimeConfig extends $pb.GeneratedMessage {
factory NodeRuntimeConfig({
$core.int? concurrency,