Skip to content

feat(fctl-plugin): co-release the independent Ledger plugin - #2213

Closed
flemzord wants to merge 3 commits into
release/v3.0from
feat/finalize-ledger-plugin
Closed

flemzord wants to merge 3 commits into
release/v3.0from
feat/finalize-ledger-plugin

Conversation

@flemzord

@flemzord flemzord commented Oct 9, 2026

Copy link
Copy Markdown
Member

Ledger's fctl commands need an independently installable executable now that fctl no longer owns the product implementation. This PR brings the existing product-owned plugin to release/v3.0 under misc/fctl-plugin, preserving the command/form contract, payload validation, page cursors, exact JSON integers, partial bulk results and business errors.

Following Auth #162, fctl-plugin-ledger uses only the public github.com/formancehq/fctl/pkg/pluginsdk boundary and transport.Serve. Offline --manifest and --version report the exact co-released service version and a separate plugin revision. GoReleaser packages Linux/macOS/Windows for amd64/arm64.

Tagged release CI preflights all six executable identities before upload, publishes raw OCI executable layers to ghcr.io/formancehq/fctl-plugin-ledger, and attaches fctl-plugin-catalogue.json generated from the native manifest, actual binary checksums and immutable OCI digests. Publication uses the job token, with isolated registry credentials. Nightly jobs do not perform catalogue publication.

Validation:

  • bash scripts/agent-check and AI_REVIEW_BASE_SHA=8e9bb3ebc13f9235fa20e92fb45018a6f7e91e16 bash scripts/agent-check-pr: PASS. The selector ran full Nix/Just normalization, baseline and complete root-module race tests. No generated drift remains.
  • Plugin race tests and vet/lint, including actual SDK subprocess HTTP brokering, payload/forms/pagination, partial errors and preflight/upload failure cases.
  • Six real GoReleaser snapshot archives and checksums; real ORAS local layouts and catalogue, without hosted publication.
  • Actual fctl executable (c07b2b5 reference) plus actual Ledger plugin against controlled local APIs: install/show, execute, exact integer request/result, partial bulk error, exact-version drift refusal before mutation, offline help and completion.
  • Test recipes allocate a short temporary root and clean it on exit, fixing the macOS Unix socket path limit exposed by the canonical validator.
  • Root and standalone GoReleaser configuration checks; validation-selector race tests; dependency inspection confirms no fctl core, Cobra or Ledger server imports.

First-publication follow-up: review/merge this Draft through normal gates, choose a service tag containing the changes, make the GHCR package Public after first upload, verify anonymous downloads/checksums, then separately promote the six release entries into formancehq/fctl-plugin-registry. The README includes commands and failure/retry behavior. Hosted GHCR permissions and first-release upload remain to be verified by that publication.

No fctl changes, tag creation, release trigger or merge performed.

@NumaryBot NumaryBot added risk: high NumaryBot classified this pull request as high risk. bot-reviewed NumaryBot completed its review workflow for the current head. draft-reviewed NumaryBot reviewed this draft, but published no readiness signal. labels Oct 9, 2026
@flemzord flemzord closed this Oct 12, 2026
@flemzord
flemzord deleted the feat/finalize-ledger-plugin branch October 13, 2026 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot-reviewed NumaryBot completed its review workflow for the current head. draft-reviewed NumaryBot reviewed this draft, but published no readiness signal. risk: high NumaryBot classified this pull request as high risk.

Development

Successfully merging this pull request may close these issues.

2 participants