[repository-quality] 🎯 Repository Quality Improvement Report: Engine Catalog Adoption Gap & Experimental Flag Propagation (2026-06-17) #39803
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
🎯 Repository Quality Improvement Report — Engine Catalog Adoption Gap & Experimental Flag Propagation
Analysis Date: 2026-06-17
Focus Area: Engine Catalog Adoption Gap & Experimental Flag Propagation
Strategy Type: Custom (random = 7, 0–59 tier)
Custom Area: Yes — the
EngineCatalogabstraction is partially adopted;constants.AgenticEngineswas deprecated in favour ofcatalog.IDs()but 3 production callsites remain, andEngineDefinitionlacks anexperimentalfield despite 3 engines needing it.Executive Summary
The
pkg/workflowengine layer has a layered API: the lower-levelEngineRegistry(runtime singletons) and the higher-levelEngineCatalog(declarative metadata fromdata/engines/*.md). The migration to the catalog is incomplete:constants.AgenticEnginescarries aDeprecatedcomment pointing tocatalog.IDs(), yet three loop-based callsites inpkg/cli/logs_orchestrator.gostill reference the old slice, risking silent divergence when a new engine is added.Beyond the deprecation drift,
EngineDefinitionhas noexperimentalfield, even though Pi, Antigravity, and OpenCode setexperimental: truein their Go constructors. Callers that use only the definition (e.g.gh aw add, documentation generators) cannot surface experimentalness without resolving the full runtime. A third gap: all 8 built-in engine definition markdown files leavemodels.defaultempty, forcing forecast and token-usage tools to maintain separate hard-coded model maps.Full Analysis Report
Current State Assessment
Metrics Collected:
constants.AgenticEnginesdeprecated callsites in productionlogs_orchestrator.go:355,370,938)experimental:truein Go but not inEngineDefinitionmodels.defaultNewEngineCatalogadd_interactive_engine.go)Findings
Strengths
compiler_types.goalready creates both the registry and catalog together.pkg/cli/add_interactive_engine.gocorrectly usesNewEngineCatalog.EngineCatalog.Resolve()includes a backward-compat prefix-fallback for old engine IDs.Areas for Improvement
AgenticEnginesloops inlogs_orchestrator.go— silent divergence risk on new engine additions.EngineDefinitionhas noexperimentalfield; catalog consumers can't determine experimentalness.completions.go:ValidEngineNames()usesGetSupportedEngines()instead ofcatalog.IDs().models.default/models.supported.Detailed Analysis
Deprecated
AgenticEnginescallsites: All three sites inlogs_orchestrator.goiterate overconstants.AgenticEnginesand callregistry.GetEngine(id)for pointer comparison. Replace the loop source withworkflow.NewEngineCatalog(workflow.NewEngineRegistry()).IDs()— keepGetGlobalEngineRegistry()for the pointer lookup itself.Missing
experimentalfield:EngineDefinitionhas noExperimental boolfield; addingyaml:"experimental,omitempty"and updating the three markdown files completes the data model.completions.go:ValidEngineNames(): One-line fix — usecatalog.IDs()instead ofregistry.GetSupportedEngines(). Mirrors the pattern inadd_interactive_engine.go:88.Empty
models.default: All 8 engine files omitmodels.defaultthough the struct supports it; default IDs are already inmodel_aliases.go.🤖 Tasks for Copilot Agent
NOTE TO PLANNER AGENT: Split the following tasks into individual work items.
Improvement Tasks
Task 1: Migrate
logs_orchestrator.goDeprecatedAgenticEnginesto Catalog APIPriority: High | Effort: Small | Focus Area: Engine Catalog Adoption
Description: Replace 3
constants.AgenticEnginesloop usages inpkg/cli/logs_orchestrator.go(lines ~355, ~370, ~938) withworkflow.NewEngineCatalog(workflow.NewEngineRegistry()).IDs().Acceptance Criteria:
constants.AgenticEngineshas zero references inpkg/cli/logs_orchestrator.gocatalog.IDs()as the loop sourcego test ./pkg/cli/...andmake lintpassCode Region:
pkg/cli/logs_orchestrator.golines ~354–373 and ~930–945Task 2: Add
experimentalField toEngineDefinitionand Engine Markdown FilesPriority: Medium | Effort: Small | Focus Area: Engine Definition Schema Completeness
Description: Add
Experimental bool \yaml:"experimental,omitempty"`toEngineDefinitioninengine_definition.go. Updatepi.md,antigravity.md, andopencode.mdwithexperimental: true`. Add loader tests asserting the field is read correctly.Acceptance Criteria:
EngineDefinition.Experimental boolfield added with correct yaml tagpi.md,antigravity.md,opencode.mdhaveexperimental: trueExperimental == truefor those three;falsefor othersgo test ./pkg/workflow/...andmake lintpassCode Region:
pkg/workflow/engine_definition.go,pkg/workflow/data/engines/pi.md,pkg/workflow/data/engines/antigravity.md,pkg/workflow/data/engines/opencode.mdTask 3: Migrate
completions.go:ValidEngineNames()to Catalog APIPriority: Medium | Effort: Small | Focus Area: Engine Catalog Adoption
Description:
ValidEngineNames()inpkg/cli/completions.gocallsGetGlobalEngineRegistry().GetSupportedEngines(). Change it toworkflow.NewEngineCatalog(workflow.NewEngineRegistry()).IDs()following the pattern inadd_interactive_engine.go:88.Acceptance Criteria:
ValidEngineNames()usescatalog.IDs()notregistry.GetSupportedEngines()--enginestill returns all 8 engine namesgo test ./pkg/cli/...passesCode Region:
pkg/cli/completions.golines ~64–70Task 4: Populate
models.defaultin Built-in Engine Definition FilesPriority: Low | Effort: Small | Focus Area: Engine Definition Schema Completeness
Description: All 8 engine definition markdown files leave
models.defaultempty. Add the known default model identifier (referencingmodel_aliases.go) for at least claude, codex, gemini, and copilot. Add loader test assertions.Acceptance Criteria:
claude.md,codex.md,gemini.md,copilot.mdhavemodels.defaultpopulatedEngineDefinition.Models.Default != ""for those four in loader testsgo test ./pkg/workflow/...passesCode Region:
pkg/workflow/data/engines/*.md📊 Historical Context
Previous Focus Areas (last 10 runs)
🎯 Recommendations
Immediate Actions (This Week)
logs_orchestrator.godeprecatedAgenticEnginesloops — Priority: HighShort-term Actions (This Month)
experimentaltoEngineDefinition— Priority: Mediumcompletions.go:ValidEngineNames()— Priority: MediumLong-term Actions (This Quarter)
models.defaultin engine definition files — Priority: Low📈 Success Metrics
AgenticEnginescallsites: 3 → 0experimentalin definition: 3 → 0models.defaultset: 0/8 → ≥4/8Next Steps
constants.AgenticEnginesreference count as zero-target metricReferences:
§27694766267Beta Was this translation helpful? Give feedback.
All reactions