Repository navigation
Content owners own their stubs' analysis, OSSPA empty-inventory retirement fix
Content owner model (RHDPCD-2238)
A pure stub is a published virtual CI that only points at a base component and overrides nothing. A stub keeps its catalog row, but it no longer has its own LLM analysis. Its analysis and embeddings belong to its content owner, the base component it points at.
- Why: before this release, each stub was analyzed as if it were separate content. That made a duplicate Advisor card, a duplicate Browse summary, and one extra ~37k-token LLM call for each stub on each scan.
- How ownership is found: RCARS reads the AgnosticV
__meta__.componentslink that it already resolves (owner_ci_nameinshowroom_source_json). It no longer compares analysis signatures to decide this. Signature matching is still used for stage siblings only. - A CI with its own override (repo, ref, or
content_path) at or below the stub is not a pure stub. It is still scanned on its own.
Scan
- Scans skip pure stubs. The stale check skips them too.
- Each scan entry point first reconciles stubs. For each stub, it:
- merges any curator notes, durations, and review flags into the owner, then
- deletes the stub's own analysis, embeddings, and overlap rows, then
- copies the owner's card fields (summary, products, topics, audience, difficulty, scan status) onto the stub.
- When an owner is scanned, its stubs get the new card in the same step.
Advisor
- When the owner matches a query and it has exactly one eligible stub, the Advisor shows the stub card in its place, with the same score.
- References to a CI by name, and scoped follow-up turns, look up a stub through its owner.
Browse
- A stub's detail view shows its owner's analysis and a "Content from ..." link to the owner.
- A stub's Stale and Needs Review badges show the owner's values. The difficulty filter finds stubs.
- The Stale and Needs Review filters still match only the owner row. The owner is the item that needs the rescan.
Curation
- Note, review flag, and duration edits on a stub are saved to the owner. Source overrides still apply to the CI you edit.
- Reanalyze on a stub now analyzes its owner. Before, it made no LLM call.
OSSPA: confirmed empty inventory now retires (RHDPCD-74)
rcars osspa sync --confirm-empty-inventoryand the admin API now retire the remaining architectures when the inventory is empty. Before, a database guard ignored the confirmation and retired nothing.- An empty inventory with no confirmation is still refused.
- The API test suite is repaired: 45 failures and 12 setup errors are fixed.
Deploy
- Full deploy (
--tags full). The API and the frontend both changed. - No schema change. No new Ansible vars.
- Expect this after the deploy: the first scan reconciles about 88 pure stubs in prod. It deletes their own analysis and embeddings and copies the owner card onto each one. It makes no LLM calls. No prod stub has curator data today, so no curator work is lost. Dev was reconciled and checked on 2026-11-04.
Jira: RHDPCD-2238 · RHDPCD-74
Full diff: v1.5.16...v1.5.17