Repository navigation
docs(plugin-detail): retire the stale strip-mode narration in two spec-parity tests - #5879
Merged
Merged
Conversation
…c-parity tests Both blocks stated strip mode as a present-tense fact about the installed `@objectstack/spec`: an undeclared top-level key parses green and is silently dropped from `data`. The props schemas were closed upstream, so an undeclared key now draws a named `unrecognized_keys` refusal. No assertion depended on the sentence, so it survived the pin bump reading as current. Both now state the pin-independent verdict (an undeclared top-level key is never authoring surface), note that the contract expresses it two ways depending on the installed pin, and point at `specRefusesUnknownTopLevelKeys` in the sibling `recordHighlightsInputs.spec-parity.test.ts` as the behavioural probe. This also settles `recordDetailsInputs` disagreeing with itself: its section-key block was already pin-aware while its top-level block was not. Comment-only. No assertion changed meaning. Part of #4918 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EuPCi56cnGyykygi3z9w4m
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
This was referenced Aug 23, 2026
os-zhuang
marked this pull request as ready for review
August 23, 2026 17:42
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.
Fixes #4918
Comment-only. No assertion changed meaning — every added and removed line in this diff is a
//comment (proof below).Two
plugin-detailspec-parity blocks narrated strip mode as a present-tense fact about the installed@objectstack/spec. The props schemas were closed upstream, so an undeclared top-level key now draws a namedunrecognized_keysrefusal. Because no assertion depended on the sentence, it survived the pin bump reading as current — the exact shape that nearly made a seat implement a no-op once before.Disposition follows the sibling that already models it,
recordHighlightsInputs.spec-parity.test.ts(PR #4671): state the pin-independent verdict, note that the contract expresses it two ways depending on the installed pin, and point atspecRefusesUnknownTopLevelKeysas the behavioural probe instead of narrating a mode as fact.Premise re-measured on today's
origin/mainBoth blocks still narrated strip mode at base
1939c9610, sopremise_still_valid: truefor both halves. Neither had been corrected by anything in flight.Before / after
packages/plugin-detail/src/__tests__/recordRelatedListInputs.spec-parity.test.ts(~line 100)Before:
After:
packages/plugin-detail/src/__tests__/recordDetailsInputs.spec-parity.test.ts(~line 278)Before:
After:
This also settles the card's second observation —
recordDetailsInputsdisagreeing with itself. Its section-key block was already pin-aware and assertsunrecognized_keys; its top-level block forty lines down still narrated strip mode. The two now read consistently, and the top-level block names the section-level probe as its twin.No version literal was written into the new prose: it says "the installed pin", never a number.
The claim is measured, not asserted
Prose-only, so no ablation is available — there is no assertion whose removal could turn anything red, which is precisely why the stale sentence survived. Stating that plainly rather than staging a decorative reverse-verification.
What stands in for it: the new prose makes a behavioural claim, so that claim was probed against the installed pin — an undeclared top-level key fed to each props schema, with a declared-key control that must parse green.
The control is the load-bearing half: a bare "it failed" would also be satisfied by a rejection of the declared keys, which is the half that must stay valid. Both controls parse green, and the refusal names the probe key and only the probe key.
No assertion moved
Verification
All legs below ran against the final commit,
0c28940e6. Heavy legs went through the shared verify lock.Exit codes were captured before any pipe (
cmd > out 2>&1; EXIT=$?; tail out), and each line quoted above is the gate's own printed verdict, not a bare$?.The changeset is empty-frontmatter: comment-only, releases nothing.
Declared lint narrowing
Linted the changed files rather than sweeping the repo (the whole-repo sweep is CI's run, and holding the shared lock for it would starve the queue). The narrowing is measured, with all three pieces:
.changeset/*.mdasFile ignored because no matching configuration was supplied— it is outside the linted population by the config's own account. The 2.tsfiles are in it.--format json: 3 entries returned, 2 linted, 0 errors / 0 warnings on both,ESLINT_EXIT=0.eslint.config.jssets noproject/projectService, so linting is not type-aware — a comment-only edit inside two test files cannot move the verdict on any file it does not touch. Confirmed by grep against the config.Gate re-derivation:
scripts/pm/dispatch-gates.mjsis a framework-repo tool with no objectui counterpart, so the set was re-derived by hand over the actual changed paths — which addedcheck-changeset-fixedandcheck-spec-symbol-derivation(the new prose names spec export symbols) beyond the dispatched list. Both green above.One judgement call left open for the PM
The card and the triage comment both flag it: should the
recordDetailsInputstop-level block also grow a pin-aware probe (specRefusesUnknownTopLevelKeys), rather than only losing the stale sentence? Triage leaned yes. This dispatch was scoped prose-only with an explicit bar on assertion changes, so it is not done here and is reported rather than silently absorbed — a prose card quietly growing an assertion is the shape this repo keeps paying for.Worth knowing for that decision: neither of these two files can borrow the sibling's probe as evidence. Strictness is per schema —
recordDetailsInputssays so itself at its section-level probe — so a real top-level probe here would have to be a new constant per file, roughly the four lines the sibling spends. The new prose is written to stay correct either way: it names the sibling's probe as the shape to copy, not as a reading of these schemas.Generated by Claude Code