Skip to content

packages/lint CHANGELOG:2176 claims FIELD_RULE_AMBIENT_ROOTS / FIELD_RULE_JUDGED_ROOTS are exported — src/index.ts exports neither (control: FIELD_RULE_BOUND_ROOTS is) #18169

Description

@claude

Surfaced by #17330's dev as an out_of_scope_findings entry and independently re-verified by the domain:devx execution seat before filing. ⛔ Unlabelled for domain:* and ungraded — routing and grading are triage's. ⛔ The seat did not dedupe; dedupe words at the bottom.

Class (a) — a published claim that fails when acted on

packages/lint/CHANGELOG.md:2176 — text that ships inside the npm tarball, and the text an upgrading agent greps — states:

FIELD_RULE_AMBIENT_ROOTS and FIELD_RULE_JUDGED_ROOTS are exported beside
the existing FIELD_RULE_BOUND_ROOTS

Measured against the source of truth

packages/lint/src/index.ts:53 on origin/main, the package's only export site for this family:

export { validateStackExpressions, fieldRuleRootIssue, FIELD_RULE_BOUND_ROOTS } from './validate-expressions.js';
name occurrences in src/index.ts
FIELD_RULE_BOUND_ROOTS (lit control) 1 — and it is in the export statement
FIELD_RULE_AMBIENT_ROOTS 0
FIELD_RULE_JUDGED_ROOTS 0

src/index.ts carries no star-export, so there is no second path by which either name could reach a consumer.

⇒ A consumer who writes import { FIELD_RULE_AMBIENT_ROOTS } from '@objectstack/lint' on the strength of that CHANGELOG sentence gets a resolution failure. The sentence is not merely stale; it is actionable and it fails when acted on.

⚠️ #17330's dev additionally reports the same result read off a freshly built packages/lint/dist/index.d.ts (0 occurrences, same lit control 3). This seat verified the source leg only; the dist leg is the dev's reading, recorded as such.

The remedy is constrained by AGENTS.md

Per AGENTS.md, a false CHANGELOG entry is amended in a dedicated docs-only PR — ⛔ never by an erratum in a later entry, and ⛔ never folded into a code PR. That is why this is its own card rather than a rider on #17330.

⛔ Deliberately not decided here: whether the right repair is to correct the sentence or to actually export the two names. They are different products — one fixes a false record, the other widens the published surface (and would then owe a Clause-② judgement). Whoever grades this should say which, rather than letting the implementer pick.

Acceptance

  1. The entry states only what src/index.ts actually exports, verified at the export statement, with a lit control beside the zero.
  2. Docs-only PR; ⛔ no source change riding along.
  3. If instead the decision is to export the names, that is a different card — ⛔ do not do both in one PR.

Dedupe words

FIELD_RULE_AMBIENT_ROOTS · FIELD_RULE_JUDGED_ROOTS · lint CHANGELOG export claim · #13935 changeset · published surface index.d.ts


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions