Skip to content

feat(registry): describe Ferriki's Rust crate and Vite build-time macros, mark it beta - #103

Merged
swernerx merged 3 commits into
mainfrom
claude/issue-improvement-suggestions-0xl6hr
Oct 4, 2026
Merged

swernerx merged 3 commits into
mainfrom
claude/issue-improvement-suggestions-0xl6hr

Conversation

@swernerx

@swernerx swernerx commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

Summary

Ferriki's registry entry describes the product as it ships now: one native engine used from Node.js, from Rust (the ferriki crate, used natively by Ferromark) and at build time through the Vite macros; status moves from alpha to beta. The registry also learns that a member's package can carry another name on a registry: Ferriki publishes @ferriki/core on npm, and the stats refresh and live figures looked for the unpublished ferriki, so the family page showed Ferriki at v0.3.0 and "Git". Part of the Ferriki relaunch of its README and homepage (sebastian-software/ferriki, release 0.12 follows).

Changes

  • packages/family/src/family.ts, ferriki: does names the three ways to use it; audience adds component libraries; proof keeps the successor register (Shiki honored, engine moved to native Rust without WebAssembly or regex translation, usable from Rust, a Vite build ships HTML instead of a highlighter); evidence is "Mirrored Shiki test suite · ahead of Shiki in HTML throughput" (qualitative, as the family rule requires); status: "beta"; fallback version 0.11.0; packages: { npm: "@ferriki/core" }. job, what, relations and links are unchanged, so the generated Markdown frames and the sibling README family blocks do not change.
  • FamilyTool.packages (optional, by registry) and packageName(tool, "crates" | "npm"), both exported. Every registry lookup goes through it: the stats refresh on crates.io and npm including the ownership check (scripts/registry-ownership.mjs lookupNames), liveRequestFor, and the metrics document. Snapshot and live facts stay keyed by member (byMember), so no component changes. GitHub releases are still looked up by member name.
  • npm's bulk downloads endpoint does not accept scoped packages, so a scoped package gets its own downloads request; unscoped names keep sharing one.
  • Public API change of the package: a sibling calling liveRequestFor or fetchLiveRegistry directly now receives @ferriki/core instead of ferriki.
  • ADR-0006: amendment 2026-10-04 (override, scoped downloads), the Git-only line now names ferrolex alone, index status updated. Package README documents packages and packageName.
  • app/data/registry-stats.json refreshed (chore(data) commit): Ferriki now carries crate 0.11.0, npm 0.11.0 and release 0.11.0. npm's downloads API and the GitHub releases of dalo and ardo were unreachable from this environment, so those values carried forward; the deploy's own refresh fills them.
  • packages/family/dist rebuilt (committed dist, ADR-0007).
  • Tests: scripts/registry-ownership.test.mjs (Ferriki under crate ferriki and npm @ferriki/core, per-registry fallback) and packages/family/test/registry-facts.test.mjs (live request asks for @ferriki/core, metrics document ignores an unscoped ferriki, scoped downloads request, facts land on the member).

Decisions

  • An override is set only where the registry's package provably carries another name; today that is Ferriki's npm package alone. Palamedes publishes about twenty @palamedes/* packages and holds the unscoped name as a placeholder; with no single package standing for it, it gets none (the family site shows no release facts for applications anyway).
  • Per-member check of crates.io and npm: ferroni, ferromark, ferrocat, ferralk, ferrugo, dalo and ardo are published under their own names or deliberately absent; ferrolex stays Git-only.

Validation

  • lint, format:check, typecheck, build (prerender and rendered link check): pass. pnpm agent:check as one command needs mise, which is unavailable in this environment; the steps were run individually.
  • Node tests 107/107; theme:check (no Markdown frame changed); node scripts/check-committed-dist.mjs; README check and Markdown link check with the lockfile-pinned mdtheme 0.4.0 and lychee 0.24.2 (checksums match mise.lock): pass.
  • pnpm verify:package (npm and Git routes): pass.
  • pnpm review (headless Chromium, with --no-sandbox because the container runs as root): 130 checks, 0 failed. The local build shows the Ferriki row as "Release v0.11.0 · Published on crates.io · npm".

Issue

Refs sebastian-software/ferriki#216 (the measurements behind the new wording) and the Ferriki relaunch; no Ferramenta issue exists for this change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DXa29GcNynhav2UD8xw6o6

claude added 3 commits October 4, 2026 21:36
…ros, mark it beta

Ferriki now ships as a Rust crate and an npm package on one native
engine, and adds build-time macros for Vite. The registry entry says so:
`does` names the three ways to use it (Node.js, Rust, a Vite build),
`audience` adds component libraries, `proof` keeps the successor
register (Shiki honored, the engine moved to native Rust, why), and
`evidence` adds the qualitative throughput result next to the mirrored
Shiki test suite. Status moves from alpha to beta; the fallback version
follows the current release.

`job`, `what`, links and relations are unchanged, so the generated
Markdown frames and every sibling's README family block stay as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXa29GcNynhav2UD8xw6o6
A member's package does not always carry the member's name: Ferriki's
npm package is `@ferriki/core`, while the unscoped `ferriki` on npm is an
unpublished name, so the stats refresh recorded Ferriki without npm.

The registry entry may now name its published packages by registry
(`packages: { npm: "@ferriki/core" }`), and `packageName(tool, registry)`
resolves the override or falls back to `name`. The stats refresh
(crates.io, npm and their ownership checks), the live request
(`liveRequestFor`) and the metrics document lookup all go through it;
snapshot and live facts stay keyed by member. npm's bulk downloads
endpoint takes no scoped package, so a scoped one gets a request of its
own. ADR-0006 records the override and no longer lists Ferriki as
Git-only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXa29GcNynhav2UD8xw6o6
Snapshot from today's crates.io, npm and GitHub releases, with members
looked up under their published package names: Ferriki now carries its
crate and its npm package `@ferriki/core`, and its latest release.

Not every lookup answered. npm's downloads API was unreachable, so monthly
downloads kept their previous values (zero for the newly found
`@ferriki/core` and `ardo`). The GitHub releases of dalo and ardo were
refused, so they kept their previous value (none).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXa29GcNynhav2UD8xw6o6
@swernerx
swernerx marked this pull request as ready for review October 4, 2026 22:00
@swernerx
swernerx requested a review from a team as a code owner October 4, 2026 22:00
@swernerx
swernerx merged commit ac62a60 into main Oct 4, 2026
1 check passed
@swernerx
swernerx deleted the claude/issue-improvement-suggestions-0xl6hr branch October 4, 2026 22:00
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