Skip to content

feat: deliver and qualify the official HTTP catalog registry #275

Description

@lloydrichards

Deliver the official HTTP catalog to the CLI and Recipe Builder, then prove that the deployed assets and shipped clients work together. This is the parent issue for the five implementation tasks and owns the final release checks.

Product decisions

  • Serve the current catalog at https://stack-effect.lloydrichards.dev/registry/v1/catalog.json. /v1/ versions the JSON protocol, not individual content releases.
  • Allow additions and template fixes while preserving published IDs and the v1 interpreter capability set. Output can change between commands or sessions as content changes.
  • Keep catalog payloads, catalog semver, version pins, and catalog lockfiles out of project repositories. Older configs use the official source internally.
  • Attempt current data on every catalog-dependent command and new builder session. During an outage, use a validated compatible cache with a warning. Without usable data, fail clearly. Invalid documents and unsupported capabilities are errors, not reasons to serve stale content.
  • Keep one loaded catalog throughout each operation. Preserve the existing Selection, Blueprint, Plan, Apply, and Finalize responsibilities.
  • Publish a JSON Schema for stack.effect.json at https://stack-effect.lloydrichards.dev/schemas/v1/stack.effect.schema.json. New configs get optional $schema editor metadata. The CLI still validates with its installed domain schema.
  • Deliver the official source first. Community design design: define community HTTP catalog sources #276 is a separate follow-up and does not block this milestone.

Child deliverables

Issue Deliverable
#249 Explicit catalog composition, validation, and injection through all consumers.
#271 The JSON format, shared HTTP loader, cache interface, and failure rules.
#272 Generated catalog and config-schema assets, plus verified docs hosting.
#273 CLI integration and a user-level filesystem cache.
#274 Recipe Builder integration, browser persistence, and visible cache state.

#249 precedes #271. After #271, publication and client adapters can proceed separately. #272 owns the shared StackConfig declaration needed by both client integrations. Native blockers record completion dependencies, not a ban on independent preparatory work.

Deliver the release evidence

Use one controlled catalog document to compare real CLI and browser generation. Cover representative Node, Bun, and Deno configurations, shared JSX contributions, incremental add, and runtime exclusions. Show that a later operation can use a changed compatible document without replacing an in-flight catalog.

Exercise a registry outage with and without usable cached data. Confirm that invalid documents and unsupported capabilities still fail. Child issues own focused loader and adapter tests; reuse that evidence rather than duplicating each test here.

Inspect the published CLI and worker builds for bundled catalog templates. Confirm that repository authoring scripts still use local definitions. Reuse #272's deployed endpoint evidence and repeat it if a later deployment changes the relevant behavior.

Record compressed response size, request and parse time without a cache, and CLI and worker bundle changes. Do not turn unmeasured performance targets into release requirements.

Done when

  • All five child deliverables are complete, with links to their implementation and validation evidence.
  • The same catalog and inputs produce matching Blueprint and generated file results through the CLI and browser workflows.
  • End-to-end tests demonstrate cache fallback, failure without a usable cache, invalid-document refusal, and a compatible content update.
  • Production artifacts exclude authoring templates, and generated projects contain no catalog payload or version pin.
  • Real endpoints supply JSON, conditional-request behavior, required CORS headers, and genuine 404 responses before dependent clients ship.
  • User documentation, agent guidance, and affected generated CLI reference pages describe the new behavior. Update OKF to distinguish implemented behavior from the accepted decision.
  • The release record includes endpoint readiness, rollback instructions, and the measurements described here.

Dependencies and exclusions

Blocked by #272, #273, and #274. #249 and #271 are also child prerequisites through that chain. Keep #180 and #181 as coordination work, not whole-refactor blockers. #250 is already closed. Generated workspace artifacts in #252 and compiled profiles in #254 remain separate.

Do not add runtime architecture, a catalog version archive, VFS transport, or community features here. Route defects found during these checks to the owning child issue. Follow the normal deployment and release process.

Validate

Run bun format, bun lint, bun run type-check, affected bun run test --filter=<workspace> commands, and production builds. Never use bun test. Run host smoke tests in temporary repositories and remove them with trap ... EXIT. Report local tests, clean-checkout checks, and deployed checks separately.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions