docs: re-scope the pin claims the 17.3.0 bump left asserting 17.2.0 - #1689
Merged
Conversation
PR #1577 moved all twelve `@objectstack/*` dependencies to 17.3.0 and did not re-scope the comments naming the previous pin. Thirty-three occurrences across twenty-three files still asserted, in the present tense, that 17.2.0 is what this repo pins. This is the third recurrence of the same defect and it is handled the way the first two were ruled: re-scope, do not renumber. A measurement that has not been re-taken cannot be relabelled with a version it was never taken on — renumbering converts a stale claim into a fabricated one, which is strictly worse, because the original text at least dated itself honestly. Fifteen occurrences were RE-MEASURED on 17.3.0 and are written as current readings. The evidence is the nine measurement-pinning test files, which run green on 17.3.0, plus a direct re-read of the quoted engine internals in the installed tree: the readonly strip is still guarded by `if (!opCtx.context?.isSystem)` in `@objectstack/objectql`, and `resolveRunDataContext` in `@objectstack/service-automation` still returns `isSystem: true` for `runAs: 'system'` and only for it. The other eighteen were RE-SCOPED to date themselves honestly: they name the pin the reading was taken on and say plainly that it has not been re-taken since. One re-measurement came back CHANGED and is re-stated rather than carried over: the `@objectstack/objectql` runtime export list is 147 names on 17.3.0 where the 17.2.0 taking counted 103. It is a control for "the list does not carry `installFlatInput`", not a fact the harness depends on, and the load-bearing half is unchanged. Two occurrences were false in a second way. `test/i18n-references.test.ts` claimed the repo pins 17.1.0 — two bumps stale — and read "the KPI labels are not authorable" as a current fact; whether `translatePage` widened on 17.3.0 is now marked unmeasured rather than answered by guess. `src/views/task.view.ts` carried a four-row fixture count that was not re-taken, so those counts are labelled a 17.2.0 reading while the throw/resolve verdict beside them is re-confirmed on the current pin. Of the 89 lines under `src/` `test/` `docs/` naming 17.2.0, 33 carried a present-tense pin claim; the other 56 say only "measured on 17.2.0", are historically true, and are untouched. So are the `.changeset/` entries, which are records of what a past change did. Prose only — no metadata, schema, assertion or behaviour change. Verified mechanically with the repo's own `stripComments()`: the comment-stripped text of all twenty-two changed `.ts` files is byte-identical before and after. Co-authored-by: Claude <noreply@anthropic.com>
The paragraph re-scoped in the previous commit said only that whether `translatePage` widened to `properties.children` on 17.3.0 was unmeasured here. It had in fact been measured: #1639 probed the installed 17.3.0 directly and found the resolver DOES descend a container's declared `properties.children`. So the note now says which half is actually outstanding — this repo's own extraction walk, not the platform — and cites #1639 rather than #1376, which is closed and no longer owns that chain. Still prose only; the comment-stripped text of the file is unchanged. Co-authored-by: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-steve
marked this pull request as ready for review
September 6, 2026 10:50
os-steve
pushed a commit
that referenced
this pull request
Sep 6, 2026
Two reasons, neither of which changes this PR's own scope. 1. The head commit carries a permanently-failed `Check Changeset` run. That run started 7s after the PR was opened; the `skip-changeset` label landed 1s later, but the job had already read a payload without it, so the workflow's `if: !contains(labels, 'skip-changeset')` guard let the job run and it failed 8s after starting. The `labeled` re-run skipped correctly, but the failed run stays attached to that head for ever and no event re-evaluates it. A new head is the only way to clear it without a rebase or a force-push. 2. The base had moved 18 commits since the PR was opened, so the last green `Build and Test` measured a base that no longer exists. One of those 18 touches the surface this brief documents: #1689 re-scoped the pin-claim comment in `src/objects/_hook-api.ts` from "measured on 17.2.0" to "first taken on 17.2.0, re-taken on the current pin 17.3.0". The brief already states 17.3.0, so the merge agrees with it rather than contradicting it. #1675, which gave `count` its own `HookCountQuery`, was already in this branch's history when it was cut and the brief was written against it. The diff against main is unchanged: `.github/instructions/logic.md` plus `.github/instructions/metadata.md`. Co-authored-by: Claude
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1676
Closes #1669
Description
PR #1577 moved all twelve
@objectstack/*dependencies to 17.3.0 and did not re-scope the comments that name the previous pin. This re-scopes every comment that still asserted, in the present tense, that 17.2.0 is what this repo pins.⛔ Not a find-and-replace to 17.3.0. The ruled treatment — recorded in the changeset
pin-claims-rescoped-to-measurement-version.mdand quoted on the card — is re-scope, not renumber: a measurement that has not been re-taken cannot be relabelled with a version it was never taken on, because that converts a stale claim into a fabricated one, which is strictly worse. Each occurrence took one of two routes:⭐ The cross-check the dispatch asked for, and its difference set
Zone 2 item 1 asked for a second, wider search of my own design, because #1467 exists precisely because #1460's own grep was narrower than the defect. The reading is not empty — it is the biggest finding on this card.
The card's grep, re-run in this worktree: 19 hits. Confirmed exactly, though its inline file list totals 18 and undercounts
src/views/task.view.tsas x3 where the grep returns x4.Three searches were run, each wider than the last:
17.2.0undersrc/ test/ docs/, read one by one.Difference set: 14 more occurrences, in 10 more files — all inside the card's own declared
src/ test/ docs/scope. Search 2 was a strict superset of search 1 (nothing the card found was missed), and search 3 found two more that search 2 also missed.The structural reason, which is what #1681 needs: the card's grep is single-line, and this repo hard-wraps prose at about 78 columns. Any claim whose pin-phrase and version number straddle a wrap is invisible to it. Ten of the fourteen are the identical clause
which the regex would match perfectly if
grepdid not stop at the newline. The remaining four escaped for a second reason: they use phrasings the pattern does not list at all —the pin this repo runs,pinned to ... today,the version package.json now pins.test/i18n-references.test.tsassertedthis repo pins 17.1.0— a version the card's grep never searched for, because it anchored on the literal17.2.0. A pin claim naming an even older version is structurally invisible to the whole family of greps used on all three cards. That is a fourth recurrence waiting to happen, and no amount of widening the phrase list would have caught it.⇒ Recommendation for #1681: do not enshrine the card's grep. It under-reported this card's own defect by 42%. A step-5 grep needs to be multi-line, version-agnostic, and treated as a candidate generator whose hits are classified by hand — not as the answer.
The occurrences that are correctly left alone
Of the 89 lines under
src/ test/ docs/naming17.2.0, 33 carried a present-tense pin claim and are re-scoped here. The other 56 say only "measured on 17.2.0" — historically true, and untouched, exactly as ruled.Also deliberately untouched:
.changeset/*.md— several carry present-tense pin language, but a changeset is a record of what a past change did. Rewriting one falsifies history.docs/architecture/module-split-inventory.json— itsplatform_pinfield is inside ageneratedblock stamped with the commit it was generated at, and the file says "Regenerate from the artifact; never hand-edit."AGENTS.md— carries the same false claim (the twin of the_hook-api.ts:50sentence) and is fenced out of this card as a governed surface. Filed separately asAGENTS.mdstill says the pinned@objectstackpackages are 17.2.0 — the same claim #1676 re-scoped everywhere else, in the file agents read first #1688;AGENTS.md→ Platform Upgrades has no step for re-scoping the claims that name the old pin — which is why #1460, #1467 and #1676 are the same card three times #1681 does not cover it, since that card is the prevention half only and edits a different section.Related Issues
Closes #1676
Closes #1669
Refs #1460 - #1467 - #1528 - #1577 - #1681 - #1688 - #1639
Changes Made
src/objects/_hook-api.ts:50— the one occurrence already re-measured on 17.3.0 byHookQuerydeclaresfieldsandtopfor all three read methods, butcountthrows on both #1528. Label moved forward with a note that it was re-checked, per Zone 1 item 4. Read against its current state, after PR fix(hooks): givecountits own query type, measured against the engine #1675 changed the file.test/readonly-write-semantics.test.ts— the absorbed [finding]readonly-write-semantics.test.tssays its measurement is "against the PINNED 17.2.0 in package.json" — package.json now pins 17.3.0 #1669. Its method was inherited, not skipped: the measurement was re-confirmed first, then the label moved. Both engine internals it quotes verbatim were re-read in the installed 17.3.0 tree and still read as quoted.@objectstack/objectqlruntime export list is 147 names on 17.3.0 where the 17.2.0 taking counted 103. It is a control for "the list does not carryinstallFlatInput", not a fact the harness depends on; the load-bearing half is unchanged.test/i18n-references.test.tsalso read "the KPI labels are not authorable" as a current fact and pointed at Upgrade @objectstack/spec to the next published release carrying the #12497 retirement (post-release hygiene) #1376, a card that is no longer open. It now cites the probe on Four KPI tile labels stay English on an otherwise Chinese landing page — the upstream precondition for translating nestedproperties.childrenis met at 17.3.0 #1639, which verified against the installed 17.3.0 thattranslatePagedoes descendproperties.children, and says the outstanding half is this repo's own walk.Testing
pnpm verifyfully green —validate,typecheck,lint,lint:i18n-gate,hygiene,hygiene:tokens,build,test. 161 test files, 3402 passed, 1 skipped, exit 0.stripComments()fromscripts/check-source-token-ratchet.mjs, the comment-stripped text of all 22 changed.tsfiles is byte-identical to their state at the branch point. Noexpect(...)weakened, deleted, rewritten or added; no new gate, no new test.hook-query-predicate,forecast-current-quarter-view,readonly-write-semantics,view-references,undeclared-key-probe,case-create-form-narrowing,harness-lookup-shape,flow-filter-today-token,freeze-guard-reference-cleanup.if (!opCtx.context?.isSystem)in@objectstack/objectql;resolveRunDataContextin@objectstack/service-automationstill returnsisSystem: trueforrunAs: 'system'and only for it;installFlatInputis still absent from the export list and both.d.*files whilewrapDeclarativeHookis still exported.@objectstack/*dependencies inpackage.json, one distinct version,17.3.0; all 12 resolve to 17.3.0 innode_modules.test/files the widening added. The dispatch cleared only the card's six by reading F1 to F6 directly. I read the tables the same way for the new ones:test/helpers/action-sandbox.tsis named in F6 Retire the local hook / action / flow write-shape tests the platform's *-body-write-* and flow-node-write rules already enforce (epic #1579, step 3, family F6) #1587 as staying in this repo ("⛔ do not delete or move them here"),test/i18n-references.test.tsis F5 Retire the local i18n reference test and the severity-promoting i18n gate, once strict covers thei18n/missing-*and translation-target rules (epic #1579, step 3, family F4) #1585 group-A-only, andfreeze-guard-reference-cleanup/sharing-posture-declarationare named in none of the six. Prose-only with zero assertion changes ⇒ HOLDING, on the same basis the dispatch used.'hotcrm': patch. Zone 3 item 2 suggested patch, and Zone 3 is explicitly overridable by measurement: both prior cards in this exact chain shipped empty frontmatter (pin-claims-rescoped-to-measurement-version.md,rc2-pin-claims-rescoped-and-remeasured.md), and this change releases nothing. One line to flip if the PM prefers otherwise./search/*returns 403 for this session, so the mandatory duplicate search ran on MCPsearch_issues— two targeted calls, one of them a known-hit control to validate the empty result. 3 MCP calls total for the run.Checklist
⛔ Draft. Not for auto-merge while the scope deviation in item 1 is unreviewed.
Generated by Claude Code