Skip to content

feat(boost): RHDHPLAN-1510 openspecs #3754

Open
gabemontero wants to merge 5 commits into
redhat-developer:mainfrom
gabemontero:rhdhplan-1510-openspecs
Open

feat(boost): RHDHPLAN-1510 openspecs #3754
gabemontero wants to merge 5 commits into
redhat-developer:mainfrom
gabemontero:rhdhplan-1510-openspecs

Conversation

@gabemontero

Copy link
Copy Markdown
Contributor

Hey, I just made a Pull Request!

These are the openspec markdowns through tasks.md for all the RHIDP epics / stories under RHDHPLAN-1510

✔️ Checklist

  • [n/a] A changeset describing the change and affected packages. (more info)
  • [/] Added or Updated documentation
  • [n/a] Tests for new functionality and regression tests for bug fixes
  • [n/a] Screenshots attached (for UI changes)

gabemontero and others added 4 commits July 14, 2026 14:26
…tions

Create OpenSpec changes covering all 4 epics and 14 stories under
RHDHPLAN-1510 (AI Catalog Connector Implementations):

- mcp-registry-connector (RHIDP-15313): 3 stories, 3 specs, 7 files
  Mirror endpoint, TLS/auth hardening, annotation enrichment

- rhoai-connector (RHIDP-15314): 4 stories, 3 specs, 7 files
  Model Registry source, MCP catalog source, deployment config

- oci-skill-connector (RHIDP-15315): 5 stories, 3 specs, 7 files
  Registry discovery, skillcard parsing, incremental sync/scale

- connector-shared-infrastructure (RHIDP-15316): 2 stories, 2 specs, 6 files
  CA bundle resolution, fault isolation and error logging

Cross-references RHDHPLAN-1507 framework (entity model SDK, OCI ingestion
framework, annotation scheme) and upstream RHDHPLAN-393 (MCP Registry).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: gabemontero <gmontero@redhat.com>
… closure

- Add RHDHPLAN-1510 consolidation callouts to MCP Registry and RHOAI
  connector proposal.md and design.md (RHIDP-15315 closed, scope
  absorbed by RHIDP-15294 under RHDHPLAN-1507)
- Add cross-connector dependency mapping to tasks.md for both connectors
  (RHIDP-15316 blockers: 15265 endpoint/creds, 15329 CA bundles)
- Add cross-connector dependency notes to 6 spec files:
  mirror-endpoint, auth-tls-hardening, annotation-enrichment,
  model-registry-source, mcp-catalog-source, deployment-config
- Close 5 orphaned RHIDP-15315 stories (15324-15328) with CONSOLIDATED
  descriptions pointing to absorbing stories under RHIDP-15294
- Create 7 Jira Blocks links for RHDHPLAN-1510 cross-connector deps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ector openspecs

RHDHPLAN-404 supersedes Model Registry (Kubeflow API) integration for
the RHOAI connector. This connector now only handles MCP catalog
ingestion. Model Registry integration is handled under RHDHPLAN-404.

Changes:
- Remove model-registry-source spec (entire Kubeflow scope)
- Rewrite design.md: MCP-catalog-only decisions, remove RHDHPLAN-1113
  conditional (irrelevant without model entity kinds)
- Rewrite proposal.md: remove Model Registry Source and Version
  Normalization sections
- Rewrite tasks.md: remove 15 Model Registry tasks, simplify deployment
  config and testing sections
- Rewrite deployment-config spec: remove Model Registry toggle/endpoint
  scenarios
- Fix mcp-catalog-source spec: remove stray Model Registry reference
- Preserve MCP Registry connector stakeholder alignment (Step 1)

Stakeholder alignment (2026-07-13): MCP server entity kind correction
(Resource -> API with spec.type: mcp-server), RHDHPLAN-393/404
dependency context, MCP resource mapping deferred for RHDH 2.1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: gabemontero <gmontero@redhat.com>
- Fix OCI Skill connector entity mapping: Resource/ai-skill → AIResource/skill
  (design.md, proposal.md, tasks.md, skillcard-parsing/spec.md)
- Add RHDHPLAN-1507 consolidation notes to OCI Skill connector files
  (RHIDP-15315 closed → scope under RHIDP-15294/RHDHPLAN-1507)
- Fix connector-shared-infrastructure cross-reference: replace closed
  RHIDP-15315 with RHIDP-15294 (RHDHPLAN-1507)
- Fix RHOAI tasks.md: RHIDP-15321 (version normalization) remains in
  scope per Jira; add task section with 7 tasks
- Add RHIDP-15266 reference app-config openspec: new spec under
  connector-shared-infrastructure/specs/reference-app-config/ and
  7 tasks in tasks.md
