Skip to content

fix(doctor): recognize generated hop-route configuration supply - #1182

Merged
antoinetoussaint-byte merged 1 commit into
mainfrom
fix/doctor-generated-hop-routes
Oct 26, 2026
Merged

antoinetoussaint-byte merged 1 commit into
mainfrom
fix/doctor-generated-hop-routes

Conversation

@antoinetoussaint-byte

@antoinetoussaint-byte antoinetoussaint-byte commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Full-workspace doctor workspace reports configuration_missing for hop-routes even when orchestration successfully derives it from the routed module's authored contract and published API catalog. The records-scoped check passes because the consumer is authority/hop, outside that scope.

This is a fix in the CLI diagnostic that owns the availability check. Source validation used Core's authored-file inventory, while endpoint-reference validation used the orchestration inventory containing generated groups. Load orchestration.WorkspaceConfigurationsForChecking once and share its result between both checks. Keep authored-file provenance, duplicate detection, ordinary required-group checks, and secret-reference checks. Do not exempt hop-routes by name: it must actually be supplied by the existing loader.

Reuse: WorkspaceConfigurationsForChecking, NewWorkspaceConfigurationReader, Core's configuration composition, and the existing endpoint-reference check. No new route derivation, client, generated-file edit, runtime fallback, or dependency change.

Validation:

  • Exact scratch reproduction: obin-ai/module-record-store#201 head 126258015acd6d7fde5768e58146569f793090c3, its playground, and cached Authority pin 683f8ff71a40a869e9d7d9a31ba9cabd6eb135cf. Before: records scope ready; full workspace fails only on missing hop-routes. After: full workspace, records scope, and authority/hop scope all ready.
  • Regression fails on the unchanged main implementation with the same missing-group diagnostic, then passes with this fix. Covers workspace-supplied and module-supplied hop selection, absent root configuration directory, full/module/service scopes, and read-only behavior.
  • Negative cases still refuse absent selection/catalog, mismatched principal, authored routes, private endpoints, and a missing ordinary configuration group.
  • Passed locally: go test ./cmd -run TestDoctorWorkspace -count=1; go test ./cmd ./pkg/orchestration ./pkg/gitops -count=1; go test -race ./cmd -count=1; golangci-lint run ./... (0 issues); git diff --check.

CI passed at 58f74f9b4ddced0e81d172058abf95809d19a08b: Go CLI workflow (bootstrap audit, control integration, coverage, race, lint, dashboard), deployment contract, base guard, and all native recovery checks. The conditional pins job is skipped.

This qualification runs the read-only doctor; it does not repeat service startup or hosted deployment. No changes to records or Authority are part of this PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@antoinetoussaint-byte
antoinetoussaint-byte added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit 628c7e6 Oct 26, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant