# Complete - m-agent-readable-repository-refactor/13_inventory_query

## 완료 일시

2026-07-18T13:45:30Z

## 요약

8회 plan/code-review 루프를 거쳐 canonical inventory의 bounded env/model/node/provider query 경로와 검증 evidence를 완성했으며 최종 판정은 PASS다.

## 루프 이력

| Plan | Review | Verdict | 메모 |
|------|--------|---------|------|
| `plan_local_G06_0.log` | `code_review_local_G06_0.log` | FAIL | canonical provider shape/value, schema validation, 직접 binary exit 계약과 검증 evidence를 보완하도록 라우팅했다. |
| `plan_cloud_G07_1.log` | `code_review_cloud_G07_1.log` | FAIL | provider map scalar/entity match, projection/provider schema, 주입 가능한 help 경계를 보완하도록 라우팅했다. |
| `plan_local_G06_2.log` | `code_review_local_G06_2.log` | FAIL | scalar regression이 실행되지 않았고 readability ratchet 신규 위반 4건이 남아 후속 분해를 요구했다. |
| `plan_local_G06_3.log` | `code_review_local_G06_3.log` | FAIL | collector/test 분해가 미적용이고 구현 evidence가 비어 있어 실제 구현과 검증을 다시 요구했다. |
| `plan_local_G06_4.log` | `code_review_local_G06_4.log` | FAIL | provider map regression에 exact value와 정렬 assertion이 빠져 테스트를 보강하도록 라우팅했다. |
| `plan_local_G04_5.log` | `code_review_local_G04_5.log` | FAIL | pipefail에서 SIGPIPE가 발생하는 list/grep 검증을 파일 기반 two-step 명령으로 교체하도록 라우팅했다. |
| `plan_local_G03_6.log` | `code_review_local_G03_6.log` | FAIL | full Go regression의 실패와 exit 0을 동시에 기록한 evidence를 raw output과 `PIPESTATUS`로 복구하도록 라우팅했다. |
| `plan_local_G03_7.log` | `code_review_local_G03_7.log` | PASS | raw output·pipeline status를 독립 대조하고 target/canonical query/readability/전체 회귀를 재검증해 완료했다. |

## 구현/정리 내용

- `scripts/inventory-query`에 `dev`/`dev-corp` canonical inventory의 bounded env projection과 exact `--model`/`--node`/`--provider` selector를 제공했다.
- selector 결과의 실제 YAML path/value, 오름차순 정렬, 중복 제거, 최소 schema 검증과 직접 binary exit `0`/`1`/`2` 계약을 고정했다.
- provider traversal과 regression을 `provider_query.go`/`provider_query_test.go`로 분리하고 scalar, entity `id`, entity `provider`, key+value dedupe의 path/value/order assertion을 추가했다.
- `agent-test/README.md`와 dev/dev-corp deploy skill이 inventory 전체 읽기 전에 `/tmp` binary 기반 bounded query를 사용하도록 진입점을 정렬했다.
- full Go regression raw output, `go test`/`tee` 개별 상태, 줄 수·hash·tail을 재현 가능한 검증 evidence로 남겼다.

## 최종 검증

- `gofmt -d scripts/inventory-query/main.go scripts/inventory-query/provider_query.go scripts/inventory-query/main_test.go scripts/inventory-query/provider_query_test.go` - PASS; 무출력.
- `go test -count=1 ./scripts/inventory-query` - PASS; `ok iop/scripts/inventory-query`.
- compiled binary canonical dev/dev-corp provider query assertion - PASS; expected path/value가 일치했다.
- compiled binary help/zero-match/error contract - PASS; exit status가 각각 `0`/`1`/`2`였다.
- `python3 scripts/readability_audit.py --check --input-mode worktree --output /tmp/iop-inventory-query-review-readability.json` - PASS; 신규 또는 증가 위반이 없다.
- implementation `go test -count=1 ./...` pipeline - PASS; `go_test_exit=0 tee_exit=0`, raw output=`/tmp/iop-inventory-query-full-regression.out`, 45줄, SHA-256=`dc16c941fdb6394f5c525d2d74d2832cbfa595538f8c15bf87da099fdf99bfe5`.
- reviewer `go test -count=1 ./...` - PASS on rerun; 첫 실행의 unrelated `TestClientServerHandshake` timeout은 focused `-count=10`과 두 번째 전체 회귀에서 재현되지 않았고 rerun은 `go_test_exit=0 tee_exit=0`이었다. reviewer raw output=`/tmp/iop-inventory-query-review-full-regression-rerun.out`.
- `git diff --check` - PASS; 무출력.

## Roadmap Completion

- Milestone: `agent-roadmap/phase/automation-runtime-bridge/milestones/agent-readable-repository-refactor.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/automation-runtime-bridge/milestones/agent-readable-repository-refactor.md)
- Completed task ids:
  - `inventory-query`: PASS; evidence=`plan_local_G03_7.log`, `code_review_local_G03_7.log`; verification=`/tmp/iop-inventory-query-full-regression.out`, `/tmp/iop-inventory-query-review-full-regression-rerun.out`, `go test -count=1 ./scripts/inventory-query`
- Not completed task ids: 없음

## 잔여 Nit

- 없음

## 후속 작업

- 없음