- Renumber cross-references and connector-integration task sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: gabemontero <gmontero@redhat.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 14, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 7:20 PM UTC · Completed 7:37 PM UTC
Commit: a04cf01 · View workflow run →

@codecov

codecov Bot commented Jul 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.65%. Comparing base (a04cf01) to head (91cfc37).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3754   +/-   ##
=======================================
  Coverage   54.65%   54.65%           
=======================================
  Files        2360     2360           
  Lines       90140    90140           
  Branches    25214    25207    -7     
=======================================
  Hits        49270    49270           
- Misses      40598    40651   +53     
+ Partials      272      219   -53     
Flag Coverage Δ *Carryforward flag
adoption-insights 83.70% <ø> (ø) Carriedforward from d9b9333
ai-integrations 67.53% <ø> (ø) Carriedforward from d9b9333
app-defaults 69.79% <ø> (ø) Carriedforward from d9b9333
augment 46.39% <ø> (ø) Carriedforward from d9b9333
boost 73.13% <ø> (ø)
bulk-import 72.46% <ø> (ø) Carriedforward from d9b9333
cost-management 14.10% <ø> (ø) Carriedforward from d9b9333
dcm 61.81% <ø> (ø) Carriedforward from d9b9333
extensions 61.53% <ø> (ø) Carriedforward from d9b9333
global-floating-action-button 71.18% <ø> (ø) Carriedforward from d9b9333
global-header 59.71% <ø> (ø) Carriedforward from d9b9333
homepage 50.23% <ø> (ø) Carriedforward from d9b9333
install-dynamic-plugins 56.77% <ø> (ø) Carriedforward from d9b9333
konflux 91.49% <ø> (ø) Carriedforward from d9b9333
lightspeed 69.02% <ø> (ø) Carriedforward from d9b9333
mcp-integrations 85.46% <ø> (ø) Carriedforward from d9b9333
orchestrator 43.74% <ø> (ø) Carriedforward from d9b9333
quickstart 65.63% <ø> (ø) Carriedforward from d9b9333
sandbox 79.56% <ø> (ø) Carriedforward from d9b9333
scorecard 82.93% <ø> (ø) Carriedforward from d9b9333
theme 61.26% <ø> (ø) Carriedforward from d9b9333
translations 7.25% <ø> (ø) Carriedforward from d9b9333
x2a 78.68% <ø> (ø) Carriedforward from d9b9333

*This pull request uses carry forward flags. Click here to find out more.


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a04cf01...91cfc37. Read the comment docs.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rhdh-qodo-merge

Copy link
Copy Markdown

PR Summary by Qodo

docs(boost): Add OpenSpecs for AI catalog connectors and shared infrastructure

📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Add OpenSpec proposals/designs/specs/tasks for MCP Registry, RHOAI, and OCI Skill connectors.
• Define shared cross-connector utilities for CA bundles, enable/disable, and fault isolation.
• Capture RHDHPLAN-1510 consolidation notes and cross-epic dependency mapping for execution order.
Diagram

graph TD
  SharedInfra["OpenSpec: Shared Infra"] --> Mcp["OpenSpec: MCP Registry"] --> Upstream393{{"Upstream MCP provider (1510/393)"}}
  SharedInfra --> Rhoai["OpenSpec: RHOAI MCP Catalog"]
  SharedInfra --> Oci["OpenSpec: OCI Skill Connector"]
  Mcp --> Plan1507{{"RHDHPLAN-1507 SDK/entity model"}}
  Rhoai --> Plan1507
  Oci --> Plan1507
Loading
High-Level Assessment

The approach (separate OpenSpec “change” directories per connector plus a shared-infra change) is the most reviewable structure: it keeps requirements/scenarios localized while still making cross-connector dependencies explicit via consolidation callouts and tasks.md dependency mapping. A more consolidated single-spec document was implicitly considered but would make ownership, sequencing, and traceability to Jira stories harder.

Files changed (27) +3179 / -0

Documentation (23) +3167 / -0
design.mdDesign doc for shared connector utilities (CA bundles, isolation, enable/disable) +220/-0

Design doc for shared connector utilities (CA bundles, isolation, enable/disable)

• Defines architectural decisions for a shared utility package used by multiple connector backend modules. Specifies CA bundle resolution behavior, process-level fault isolation wrapper semantics, enable/disable registration guard, and structured logging expectations.

workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md

proposal.mdProposal for cross-connector shared infrastructure scope and impact +58/-0

Proposal for cross-connector shared infrastructure scope and impact

• Summarizes why shared connector infrastructure is needed and enumerates the utilities to be built (CA bundle loader, provider wrapper, enable/disable guard, logging context). Documents impacted packages and cross-references to related plans/epics.

workspaces/boost/openspec/changes/connector-shared-infrastructure/proposal.md

spec.mdSpec: per-connector CA bundle resolution and graceful failure +80/-0

Spec: per-connector CA bundle resolution and graceful failure

• Adds scenario-based acceptance criteria for loading CA bundles from file paths or env-backed secret content. Defines per-connector isolation, certificate chain support, and non-crashing behavior for missing/invalid CA data.

workspaces/boost/openspec/changes/connector-shared-infrastructure/specs/ca-bundle-resolution/spec.md

spec.mdSpec: provider fault isolation, structured error logging, enable/disable behavior +103/-0

Spec: provider fault isolation, structured error logging, enable/disable behavior

• Documents baseline requirements for Backstage bucket isolation plus additional try/catch process-level isolation for provider run loops. Specifies structured log fields, behavior when disabled, and independence across multiple failing connectors.

workspaces/boost/openspec/changes/connector-shared-infrastructure/specs/fault-isolation/spec.md

spec.mdSpec: reference app-config YAML examples for all connectors +140/-0

Spec: reference app-config YAML examples for all connectors

• Defines requirements for a repository-shipped example app-config snippet covering endpoints, auth Secret refs, CA bundles, schedules, and air-gapped variants. Includes per-connector example blocks with inline field documentation expectations.

workspaces/boost/openspec/changes/connector-shared-infrastructure/specs/reference-app-config/spec.md

tasks.mdTask breakdown for implementing shared connector utilities +84/-0

Task breakdown for implementing shared connector utilities

• Adds a prioritized task plan for implementing CA bundle utilities, fault isolation wrapper, enable/disable pattern, docs, integration tests, and a reference app-config example file. Includes explicit unit/integration test expectations per capability.

workspaces/boost/openspec/changes/connector-shared-infrastructure/tasks.md

design.mdDesign doc for MCP Registry connector productization and air-gapped support +296/-0

Design doc for MCP Registry connector productization and air-gapped support

• Describes a wrapper-based productization approach over an upstream MCP Registry provider, including mirror endpoint config, TLS/CA handling, Secret-based auth, and AI asset annotation enrichment. Captures consolidation notes and upstream dependency considerations.

workspaces/boost/openspec/changes/mcp-registry-connector/design.md

proposal.mdProposal for MCP Registry mirror endpoint, TLS/auth, and annotation enrichment +87/-0

Proposal for MCP Registry mirror endpoint, TLS/auth, and annotation enrichment

• Defines the “why/what” for hardening the upstream MCP Registry connector for enterprise/air-gapped deployments. Enumerates deliverables (endpoint override, zero-internet validation, CA/auth, annotations) and outlines expected package impacts.

workspaces/boost/openspec/changes/mcp-registry-connector/proposal.md

spec.mdSpec: enrich MCP Registry entities with AI asset annotations +208/-0

Spec: enrich MCP Registry entities with AI asset annotations

• Adds scenario-based requirements to populate (and not overwrite) AI asset annotations during entity emission. Specifies version extraction rules, degraded-mode behavior on enrichment failures, and observability/metrics expectations.

workspaces/boost/openspec/changes/mcp-registry-connector/specs/annotation-enrichment/spec.md

spec.mdSpec: custom CA bundles and K8s Secret auth for MCP Registry +214/-0

Spec: custom CA bundles and K8s Secret auth for MCP Registry

• Defines requirements for loading a connector-scoped CA bundle, enforcing TLS validation, and authenticating via Kubernetes Secrets with caching/rotation behavior. Explicitly calls out dependency on shared CA utilities and common credential patterns.

workspaces/boost/openspec/changes/mcp-registry-connector/specs/auth-tls-hardening/spec.md

spec.mdSpec: mirror endpoint configuration and zero-internet validation +167/-0

Spec: mirror endpoint configuration and zero-internet validation

• Documents configuration and validation rules for overriding the public MCP Registry endpoint with a customer mirror, including error handling and retry behavior. Adds explicit “no fallback to public endpoint” and monitoring/metric requirements for violations.

workspaces/boost/openspec/changes/mcp-registry-connector/specs/mirror-endpoint/spec.md

tasks.mdTask plan for MCP Registry connector productization stories +136/-0

Task plan for MCP Registry connector productization stories

• Breaks down implementation tasks for mirror endpoint support, TLS/auth hardening, annotation enrichment, integration testing, and packaging/docs. Includes dependency notes on shared infrastructure and the AI entity model SDK.

workspaces/boost/openspec/changes/mcp-registry-connector/tasks.md

design.mdDesign doc for OCI skill registry connector architecture and decisions +219/-0

Design doc for OCI skill registry connector architecture and decisions

• Defines design decisions for implementing an OCI Distribution Spec client via direct HTTP, manifest-first selective blob download, digest-based incremental sync, and scale targets. Captures consolidation of scope under RHDHPLAN-1507 while keeping this spec authoritative.

