Skip to content

Prepares the 0.6.0 release - #204

Merged
johnnyt merged 4 commits into
mainfrom
pts-h572-release-0-6-0
Oct 4, 2026
Merged

johnnyt merged 4 commits into
mainfrom
pts-h572-release-0-6-0

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 4, 2026

Copy link
Copy Markdown
Member

Prepares the @riddler/predicator 0.6.0 release: three fragment wording edits, then the version bump, the changelog promotion and the README install pin, worked by hand from .claude/wurk/release.md (the kit's release recipe does not implement kind: npm). A minor, decided by the conductor under a standing consent, 2026-10-03.

Commits

Three fragment edits ride their own commits ahead of the release commit, so the promoted bullets carry their wording byte for byte. Each touches only one file under changelog.d/, which is neither TypeScript nor a gated path, so each has no gate of its own; the release commit's gate covers the tree they leave.

  • Names the forged float's path-segment detail (changelog.d/pts-ztsx.md): a forged float whose field is not finite, used as a contextPut path segment, is carried in the error's details as the absence, where it was carried as itself; the location text and the message are unchanged. The details read a segment through the value boundary (segmentValue in src/location.ts), which now refuses such an object (fromHost in src/values.ts).
  • Names the ordering that answered the absence (changelog.d/pts-5u1q.md): an ordering that reaches a date member against a datetime member puts the date member first where it ordered the two by instant "or answered the absence".
  • Scopes the integer rendering to outside a duration (changelog.d/pts-7w7e.md): the rendering-as-written bullet is scoped to an integer literal outside a duration. A duration's component past the safe bound still renders rounded on this head (holds == 99999999999999999999d decompiles as holds == 100000000000000000000d); a follow-up covers it.
  • Prepares the 0.6.0 release: the release commit below.

Provenance: the acceptance's "no other file changed" is scoped to the release commit, with the fragment edits in their own commits ahead of it, decided by the conductor under a standing consent, 2026-10-04.

What the release commit changes

Exactly the four kinds of file the release extension's table names, and no other:

  • package.json: "version" 0.5.0 -> 0.6.0, nothing else.
  • CHANGELOG.md: a new ## [0.6.0] 2026-10-04 section directly above 0.5.0's, dated from date +%F on the machine cutting the prep (the operator's local date), with a short lead paragraph, then ### Added, ### Changed and ### Fixed in that order, each fragment's bullet carried byte for byte in fragment-name order within its heading. No link-reference line.
  • changelog.d/: every fragment deleted (pts-1wd, pts-50hb, pts-5u1q, pts-5uod, pts-7w7e, pts-9jds, pts-av9e, pts-r69a, pts-ztsx); the directory keeps only its README.md.
  • README.md: the install pin pnpm add @riddler/predicator@^0.5.0 -> ^0.6.0.

The closed-set question

Read: every promoted fragment, and git log v0.5.0..6a6ce6d -- src/, which lists these commits (oldest first here).

  • 18c7d54 Answers a revoked proxy segment as a value
  • 6fc34ab Refuses a float whose field is not finite
  • f631424 Bounds the projection and JSON walks by places
  • dffa83a Names a host Date a datetime in typeName
  • 266719d Fixes the article in two location refusals
  • 9763206 Tells a date member from a datetime member
  • 08a74f1 Orders a null list member as the reference does
  • c901cc0 Renders an out-of-range integer as written
  • b8c02e1 Computes the exact-places bound from the table
  • 9a2fb80 Exports evaluateTagged's result type by name

New members of a closed vocabulary. One: ProjectedEvaluation, a type export on ./tagged (the export type { ProjectedEvaluation } re-export in src/tagged.ts, pinned in test/export-surface.json). No reason union, type-name union or other export gains a member: src/errors.ts is unchanged in the range, no type ... = union line changes anywhere under src/, and the reasons the changed answers use (place_budget_exceeded, non_finite_number, not_a_container, invalid_index) each already appear under src/ at v0.5.0. typeName's new answer for a host Date is "datetime", an existing member.

Removed or renamed public names. None. git diff v0.5.0..6a6ce6d -- test/export-surface.json adds ProjectedEvaluation and removes nothing. Read independently through the TypeScript checker's module exports: the main entry (src/index.ts) exports the same names at v0.5.0 and at this base, and ./tagged (src/tagged.ts) exports the same names plus ProjectedEvaluation. The package's exports map has the same two entries.

The census of changed answers. Every Changed or Fixed bullet maps to a census line; none falls outside it.

  • pts-50hb (Fixed): contextPut with a revoked proxy as a path segment answers a LocationError value where it threw.
  • pts-9jds (Fixed): refusal-message articles.
  • pts-ztsx (Changed): a forged float whose field is not finite is refused at the boundary with non_finite_number; only a forged instance sees it, the path-segment detail included.
  • pts-av9e (Changed): the plain projection and the JSON builtin refuse past the place budget.
  • pts-5u1q (Changed): nested date and datetime members compare as the reference does at v9.4.2, with the precision rows declared (matching the reference ruled by the operator, 2026-10-03).
  • pts-5uod (Changed): list ordering over a member holding the null value answers a boolean as the reference does (the same ruling).
  • pts-7w7e (Changed): decompile of an out-of-range integer literal matches the reference's rendering; the decimal half is declared.
  • pts-1wd (Changed): a host Date's typeName answers "datetime", and the JSON builtin's refusal for a literal host Date names a datetime (added to the census, ruled by the operator, 2026-10-04).

pts-r69a is the one Added bullet and changes no answer.

Evidence

  • The full gate (mise exec -- pnpm run gate) ran green on the release commit's exact tree under node v24.21.0: typecheck, lint, engine neutrality, the suite with coverage (43 files, 4113 tests passed), corpus:check, record cites, the build, the cross-entry identity check and the legacy-resolution check. The commit was made from that staged tree, unchanged, with the repo's gate lock and a machine slot held across the run and the commit.
  • npm pack --dry-run ran the publish guard through prepack: every property passed ("the output was built from this tree and is packable") and npm listed 50 files for @riddler/predicator@0.6.0, the same count as 0.5.0. Nothing was written to the registry.

Not done here

The merge, the annotated v0.6.0 tag at the merge commit, and npm publish follow this PR and are not part of it; the publish is the operator's.

The fragment for the forged non-finite float refusal named the new
refusals but not one more answer only such an object sees: used as a
contextPut path segment, it is now carried in the error's details as
the absence, where it was carried as itself, because the details read
the segment through the value boundary that now refuses it. The
location text and the message are unchanged. One clause is added to
the fragment ahead of the 0.6.0 promotion, so the promoted bullet
carries it.

The change touches no TypeScript and no gated path, so it has no gate
to run.

Refs: pts-h572
The fragment for the date-against-datetime member change said an
ordering that reaches such a pair now puts the date member first where
it ordered the two by instant. Some such orderings answered the
absence instead: a pair at the same instant was stepped past as equal
and a later member that does not order decided the answer. Those now
answer a boolean too, as the reference does. The fragment says so,
ahead of the 0.6.0 promotion, so the promoted bullet carries it.

The change touches no TypeScript and no gated path, so it has no gate
to run.

Refs: pts-h572
The fragment for the out-of-range integer rendering said an integer
literal past the safe-integer bound now decompiles with the digits it
was written with. That holds for an integer literal outside a
duration; a duration's component past the bound still renders the
host's rounded value (holds == 99999999999999999999d decompiles as
holds == 100000000000000000000d on this head), which a follow-up
covers. The fragment is scoped to match, ahead of the 0.6.0 promotion,
so the promoted bullet carries it.

The change touches no TypeScript and no gated path, so it has no gate
to run.

Refs: pts-h572
A minor: ProjectedEvaluation is new on the ./tagged subpath, naming
what evaluateTagged answers, and some answers change, each named in a
Changed or Fixed bullet: a host Date's type name, a date member
against a datetime member, a list ordering over a member holding the
null value, the rendering of an out-of-range integer literal outside a
duration, the place budget on the plain projection and the JSON
builtin, the boundary refusal of a forged non-finite float, a revoked
proxy as a contextPut path segment, and the article in two location
refusal messages. No public name is removed or renamed.

The version moves in package.json, its only carrier. Every changelog
fragment is promoted byte for byte under a 0.6.0 section dated from
the local clock and placed above 0.5.0's, grouped under Added,
Changed and Fixed in that order and in fragment-name order within
each, and is deleted here; changelog.d keeps only its README. The
README's install pin moves to the new version. Those are every file a
release commit here may touch.

Run: the full pnpm gate green on this exact tree under node v24.21.0,
and npm pack --dry-run built through the publish guard, which passed
all three of its properties and listed 50 files for
@riddler/predicator@0.6.0.

The tag and the publish are not done here.

Refs: pts-h572
@johnnyt
johnnyt merged commit 7c93e9c into main Oct 4, 2026
1 check passed
@johnnyt
johnnyt deleted the pts-h572-release-0-6-0 branch October 4, 2026 20:05
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