Repository navigation
Commit ad381fd
fix(spec): the submitBehavior property help carries no ruling date (#22322)
Fixes #22093
Clause-②: no
The card's last remainder, (a): the form view `submitBehavior` describe
in `packages/spec/src/ui/view.zod.ts` no longer ends in a ruling date.
Help text only: no key, type, accept/reject or export change, with a
`patch` changeset for `@objectstack/spec`. The diff reaches
`skills/objectstack-ui/references/react-blocks.md`, a Tier H governed
surface, through the generator alone, so this PR stays a draft and lands
on the maintainer's approval (route A of the seat's comment
`6047193742`).
## What changed
| Where | Before | After |
| :--- | :--- | :--- |
| `FormViewSchema.submitBehavior` describe (`view.zod.ts`), the property
help that Studio, the reference docs and the published skill show for
this key | "Post-submit behavior. On the `redirect` arm, `url` is
relative-only and interpolates only declared record fields as
`{{record.field_name}}`, URL-escaped (ruled 2026-08-11)." | "Post-submit
behavior. On the `redirect` arm, `url` is relative-only and interpolates
only declared record fields as `{{record.field_name}}`, URL-escaped." |
Every fact the sentence stated stays. The ruling's date and its tracker
reference (#7496) now live in the code comment directly above the
describe, in the form PR #22125 used for the other 22 rows, and that
comment's paragraph that deferred this edit to this card is gone.
## Regenerated projections (generator output, not hand-edited)
`pnpm --filter @objectstack/spec check:generated` after the edit named
exactly two stale artifacts, `check:react-blocks` and `check:docs`.
`check:generated --fix` regenerated those two and nothing else, and a
re-run reads all 15 artifacts up to date.
| File | Rows changed | Reading |
| :--- | :--- | :--- |
| `skills/objectstack-ui/references/react-blocks.md` | 1 (the
`submitBehavior` row) | The row used to be clipped at the generator's
160-char limit ("… URL-escaped (ruled…"). The new sentence is 153 chars,
so the row now reads whole: "… URL-escaped." |
| `content/docs/references/ui/view.mdx` | 5 `submitBehavior` rows |
"(ruled 2026-08-11)" dropped; nothing else moves |
| `content/docs/references/api/protocol.mdx` | 2 `submitBehavior` rows |
same |
Published-skill readings (`skills/**` is token-ratcheted by
`check-skills-token-ratchet`, counting `ceil(utf8 bytes / 4)`), at
`4e4111ca0` → this head:
- `react-blocks.md`: 115 → 115 lines; 13,633 → 13,624 bytes; 3,409 →
3,406 tokens.
- the whole `skills/` package (65 files): 13,343 → 13,343 lines; 627,340
→ 627,331 bytes; 156,835 → 156,833 tokens. Net −9 bytes, no new content,
no re-wrap.
## Pin
`packages/spec/src/ui/view-submit-redirect-url.test.ts` gains section 6.
It reads the `submitBehavior` help from the published JSON Schema
projection (`projectPublishedJsonSchema`, the projection
`gen:react-blocks` and `gen:docs` render from) and asserts: the positive
control (the sentence still names `Post-submit behavior`, the `redirect`
arm, `relative-only`, `{{record.field_name}}`, and ends on
"URL-escaped."), that it matches neither the file's `RULING_DATE`
pattern nor a tracker id, and that the source node's `.description`
equals the projection.
Reverse verification (the fix committed first; one-off, no file kept):
`view.zod.ts` restored to its `4e4111ca0` bytes with `git restore
--source` (tree only; blob `e60abeaa9` == the base blob; old-marker
count 1, new-marker count 0), the file ran **2 failed / 52 passed**, the
two new cases by name. Restored with `git checkout HEAD --` (blob
`48b21f8d9` == HEAD; `git diff HEAD` empty; porcelain clean), **54
passed**. The pin imports the schema from `src` by relative path, so no
dist leg applies.
## Verification (at `acba7086d`, under `os-verify-lock` on a shared box)
- `pnpm --filter @objectstack/spec build`: exit 0 (held 128s).
- The eight spec test files that pin `submitBehavior` (incl.
`scripts/nested-shape.test.ts`): 8 files, 700 tests passed.
- `pnpm --filter @objectstack/spec typecheck` (tsc,
`check:scripts-typecheck`, `check:test-typecheck`, which compiles the
test layer): exit 0.
- `check:generated`: 15 of 15 artifacts up to date.
- `eslint --no-inline-config --format json` on the two changed TS files:
2 files, 0 errors, 0 warnings. Population: `eslint.config.mjs` `files:
**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}` minus `NEVER_LINTED`; no
`parserOptions.project` (no type-aware linting), so this diff cannot
move the verdict on any untouched file.
- Gates: `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` at `acba7086d` derived 114 commands (6
paths, +67/−16 vs merge base `4e4111ca0`). Each ran with its exit code
captured before any pipe: 110 exit 0 (three docs gates,
`check:doc-formula-expressions`, `check:doc-security-posture` and
`check:docs-transcript-drift`, first refused on an unbuilt
`@objectstack/lint`; after `turbo run build
--filter='@objectstack/lint...'` under the lock they ran green); 3 exit
3 PREREQUISITE NOT MET, read from CI (`check:skill-examples` needs the
client-react dist, `check:dual-build-cjs-loads` and
`check:lean-entry-closure` need every package's dist);
`check:type-check-debt` claimed NOT-MEASURED (its re-measure is a
whole-workspace build; CI). `--ran` reconciliation: 114 derived, 110
run, 4 NOT-MEASURED, 0 UNRUN. The 49-row artifact-roster block also ran:
45 exit 0; 3 exit 2 NOT WIRED without PR context
(`check-closing-target-claim`, `check-partof-closing-keyword`,
`check-single-claim-paths`; the Part-of/closing-keyword gate re-run with
`PR_BODY` set to this body: exit 0); `check:published-readme-exports`
exit 3 (every package's dist; CI).
## 维护者速读(草稿)
**改了什么:** 表单视图 `submitBehavior` 属性的帮助文案(Studio 属性面板、参考文档、发布的
`objectstack-ui` 技能里显示的是同一句)不再以「(ruled 2026-08-11)」结尾;规则本身一字未改。裁决日期与
#7496 进了代码注释。`react-blocks.md`、`view.mdx`、`protocol.mdx`
的对应行由生成器重生成,`react-blocks.md` 那一行因此不再被截断。
**为什么改:** 这是 #22093 的最后一项:作者看到的帮助文案里不该出现内部裁决日期。其余 22 行已在 PR #22125
落地;这一行投影到受管的发布技能目录 `skills/**`,所以单独成 PR、等维护者批准。
**风险与代价(含回滚):** 纯文案,不改接受/拒绝行为、键、类型或导出;`@objectstack/spec` patch
变更集。`react-blocks.md` 行数不变、净减 9 字节。回滚 = revert 本 PR。
**席位意见:** (席位填写)
**你要做的:** 批准(approve)本 PR 一次;之后由席位落地。
## Acceptance notes
- `packages/spec/scripts/lib/generated-output.ts` records that the
governed-merge register carves generator-owned files inside `skills/**`
out of the human-merge fork when the queue leg reproduces them
byte-exact. Whether that applies to this PR is the seat's read; this PR
follows the dispatch route (draft, Tier H). Noted, not filed.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01RPo7FUd6bSnAfkWMAKi848)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 16096e8 commit ad381fd
6 files changed
Lines changed: 67 additions & 16 deletions
File tree
- .changeset
- content/docs/references
- api
- ui
- packages/spec/src/ui
- skills/objectstack-ui/references
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1746 | 1746 | | |
1747 | 1747 | | |
1748 | 1748 | | |
1749 | | - | |
| 1749 | + | |
1750 | 1750 | | |
1751 | 1751 | | |
1752 | 1752 | | |
| |||
1831 | 1831 | | |
1832 | 1832 | | |
1833 | 1833 | | |
1834 | | - | |
| 1834 | + | |
1835 | 1835 | | |
1836 | 1836 | | |
1837 | 1837 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
400 | 400 | | |
401 | 401 | | |
402 | 402 | | |
403 | | - | |
| 403 | + | |
404 | 404 | | |
405 | 405 | | |
406 | 406 | | |
| |||
1817 | 1817 | | |
1818 | 1818 | | |
1819 | 1819 | | |
1820 | | - | |
| 1820 | + | |
1821 | 1821 | | |
1822 | 1822 | | |
1823 | 1823 | | |
| |||
1902 | 1902 | | |
1903 | 1903 | | |
1904 | 1904 | | |
1905 | | - | |
| 1905 | + | |
1906 | 1906 | | |
1907 | 1907 | | |
1908 | 1908 | | |
| |||
2177 | 2177 | | |
2178 | 2178 | | |
2179 | 2179 | | |
2180 | | - | |
| 2180 | + | |
2181 | 2181 | | |
2182 | 2182 | | |
2183 | 2183 | | |
| |||
2367 | 2367 | | |
2368 | 2368 | | |
2369 | 2369 | | |
2370 | | - | |
| 2370 | + | |
2371 | 2371 | | |
2372 | 2372 | | |
2373 | 2373 | | |
| |||
0 commit comments