workspaces/boost/openspec/changes/oci-skill-connector/design.md

proposal.mdProposal for OCI skill discovery, ingestion, and scaling approach +61/-0

Proposal for OCI skill discovery, ingestion, and scaling approach

• Summarizes the need for automated skill discovery from OCI registries and the planned connector capabilities: discovery, skillcard parsing/validation, incremental sync, auth/CA support, and 2,000-image scale validation.

workspaces/boost/openspec/changes/oci-skill-connector/proposal.md

spec.mdSpec: incremental sync, caching, auth, and 2,000-image scale validation +210/-0

Spec: incremental sync, caching, auth, and 2,000-image scale validation

• Adds detailed requirements for digest-based change detection, delta vs full mutation emission, TTL cache with disk persistence, pull-secret auth, custom CA bundles, air-gapped behavior, and explicit performance targets with a mock-registry test harness.

workspaces/boost/openspec/changes/oci-skill-connector/specs/incremental-sync-scale/spec.md

spec.mdSpec: OCI registry discovery and manifest fetching behavior +110/-0

Spec: OCI registry discovery and manifest fetching behavior

• Defines requirements for tag listing (including pagination), manifest fetching with content negotiation, parallelism limits, annotation extraction, and robust error handling (auth failures, rate limiting, connectivity).

workspaces/boost/openspec/changes/oci-skill-connector/specs/registry-discovery/spec.md

spec.mdSpec: skillcard blob identification, parsing/validation, and entity emission +141/-0

Spec: skillcard blob identification, parsing/validation, and entity emission

• Describes how to locate and download the skillcard layer, parse YAML safely, validate with the SDK schema, and emit AIResource entities with required annotations. Includes degraded behavior for invalid skills without aborting sync and summary logging expectations.

workspaces/boost/openspec/changes/oci-skill-connector/specs/skillcard-parsing/spec.md

tasks.mdTask plan for OCI connector implementation, testing, and packaging +124/-0

Task plan for OCI connector implementation, testing, and packaging

• Breaks the OCI connector into workstreams (client, parsing/emission, caching, auth/air-gapped, scale validation, retries, packaging/docs) with explicit unit/integration test items and performance regression checks.

workspaces/boost/openspec/changes/oci-skill-connector/tasks.md

design.mdDesign doc for RHOAI MCP catalog connector behavior and mapping +108/-0

Design doc for RHOAI MCP catalog connector behavior and mapping

• Defines the connector’s purpose and key decisions: entity mapping to API/mcp-server, graceful degradation when the developer-preview API is absent, and cross-cluster config with Secret auth and custom CA bundles via shared utilities.

workspaces/boost/openspec/changes/rhoai-connector/design.md

proposal.mdProposal for RHOAI MCP catalog ingestion as Backstage entities +43/-0

Proposal for RHOAI MCP catalog ingestion as Backstage entities

• Summarizes why the connector is needed, how it complements other MCP discovery paths, and the intended deployment configuration model. Includes consolidation notes and references to dependent plans for schema/SDK pieces.

workspaces/boost/openspec/changes/rhoai-connector/proposal.md

spec.mdSpec: RHOAI connector deployment config (enabled toggle, endpoint, auth, CA) +141/-0

Spec: RHOAI connector deployment config (enabled toggle, endpoint, auth, CA)

• Adds scenario-based requirements for enabling/disabling provider registration, validating endpoint configuration, loading auth from K8s Secrets, and using custom CA bundles with system fallback. Explicitly specifies non-crashing behavior on config or secret issues.

workspaces/boost/openspec/changes/rhoai-connector/specs/deployment-config/spec.md

spec.mdSpec: RHOAI MCP catalog source behavior and entity emission +127/-0

Spec: RHOAI MCP catalog source behavior and entity emission

• Defines how the provider connects to the MCP catalog API, handles API absence (404/unreachable) with retry cadence, validates response schemas, and maps server entries to API entities with required annotations. Includes requirements for applyMutation usage and version mismatch handling.

workspaces/boost/openspec/changes/rhoai-connector/specs/mcp-catalog-source/spec.md

tasks.mdTask plan for RHOAI provider implementation and packaging +90/-0

Task plan for RHOAI provider implementation and packaging

• Lays out implementation steps for API client/provider, deployment config validation, module scaffolding, tests, documentation, and packaging for dynamic plugin export. Includes story scoping notes and cross-connector dependency callouts.

workspaces/boost/openspec/changes/rhoai-connector/tasks.md

Other (4) +12 / -0
.openspec.yamlAdd OpenSpec metadata for shared infrastructure change +3/-0

Add OpenSpec metadata for shared infrastructure change

• Introduces the OpenSpec change descriptor (schema, created date, draft status) for the cross-connector shared infrastructure bundle.

workspaces/boost/openspec/changes/connector-shared-infrastructure/.openspec.yaml

.openspec.yamlAdd OpenSpec metadata for MCP Registry connector change +3/-0

Add OpenSpec metadata for MCP Registry connector change

• Introduces the OpenSpec change descriptor (schema, created date, draft status) for the MCP Registry connector productization work.

workspaces/boost/openspec/changes/mcp-registry-connector/.openspec.yaml

.openspec.yamlAdd OpenSpec metadata for OCI skill connector change +3/-0

Add OpenSpec metadata for OCI skill connector change

• Introduces the OpenSpec change descriptor (schema, created date, draft status) for the OCI Skill connector specification bundle.

workspaces/boost/openspec/changes/oci-skill-connector/.openspec.yaml

.openspec.yamlAdd OpenSpec metadata for RHOAI connector change +3/-0

Add OpenSpec metadata for RHOAI connector change

• Introduces the OpenSpec change descriptor (schema, created date, draft status) for the RHOAI MCP catalog connector specification bundle.

workspaces/boost/openspec/changes/rhoai-connector/.openspec.yaml

@rhdh-qodo-merge

rhdh-qodo-merge Bot commented Jul 14, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 37 rules
✅ Cross-repo context
  Not relevant to this PR: redhat-developer/rhdh
  Not relevant to this PR: redhat-developer/rhdh-chart
  Not relevant to this PR: redhat-developer/rhdh-operator
  Not relevant to this PR: redhat-developer/rhdh-local

Grey Divider


Action required

1. Shared util package inconsistency ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
loadCaBundle() is documented as coming from @boost/connector-utils with signature `(config,
connectorId)`, but the MCP Registry design documents it as coming from
@boost/plugin-boost-backend-shared with signature (caBundlePath, logger), so implementers will
build against the wrong package/API.
Code

workspaces/boost/openspec/changes/mcp-registry-connector/design.md[R158-166]

+```typescript
+import { loadCaBundle } from '@boost/plugin-boost-backend-shared';
+
+const caBundlePath = config.getOptionalString(
+  'catalog.providers.mcpRegistry.tls.ca',
+);
+const caBundlePEM = caBundlePath
+  ? await loadCaBundle(caBundlePath, logger)
+  : undefined;
Relevance

⭐⭐⭐ High

Historical reviews accept resolving openspec internal inconsistencies (e.g., PR #3401/#3648 aligned
package/API references in docs).

PR-#3401
PR-#3648

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The shared infrastructure design specifies a particular package/import and function signature, but
the MCP Registry design uses a different package name and a different call signature, making the
docs mutually incompatible.

workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[45-75]
workspaces/boost/openspec/changes/mcp-registry-connector/design.md[158-166]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The OpenSpec documents contradict each other about both the shared utility package name and the `loadCaBundle()` function signature/usage.

## Issue Context
Shared infra design specifies `@boost/connector-utils` and `loadCaBundle(config, connectorId): Buffer | undefined`, but MCP Registry design imports from `@boost/plugin-boost-backend-shared` and calls `loadCaBundle(caBundlePath, logger)`.

## Fix Focus Areas
- workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[24-75]
- workspaces/boost/openspec/changes/mcp-registry-connector/design.md[156-185]

## Suggested fix
Select a single canonical shared package name and function signature (ideally the one defined in the shared infrastructure OpenSpec), then update MCP Registry design/spec/tasks/examples to match that canonical contract (or adjust the shared infra spec if the MCP contract is intended).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. CA config key mismatch 🐞 Bug ≡ Correctness
Description
The shared infrastructure specs define CA configuration as
catalog.providers.<connectorId>.tls.caFile / tls.caSecret, but the MCP Registry connector specs
use catalog.providers.mcpRegistry.tls.ca, so implementations based on these documents will not
agree on the required app-config schema and CA settings may be ignored/misread.
Code

workspaces/boost/openspec/changes/mcp-registry-connector/specs/auth-tls-hardening/spec.md[R23-30]

+```yaml
+catalog:
+  providers:
+    mcpRegistry:
+      endpoint: https://registry.internal.example.com
+      tls:
+        ca: /etc/ssl/certs/custom-ca-bundle.crt
+```
Relevance

⭐⭐⭐ High

Team has accepted correcting conflicting config schema/docs across specs (e.g., PR #3726/#3292
consistency fixes).

PR-#3726
PR-#3292

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The MCP Registry TLS spec uses tls.ca, while the shared infra design/specs define tls.caFile and
tls.caSecret, creating conflicting configuration guidance within this same PR.

workspaces/boost/openspec/changes/mcp-registry-connector/specs/auth-tls-hardening/spec.md[19-30]
workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[56-69]
workspaces/boost/openspec/changes/connector-shared-infrastructure/specs/ca-bundle-resolution/spec.md[15-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The OpenSpec documents define two incompatible config schemas for the CA bundle (`tls.ca` vs `tls.caFile`/`tls.caSecret`). This will produce incompatible implementations and/or misconfigured deployments.

## Issue Context
The shared infra documents explicitly define `caFile`/`caSecret`, while MCP Registry documents define `ca`.

## Fix Focus Areas
- workspaces/boost/openspec/changes/mcp-registry-connector/specs/auth-tls-hardening/spec.md[19-34]
- workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[54-83]
- workspaces/boost/openspec/changes/connector-shared-infrastructure/specs/ca-bundle-resolution/spec.md[13-34]

## Suggested fix
Pick one canonical schema (recommended: the cross-connector `tls.caFile` + optional `tls.caSecret.$env` model) and update ALL affected MCP Registry docs/tasks/examples to match it (or update the shared infra docs if `tls.ca` is the intended canonical key).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Wrong package path in specs 🐞 Bug ⚙ Maintainability
Description
The shared infrastructure design/proposal describe new packages under plugins/..., but existing
Boost packages in this repo live under workspaces/boost/plugins/..., so the specs currently
instruct developers to scaffold code in an inconsistent workspace location.
Code

workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[R32-34]

+```
+plugins/boost-connector-utils/
+├── package.json               # @boost/connector-utils
Relevance

