Skip to content

Add generated ARD catalog compatibility - #17

Open
MattBabbage wants to merge 1 commit into
mainfrom
matt/dual-consumer-catalog
Open

Add generated ARD catalog compatibility#17
MattBabbage wants to merge 1 commit into
mainfrom
matt/dual-consumer-catalog

Conversation

@MattBabbage

Copy link
Copy Markdown
Contributor

Summary

  • keep catalog/<publisher>/<name>.json as the canonical contributor layout
  • generate root ai-catalog.json for ARD ingestion with deterministic ordering and validation
  • temporarily adapt generated urn:ai: identifiers to the ingestion parser's required urn:air: prefix
  • check aggregate freshness on relevant pull requests

Validation

  • python3 scripts/generate_ai_catalog.py --check
  • verified all 1,932 source entries appear exactly once
  • verified the 1,093,152-byte aggregate is deterministic and below ingestion limits

Copilot AI balanced review requested due to automatic review settings August 4, 2026 15:39

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Generates an ARD ingestion artifact from canonical catalog entries and verifies freshness in CI.

Changes:

  • Adds deterministic catalog generation and validation.
  • Documents regeneration steps.
  • Adds pull-request freshness checks.
Show a summary per file
File Description
scripts/generate_ai_catalog.py Generates and validates the aggregate catalog.
ai-catalog.json Contains the generated ingestion catalog.
.github/workflows/catalog.yml Checks aggregate freshness.
README.md Documents the generated artifact.
CONTRIBUTING.md Adds contributor regeneration steps.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 4/5 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment on lines +50 to +51
generated = dict(entry)
generated["identifier"] = "urn:air:" + entry["identifier"][len("urn:ai:") :]
Comment on lines +41 to +42
if sum(entry.get(field) is not None for field in ("url", "data")) != 1:
fail(f"{path.relative_to(ROOT)}: exactly one of url or data is required")
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.

2 participants