feat(harness): add validation_loop.schema for URL-resolved output schemas - #2851
Conversation
PR Summary by QodoAdd validation_loop.schema to resolve output schemas for URL-loaded harnesses
AI Description
Diagram
High-Level Assessment
Files changed (6)
|
Site previewPreview: https://c0c15e7a-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 3:29 PM UTC · Completed 3:41 PM UTC |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Code Review by Qodo
1.
|
|
Looks good to me Previous runLooks good to me Previous run (2)ReviewFindingsMedium
Previous run (3)ReviewFindingsMedium
Labels: PR modifies harness struct/compose/validation and runner bootstrap logic for schema resolution. Labels: PR modifies harness struct definition, compose resolution, runner bootstrap, and lock file handling for the validation_loop component Previous run (4)Looks good to me Labels: PR modifies harness struct/compose/validation and runner bootstrap logic for schema resolution. |
8141ce5 to
27179c6
Compare
|
🤖 Review · |
27179c6 to
4a51b3e
Compare
|
🤖 Finished Review · ✅ Success · Started 4:13 PM UTC · Completed 4:25 PM UTC |
4a51b3e to
2577090
Compare
|
🤖 Finished Review · ✅ Success · Started 4:34 PM UTC · Completed 4:50 PM UTC |
2577090 to
cc1563f
Compare
|
🤖 Finished Review · ✅ Success · Started 4:58 PM UTC · Completed 5:11 PM UTC |
waynesun09
left a comment
There was a problem hiding this comment.
Review Squad — 5 MEDIUM findings (8 agents, 3 models)
Agents: 2x Claude coder, 2x Claude researcher, 2x Gemini, 2x Codex
Findings posted inline: 4
Not inline (targets unchanged file)
MEDIUM — Missing lint diagnostic when both validation_loop.schema and FULLSEND_OUTPUT_SCHEMA are set
File: internal/harness/lint.go (not changed in this PR)
When both are set, bootstrapEnv silently prefers validation_loop.schema. The stale env var still gets expanded and validated, requiring its referenced variables to be set even though the value is unused. Consider adding a lint diagnostic warning when both h.ValidationLoop.Schema != "" and h.RunnerEnv["FULLSEND_OUTPUT_SCHEMA"] are set. Can be a follow-up.
Assisted-by: Claude (review), Gemini (review), Codex (review)
…emas (fullsend-ai#2849) Signed-off-by: Claude <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
cc1563f to
ece7f5b
Compare
|
🤖 Finished Review · ✅ Success · Started 6:09 PM UTC · Completed 6:22 PM UTC |
ralphbean
left a comment
There was a problem hiding this comment.
LGTM. I'd suggest addressing @waynesun09's inline findings before merging — the validateForge URL check gap in particular.
Thanks, @ralphbean. All of those issues have been resolved. |
|
🤖 Finished Retro · ✅ Success · Started 7:03 PM UTC · Completed 7:20 PM UTC |
Retro: PR #2851 —
|
Summary
Schemafield toValidationLoopstruct so output schemas can be declared alongside the validation scriptfetchBaseFilemechanism that already works forvalidation_loop.script— URL-sourced harnesses get the schema fetched and cached automaticallyValidationLoop.Schemafirst, falls back toRunnerEnv["FULLSEND_OUTPUT_SCHEMA"]for backward compatibilityCloses #2849
Context
When a harness is loaded from a URL via config-driven agent registration (ADR-0058), the output schema referenced by
FULLSEND_OUTPUT_SCHEMAis silently skipped — the env var expands to a local${FULLSEND_DIR}/schemas/...path that doesn't exist. This affects all 6 agents. The fix lets harnesses declare the schema as a file reference that gets resolved like other resources.Files changed
internal/harness/harness.go—Schemafield +ResolveRelativeTo,ValidateFilesExist,ValidateResourceTypesupdatesinternal/harness/compose.go—fetchBaseFilecalls forvalidation_loop.schemaat top level and forge levelinternal/cli/run.go— preferValidationLoop.SchemaoverRunnerEnv["FULLSEND_OUTPUT_SCHEMA"]internal/cli/lock.go— lock file handling for the new fieldcompose_test.goandharness_test.goTest plan
go test ./internal/harness/...— all tests pass (new + existing)go build ./internal/harness/...— compiles cleanvalidation_loop.schemainstead ofenv.runner.FULLSEND_OUTPUT_SCHEMA🤖 Generated with Claude Code