Skip to content

Ferrum Foundry v0.5.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 18:55
· 47 commits to main since this release
ebd09e8

Ferrum Foundry v0.5.2

Foundry v0.5.2 pairs with published Ferrum Edge v0.9.13 and canonical
contracts-edge-0.9.13. Hosted qualification evidence is recorded in the
compatibility record;
the published image digest is listed under Docker below.

This release moves the development and CI pin to published Ferrum Edge
v0.9.13, adopts the existing canonical contract scope at
contracts-edge-0.9.13, and ships the source merged since v0.5.1, including
the initial untagged-write refusal for guarded editor writes. It changes no
runtime profile or authority tier.

Qualified pairing

Foundry v0.5.2; previous release v0.5.1; image digest and source commit under Docker below
Ferrum Edge Ferrum Edge v0.9.13, ferrumedge/ferrum-edge@sha256:6caa0987adb4c0a3a368fcd800bb0459cff3d3e219522e2e9c56280205862e50, commit 9b83115de7ec23ab51ec4feae6bed65e596db425
Edge platform manifests linux/amd64 sha256:03822d924b7919d07a840baf757d016f2f05c8df8a8d0455a2eebae917aae2cc; linux/arm64 sha256:a628f8fc12c916793b96ba111c2bf4360ea84981b8bf766254b47c6140c02a80
Upstream distribution evidence Edge release run 37483752754, all 20 jobs successful; published release 404961860 at 2026-10-06 17:04:49 UTC
Canonical contracts contracts-edge-0.9.13, commit 9626821eb089c71f5d4d71268c7b8276a8a5ab50, release 405002564 at 2026-10-06 17:58:52 UTC
Foundry qualification Hosted run, attempt, source and tested merge recorded in the qualification object of docs/compatibility.json
Qualified support Existing SQLite database mode, writable and read-only, trusted-proxy starter, viewer/operator/admin, Chromium, Node 22/24 gates and amd64/arm64 Container Gates

The unchanged Edge contracts retain ferrum-edge#5661 resource ETag/If-Match
handling and ferrum-edge#5726 proxy-scoped plugin configuration filtering.
The default Docker Hub image's ferrum-edge and ferrum-cni binaries match
the published release assets on both architectures. Binary hashes, OpenAPI
identity and registry verification limits are recorded in
compatibility.
Anonymous GHCR access and an Edge OCI revision label are not claimed.

