원격 evidence는 push된 commit이 있어야 만들 수 있으므로 구현 commit을 먼저 올린 뒤 그 commit으로 원격을 검증했다. 검증 대상 commit, 로컬 전체 suite와 race/full/self-test 결과, Darwin/arm64 재빌드 결과를 남긴다. 승인된 operator 설정 파일 두 개가 여전히 없어 live API 검증은 외부 차단 상태이며, 이를 통과로 기록하지 않고 정확한 복구 조건과 열두 개 입력 목록을 함께 남긴다. 직전 루프의 plan/review 로그와 이번 루프 pair도 함께 보존한다. Refs: agent-task/single_request_plan_review_templates/PLAN-cloud-G08.md Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
27 KiB
Code Review Reference - REVIEW_API
[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
Implementation Checklist; the final checklist item is mandatory before saving. Fill implementation-owned sections, then stop with active files in place and report ready for review. Execute the plan's selected root cause, scope, files, and dependency decisions as written. Do not choose another owner, narrow/expand the write boundary, or replace a fix with another verification attempt. If implementation is blocked, record the exact blocker, attempted commands/output, and resume condition only in implementation-owned evidence fields. Do not ask the user directly, present choices, call user-input tools, create control-plane stop files, or classify the next state. Finalization (Code Review Result, log rename,complete.log, archive moves,Review-Only Checklist) is review-agent-only, even after compaction/resume. Follow the ownership table at the bottom of this file for which sections you own.
Overview
date=2026-08-09 KST task=single_request_plan_review_templates, plan=2, tag=REVIEW_API
Archive Evidence Snapshot
- Prior task:
single_request_plan_review_templates, plan1, tagREVIEW_API. - Archived plan:
agent-task/single_request_plan_review_templates/plan_cloud_G08_1.log. - Archived review:
agent-task/single_request_plan_review_templates/code_review_cloud_G08_1.log. - Prior verdict:
FAIL; Required R1 identifies that plain string fields erase the distinction between omission and explicit empty/whitespace values beforeloadTemplateFileruns. - Fresh reviewer regression:
go test -count=1 ./packages/go/config -run TestReviewConfiguredWhitespaceTemplatePathFailsClosedfailed because configured whitespaceplan_filewas admitted as omission. The temporary reviewer-only test was removed after reproduction. - Existing focused, race, full Edge/Go, smoke self-test, and Darwin/arm64 changed-package suites passed. Live API qualification remains externally blocked because the approved remote operator config files and complete
IOP_SINGLE_REQUEST_SMOKE_*inputs are absent. - Roadmap carryover: none; this is a non-milestone task.
For the Review Agent
[REVIEW AGENT ONLY] The finalization steps below are review-agent only. Implementing agents must not execute this section.
Compare implementation of each item against source files and verify that output in Verification Results matches code.
Review completion means the following steps are finished:
- Append verdict and
review_rework_count/evidence_integrity_failurerouting signals. - Archive
CODE_REVIEW-cloud-G08.md→code_review_cloud_G08_2.logandPLAN-cloud-G08.md→plan_cloud_G08_2.log. - If PASS, write
complete.logand move active task directory toagent-task/archive/YYYY/MM/single_request_plan_review_templates/. If WARN/FAIL, fully write the next filesystem state required by the code-review skill. - If PASS and task group is
m-<milestone-slug>, preserve the first-linemilestone-taskmetadata incomplete.logand report it for the runtime aggregation event. Roadmap state evaluation belongs tosync-milestone-workstate. - Check applicable
Review-Only Checklistitems at the final.loglocation before reporting.
Implementation Item Completion
| Item | Status |
|---|---|
| REVIEW_API-1 — Preserve Configured Template Path Presence | [x] |
| REVIEW_API-2 — Close Presence and Refresh Regression Gaps | [x] |
| REVIEW_API-3 — Produce Trustworthy Local and Remote Evidence | [x] |
Implementation Checklist
- [REVIEW_API-1] Preserve omission separately from configured template path values, reject configured empty/whitespace values before filesystem access, and deep-clone the optional state.
- [REVIEW_API-2] Add Plan/Review presence-boundary and clone regressions, update refresh fixtures, and retain omitted fallback, relative success, and digest-only refresh evidence.
- [REVIEW_API-3] Run fresh focused, race, full, smoke-self-test, documentation, and approved remote-profile verification; record the exact live-profile blocker if operator assets remain absent.
- Fill implementation-owned sections in CODE_REVIEW-*-G??.md with actual implementation notes and verification output.
Review-Only Checklist
[REVIEW AGENT ONLY] This checklist is used only by the review agent. Implementing agents must not modify or check this section.
- Append one verdict of
PASS,WARN, orFAILand verifiedreview_rework_count,evidence_integrity_failuretoCode Review Result. - Verify that verdict,
Dimension Assessment, and Required/Suggested/Nit classifications match. - Archive active
CODE_REVIEW-*-G??.mdtocode_review_cloud_G08_2.log. - Archive active
PLAN-*-G??.mdtoplan_cloud_G08_2.log. - Verify that the Agent-Ops managed block in
.gitignoreunignoresagent-task/**/*.mdandagent-task/**/*.logand ignoresagent-roadmap/current.md. - If PASS, write
complete.logbased onagent-ops/skills/common/code-review/templates/complete-log-template.mdand leave no active.mdfiles. - If PASS, move active task directory
agent-task/single_request_plan_review_templates/toagent-task/archive/YYYY/MM/single_request_plan_review_templates/and update this checklist at the final archive path. - If PASS and task group is
m-<milestone-slug>, preserve and reportmilestone-taskmetadata for runtime aggregation, without modifying roadmap or directly callingupdate-roadmap. - If PASS for split work, remove empty active parent
agent-task/single_request_plan_review_templates/or verify it was kept due to remaining siblings/files. - If WARN/FAIL, write the next filesystem state matching code-review verdict and do not write
complete.log.
Deviations from Plan
- The config-refresh test pointer helper is named
templatePathinstead of thestringPointername used in the plan's illustrative code block. The plan required "a local test pointer helper" without fixing the identifier;templatePathstates what the pointer means at the two fixture call sites. Behavior, scope, and file set are unchanged. - No verification command was added, removed, or altered. Every command in
Final Verificationwas executed as written.
Key Design Decisions
PlanFileandReviewFilebecame*stringwith the existingmapstructure:"plan_file"/yaml:"plan_file,omitempty"names.execution_presetsdecodes through the strictErrorUnusedmapstructure decoder inLoadEdge, which maps an absent key to a nil pointer and a present key — including""and" "— to a non-nil cell.omitemptyon a pointer still omits an unset path on marshal, so no config file, example, or contract text needed to change.resolveSingleRequestTemplatesnow branches onsr.Templates.PlanFile == nil/.ReviewFile == nilinstead ofstrings.TrimSpace(...) == "". Omission is the only default-fallback signal; every configured value is dereferenced intoloadTemplateFile, which trims and rejects empty/whitespace beforefilepath.IsAbs,os.Lstat, oros.Open. The previously dead empty check atpackages/go/config/load.go:732-734is now the live rejection path for decoded configuration, and the new regressions assert the error carries thesingle_request.templates.plan_file/.review_filecontext and never the resolved directory.ExecutionSingleRequestTemplatesgained its ownCloneplus acloneStringPointerhelper, andExecutionSingleRequestPolicy.Clonenow callsp.Templates.Clone()instead of copying the struct by value. Without this, introducing pointers would have silently turned the existing snapshot copy into an alias.EffectivePlan/EffectiveReviewstay plain value copies, so the frozen effective pair is unchanged.- The four presence-boundary cases reuse the existing
validPresetYAML(planFile, reviewFile)helper by passing quoted YAML scalars (""and" ") rather than changing the helper's omission contract. The helper keeps treating a Go empty string as "omit the key", which is exactly the distinction under test, so the omitted-fallback, relative-success, absolute-rejection, size, file-kind, UTF-8, and grammar cases stay byte-identical. - Existing fallback and relative-success subtests were strengthened with
nilversus non-nil path assertions so a future regression that re-collapses presence into a plain string fails on the successful paths too, not only on the new rejection paths. reflect.DeepEqualinconfigrefresh.appendSingleRequestChangedfollows pointers, so two independently allocated cells holding the same path stay equal. The refresh classifier therefore still reports exactly one change for a content-only template edit, andTestClassifySingleRequestTemplateContentChangekeeps proving that neither configured paths nor raw template bodies enter the change summary.- Contracts and specs were left untouched:
agent-spec/runtime/provider-pool-config-refresh.mdalready requires non-empty relative paths rejected before filesystem access, so the code converged to the documents rather than the reverse.
Reviewer Checkpoints
- Confirm omission and explicit empty/whitespace values remain distinguishable after Viper/mapstructure decode for both
plan_fileandreview_file. - Confirm nil alone selects the built-in default and every non-nil path reaches trimmed empty/absolute rejection before
LstatorOpen. - Confirm optional path cells are deep-cloned while effective template strings remain unchanged.
- Confirm refresh classification still observes effective-content changes while exposing neither configured paths nor raw template bodies.
- Confirm current contracts/specs remain unchanged and accurately match the repaired code.
- Confirm all local evidence is fresh and the approved remote checkout is synchronized to the exact tested source commit before Darwin/arm64 evidence is accepted.
- Confirm missing remote operator assets are recorded as an external block, never as a live-smoke pass.
Verification Results
REVIEW_API-1 — Presence-aware loader and clone boundary
go test -count=1 ./packages/go/config -run 'TestLoadEdgeSingleRequestTemplates|TestExecutionSingleRequestTemplatePathPresenceClone'
Tested source commit: 6f141b9121af505e01730fe2a13244d986060b27 (branch feature/single-request-plan-review-templates).
$ go test -count=1 ./packages/go/config -run 'TestLoadEdgeSingleRequestTemplates|TestExecutionSingleRequestTemplatePathPresenceClone'
ok iop/packages/go/config 0.030s
exit=0
Executed new/changed subtest names, from the -v run of the same selector:
=== RUN TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed
=== RUN TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/empty_plan_file
=== RUN TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/whitespace_plan_file
=== RUN TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/empty_review_file
=== RUN TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/whitespace_review_file
--- PASS: TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed (0.00s)
--- PASS: TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/empty_plan_file (0.00s)
--- PASS: TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/whitespace_plan_file (0.00s)
--- PASS: TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/empty_review_file (0.00s)
--- PASS: TestLoadEdgeSingleRequestTemplates/explicitly_configured_empty_template_path_fails_closed/whitespace_review_file (0.00s)
=== RUN TestExecutionSingleRequestTemplatePathPresenceClone
--- PASS: TestExecutionSingleRequestTemplatePathPresenceClone (0.00s)
The unchanged boundary cases in the same test ran and passed in the same execution: omitted fallback, config-relative resolution, missing file, oversized 8193 bytes, invalid content, absolute plan_file/review_file rejection, both independent-fallback cases, the exact 8192-byte acceptance, symlink, directory, unreadable, non-UTF-8, and all eleven invalid-grammar cases.
Each of the four new cases asserts three things and all three held: the error carries its own single_request.templates.plan_file or single_request.templates.review_file context, the message is template path must not be empty, and the message never contains the config directory — proving the rejection happened before os.Lstat/os.Open. The clone regression proves the cloned PlanFile/ReviewFile cells are distinct pointers, that mutating them leaves the original paths and both effective templates untouched, and that an omitted (nil) path clones as omission rather than as a configured empty value.
REVIEW_API-2 — Focused and race regressions
go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
go test -race -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
$ go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
ok iop/packages/go/config 0.165s
ok iop/apps/edge/internal/configrefresh 0.044s
exit=0
$ go test -race -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
ok iop/packages/go/config 1.855s
ok iop/apps/edge/internal/configrefresh 1.151s
exit=0
Refresh redaction result, from the -v run of the adapted fixtures:
=== RUN TestClassifySingleRequestTemplateContentChange
--- PASS: TestClassifySingleRequestTemplateContentChange (0.00s)
The two fixtures now build PlanFile/ReviewFile through the local templatePath helper, so current and candidate hold the same paths in separately allocated cells. reflect.DeepEqual still reports equality for those fields, the classifier still emits exactly one execution_presets["preset-templates"].single_request change of class applied driven by the effective-content edit, and the assertions that Previous/Next contain neither templates/plan.md nor the raw Plan template v1/v2 bodies still hold.
REVIEW_API-3 — Full local verification
test -z "$(gofmt -l packages/go/config/execution_preset_types.go packages/go/config/load.go packages/go/config/model_execution_preset_config_test.go apps/edge/internal/configrefresh/execution_preset_classify_test.go)"
git diff --check
go test -count=1 ./packages/go/config -run 'TestLoadEdgeSingleRequestTemplates|TestExecutionSingleRequestTemplatePathPresenceClone'
go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
go test -race -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
go test -count=1 ./apps/edge/... ./packages/go/...
make test-single-request-claude-smoke-self-test
rg --sort path -n 'Absolute and empty paths are rejected before any filesystem access|plan_file.*review_file.*non-empty paths' agent-spec/runtime/provider-pool-config-refresh.md
All commands below were run fresh from the repository root at tested source commit 6f141b9121af505e01730fe2a13244d986060b27. Later edits to this review file are evidence-only and did not touch source or tests.
=== tested commit: 6f141b9121af505e01730fe2a13244d986060b27 ===
$ test -z "$(gofmt -l packages/go/config/execution_preset_types.go packages/go/config/load.go packages/go/config/model_execution_preset_config_test.go apps/edge/internal/configrefresh/execution_preset_classify_test.go)"
exit=0
$ git diff --check
exit=0
$ go test -count=1 ./packages/go/config -run 'TestLoadEdgeSingleRequestTemplates|TestExecutionSingleRequestTemplatePathPresenceClone'
ok iop/packages/go/config 0.030s
exit=0
$ go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
ok iop/packages/go/config 0.165s
ok iop/apps/edge/internal/configrefresh 0.044s
exit=0
$ go test -race -count=1 ./packages/go/config ./apps/edge/internal/configrefresh
ok iop/packages/go/config 1.855s
ok iop/apps/edge/internal/configrefresh 1.151s
exit=0
$ go test -count=1 ./apps/edge/... ./packages/go/...
ok iop/apps/edge/cmd/edge 0.211s
ok iop/apps/edge/internal/authprojection 0.063s
ok iop/apps/edge/internal/bootstrap 0.497s
ok iop/apps/edge/internal/configrefresh 0.108s
ok iop/apps/edge/internal/controlplane 6.615s
ok iop/apps/edge/internal/edgecmd 0.076s
ok iop/apps/edge/internal/edgevalidate 0.107s
ok iop/apps/edge/internal/events 0.092s
ok iop/apps/edge/internal/input 0.123s
ok iop/apps/edge/internal/input/a2a 0.052s
ok iop/apps/edge/internal/node 0.042s
ok iop/apps/edge/internal/openai 8.405s
ok iop/apps/edge/internal/opsconsole 0.063s
ok iop/apps/edge/internal/service 8.194s
ok iop/apps/edge/internal/transport 4.806s
ok iop/packages/go/audit 0.012s
ok iop/packages/go/auth 10.038s
ok iop/packages/go/config 0.164s
ok iop/packages/go/credentiallease 0.046s
? iop/packages/go/events [no test files]
ok iop/packages/go/execution 0.013s
ok iop/packages/go/hostsetup 0.011s
? iop/packages/go/jobs [no test files]
? iop/packages/go/metadata [no test files]
ok iop/packages/go/observability 0.037s
? iop/packages/go/policy [no test files]
ok iop/packages/go/singlerequesttemplate 0.013s
ok iop/packages/go/streamgate 0.886s
? iop/packages/go/version [no test files]
ok iop/packages/go/workspaceprotocol 0.025s
exit=0
$ make test-single-request-claude-smoke-self-test
./scripts/e2e-single-request-claude.sh --self-test
[single-request-claude-smoke] self-test passed: exact Claude base-route coverage, structured observation admission, child-only zero retry, authenticated model admission, closed failure classification, model/Edge/Node/runtime binding, zero-child preflight, derived verification, redaction, cleanup, signal handling, and atomic publication
exit=0
$ rg --sort path -n 'Absolute and empty paths are rejected before any filesystem access|plan_file.*review_file.*non-empty paths' agent-spec/runtime/provider-pool-config-refresh.md
134:| single-request effective templates | Optional `templates` (`plan_file`/`review_file`) load bounded Markdown relative to the directory containing `edge.yaml` only. Absolute and empty paths are rejected before any filesystem access; non-regular files, sizes over 8192 bytes, non-UTF-8 content, and invalid template grammar fail closed at load. Each file falls back to its built-in default independently, and refresh diff evidence reports SHA-256 digests only, never template paths or contents. |
182:- `execution_presets[].single_request.templates` is optional. `plan_file` and `review_file` must be non-empty paths relative to the directory containing `edge.yaml`; absolute and empty values are rejected before the loader opens anything. Each file is loaded as a regular file of at most 8192 valid UTF-8 bytes and must satisfy the documented template grammar; an omitted file falls back to its built-in default independently of the other. Refresh diff evidence reports only SHA-256 digests of the effective templates. Admission freezes the effective pair into the request binding, so a refreshed template reaches only requests admitted after the refresh.
exit=0
The documentation guard printed both current contract statements unchanged; the repaired loader now matches them instead of contradicting them.
REVIEW_API-3 — Approved Darwin/arm64 profile and external gate
test "$(git branch --show-current)" = "feature/single-request-plan-review-templates"
git rev-parse HEAD
git push origin feature/single-request-plan-review-templates
ssh toki@toki-labs.com 'cd /Users/toki/agent-work/iop-dev && export PATH=/opt/homebrew/bin:$PATH && git fetch origin feature/single-request-plan-review-templates && git switch feature/single-request-plan-review-templates && git reset --hard origin/feature/single-request-plan-review-templates && test -z "$(git status --short)" && test "$(git rev-parse HEAD)" = "$(git rev-parse origin/feature/single-request-plan-review-templates)" && test "$(go env GOOS)/$(go env GOARCH)" = "darwin/arm64" && go version && claude --version && sops --version && make build-edge build-node && go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh && make test-single-request-claude-smoke-self-test'
ssh toki@toki-labs.com 'cd /Users/toki/agent-work/iop-dev && for file in dev-openai-toki.edge.yaml dev-openai-toki.sops.yaml; do if test -f "$file"; then echo "PRESENT $file"; else echo "MISSING $file"; fi; done && test -r /Users/toki/.config/sops/age/keys.txt && echo "PRESENT age identity"'
Source identity — local, origin, and remote all resolve to the same commit:
$ test "$(git branch --show-current)" = "feature/single-request-plan-review-templates"
branch ok
$ git rev-parse HEAD
6f141b9121af505e01730fe2a13244d986060b27
$ git push origin feature/single-request-plan-review-templates
To https://git.toki-labs.com/toki/iop.git
702e62aa..6f141b91 feature/single-request-plan-review-templates -> feature/single-request-plan-review-templates
exit=0
Approved Darwin/arm64 checkout, synchronized to that exact commit and rebuilt:
$ ssh toki@toki-labs.com 'cd /Users/toki/agent-work/iop-dev && export PATH=/opt/homebrew/bin:$PATH && git fetch origin feature/single-request-plan-review-templates && git switch feature/single-request-plan-review-templates && git reset --hard origin/feature/single-request-plan-review-templates && test -z "$(git status --short)" && test "$(git rev-parse HEAD)" = "$(git rev-parse origin/feature/single-request-plan-review-templates)" && test "$(go env GOOS)/$(go env GOARCH)" = "darwin/arm64" && go version && claude --version && sops --version && make build-edge build-node && go test -count=1 ./packages/go/config ./apps/edge/internal/configrefresh && make test-single-request-claude-smoke-self-test'
From https://git.toki-labs.com/toki/iop
* branch feature/single-request-plan-review-templates -> FETCH_HEAD
31fada5d..6f141b91 feature/single-request-plan-review-templates -> origin/feature/single-request-plan-review-templates
Already on 'feature/single-request-plan-review-templates'
Your branch is behind 'origin/feature/single-request-plan-review-templates' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
HEAD is now at 6f141b91 fix(single_request): 템플릿 경로 생략과 명시 빈 값을 구분한다
go version go1.26.3 darwin/arm64
2.1.177 (Claude Code)
sops 3.13.1
[info] a new version of sops (v3.13.3) is available, you can update by visiting: https://github.com/getsops/sops/releases/tag/v3.13.3
[warning] Note that in a future version, sops will no longer check whether the current version is the latest when asking for sops' version. If you want to explicitly check for the latest version, add the `--check-for-updates` option to `sops --version`. This will hide this deprecation warning and will always check, even if the default behavior changes in the future.
mkdir -p build/bin
GOOS=darwin GOARCH=arm64 go build -trimpath -o build/bin/iop-edge ./apps/edge/cmd/edge
mkdir -p build/bin
go build -trimpath -o build/bin/iop-node ./apps/node/cmd/node
ok iop/packages/go/config 0.655s
ok iop/apps/edge/internal/configrefresh 0.847s
./scripts/e2e-single-request-claude.sh --self-test
[single-request-claude-smoke] self-test passed: exact Claude base-route coverage, structured observation admission, child-only zero retry, authenticated model admission, closed failure classification, model/Edge/Node/runtime binding, zero-child preflight, derived verification, redaction, cleanup, signal handling, and atomic publication
exit=0
The remote checkout was one commit behind at planning time (31fada5d) and was reset onto origin/feature/single-request-plan-review-templates; the clean-tree and HEAD-equality guards in the same command both passed before any build or test ran, so the Darwin/arm64 evidence belongs to 6f141b91 and no other tree.
Operator-asset probe — externally blocked, no live request was made:
$ ssh toki@toki-labs.com 'cd /Users/toki/agent-work/iop-dev && for file in dev-openai-toki.edge.yaml dev-openai-toki.sops.yaml; do if test -f "$file"; then echo "PRESENT $file"; else echo "MISSING $file"; fi; done && test -r /Users/toki/.config/sops/age/keys.txt && echo "PRESENT age identity"'
MISSING dev-openai-toki.edge.yaml
MISSING dev-openai-toki.sops.yaml
PRESENT age identity
exit=0
Both approved operator config files are still absent, so live API qualification was not run and is not claimed as a pass. This is an unchanged pre-existing external block, not a result of this change. No file was created, substituted, or approximated, and the inert EDGE_CONFIG/SOPS_CONFIG names were not used.
Resume condition — live qualification can run only after the operator does both of the following:
- Restores
dev-openai-toki.edge.yamlanddev-openai-toki.sops.yamlunder/Users/toki/agent-work/iop-dev(the SOPS age identity at/Users/toki/.config/sops/age/keys.txtis already readable). - Supplies all twelve Makefile-defined smoke inputs:
IOP_SINGLE_REQUEST_SMOKE_CLAUDE_BIN,IOP_SINGLE_REQUEST_SMOKE_RUNTIME_EVIDENCE,IOP_SINGLE_REQUEST_SMOKE_BASE_URL,IOP_SINGLE_REQUEST_SMOKE_MODEL,IOP_SINGLE_REQUEST_SMOKE_EDGE_BIN,IOP_SINGLE_REQUEST_SMOKE_NODE_BIN,IOP_SINGLE_REQUEST_SMOKE_EDGE_CONFIG,IOP_SINGLE_REQUEST_SMOKE_OBSERVATION_FILE,IOP_SINGLE_REQUEST_SMOKE_METRICS_URL,IOP_SINGLE_REQUEST_SMOKE_WORKSPACE,IOP_SINGLE_REQUEST_SMOKE_OUTPUT,IOP_SINGLE_REQUEST_SMOKE_SECRET_ENV.
[IMPLEMENTING AGENT — BEFORE SAVING] Have you filled in every implementation-owned section? If anything is blank, go back and fill it in before saving this file. Leave review-agent-only sections unchanged.
Section Ownership
| Section | Owner | Note |
|---|---|---|
| Header comment, Overview, Review Agent Instructions | Fixed at stub creation | Implementing agent must not modify or execute these (archive, complete.log, and task-directory archive move are review-agent only) |
| Archive Evidence Snapshot | Fixed at stub creation from plan when present | Implementing agent uses it as default prior-loop context; read only the specific archive files cited there when more detail is required |
| Implementation Item Completion (item names) | Fixed at stub creation | Implementing agent checks [ ] → [x] only |
| Implementation Checklist (item text/order) | Fixed at stub creation from plan | Implementing agent checks [ ] → [x] only |
| Review-Only Checklist | Review agent only | Implementing agent must not modify or check this section |
| Deviations from Plan, Key Design Decisions | Implementing agent | Replace placeholders with actual content |
| Reviewer Checkpoints | Fixed at stub creation | Pre-filled from plan |
| Verification Results (section headings + commands) | Fixed at stub creation | Implementing agent fills in command output only; command changes require a Deviations from Plan entry |
| Code Review Result | Review agent appends | Not included in stub |