You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
standards tracks 36 .ncl files — 16 k9 contracts, 20 genuine Nickel.
Measured against the repo's own pinned toolchain, all 20 fail nickel format --check and 5 fail nickel typecheck with real errors (zero of them
skipped for untracked imports — these are genuine failures, not missing inputs).
This is invisible today because ci-pipeline.yml is workflow_call:-only and standards has no self-caller, so the Nickel gate it publishes has never run
against the repo that publishes it. The debt becomes a hard red the moment a
self-caller is added.
Measured
Pinned nickel 1.18.0 (the sha256-verified binary ci-pipeline.yml installs),
run with the #985 gate at edac0d6a:
%{ } is Nickel string interpolation and is only valid inside a string
literal. As written this file has never parsed as Nickel. It reads as if a
templating placeholder was intended.
Bug 2 — record contract written with : instead of | (2 identical copies, md5 244108a5)
present : Bool,
^^^^^^^ error: statically typed field without a definition
Nickel's own diagnostic names the cure: "Did you mean to use | instead of :,
for example when defining a record contract?"
Why this is filed, not fixed
Both are source changes, not configuration, and the standing constraint on
this work is to add and repair pipeline configuration without modifying
existing core logic or source files. The formatting half (20 files) is
mechanical and semantics-preserving — nickel pprint-ast is byte-identical
before and after, proven on 22 files across two other repos — but it is still the
owner's call whether it lands here.
A self-caller for ci-pipeline.yml exists on standards, so the gate this
repo publishes is enforced against this repo. Without it, 1–5 can silently
regress.
Related: #982 (the gate fix, #985), #976 (the denominator bug).
Summary
standardstracks 36.nclfiles — 16 k9 contracts, 20 genuine Nickel.Measured against the repo's own pinned toolchain, all 20 fail
nickel format --checkand 5 failnickel typecheckwith real errors (zero of themskipped for untracked imports — these are genuine failures, not missing inputs).
This is invisible today because
ci-pipeline.ymlisworkflow_call:-only andstandardshas no self-caller, so the Nickel gate it publishes has never runagainst the repo that publishes it. The debt becomes a hard red the moment a
self-caller is added.
Measured
Pinned
nickel 1.18.0(the sha256-verified binaryci-pipeline.ymlinstalls),run with the #985 gate at
edac0d6a:The 5 typecheck failures — 2 distinct bugs, 5 copies
Bug 1 —
%{ … }used outside a string (3 byte-identical copies, md5d7cb1b97)1-formats/a2ml/agentic/ncl/lib/os_detect.ncl1-formats/a2ml/neurosym/ncl/lib/os_detect.nclrhodium-standard-repositories/satellites/rsr-deployer/ncl/lib/os_detect.ncl%{ }is Nickel string interpolation and is only valid inside a stringliteral. As written this file has never parsed as Nickel. It reads as if a
templating placeholder was intended.
Bug 2 — record contract written with
:instead of|(2 identical copies, md5244108a5)rhodium-standard-repositories/satellites/palimpsest-license/config.nclrhodium-standard-repositories/satellites/palimpsest-license/config/config.nclNickel's own diagnostic names the cure: "Did you mean to use
|instead of:,for example when defining a record contract?"
Why this is filed, not fixed
Both are source changes, not configuration, and the standing constraint on
this work is to add and repair pipeline configuration without modifying
existing core logic or source files. The formatting half (20 files) is
mechanical and semantics-preserving —
nickel pprint-astis byte-identicalbefore and after, proven on 22 files across two other repos — but it is still the
owner's call whether it lands here.
Acceptance criteria
os_detect.ncleither parses as Nickel or stops claiming to be Nickel — if itis a template, it should not carry a bare
.nclsuffix that a*.nclglobwill collect. (A suffix is not a format — the same root cause as ci-pipeline.yml Nickel job globs *.k9.ncl and generated-input .ncl: 20 of 29 template files can never pass #982.)
one bug in three places.
config.ncluses|for its record contract, and the 2 copies are reconciled.nickel format --checkpasses over all 20 genuine.ncl.nickel typecheckpasses over all 20, or any exclusion is disclosed by namewith its reason per the ci-pipeline.yml Nickel job globs *.k9.ncl and generated-input .ncl: 20 of 29 template files can never pass #982 acceptance criteria.
ci-pipeline.ymlexists onstandards, so the gate thisrepo publishes is enforced against this repo. Without it, 1–5 can silently
regress.
Related: #982 (the gate fix, #985), #976 (the denominator bug).
🤖 Generated with Claude Code