feat(#5970): add providers and openshell to ForgeConfig - #6139
Conversation
|
🤖 Finished Review · ✅ Success · Started 10:53 AM UTC · Completed 11:13 AM UTC Commit: |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
Looks good to me Previous runReviewFindingsLow
Previous run (2)ReviewFindingsLow
Previous run (3)Looks good to me Previous run (4)ReviewFindingsMedium
Low
Next steps:
Previous run (5)ReviewFindingsHigh
Low
Labels: PR modifies harness composition and forge configuration in internal/harness/ Next steps:
|
cb5f845 to
5e02a24
Compare
|
🤖 Review · ❌ Terminated · Started 11:19 AM UTC · Ended 11:35 AM UTC Commit: |
Site previewPreview: https://74381089-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 11:19 AM UTC · Completed 11:35 AM UTC Commit: |
5e02a24 to
79c5f8a
Compare
|
🤖 Finished Review · ✅ Success · Started 11:41 AM UTC · Completed 11:58 AM UTC Commit: |
Superseded by updated review
79c5f8a to
afd133f
Compare
|
🤖 Finished Review · ✅ Success · Started 12:06 PM UTC · Completed 12:21 PM UTC Commit: |
afd133f to
667cd35
Compare
|
🤖 Finished Review · ✅ Success · Started 7:34 PM UTC · Completed 7:48 PM UTC Commit: |
ForgeConfig now supports providers and openshell fields, enabling per-forge provider and profile selection in a single portable harness. This follows the same merge rules as skills (top-level + forge, concatenated) per ADR-0045. Changes across the paired merge functions per the harness composition checklist: - ForgeConfig struct (forge.go): add Providers []string and OpenShell *OpenShellConfig fields with YAML tags - mergeForgeConfig (forge.go): concatenate providers and openshell.profiles from forge block onto top-level harness - validateForge (forge.go): validate URL integrity hashes on forge-specific provider and profile entries - mergeForgeConfigInto (compose.go): same concatenation logic for base composition of forge blocks - resolveBaseProviders (compose.go): extend to fetch and cache forge-level provider paths from URL-referenced base harnesses - resolveBaseProfiles (compose.go): extend to fetch and cache forge-level profile paths from URL-referenced base harnesses - ADR-0045: update to reflect providers and openshell as forge-overridable fields with concatenation merge rules Closes #5970 Signed-off-by: Claude <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
667cd35 to
c202c0b
Compare
|
🤖 Finished Review · ✅ Success · Started 8:00 PM UTC · Completed 8:13 PM UTC Commit: |
|
🤖 Finished Retro · ✅ Success · Started 9:59 PM UTC · Completed 10:19 PM UTC Commit: |
Retro: PR #6139 —
|
The harness-composition.md checklist (steps 1-5) covered merge function updates but did not include maintaining field classification tables when a field's forge-level status changed. This caused a HIGH review finding on PR fullsend-ai#6139 where ADR-0045's tables contradicted the code change. Per maintainer direction, instead of adding a step that points to the frozen ADR, create a living reference document (docs/contributing/harness-fields.md) that extracts the evolving field classifications, merge rules, and ForgeConfig struct from ADR-0045 and overlay rules from ADR-0088. Changes: - Create docs/contributing/harness-fields.md as the authoritative living reference for field classifications and merge rules - Add step 6 to harness-composition.md checklist pointing to the living doc - Mark ADR-0045 as Superseded by ADR-0088 with cross-reference to the living doc - Add cross-reference note to ADR-0088 pointing to the living doc - Update docs/architecture.md to note ADR-0045 supersession and link to the living doc - Add harness-fields.md to AGENTS.md topic-specific guidance table Note: pre-commit could not run (sandbox network policy blocks git fetch for hook environment setup). The post-script runs pre-commit authoritatively on the runner. Closes fullsend-ai#6160
Summary
providersandopenshellfields toForgeConfigstruct, enabling per-forge provider and profile selection in a single portable harnessmergeForgeConfig(forge resolution) andmergeForgeConfigInto(base composition) with concatenation logic for the new fields, following the same merge rules asskillsper ADR-0045validateForgeto validate URL integrity hashes on forge-specific provider and profile entriesresolveBaseProvidersandresolveBaseProfilesto fetch and cache forge-level entries from URL-referenced base harnessesContext
This follows the same precedent as #5858 (adding
policytoForgeConfig) and implements the full harness composition checklist fromdocs/contributing/harness-composition.md. All paired merge functions (mergeForgeConfig,mergeForgeConfigInto,mergeForgeBlocks) are kept in sync.Testing
mergeForgeConfig(ResolveForge): providers concatenation, openshell concatenation, nil inheritance, nil top-levelmergeForgeConfigInto: providers inherited/concatenated, openshell inherited/concatenatedvalidateForge: provider URL without/with hash, openshell profile URL without/with hashgo test ./internal/harness/...)Caveats
pre-commitcould not run in the sandbox (network restrictions); the post-script runs it authoritativelygolangci-lintwas not available in the sandboxCloses #5970
Post-script verification
agent/5970-forge-providers-openshell)55bd9f61ce57f9f2151a29d59a04d42b664110cf..HEAD)