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
{{ message }}
Repository navigation
Commit fd289be
Browse filesBrowse the repository at this point in the historyBrowse files
Fifth Rule 3 population (function declarations) widened, censused ids stripped, and the gate states its own scan boundary; hot-reload refusal ids stripped (#13298)
* feat(tooling): fifth population — plain function declarations join Rule 3's sink pass, and the gate states its own scan boundary
The fifth widening (#13156's A half, adjudicated 2026-08-29): a plain
`function` DECLARATION is transparent to the climb exactly when its NAME
is consumed from a recognised customer-facing position — the same narrow
clause as the fourth population, one declaration form over, never an
unconditional crawl of function bodies. Its literals get their own
`functionDeclared` bucket with its own blindness floor, so the
declaration clause rotting cannot hide behind the arrow members.
The C half (shared with the family member card): the gate's output now
prints Rule 3's scan boundary — the root, the not-scanned siblings with
the deferral pointer, and the recognised sink-shape list — derived from
the constants the scan reads, pinned derived-vs-derived in --self-test.
At this commit the widened gate is deliberately RED on the real tree
(reproduce-first): 4 violations — 2 functionDeclared, 2 message via the
new closure into declarations. The strip is the next commit.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KX8wnyjStaZcuMyAMNsy3N
* fix(spec): strip internal tracker ids from function-declaration-built refusal prose, re-pin the twins
The strip half of the fifth-population adjudication (2026-08-29, Class-1),
under the keep-the-ADR-id charter: 17 ids across 8 spec sources — the 15
the broad declaration census finds on current origin/main (materially
fewer than the relayed 47/51/14, measured before today's main moved) plus
the 2 hoisted ruling consts the widened sink closure newly reaches
(SUBMIT_REDIRECT_RULING, FORM_VIEW_FEATURES_RULING). ADR ids, protocol
versions, error codes and ruling dates stay; ids that were the whole
parenthetical take the parenthetical with them; load-bearing internal
references move to adjacent comments.
Twins re-pinned red-then-green, never weakened: 42 assertions across 7
spec test files red before this commit, 607/607 green after, each re-pin
a customer-resolvable anchor from the NEW text plus negative id pins at
the two ruling-const doors. The objectql and service-analytics twins
flagged by the id sweep pin sources OUTSIDE the scanned root and are
deliberately untouched (evidence for the cross-package revival census).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KX8wnyjStaZcuMyAMNsy3N
* fix(core): strip tracker ids from HotReloadManager's author-facing refusal messages, re-pin the twins
The member half of the 2026-08-29 family adjudication: the ruled strip is
the plugin-registration refusal's tracker id (the id the #13151-verified
twins at hot-reload.test.ts:259,302,310 pin); the sibling id in the same
refusal table's watchPatterns entry and in the startWatching() removal
notice is stripped in the same stroke under the bounded same-class
extension — same defect family, same keep-the-ADR-id remedy, same file,
same twin suite, declared in the PR body. ADR-0049, the spec/core
versions and the scheduleReload migration call stay as the
customer-resolvable anchors.
Twins red-then-green, never weakened: 8 assertions red before this
commit (10/18 passing), 18/18 after; each id pin re-pinned to a content
anchor from the NEW text plus negative id pins at all three doors —
mirroring the negative pin the spec-side parse door has carried since its
own strip. Repo-wide section-7 sweep for the stripped id set: the only
other test literal is an expect failure-label, not a content pin.
Root extension of the doc-authoring gate's Rule 3 is deliberately NOT
part of this change (deferred by the adjudication; the gate's new
boundary output is what keeps that deferral visible).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KX8wnyjStaZcuMyAMNsy3N
* test(spec): re-pin the two compose-stacks predicate twins the id sweep's callee filter missed
Found by RUNNING the full mention set rather than trusting the sweep's
expect-callee filter: both pins spell the id check inside a .some()
predicate, so the nearest enclosing call is w.includes, not expect. Same
re-pin discipline — anchored on the warning's own prescription words
(COMPOSE_KEY_DISPOSITIONS / 'cannot be composed'), red-then-green
(2 red in the consumer batch, 35/35 green after), never weakened.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KX8wnyjStaZcuMyAMNsy3N
---------
Co-authored-by: Claude <noreply@anthropic.com>
Customer-facing refusal and warning messages built inside plain `function` declarations (and two hoisted ruling consts) no longer cite internal tracker ids. The teaching stays; customer-resolvable anchors stay — ADR ids, protocol versions, error codes such as `INVALID_FILTER / 400`, and ruling dates — while the `#NNNN` tokens, which resolve to nothing for a refused author, are gone. The doc-authoring gate now recognises function declarations as text sinks (its fifth population, with its own blindness floor) and prints its own scan boundary, so the next boundary move is visible from the gate's output.
`HotReloadManager`'s refusal messages — the plugin-registration doors for retired `stateStrategy` values and removed config keys, and the `startWatching()` removal notice — no longer cite internal tracker ids. The prescriptions keep their customer-resolvable anchors (ADR-0049 enforce-or-remove, the `@objectstack/spec` / `@objectstack/core` versions, and the `scheduleReload` migration call); the `#NNNN` tokens, which resolve to nothing for the host author reading the refusal, are gone.
0 commit comments