⭐⭐⭐ High

Team frequently fixes stale/incorrect Boost doc paths/names (e.g., PR #3726 updated plugins/* refs
across openspecs).

PR-#3726
PR-#3401

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The new shared-infra docs refer to plugins/boost-connector-utils/, but the repo’s Boost packages
are located under workspaces/boost/plugins/... per existing package metadata.

workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[32-40]
workspaces/boost/openspec/changes/connector-shared-infrastructure/proposal.md[40-49]
workspaces/boost/plugins/boost-common/package.json[48-52]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The OpenSpec documents describe creating new packages under a `plugins/` directory, which is inconsistent with the existing Boost workspace layout (`workspaces/boost/plugins/...`). This can cause incorrect scaffolding and workspace/build integration mistakes.

## Issue Context
Existing Boost packages declare their repository directory under `workspaces/boost/plugins/...`.

## Fix Focus Areas
- workspaces/boost/openspec/changes/connector-shared-infrastructure/design.md[30-41]
- workspaces/boost/openspec/changes/connector-shared-infrastructure/proposal.md[40-49]
- workspaces/boost/plugins/boost-common/package.json[48-52]

## Suggested fix
Replace `plugins/...` paths in the OpenSpec docs with `workspaces/boost/plugins/...` (or explicitly document why these new packages are intended to live outside the Boost workspace, and how they will be wired into the monorepo build).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@rhdh-qodo-merge rhdh-qodo-merge Bot added documentation Improvements or additions to documentation enhancement New feature or request labels Jul 14, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 14, 2026

Copy link
Copy Markdown

Review — comment

Scope: 27 new openspec documentation files across 4 AI catalog connector change bundles under workspaces/boost/openspec/changes/. No code changes. All files are pre-implementation design docs, proposals, behavioral specs, and task breakdowns for RHDHPLAN-1510 (Declarative AI Catalog Connectors).

Overall: Well-structured specification set that follows the established openspec format (proposal.md, design.md, specs/, tasks.md). The 4 connector bundles are internally detailed and cover edge cases, error handling, and air-gapped deployment scenarios. However, there are config schema inconsistencies across bundles that should be resolved before implementation begins.

Findings

1. Config key inconsistency across openspec bundles — CA bundle path names

Severity: Medium · Category: internal-consistency

The shared infrastructure is designed around a common loadCaBundle() utility that all connectors consume, but the 4 bundles use different config key names for the CA bundle path:

Bundle Config key Source file
Shared infra design tls.caFile / tls.caSecret connector-shared-infrastructure/design.md
Shared infra reference app-config tls.ca (MCP), tls.caBundle (RHOAI), caBundlePath (OCI) connector-shared-infrastructure/specs/reference-app-config/spec.md
MCP Registry tls.ca mcp-registry-connector/design.md, specs/auth-tls-hardening/spec.md
RHOAI tls.caBundle rhoai-connector/design.md
OCI Skill caBundlePath (not under tls: key) oci-skill-connector/specs/incremental-sync-scale/spec.md

The shared infra design.md defines caFile/caSecret, but the reference-app-config/spec.md within the same bundle uses ca — this is a self-contradiction. If these connectors share a loadCaBundle() utility reading from a standard config path, the specs must agree on what that path is.

Remediation: Standardize on one naming convention for the CA bundle config key across all 4 bundles. Recommend tls.caFile (per the shared infra design.md canonical definition) for file-path-based CA and tls.caSecret for env-var-based CA. Update all connector specs and the reference app-config spec to use the same key names.

2. Pseudocode variable name mismatch in MCP Registry design

Severity: Low · Category: correctness

In mcp-registry-connector/design.md, Decision 3 (CA Bundle Loading), the code sample defines const caBundle = loadCaBundle(config, 'mcpRegistry') but then passes ca: caBundlePEM to https.AgentcaBundlePEM is undefined in this scope. Compare with connector-shared-infrastructure/design.md which correctly uses ca: caBundle in its equivalent example.

Remediation: Change ca: caBundlePEM to ca: caBundle in the MCP Registry design's Decision 3 code sample.

3. Fault isolation spec doesn't cover connect() phase

Severity: Low · Category: edge-case-gap

The createProviderWrapper() in connector-shared-infrastructure/design.md wraps provider.run() in try/catch for process-level isolation. However, EntityProvider.connect() failures are not addressed. If connect() throws during module initialization (e.g., invalid config, network failure on initial validation), the error propagates up to the module's init() and could affect other modules registered in the same backend.

Remediation: Document whether connect() failures should also be caught by the wrapper or handled at the module registration level in init(). Add a scenario in specs/fault-isolation/spec.md covering connect-phase errors.

4. Referenced openspec ai-catalog-entity-model does not exist

Severity: Low · Category: cross-reference

Multiple files reference workspaces/boost/openspec/changes/ai-catalog-entity-model/ for the annotation scheme and SDK validation (e.g., mcp-registry-connector/proposal.md, rhoai-connector/proposal.md). This directory does not exist in the repository. Presumably it is planned future work under RHDHPLAN-1507.

Remediation: This is expected for pre-implementation cross-references. No action required unless the referenced openspec is never created — in that case, these references become stale.

Previous run

Review — comment

This PR adds 27 new OpenSpec specification files across 4 directories under workspaces/boost/openspec/changes/ for the RHDHPLAN-1510 AI catalog connector work. The specifications cover connector shared infrastructure, MCP Registry connector, OCI Skill connector, and RHOAI connector. All files are new additions — no production code is modified.

The specifications are thorough and well-structured, covering design decisions, behavioral specs with WHEN/THEN/AND scenarios, and detailed task breakdowns. Several internal consistency issues and organizational concerns are worth addressing before implementation begins.

Findings

Medium: Shared utility package name inconsistency

Files: connector-shared-infrastructure/design.md, mcp-registry-connector/design.md

The shared utility package is named @boost/connector-utils with path plugins/boost-connector-utils/ in the connector-shared-infrastructure design document. However, mcp-registry-connector/design.md imports the shared utility as @boost/plugin-boost-backend-shared — a completely different package name. Implementers following the MCP Registry design would import from a package that doesn't match the shared infrastructure spec.

Remediation: Standardize the shared utility package name across all four spec areas. Pick one name (@boost/connector-utils or @boost/plugin-boost-backend-shared) and update all references.

Medium: loadCaBundle API signature mismatch between specs

Files: connector-shared-infrastructure/design.md, mcp-registry-connector/design.md

The connector-shared-infrastructure design defines the function signature as:

function loadCaBundle(config: Config, connectorId: string): Buffer | undefined;

But the MCP Registry connector design shows a completely different usage pattern:

const caBundlePEM = caBundlePath ? await loadCaBundle(caBundlePath, logger) : undefined;

These take different parameter types (Config + connectorId vs. path string + logger) and the second version is async while the first is not. An implementer building the shared utility from one spec would produce an API incompatible with the other spec's usage.

Remediation: Align the loadCaBundle function signature and usage across the shared infrastructure and consumer connector specs.

Medium: OCI Skill Connector spec placed under closed epic

Files: oci-skill-connector/ directory

The PR is titled "RHDHPLAN-1510 openspecs" but all four oci-skill-connector spec files acknowledge that RHIDP-15315 (OCI Skill Registry Connector) was closed on 2026-07-08 and absorbed into RHIDP-15294 under RHDHPLAN-1507. Including these specs under a RHDHPLAN-1510 PR creates organizational confusion about Jira ownership. The existing feasibility report at specifications/JIRA-analysis/RHDHPLAN-1510-feasibility-report.md also documents this consolidation.

Remediation: Either move the oci-skill-connector openspec to a separate PR under RHDHPLAN-1507, or update the PR scope description to clarify that this includes specs for work that migrated from RHDHPLAN-1510 to RHDHPLAN-1507.

Medium: Per-connector directory granularity departs from established convention

Files: All 4 new directories under openspec/changes/

The existing openspec structure documented in AGENTS.md says "One directory per capability area" and lists 5 broad capability directories (e.g., security-safety-governance, agent-creation-discovery). The 4 new directories represent individual connectors — a finer-grained unit than capability areas. The existing pattern would place all connector specs under a single directory (e.g., ai-catalog-connectors) with specs/ subdirectories per connector.

Remediation: Consider whether these 4 directories should be consolidated into one or two capability-area directories matching the established pattern, or document the expanded organizational convention in AGENTS.md.

Low: Broken cross-reference directory name

Files: mcp-registry-connector/proposal.md, rhoai-connector/proposal.md

Both files reference workspaces/boost/openspec/changes/cross-connector-shared-infrastructure/ in their cross-references section, but the actual directory name in this PR is connector-shared-infrastructure/ (without the "cross-" prefix). These are broken internal links.

Low: Missing "Verify" section in all tasks.md files

Files: All 4 tasks.md files

All existing openspec tasks.md files end with a ## N. Verify section containing verification tasks (e.g., "Verify catalog entities appear...", "Verify config write → immediate invalidation..."). None of the 4 new tasks.md files include this section, breaking the established pattern.

Low: AGENTS.md not updated with new directories

File: workspaces/boost/AGENTS.md

AGENTS.md explicitly lists the openspec directory structure with 5 entries. This PR adds 4 new directories without updating AGENTS.md, widening the gap between documentation and actual content. (Note: the existing ai-catalog-frontend directory is also missing from the AGENTS.md listing.)

Summary

The specifications are comprehensive draft documents covering design decisions, behavioral specs, and implementation tasks for the RHDHPLAN-1510 connector work. The main concerns are internal consistency (package name and API signature mismatches between the shared infrastructure spec and its consumers) and organizational conventions (directory granularity, missing verify sections, unlinked cross-references). These should be resolved before implementation begins to prevent confusion, but they don't block merging specification documents.


Labels: PR adds OpenSpec documentation files for the boost (augment) workspace AI catalog connectors.

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment augment labels Jul 14, 2026
@gabemontero

Copy link
Copy Markdown
Contributor Author

Thanks for the review. Here's our disposition on each finding:

Finding 1 (medium — shared utility package name inconsistency): ✅ Agree — fixing. The canonical name is @boost/connector-utils per the connector-shared-infrastructure spec. Aligning the 3 references in mcp-registry-connector (design.md, auth-tls-hardening/spec.md, tasks.md) to use @boost/connector-utils.

Finding 2 (medium — loadCaBundle API signature mismatch): ✅ Agree — fixing. The shared infrastructure spec defines loadCaBundle(config: Config, connectorId: string): Buffer | undefined (synchronous). The mcp-registry-connector design shows a different async call with (caBundlePath, logger) params. Aligning the MCP consumer usage to match the shared spec's canonical signature.

Finding 3 (medium — OCI Skill Connector under closed epic): ⏭️ Skipping — organizational concern, not a content issue. The consolidation notes in every OCI spec file already document the migration from RHDHPLAN-1510 to RHDHPLAN-1507. The specs live here because this is where the connector work originated. Cross-references are clear.

Finding 4 (medium — per-connector directory granularity): ⏭️ Skipping — organizational preference. Per-connector directories are more navigable during implementation than one monolithic directory. Convention can be revisited later.

Finding 5 (low — broken cross-reference directory name): ✅ Agree — fixing. Two files reference cross-connector-shared-infrastructure/ but the actual directory is connector-shared-infrastructure/. Fixing the broken paths.

Finding 6 (low — missing "Verify" sections in tasks.md): ⏭️ Skipping. The tasks.md files already contain verification tasks inline throughout (e.g., "Verify entities appear in Backstage catalog after sync", "Verify peak memory usage stays below 500 MB"). They just don't have a dedicated ## Verify heading at the bottom, and this pattern isn't consistently followed across existing openspecs either.

Finding 7 (low — AGENTS.md not updated): ⏭️ Skipping — the AGENTS.md directory listing is already out of date (missing ai-catalog-frontend too). Updating it is a separate housekeeping task, not in scope for this PR.

… package

- Replace @boost/plugin-boost-backend-shared with @boost/connector-utils (4 locations)
- Align loadCaBundle() call signature to canonical loadCaBundle(config, connectorId) pattern
- Fix cross-reference directory name: cross-connector-shared-infrastructure → connector-shared-infrastructure (2 locations)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: gabemontero <gmontero@redhat.com>
@sonarqubecloud

Copy link
Copy Markdown

@fullsend-ai-review

fullsend-ai-review Bot commented Jul 14, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:30 PM UTC · Completed 8:41 PM UTC
Commit: a04cf01 · View workflow run →

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment and removed requires-manual-review Review requires human judgment labels Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

augment documentation Improvements or additions to documentation enhancement New feature or request requires-manual-review Review requires human judgment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant