<!-- task=m-stream-evidence-gate-core/07+01,06_commit_boundary plan=7 tag=REVIEW_API -->

# Stream Gate Operation Identity와 Exact Release Evidence 재폐쇄 계획

## 이 파일을 읽는 구현 에이전트에게

- 아래 구현 체크리스트와 검증 명령을 수행하고 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션에 실제 변경 내용과 stdout/stderr를 기록한다.
- active PLAN/CODE_REVIEW 파일을 유지한 채 review-ready만 보고한다. 판정, 로그 아카이브, `complete.log`, task 디렉터리 이동은 code-review skill 전용이다.
- 막히면 정확한 blocker, 시도한 명령과 출력, 재개 조건만 구현 소유 evidence에 기록한다.
- 사용자에게 질문하거나 선택지를 제시하지 않고, user-input 도구·control-plane stop 파일·다음 상태 분류를 만들지 않는다.

## 배경

sink outcome의 forward state 보존은 수정됐지만 reservation이 저장한 operation/attempt identity가 callback operation과 대조되지 않아 state machine 불변식이 비어 있다. named boundary/releaser 테스트도 exact callback, suffix/token/cursor, 실제 confirm invalidation과 cancel 시점 discard를 단언하지 않으면서 검증 evidence에는 이를 완료했다고 기록해 false-green이다. SDD S03/S05/S17/S19의 single visible terminal과 discard-before-cancel 근거를 실제 선택되는 테스트에서 폐쇄한다.

## Archive Evidence Snapshot

- 현재 계획 로그: `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/plan_local_G06_6.log`
- 현재 리뷰 로그: `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/code_review_local_G07_6.log`
- 판정: `FAIL`
- Required:
  - `reservation.op`/`attemptID`가 callback operation과 대조되지 않아 release reservation이 terminal callback operation을 수락한다.
  - boundary named 테스트가 terminal state 뒤 재호출 0회와 reservation/callback mismatch를 검증하지 않는다.
  - releaser named 테스트가 exact suffix/token/cursor, actual confirm invalidation, re-entry exact count와 cancel hook 시점 discard를 검증하지 않으며 evidence가 이를 완료했다고 잘못 기록한다.
- Suggested: 없음
- Nit: 없음
- 영향 파일: `packages/go/streamgate/commit_boundary.go`, `commit_boundary_test.go`, `stream_release_test.go`, 현재 task evidence.
- 실제 검증:
  - 임시 집중 재현 `TestReviewProbeRejectsReservationCallbackMismatch`는 `reservation release accepted terminal callback operation`으로 실패했고 probe 파일은 즉시 제거했다.
  - 8개 named inventory와 named `-race -count=20`, fresh package, package race, vet은 PASS해 누락 assertion의 false-green을 확인했다.
  - Edge/Node transport unit은 `/config/opt/go/src/crypto/internal/fips140cache` 누락으로 setup 전에 실패했다. 별도 toolchain으로 우회하지 않는다.
- 선행 완료:
  - `agent-task/archive/2026/07/m-stream-evidence-gate-core/01_event_contract_types/complete.log`
  - `agent-task/archive/2026/07/m-stream-evidence-gate-core/06+01_evidence_tail/complete.log`
- 구현자는 위 특정 로그 외의 `agent-task/archive/**`를 넓게 탐색하지 않는다.

## Roadmap Targets

- Milestone: `agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md`
- Milestone link: [Milestone 문서](agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md)
- Task ids:
  - `evidence-tail`: S19 overflow discard/cancel/terminal 통합 evidence
  - `commit-boundary`: S03/S04/S05/S17 staged start, irreversible state와 single terminal
- Completion mode: check-on-pass

## 분석 결과

### 읽은 파일

- `packages/go/streamgate/commit_boundary.go`
- `packages/go/streamgate/commit_boundary_test.go`
- `packages/go/streamgate/stream_release.go`
- `packages/go/streamgate/stream_release_test.go`
- `packages/go/streamgate/evidence_tail.go`의 prepare/confirm/discard와 state accessor 구간
- `agent-ops/rules/project/domain/platform-common/rules.md`
- `agent-ops/rules/project/domain/testing/rules.md`
- `agent-ops/rules/common/rules-agent-spec.md`
- `agent-test/local/rules.md`
- `agent-test/local/platform-common-smoke.md`
- `agent-spec/index.md`
- `agent-contract/index.md`
- `agent-roadmap/current.md`
- `agent-roadmap/phase/knowledge-tool-optimization-extension/PHASE.md`
- `agent-roadmap/phase/knowledge-tool-optimization-extension/milestones/stream-evidence-gate-core.md`
- `agent-roadmap/sdd/knowledge-tool-optimization-extension/stream-evidence-gate-core/SDD.md`
- `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/plan_local_G06_6.log`
- `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/code_review_local_G07_6.log`
- `agent-task/archive/2026/07/m-stream-evidence-gate-core/01_event_contract_types/complete.log`
- `agent-task/archive/2026/07/m-stream-evidence-gate-core/06+01_evidence_tail/complete.log`

### SDD 기준

- SDD: `agent-roadmap/sdd/knowledge-tool-optimization-extension/stream-evidence-gate-core/SDD.md`
- 상태: `[승인됨]`; SDD/Milestone 잠금 `해제`, 결정 필요 `없음`.
- 대상:
  - `S03`/`commit-boundary`: staged start와 terminal을 한 번만 선택한다.
  - `S04`/`commit-boundary`: idle pending을 release하지 않고 error terminal만 commit한다.
  - `S05`/`commit-boundary`: `stream_open` 이후 상태를 rollback하지 않고 terminal을 단조 보존한다.
  - `S17`/`commit-boundary`: selected attempt의 start/output만 한 번 노출한다.
  - `S19`/`evidence-tail`: pending/prepared state를 discard한 뒤 cancel하고 terminal error로 끝낸다.
- Evidence Map의 callback single-action, state monotonicity, no partial release와 discard-before-cancel 요구를 `REVIEW_API-1/2`의 exact regression과 named/race 검증으로 역산했다.

### 테스트 환경 규칙

- `test_env`: local.
- `agent-test/local/rules.md`와 `agent-test/local/platform-common-smoke.md`가 존재해 끝까지 읽었고 빈 값이나 `<확인 필요>`는 없다.
- PATH에서 해석되는 host Go의 binary/version/GOROOT, `make proto`, fresh/race 대상 package, vet, Edge/Node transport unit, gofmt와 deterministic hygiene를 적용한다. Go test cache는 최종 판단에 사용하지 않고 `-count=1` 또는 `-count=20`을 쓴다.
- transport unit은 현재 host GOROOT의 `crypto/internal/fips140cache` 누락으로 setup 전에 실패한다. 별도 Go toolchain으로 우회하지 않고 원문/exit code와 `/config/opt/go` 복구 조건을 기록한다.
- public production consumer/proto/config 변경이 없고 현재 package 밖 `CommitBoundary`/`StreamReleaser` production call site가 없으므로 Edge-Node full-cycle과 외부 service는 적용하지 않는다. test-rule 유지보수도 필요 없다.

### 테스트 커버리지 공백

- reservation operation/attempt identity가 callback operation과 일치하는지 검증하는 production check와 named regression이 없다.
- response-start/release callback이 `terminal_committed`를 반환한 뒤 같은 API 또는 terminal API를 재호출해 sink callback 0회인지 검증하지 않는다.
- releaser named test는 위치 구별 fixture 대신 같은 `"chunk"`를 사용하고 exact remaining suffix와 zero/partial/full cursor·token·consumed matrix를 검증하지 않는다.
- outstanding/invalidated prepare는 terminal 공개 경로를 실행하지 않고 “confirm failure”는 실제 confirm invalidation이 아니라 release failure다.
- re-entry callback 수와 cancel hook 시점의 pending/prepared discard 상태가 검증되지 않는다.

### 심볼 참조

- public rename/remove 없음.
- private `applySinkOutcomeLocked` wrapper는 call site가 없고, `applySinkOutcomeLockedWithOpLocked` call site는 `commit_boundary.go`의 response-start/release/terminal outcome 세 곳이다.
- `reservation.op`/`attemptID`는 저장되지만 현재 outcome validation에서 읽히지 않는다.
- 새 dependency는 없고 Go 표준 라이브러리와 기존 test helper만 사용한다.
- 매칭되는 active agent-spec과 별도 agent-contract 문서는 없다. 내부 `ReleaseSink`/SDD interface와 코드·테스트가 원본이다.

### 분할 판단

- split decision policy를 파일명 선택 전에 평가했다.
- 기존 dependent subtask `07+01,06_commit_boundary`를 그대로 유지하며 predecessor `01`과 `06`은 위 두 archive `complete.log`로 충족됐다.
- operation identity fix와 exact releaser evidence는 같은 commit/release state machine의 현재 Required를 함께 닫아야 하나의 PASS 근거가 된다. production invariant와 그 public callback evidence를 분리하면 독립적으로 S03/S05/S19를 완료할 수 없고 기존 dependency identity만 깨므로 단일 follow-up이 안전하다.
- production consumer rollout, config/proto와 transport adapter는 별도 ownership/risk profile이며 이번 strict subset에서 제외한다.

### 범위 결정 근거

- 동작 수정은 `commit_boundary.go`, regression은 `commit_boundary_test.go`와 `stream_release_test.go`, evidence는 현재 review stub에 한정한다.
- `stream_release.go`와 `evidence_tail.go`는 actual confirm/discard public path test의 context이지만 현재 production defect가 확인되지 않아 수정하지 않는다.
- `terminal.go`, Edge/OpenAI handler, production `ReleaseSink`/`AttemptCanceller`, config/proto/API, host Go 설치와 unrelated dirty worktree는 write-set 밖이다.

### 최종 라우팅

- evaluation_mode: `isolated-reassessment`
- build:
  - closures: `scope_closed=true`, `context_closed=true`, `verification_closed=true`, `evidence_trusted=true`, `ownership_closed=true`, `decision_closed=true`
  - closure basis:
    - scope: reservation identity와 두 named test 파일로 수정 경계가 확정된다.
    - context: boundary state, releaser confirmation, SDD rows와 지정 evidence를 한 package에서 유지할 수 있다.
    - verification: operation mismatch probe, exact callback/suffix/token/order와 fresh/race 명령으로 완료를 판정할 수 있다.
    - evidence: 현재 source assertion과 재현 실패, false-green named output이 서로 대조됐다.
    - ownership: write-set과 다른 dirty 변경, host Go blocker가 분리된다.
    - decision: SDD/Milestone 잠금이 해제됐고 사용자 결정 항목이 없다.
  - scores: `scope_coupling=1`, `state_concurrency=2`, `blast_irreversibility=1`, `evidence_diagnosis=1`, `verification_complexity=1`
  - result: lane `local`, grade `G06`, filename `PLAN-local-G06.md`
- review:
  - closures: `scope_closed=true`, `context_closed=true`, `verification_closed=true`, `evidence_trusted=true`, `ownership_closed=true`, `decision_closed=true`
  - closure basis:
    - scope: operation identity와 exact named assertion 목표가 명시됐다.
    - context: callback state, token/cursor, terminal count와 SDD single-action evidence를 한 번에 대조할 수 있다.
    - verification: fresh named output과 assertion 본문을 함께 읽어 실제 경로 선택을 판정할 수 있다.
    - evidence: source와 집중 재현은 재현 가능하고 prior claim 충돌도 위치가 확정됐다.
    - ownership: task write-set과 외부 host blocker가 분리된다.
    - decision: 제품 선택이나 외부 권한 판단이 필요 없다.
  - scores: `scope_coupling=1`, `state_concurrency=2`, `blast_irreversibility=1`, `evidence_diagnosis=2`, `verification_complexity=1`
  - result: lane `local`, grade `G07`, filename `CODE_REVIEW-local-G07.md`

## 구현 체크리스트

- [ ] `REVIEW_API-1` reservation operation/attempt identity와 callback operation 허용 matrix를 검증하고 forward state/error를 단조 보존하며 terminal state 뒤 sink callback 0회인 named regression을 구현한다.
- [ ] `REVIEW_API-2` releaser named 회귀에 위치 구별 zero/partial/full exact suffix·cursor·token·consumed matrix, public terminal prepare/release/actual confirm failure, bounded re-entry count와 cancel hook 시점 discard evidence를 구현한다.
- [ ] `REVIEW_API-3` named/fresh/race/profile/hygiene 검증을 실제 실행하고 false-green이 제거된 assertion 및 호스트 transport blocker를 원문 그대로 기록한다.
- [ ] CODE_REVIEW-*-G??.md의 구현 에이전트 소유 섹션을 실제 구현 내용과 검증 출력으로 채운다.

### [REVIEW_API-1] Reservation identity와 terminal exactly-once

- 문제:
  - `packages/go/streamgate/commit_boundary.go:177`은 active reservation pointer/generation만 확인하고 `res.op`/`res.attemptID`를 callback operation과 대조하지 않는다.
  - `packages/go/streamgate/commit_boundary_test.go:1006`과 `:1033`은 terminal forward state를 확인하지만 terminal state 뒤 후속 callback 0회와 reservation/callback mismatch를 검증하지 않는다.
- 해결 방법:
  - reservation operation별 callback matrix를 둔다. release reservation은 response-start/release만, terminal reservation은 optional response-start/terminal만 허용하고 active attempt identity도 함께 검사한다.
  - returned state의 known/monotonic transition은 operation mismatch나 sink error보다 먼저 반영하고 operation/role/transition/sink 오류를 `errors.Join`한다.
  - 사용되지 않는 `applySinkOutcomeLocked` wrapper를 제거하고 모든 outcome 적용이 명시적 callback operation을 전달하게 한다.
- Before (`packages/go/streamgate/commit_boundary.go:177`):

```go
if b.activeReservation != res || res.generation != b.generation {
	return ErrBoundarySerializerConflict
}
transitionErr := validateStateTransition(b.state, returnedState)
```

- After (`packages/go/streamgate/commit_boundary.go`):

```go
identityErr := validateReservationCallback(res, b.attemptID, callbackOp)
transitionErr := validateStateTransition(b.state, returnedState)
if transitionErr == nil && isStateMoreAdvanced(returnedState, b.state) {
	b.state = returnedState
}
return errors.Join(sinkErr, transitionErr, identityErr, roleErr)
```

- 수정 파일 및 체크리스트:
  - [ ] `packages/go/streamgate/commit_boundary.go`: reservation attempt/operation matrix, state-first apply와 joined error
  - [ ] `packages/go/streamgate/commit_boundary_test.go`: allowed/mismatched matrix, response-start/release terminal forward state와 후속 callback 0회
- 테스트 작성:
  - `TestCommitBoundaryPreservesReturnedStateAcrossSinkErrors`에 reservation operation × callback operation table을 추가한다.
  - response-start/release가 terminal state와 error/mismatch를 반환한 뒤 `ReleaseSafe`/`CommitTerminal` 재호출이 `ErrBoundaryAlreadyTerminal`이고 start/release/terminal count가 그대로인지 단언한다.
  - `TestCommitBoundarySerializesConcurrentStartAndTerminal`의 race-safe barrier/count/final state assertion을 유지한다.
- 중간 검증:
  - `go test -race -count=20 ./packages/go/streamgate -run '^TestCommitBoundary(PreservesReturnedStateAcrossSinkErrors|SerializesConcurrentStartAndTerminal|RejectsWrongOrMissingAttempt|RejectsPostOpenReplacement)$'`
  - 기대 결과: mismatched reservation callback이 오류로 join되고 advanced terminal state와 후속 sink callback 0회가 race/deadlock 없이 PASS한다.

### [REVIEW_API-2] Exact confirmation과 discard-before-cancel evidence

- 문제:
  - `packages/go/streamgate/stream_release_test.go:485`의 `events`/`events2`는 실제 tail 입력에 사용되지 않고 `:513`은 suffix non-empty만 검사한다.
  - `packages/go/streamgate/stream_release_test.go:620` 이후 prepare failure는 terminal 공개 경로와 terminal count를 확인하지 않고 `:680`은 actual confirm invalidation을 만들지 않는다.
  - `packages/go/streamgate/stream_release_test.go:703`은 re-entry callback count를 세지 않고 `:760`은 cancel hook에서 discard state를 확인하지 않는다.
- 해결 방법:
  - threshold 마지막 event에서 한 epoch가 형성되도록 위치가 구별되는 짧은 text fixture를 넣고 zero/partial/full confirm 뒤 exact suffix, cursor, old/new token 또는 consumed 상태를 table로 확인한다.
  - outstanding prepare, invalidated epoch, sink release failure, release callback 중 prepared token invalidation으로 만든 actual confirm failure에서 `ReleaseTerminalEpoch` terminal count 0을 확인하고 clean completed epoch만 terminal 1을 허용한다.
  - re-entry 결과와 callback count를 bounded channel/timeout으로 모두 수집한다.
  - FailPending 전에 prepared token을 만든 뒤 canceller hook에서 pending entries/runes, prepared token map과 stale token confirm 거부를 검사해 `discard-verified → cancel → terminal` trace와 exact callback count를 단언한다.
- Before (`packages/go/streamgate/stream_release_test.go:513`):

```go
gotEvents := prepared2.ReleaseEvents()
if len(gotEvents) == 0 {
	t.Fatal("remaining suffix events is empty")
}
```

- After (`packages/go/streamgate/stream_release_test.go`):

```go
if diff := compareStrings(releaseEventTexts(t, prepared2.ReleaseEvents()), wantSuffix); diff != "" {
	t.Fatal(diff)
}
if prepared2.Token() == staleToken || releaser.tail.CommittedCursor(channel) != wantCursor {
	t.Fatal("reprepare token/cursor invariant failed")
}
```

- 수정 파일 및 체크리스트:
  - [ ] `packages/go/streamgate/stream_release_test.go`: distinct fixture, exact confirmation matrix, public terminal suppression, re-entry count와 discard-aware ordered spy
  - [ ] `packages/go/streamgate/commit_boundary_test.go`: programmable sink hook/count를 race-safe하게 보강할 때만 함께 수정
- 테스트 작성:
  - 기존 named `TestStreamReleaserConfirmsProgressEvenWhenSinkFails`, `TestStreamReleaserSuppressesSuccessTerminalUntilConfirmation`, `TestStreamReleaserRejectsReentrantCallbackWithoutDeadlock`, `TestStreamReleaserFailPendingOrdersDiscardCancelTerminal`을 직접 보강한다.
  - 별도 test 이름만 추가해 8개 inventory guard를 우회하지 않는다.
- 중간 검증:
  - `go test -race -count=20 ./packages/go/streamgate -run '^TestStreamReleaser(ConfirmsProgressEvenWhenSinkFails|SuppressesSuccessTerminalUntilConfirmation|RejectsReentrantCallbackWithoutDeadlock|FailPendingOrdersDiscardCancelTerminal)$'`
  - 기대 결과: exact suffix/token/cursor, terminal 0/1, re-entry exact count와 discard-before-cancel 순서를 실제 callback으로 단언하고 PASS한다.

### [REVIEW_API-3] Verification trust 폐쇄

- 문제:
  - 현재 named/race 출력은 누락된 assertion을 실행하지 않아 false-green이고 active evidence가 source보다 강한 완료를 주장했다.
  - transport unit은 호스트 GOROOT 손상으로 setup 전에 실패한다.
- 해결 방법:
  - 8개 named inventory와 fresh verbose output으로 정확한 regression/subtest가 실행됐음을 확인한다.
  - 동일 PATH host Go로 named/package race와 vet을 실행하고 repo-local probe/tool을 남기지 않는다.
  - 검증 결과에는 요약이 아니라 실제 stdout/stderr를 기록하며 transport setup 실패가 유지되면 원문, exit code와 호스트 Go 복구 조건을 남긴다.
- 수정 파일 및 체크리스트:
  - [ ] `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/CODE_REVIEW-local-G07.md`: 실제 명령 출력과 assertion 근거
- 테스트 작성:
  - production regression은 REVIEW_API-1/2에서 작성한다. 이 항목은 evidence와 hygiene만 소유한다.
- 중간 검증:
  - 아래 최종 검증 1~13을 순서대로 실행한다.

## 의존 관계 및 구현 순서

1. `01_event_contract_types`와 `06+01_evidence_tail`은 Archive Evidence Snapshot의 `complete.log`로 충족됐다.
2. `REVIEW_API-1`이 reservation/callback identity와 irreversible terminal을 고정한다.
3. `REVIEW_API-2`가 exact confirmation/discard 공개 경로 evidence를 폐쇄한다.
4. `REVIEW_API-3`이 fresh/race/profile 결과를 기록한다.

## 수정 파일 요약

| 파일 | 항목 |
|------|------|
| `packages/go/streamgate/commit_boundary.go` | REVIEW_API-1 |
| `packages/go/streamgate/commit_boundary_test.go` | REVIEW_API-1, REVIEW_API-2 |
| `packages/go/streamgate/stream_release_test.go` | REVIEW_API-2 |
| `agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary/CODE_REVIEW-local-G07.md` | REVIEW_API-3 |

## 최종 검증

1. `command -v go && readlink -f "$(command -v go)" && go version && go env GOROOT`
   - 기대 결과: PATH host Go와 실제 경로/GOROOT 기록.
2. `gofmt -d packages/go/streamgate/commit_boundary.go packages/go/streamgate/commit_boundary_test.go packages/go/streamgate/stream_release_test.go`
   - 기대 결과: stdout 없음.
3. `test "$(go test -list '^Test(CommitBoundary(PreservesReturnedStateAcrossSinkErrors|RejectsWrongOrMissingAttempt|SerializesConcurrentStartAndTerminal|RejectsPostOpenReplacement)|StreamReleaser(ConfirmsProgressEvenWhenSinkFails|SuppressesSuccessTerminalUntilConfirmation|RejectsReentrantCallbackWithoutDeadlock|FailPendingOrdersDiscardCancelTerminal))$' ./packages/go/streamgate | sed -n '/^Test/p' | wc -l)" -eq 8`
   - 기대 결과: exit code 0; 8개 named regression 존재.
4. `go test -race -count=20 ./packages/go/streamgate -run '^Test(CommitBoundary(PreservesReturnedStateAcrossSinkErrors|RejectsWrongOrMissingAttempt|SerializesConcurrentStartAndTerminal|RejectsPostOpenReplacement)|StreamReleaser(ConfirmsProgressEvenWhenSinkFails|SuppressesSuccessTerminalUntilConfirmation|RejectsReentrantCallbackWithoutDeadlock|FailPendingOrdersDiscardCancelTerminal))$'`
   - 기대 결과: operation identity, terminal callback 0회, exact suffix/token/order와 race/deadlock 검증 PASS.
5. `go test -count=1 -v ./packages/go/streamgate -run '^Test(CommitBoundary|StreamReleaser)'`
   - 기대 결과: 대상 test/subtest가 실제 열거되고 PASS.
6. `go test -count=1 ./packages/go/streamgate`
   - 기대 결과: PASS.
7. `go test -race -count=1 ./packages/go/streamgate`
   - 기대 결과: PASS, race 없음.
8. `go vet ./packages/go/streamgate`
   - 기대 결과: PASS, stdout 없음.
9. `make proto`
   - 기대 결과: 성공, proto 생성물 추가 diff 없음.
10. `go test -count=1 ./apps/edge/internal/transport ./apps/node/internal/transport`
    - 기대 결과: PASS. 동일 GOROOT setup failure면 우회 없이 원문/exit code와 `/config/opt/go` 복구 조건 기록.
11. `! rg --sort path -n 't\.Skip\(|_ = (reentrantErr|prepared|outerErr)|TestReviewProbe|exact content depends|only verify non-empty' packages/go/streamgate/commit_boundary_test.go packages/go/streamgate/stream_release_test.go packages/go/streamgate`
    - 기대 결과: stdout 없음, exit code 0.
12. `git diff --check -- packages/go/streamgate/commit_boundary.go packages/go/streamgate/commit_boundary_test.go packages/go/streamgate/stream_release_test.go agent-task/m-stream-evidence-gate-core/07+01,06_commit_boundary proto/gen/iop`
    - 기대 결과: stdout 없음.
13. `git status --short -- proto/gen/iop`
    - 기대 결과: stdout 없음.

모든 코드 변경 완료 후 반드시 `CODE_REVIEW-*-G??.md`의 구현 에이전트 소유 섹션을 채운다.
