Skip to content

fix(spec): correct the offer-set claim in the icon-withdrawal CHANGELOG entry - #15454

Merged
os-sales merged 1 commit into
mainfrom
claude/issue-14407-changelog-select-option-offer-set
Sep 4, 2026
Merged

fix(spec): correct the offer-set claim in the icon-withdrawal CHANGELOG entry#15454
os-sales merged 1 commit into
mainfrom
claude/issue-14407-changelog-select-option-offer-set

Conversation

@os-sales

@os-sales os-sales commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Part of #14407 — not Fixes, because the card was still open for the triage/route decision that this PR's own commit history and the issue thread record; nothing else remains to be done against it after this merges, so the maintainer can close it alongside review.

What changed and why

packages/spec/CHANGELOG.md:6702 (inside the merged ## 17.3.0 entry documenting the object.form options-repeater icon withdrawal, #13671/#14326) claimed the repeater offers "exactly SelectOptionSchema's authorable keys minus visibleWhen". That is false as stated:

  • SelectOptionSchema (packages/spec/src/data/field.zod.ts:287-) declares six authorable keys, none tombstoned: label, value, description, color, default, visibleWhen.
  • The repeater's pinned offer set (field-rows-option-description.test.ts, toEqual(['label', 'value', 'color', 'description'])) is four keys.
  • The unoffered difference is { default, visibleWhen }, not { visibleWhen } alone — default (z.boolean().optional()) is authorable at the publish door and was never offered by the quick-add row.

Both counts were re-measured against source in this PR, not taken on the issue's word.

Route: CHANGELOG.md, not the withdrawn changeset

Triage (issue comment 5510484041) ruled the fix belongs in .changeset/object-form-option-icon-offer-withdrawn.md, while that changeset was still unconsumed on main. By the time this card was picked up, a Version Packages release had folded it (@objectstack/spec is now 17.3.0) — confirmed here independently:

  • git ls-tree origin/main .changeset/ filtered for object-form-option-iconNOT PRESENT (30 total entries in .changeset/, so the absence is measured, not an unreadable path).

The card's own stated fallback covers exactly this case ("or a CHANGELOG correction at the next version if it has already been folded"), so the fix lands at packages/spec/CHANGELOG.md:6702 instead — a docs-only correction of a factual error in an already-published changelog, not a rider on a code change. content/docs/releases/ is untouched (that surface is compiled centrally at release time; this is the package's own changelog, a different file).

What this PR deliberately does NOT do

Per triage: this is not a form change. The options repeater still offers exactly label, value, color, description — whether the quick-add row should also offer default is a separate question with its own ADR-0049 reading, out of scope here.

Verification

Prerequisite check (H1, run before editing): packages/spec/CHANGELOG.md is not regenerated wholesale by any script under scripts/ — it is the standard changesets-appended file (current head section is ## 17.3.0, prepended by each release). The only readers that touch this file (check-release-notes.mjs, check-release-section-coverage.mjs, check-release-page-status.mjs) parse version headers / section coverage, never this sentence's bytes, and no test pins the old sentence text anywhere in the tree. ⇒ hand edit is the correct route.

Gate list derived for this diff (node scripts/pm/dispatch-gates.mjs, re-derived against origin/main after a late fetch — file surface and matched-family list identical both times): 41 commands (34 path-matched + 7 declared whole-tree), all run locally against final commit 1c9c953aa (git rev-parse --short HEAD):

  • 39/41 exit 0.
  • node scripts/check-release-section-coverage.mjs --strict exits 1 — pre-existing, unrelated: it flags content/docs/releases/index.mdx still naming "current series: 17.2.0" after 17.3.0 shipped, a defect this PR's one-sentence edit (which touches no version heading, no content/docs/releases/** file) cannot affect either way. Already tracked at docs(releases): the index's v17 entry still says "current series: 17.2.0" after 17.3.0 shipped — the #10232 / #11649 defect class recurring a third time #15332; not filed here. --strict only runs in release-coverage-patrol.yml's nightly schedule and its pull_request trigger is path-filtered to that script and workflow file only, so it does not gate this PR.
  • pnpm check:dual-build-cjs-loads exits 3 (PREREQUISITE NOT MET ... nothing was measured) — its own self-test (93 cases) passed; the sweep half needs dist/ for all 80 workspace packages, which is CI's Build Core job, not a rebuild this docs-only change owes locally.

Full command list, per-command exit codes, and logs are in the issue-comment report and this session's scratchpad.

Six/four key split and route both independently re-verified — see the issue thread (claim comment) for the measured commands.

skip-changeset: this PR corrects text in an already-published package's changelog and adds no new release content — .github/workflows/pr-automation.yml's own Check Changeset rule ("It releases nothing … apply the 'skip-changeset' label") is the applicable route, applied on this PR immediately per repo convention (not waiting for the check to redden first).


🤖 Generated with Claude Code

https://claude.ai/code/session_01G4138K1EG7kQ81FNba5Kp4


Generated by Claude Code

…OG entry

Part of #14407 — packages/spec/CHANGELOG.md:6702 said the options repeater
offers "exactly SelectOptionSchema's authorable keys minus visibleWhen".
SelectOptionSchema declares six authorable keys (label, value, description,
color, default, visibleWhen); the repeater offers four
(label/value/color/description, pinned by field-rows-option-description.test.ts).
The unoffered set is { default, visibleWhen }, not { visibleWhen } alone.

Text-only correction. No packages/spec/src/** file touched, no accept/reject
behaviour moves, no public surface widens.

The correction lands in CHANGELOG.md rather than the withdrawn .changeset/
entry because a Version Packages release already folded that changeset
(@objectstack/spec is now 17.3.0) between triage's ruling and this pickup.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G4138K1EG7kQ81FNba5Kp4
@os-sales os-sales added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 4, 2026 — with Claude
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 4, 2026
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 1 changed file(s) yielded no anchor (packages/spec/CHANGELOG.md), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/spec/CHANGELOG.md) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.

Coarse fallback — 129 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 6ed4b811af30080854eb94c6bb292e1bd137d356packageMentionDocs.

@os-sales
os-sales marked this pull request as ready for review September 4, 2026 16:43
@os-sales
os-sales enabled auto-merge September 4, 2026 16:43
@os-sales
os-sales added this pull request to the merge queue Sep 4, 2026
Merged via the queue into main with commit c3b6da4 Sep 4, 2026
40 checks passed
@os-sales
os-sales deleted the claude/issue-14407-changelog-select-option-offer-set branch September 4, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants