feat(cli): convert the CLI and Python surface to Sync HTTP API clients - #199
Conversation
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: GPT-5.6 Sol <noreply@openai.com>
Agentic review recordEnvelope: the accepted HTTP client conversion envelope §16 restack addendum (independent readiness review: SEND BACK → corrected → READY, GPT-5.6 Sol; three contract decisions accepted by Blake Ellis 2026-09-01). Implementation: GPT-5.6 Sol; 7 evidence commits restacked onto Independent complete-diff review: Claude Opus 5, different model family, no implementer transcript. First pass over Corrections: one batched round ( Exact-head gates at Disclosed manifest delta: Seat: lead-developer |
|
Important Review skippedToo many files! This PR contains 129 files, which is 29 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (129)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying infrahub-sync with
|
| Latest commit: |
a25ed21
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://bf60d0bc.infrahub-sync.pages.dev |
| Branch Preview URL: | https://feature-client-cli-conversio.infrahub-sync.pages.dev |
The tutorial's macOS serve guidance uses the standard networking term. Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rich force-enables color on CI runners, splitting option tokens with escape sequences so presence checks fail and absence checks pass vacuously. Seat: lead-developer Assignment: cli-conversion-restack Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
The CLI and public Python surface become clients of the Sync HTTP API. Every command reaches the
service through one shared
SyncClient; the CLI no longer opens a product store, loads anadapter, resolves an execution credential, or invokes the internal execution core. This restacks
the previously reviewed conversion (evidence head
04b51b3) onto the merged runtime-model base,which resolved the sequencing stop that blocked its first publication: the worker now builds model
classes at runtime, so removing
generateno longer strands it.Before and after
Key changes
configscommand group (register, version, list, show, versions, validate) over theshipped configuration routes; run verbs
diff,sync,applycreate and follow service runs.listandgenerateand all standalone-only execution options are removed;runs planreplaces
diff --from-planas the supported re-review path.(
apply failed: PlanSchemaChangedError) with a recovery hint for schema drift;runs planshows a registered plan's recorded
schema_fingerprint.wait_for_runaccepts an optionalon_observationcallback (caller-owned failure semantics)so interrupted waits report the last observed state.
equivalence suite; generated-file banners are neutral and name no command.
pyyamljoins the base dependency set (the CLI reads YAML/JSON package filesat its input boundary); HTTPX remains the only HTTP client runtime dependency.
User-visible behavior and limits
Every removed option is listed in the migration table in the docs; no removed option is silently
translated into new server behavior. The CLI reads the API token from the environment only. List
routes expose no pagination arguments yet. CLI cancellation is out of scope.
Validation
At final HEAD
7fe4f7555a243ed569e2ac70454d3521bad25e04:uv run invoke format/uv run invoke lint— cleanuv run pytest -q—3278 passed, 23 skipped, 1 xfailedconfigs,runs plan,diff,sync,applyuv run invoke docs.generateanddocs.docusaurus— cleanas a PR comment
manifest rows (focused suites)
🤖 Generated with Claude Code