Skip to content

v1.8.0 — a description is not a directive

Choose a tag to compare

@ojassug ojassug released this 23 Sep 18:49
· 42 commits to main since this release
375e1ea

R2 and R3 of the road to v2.0 reach the registry, together. R2 stops the constraint gate firing
on descriptive comments and adds a per-file latency instrument. R3 adds the ParserAdapter seam and
an opt-in Deep path behind --engine-mode deep. Neither was released on its own, so upgrading from
1.7.4 delivers both.

What changes behaviour

  • More files reduce instead of falling back. A present-tense descriptive never/always is
    no longer read as a directive, as in // Should never happen, but we ... or never returns.
    The constraint gate therefore stops refusing the files that carry one. Over the frozen corpus,
    10 files that fell back now reduce, with 0 new fallbacks. Paired over the 507 rows that
    reduce in both arms, none changed a byte. A modal still fires on purpose: should never call this instructs. (DECISIONS §77)
  • Every trace carries a new parserCoverage block, the default fast path included
    (mode: "fast", registeredLanguages: [], backendAnswered: 0). Anything that parses the trace
    strictly sees a new field.
  • --engine-mode fast|deep is new on optimize. fast is the default and is what ran before.
    deep needs the companion package tokendamper-deep, which is not published until R4. From
    the npm package, --engine-mode deep therefore exits 1 with an error naming what it tried; it
    never falls back to Fast. Its "build it first" hint applies to a repository checkout, where
    deep mode runs once the workspace is installed and packages/deep is built. Measured there, it
    reduces Python more than Fast (17.75% → 22.26% on the frozen corpus) and TypeScript about the
    same. (DECISIONS §79–§81)

Also

  • A load-sensitive Gateway test is fixed. Its time-to-first-byte budget sat inside the
    distribution of its own first byte under load; the change is test-only.
  • The per-file latency harness (§76) and a corpus-recipe update, both under tools/, which the
    package does not ship.

Full detail, with the measurements, is in CHANGELOG.md.

On the version number

A minor, because the default path's output moves (§77). The same command over the same input emits
different bytes, which is this project's threshold for one (DECISIONS §53). Nothing was removed.

npm view tokendamper version is what says whether this has reached the registry — the tag does
not.
The publish is a separate, 2FA-gated step.