Skip to content

fix: Font Face + Other stability cases + Trusted Publishing - #78

Merged
codecaaron merged 8 commits into
mainfrom
fix/ani-ledger-batch-1
Aug 4, 2026
Merged

fix: Font Face + Other stability cases + Trusted Publishing#78
codecaaron merged 8 commits into
mainfrom
fix/ani-ledger-batch-1

Conversation

@codecaaron

Copy link
Copy Markdown
Owner

No description provided.

codecaaron and others added 8 commits August 3, 2026 20:06
…nresolvable asComponent

asComponent(Link as React.ComponentType) and asElement('div' as const) now
extract like their bare forms (TS as/satisfies/non-null/paren wrappers are
peeled). A target with no static identifier name bails the chain to the
runtime path with a named reason instead of emitting
createComponent(unknown, ...) - a guaranteed ReferenceError in-browser.

Verified: clippy, hygiene:rust, unit:rust (4 new chain_walk tests), canary,
parity, integration all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… dev lane

New scenario re-roots the fixture theme through src/palette.ts (ds.ts ->
theme.ts -> palette.ts) and proves an edit to the two-hop module alone
triggers the geological reset and lands in the variable CSS. Passing on
current main - the gap was verification, not behavior.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… hotUpdate

registerSystemWatchPaths only registered loader-reported system deps;
externalPackageDirs (workspace DS packages outside the root walk) were never
watched, so their file events never fired and the deletion-pruning path -
which already handles ..-relative cache keys - was never driven. External
dirs now register, including a call after discovery assigns them (both prior
registration points run earlier in the lifecycle). node_modules-installed
packages remain unwatchable (Vite hard-ignores them), matching the
documented system-dependency limitation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
external-package-file-discovery delta: silence is never an outcome. The
shared pipeline gains unresolvableIncludesMessage(); vite buildStart gates
through ctx.enforceIncludeResolution() (strict throws naming every
offending specifier, non-strict warns), runSelfVerify reports unresolvable
alongside empty, and next-plugin applies the same gate in its session.
Verified: build:ts, verify:compile, verify:unit:ts, vite-plugin dependents
claim, next-app owner claim - all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lStyles

global-styles-system delta (ANI-013). FontFace/FontFaceSrc types; the
factory takes an optional { fontFaces } second argument and carries the
descriptors on the block (field omitted when empty - legacy blocks stay
byte-identical). The loader serializes the wrapped { styles, fontFaces }
form; resolve_all_global_blocks accepts wrapped and legacy shapes and
renders font-face blocks AHEAD of selector rules under @layer anm-global.
src urls emit byte-exact (host bundler owns asset resolution); family
resolves through the token vocabulary.
Verified: NAPI + TS builds, compile, types, unit:ts, unit:rust, clippy,
canary, integration - all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… refresh

Audit found ANI-004/005/008 fixtures already present (compose-slot-bail,
duplicate-compose-modules, extension-compounds, compose-default). Added the
two gaps: inline-asserted-targets.tsx (ANI-015 - as-const tag and as-typed
component targets extract like bare forms) and
color-family-pass-through.tsx (ANI-009 - backgroundColor resolves the
semantic token, borderTopColor literal passes through, responsive object
slot emits the sm media query; the array form was corrected to the pinned
object slot form after the first capture showed arrays drop on
pass-through props). One privileged refresh under intent
ani-closeout-fixture-batch-20260803; register cleared after absorption.
Verified: verify:unit:ts, verify:parity green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Release job converts to npm Trusted Publishing: id-token: write,
NODE_AUTH_TOKEN and npm whoami removed, npm >= 11.5.1 floor asserted;
provenance is automatic under OIDC. Owner must register ci.yaml as trusted
publisher for all five packages on npmjs.com before the next tag.
Pack step switches to bun pm pack - the same packer verify:packed proves
on every push (npm pack shipped two release-only bugs in v0.1.2).
Action majors: checkout v7, setup-node v7, upload-artifact v7,
download-artifact v8 (Node 20 deprecation). Receipt uploads fail loud on
showcase/next/packed lanes; verify-vite keeps warn plus an ls diagnostic
until its empty-artifact cause is decided by a real run.
ci-graph pins updated: OIDC permissions + no-token assertion, bun packer
command, new artifact action versions.
Verified: vp run verify:full green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… verify:full now green

Record correction: the previous commit's verify:full claim was wrong - that
run failed on verify:lint (jsx-a11y anchor-has-content in the new
inline-asserted-targets fixture; sibling 137s were vp cancellation). The
asComponent target is now a span; only the unit's code artifact drifted
(CSS and observables unchanged), re-refreshed under the same intent
ani-closeout-fixture-batch-20260803 and the register cleared after
absorption. vp run verify:full exits 0 on this tree.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@codecaaron
codecaaron merged commit 47b2bc0 into main Aug 4, 2026
7 checks passed
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.

1 participant