Changes since v0.5.1

  • Edge v0.9.13 admin changes. Edge now fences stored spec and binary
    content in conditional backup tags and deployment-v1 tokens by SHA-256 and
    length; every tag issued by v0.9.12 or earlier fails closed with 412.
    GET /deployment-snapshot adds api_spec_contents, one base64 copy of every
    stored spec document, so it stays secret-complete. The browser-facing BFF
    keeps refusing it for every method and role with
    403 FERRUM_BFF_CREDENTIAL_READ_DENIED before capacity admission, JWT
    signing or upstream fetch.
  • Conditional snapshot 507. Edge v0.9.13 refuses an over-bound
    conditional backup, tagged restore or deployment mutation with a
    deterministic 507 Insufficient Storage, applying nothing. Foundry issues
    none of these requests. A raw request through the BFF gets the gateway's
    status and body unchanged, and its long-read or upload permit is released.
  • Guarded writes need a strong initial ETag (#542, #544).
    Guarded proxy, upstream (including targets), consumer (including ACL) and MCP
    policy replacements and detail deletes refuse an initial fresh verification
    read without one nonempty quoted visible-ASCII strong ETag, before any
    PUT or DELETE. Drafts are kept and no content conflict is claimed. This
    removes v0.5.1's initial unconditional fallback for these operations on
    older or database-less gateways and cached reads. Explicit unguarded calls,
    low-level helpers and plugin membership plans keep their semantics; the
    post-412 untagged refusal is unchanged.
  • Service-manifest preview loads lazily (#555). A missing vendored schema
    or an unrecognized keyword disables only /api/service-manifest/preview with
    a controlled 503, logged once, while the rest of the BFF starts. Backup
    downloads revoke their object URL on the next tick, so a large export can
    begin first.
  • Pins and contracts. Starter, development command and current record use
    the same published Edge digest. Package and lockfile root versions are 0.5.2;
    dependency patch/minor bumps (#551, #553) leave Node floors unchanged. The
    same 18 contract files are downloaded byte-exact from canonical commit
    9626821eb089c71f5d4d71268c7b8276a8a5ab50 after main Validate contracts run
    37507648793 succeeded. Only the vocabularies' Edge provenance and the
    complete canonical invalid expectations change; the latter versions the
    deployment-snapshot and backend-egress-policy negatives without Foundry
    adopting those schemas. Plugin entries, provisioning values, manifest schema
    and all 12 fixtures are unchanged. Shared status remains EXISTING/implemented
    at Alloy owner 81cbb; Alloy stays unpublished.
  • Plugin sensitivity and guided schemas. Edge adds no plugin, and its
    projection source is byte-identical to v0.9.12, so the sensitivity table is
    unchanged and its provenance names the v0.9.13 source. All five guided schema
    blocks are byte-identical at v0.9.13, and the reviewed schema ref moves to
    that source from the reviewed hosted producer export; hashes, descriptors,
    catalog, templates, secret handling and unmodelled-value preservation are
    unchanged. Schema provenance
    records the review.

Known limits

This release adds no conditional backup or restore, native deployment
workflow, recovery journal, backend egress policy reader, capability or browser
retention guarantee. #547 account-level immutability decisions remain pending.

No advisory closure or unrelated upstream approval is implied. Edge v0.9.13
only partially addresses ferrum-edge#6008. Existing best-effort/unqualified
modes, eBPF variants, real-gateway scale limits and browser limits remain
unchanged.

Publication and deployment

Deploy Foundry v0.5.2 against the paired Ferrum Edge v0.9.13 image,
ferrumedge/ferrum-edge@sha256:6caa0987adb4c0a3a368fcd800bb0459cff3d3e219522e2e9c56280205862e50.
In production, pin the released Foundry multi-architecture index digest listed
under Docker below rather than a mutable tag. The starter's default :main
remains the development channel. Versioned v0.5.1, v0.5.0 and v0.4.0 notes and
records remain byte-for-byte unchanged. Their source, image and CI evidence are
historical; published version tags must never move.

Docker

docker pull ferrumedge/ferrum-foundry:v0.5.2
docker pull ghcr.io/ferrum-edge/ferrum-foundry:v0.5.2

Both tags name the multi-architecture index sha256:b1728fdc0694a195e2a21e7666ca09dd0cf9205c81041cc963b0e104750ce79a, built from
commit ebd09e8d82f773b6840b1edda67fbac287c3f7a0. Release version tags are never reassigned; pin
the digest for byte-identical deployments:

docker pull ferrumedge/ferrum-foundry@sha256:b1728fdc0694a195e2a21e7666ca09dd0cf9205c81041cc963b0e104750ce79a

Production quick start

Run Foundry only behind an identity-aware reverse proxy that removes
client-supplied identity headers and injects the trusted proxy proof:

export FERRUM_JWT_SECRET=$(openssl rand -hex 32)
export FERRUM_TRUSTED_PROXY_SECRET=$(openssl rand -hex 32)

docker run \
  -e FERRUM_ADMIN_URL=https://your-gateway:9443 \
  -e FERRUM_JWT_SECRET \
  -e FERRUM_AUTH_MODE=trusted-proxy \
  -e FERRUM_TRUSTED_PROXY_SECRET \
  -p 127.0.0.1:8080:8080 \
  ferrumedge/ferrum-foundry:v0.5.2

Configure the proxy to send X-Ferrum-Auth-Secret,
X-Forwarded-User, X-Ferrum-Role, and exact
X-Ferrum-Namespaces grants. See
Production authentication.