Repository navigation
docs(forms): the "Current renderer status (2026-08-11)" note says the Console redirects verbatim without substituting {{record.…}} tokens; the pinned Console has substituted and URL-escaped them since objectui#4190 #22468
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Oct 9, 2026 objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsTriage: graded on first touch,
documentation·priority:p3·domain:devx·pm:queue. The lane labels were set at filing, and this card had no stateTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-10T02:16Z. ⛔ Not a claim, ⛔ not a dispatch.- Re-read on
main96e4be4829:content/docs/ui/forms.mdx:385still carries the "Current renderer status (2026-08-11)" note.- At the current pin (
.objectui-sha=47b1f0bb71), objectui'sapps/console/src/components/submitRedirect.tsexists. - So the note is still false, and the card's premise holds at the newer pin too.
- Why p3: a published page tells authors and agents to avoid a feature that works. No runtime behaviour is wrong.
- Direction: as the card's "Done when" states. Remove the note, or restate it as what the pinned Console does. Grep for any other page that repeats the old status, and put the grep in the PR body.
- Re-read on
objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsClaim: PM loop round 1
Session:session_01Q7Fy4uVkvBWgj9CLihdATJ
Account:marchtian(the seat's linked user asGET /useranswers it; the card's assignee from this act)
Branch:claude/issue-22468-forms-redirect-status-note
Worktree:objectstack-issue-22468
Domain:domain:devx
Seat:domain:devx#1
File surface:content/docs/ui/forms.mdxonly — the "Current renderer status (2026-08-11)" note (about:385onorigin/maind85615ddd9). Any other hand-written page the grep finds restating the old "verbatim, no substitution" status joins the surface and is named in the PR body. ⛔ Nocontent/docs/references/**, ⛔ nocontent/docs/releases/**, ⛔ no objectui file. (Stop on breach; explain in the report.)
Container & model:S, judged asM(the replacement sentence must match what the Console at the current.objectui-shadoes),mode:subagent,model: opus — the default tier; dispatch-gates --tier: "no path-derived mandate"
Clause-②: no
Responsibility:n/a — not a defect card (a docs correction; no runtime change)
Thread-read: 6092627702
Serial constraints cleared:no open PR touches content/docs/ui/forms.mdx (13 open PRs' file lists read). The sibling dispatches in this round (#22606, #22584) are disjoint.— read at 2026-10-10T08:44ZLabels in this act:
pm:queue→pm:dispatched; assigneemarchtian.objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 22468, "status": "done", "branch": "claude/issue-22468-forms-redirect-status-note", "pr": "https://github.com/objectstack-ai/objectstack/pull/22651", "session": "session_01Q7Fy4uVkvBWgj9CLihdATJ", "premise_still_valid": true, "summary": "content/docs/ui/forms.mdx: the dated note 'Current renderer status (2026-08-11)' is replaced by one undated sentence. The sentence says what the Console at the pinned .objectui-sha 20c6d351ad74d2b14a93becdc134d51b91b2d2e6 does: it resolves each record token from the record the submit just wrote, URL-escapes the value, and navigates to the resolved path inside the console shell after delayMs; a url the schema refuses is never followed, the submit is still confirmed and the refusal is shown on screen. The redirect row of the Renderer behavior table on the same page also changed: it said window.location.assign(url), the pre-objectui#4190 full-page load of the raw url, and now says in-app navigation with tokens substituted and URL-escaped. That row was fixed in place under the bounded-fix exemption; all four conditions are argued in the PR body. The three rules and the mode-aware default are untouched. Premise re-measured at the current pin, which is the same on origin/main 0ec426897: apps/console/src/components/submitRedirect.ts exists. It refuses via a FormViewSchema parse, encodeURIComponent-escapes each record token, and yields the resolved path. FormPage.tsx case 'redirect' calls resolveSubmitRedirect and runs navigate(path) after delayMs ?? 0. A grep with a positive control is in the PR body: 0 hits at head 00c98860b, 2 hits at base cc305a3cf, over content/docs (generated references included) plus skills.", "tests": "Docs-only diff: no package touched, so no closure build and no package tests are owed. Gates were derived with no paths by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at HEAD 00c98860b: 40 commands, identical to the dispatch's list. All 40 ran at 00c98860b with exit 0. Prerequisite builds ran under os-verify-lock: pnpm --workspace-concurrency=2 --filter '@objectstack/lint...' build gave 'VERDICT command-exit 0 · held the lock 164s', and the '@objectstack/client-react...' plus '@objectstack/client...' build gave 'VERDICT command-exit 0 · held the lock 440s'. check:skill-examples first exited 3 with PREREQUISITE NOT MET ('packages/client-react/dist holds no .d.ts declarations'); that is not a measurement. After the client build it re-ran with exit 0: '262 prose examples type-check across 3 surface(s)'. The --ran reconciliation, with exit codes recorded, printed: 'Run reconciliation — 40 derived, 40 run, 0 NOT-MEASURED, 0 UNRUN ... a DERIVED zero'. Not measured locally and owned by CI: the whole-tree, artifact-roster and pending-changeset families, the Build Docs job and the type-check lanes that dispatch-gates lists outside its 40. Control-byte self-scan of forms.mdx and the PR body found nothing (grep exit 1).", "mcp_calls": "0", "api_writes": "2 REST writes, both through scripts/pm as objectstack-fleet[bot]. (1) The pr_create relay: dispatch.mjs sent POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204); relay run 38040270885 succeeded and executed POST /repos/objectstack-ai/objectstack/pulls (draft), creating #22651; the read-back of 6435 bytes was identical. (2) This report: post-stamped.mjs to POST /repos/objectstack-ai/objectstack/issues/22468/comments. Not REST: two git pushes of the branch (the empty probe, then 00c98860b). Attempted and refused before any request: label-write.mjs (see deviations).", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted in PR #22651 Acceptance notes, not filed (comment drift, outside the three filing classes) · packages/spec/src/ui/view.zod.ts:4058-4072: the JSDoc above the submitBehavior.url refine still says objectui's FormPage 'performs a verbatim redirect' and that the resolved value 'reaches window.location.assign'. At the pin, the Console navigates through the router. It is a code comment, not .describe(), so it reaches no generated page · dedupe: forms submitBehavior redirect token substitution · submitRedirect record token · renderer status note stale", "carrier: none · noted in PR #22651 Acceptance notes, not filed · packages/spec/src/ui/view-submit-redirect-url.test.ts:9: the test header says objectui's FormPage 'redirects verbatim', the same stale history as the JSDoc above · dedupe: forms submitBehavior redirect token substitution · submitRedirect record token · renderer status note stale" ], "gates": { "node scripts/check-ci-filter-parity.mjs": 0, "node scripts/check-closing-keyword-parity.mjs": 0, "node scripts/check-closing-keyword-parity.mjs --self-test": 0, "node scripts/check-comment-mask-corpus.mjs": 0, "node scripts/check-doc-frontmatter.mjs": 0, "node scripts/check-doc-frontmatter.mjs --self-test": 0, "node scripts/check-doc-route-spelling.mjs --advisory": 0, "node scripts/check-doc-route-spelling.mjs --self-test": 0, "node scripts/check-docs-section-name.mjs": 0, "node scripts/check-docs-section-name.mjs --self-test": 0, "node scripts/check-section-landing-index.mjs": 0, "node scripts/check-section-landing-index.mjs --self-test": 0, "pnpm --filter @objectstack/lint run check:doc-formula-expressions": 0, "pnpm --filter @objectstack/lint run check:doc-security-posture": 0, "pnpm --filter @objectstack/spec run check:docs": 0, "pnpm --filter @objectstack/spec run check:empty-state": 0, "pnpm --filter @objectstack/spec run check:liveness": 0, "pnpm --filter @objectstack/spec run check:skill-examples": "0 (re-run; first run 3 = PREREQUISITE NOT MET before the client-react build)", "pnpm --filter @objectstack/spec run check:strictness-ledger": 0, "pnpm --filter @objectstack/spec run check:variant-docs": 0, "pnpm --filter @objectstack/spec run check:yaml-examples": 0, "pnpm check:corpus-claim-drift": 0, "pnpm check:cross-package-test-inputs": 0, "pnpm check:doc-anchors": 0, "pnpm check:doc-authoring": 0, "pnpm check:docs-audit-scope": 0, "pnpm check:docs-redirects": 0, "pnpm check:docs-single-h1": 0, "pnpm check:docs-spec-enumerations": 0, "pnpm check:docs-transcript-drift": 0, "pnpm check:driver-memory-census": 0, "pnpm check:gitlink-declared": 0, "pnpm check:nul-bytes": 0, "pnpm check:published-readme-links": 0, "pnpm check:react-page-adapter-contract": 0, "pnpm check:refd-timer-probe": 0, "pnpm check:role-word": 0, "pnpm check:skill-identifier-liveness": 0, "pnpm check:vendor-version-stamps": 0, "pnpm check:watch-hint-literal": 0 }, "line_budget": "n/a: no skills/** file and no line-ratcheted ledger touched; the diff is +2/-2 in content/docs/ui/forms.mdx", "deviations": [ "label-write refused by the Claude Code auto-mode classifier, reason '[External System Writes]'. The refused command was: node scripts/pm/label-write.mjs --repo objectstack-ai/objectstack --issue 22651 --add skip-changeset --assign marchtian. Nothing was sent. I did not retry by another route. The seat needs to apply skip-changeset and PR assignee marchtian on #22651. A read-back after the refusal shows labels documentation and size/xs (set by the labeler), no assignees, draft true. Until skip-changeset lands, Check Changeset will stay red.", "The table row (Renderer behavior, redirect: window.location.assign(url)) was fixed in place in the same file under the bounded-fix exemption. The file surface is unchanged (forms.mdx only). The fix and its evidence are named in the PR body.", "Attribution followed AGENTS.md, which the harness reminder yields to: the commit carries the model-free trailer pair (Claude-Session plus Co-authored-by: Claude), and the PR body ends with the session-URL footer rather than the harness's suggested lines.", "origin/main moved from cc305a3cf to 0ec426897 during the run. No commit in between touches content/docs/ui/forms.mdx (rev-list count 0) and .objectui-sha is unchanged, so no merge was done." ], "files_changed": [ "content/docs/ui/forms.mdx" ] }
Generated by Claude Code
objectstack-fleet commented
on Oct 10, 2026 ContributorAuthorMore actionsACCEPT — PR #22651 (head
00c98860b)domain:devxseat 1 (seat post #6023) ·marchtian·session_01Q7Fy4uVkvBWgj9CLihdATJ· 2026-10-10T09:14Z. Reviewed against GitHub and the pinned objectui tree, not against the report (6095984632).- Shape: draft, base
main, the first lineFixes #22468, thenClause-②: no. The full-body closing-keyword scan finds only#22468. One file,content/docs/ui/forms.mdx, +2/−2. Nocontent/docs/releases/**, noreferences/**. - Sentences checked against objectui at
.objectui-sha20c6d351ad74:- (1) "resolves each
{{record.…}}token from the record the submit just wrote":FormPage.tsxcase 'redirect'builds the scope frompayload, the server echo and the written id. - (2) "URL-escapes the value":
submitRedirect.tsresolveSubmitRedirectwraps each value inencodeURIComponent. - (3) "navigates … inside the console shell after
delayMs":setTimeout(() => navigate(pendingRedirect), redirectDelayMs)withbehavior.delayMs ?? 0. - (4) "a
urlthe schema refuses is never followed — the submit is still confirmed and the refusal is shown":toast.error(verdict.refusal), thensetSubmitted(true). - The table row ("Navigate in-app … substituted and URL-escaped") is accurate by the same reads.
- (1) "resolves each
- In-place row fix: same defect class (a stale renderer description on the same page), mechanical, inside the claimed file, same gate family, named in the PR body. Accepted.
- Changeset: docs-only, and
content/docs/**is in no package'sfiles[].skip-changesetis applied by this seat on its own review. The dev'slabel-writewas refused by the session classifier (deviations); the PR assigneemarchtianwas set in the same write. - Gates: the dev ran 40 of 40 derived families at
00c98860b(equal to the PR head), all exit 0, with the--ranreconciliation "0 NOT-MEASURED, 0 UNRUN". CI convergence is read by the seat before ready. - Acceptance notes:
filed #22655. The shippedview.zod.tsJSDoc is a published-file defect (@objectstack/specshipssrc/**/*.zod.ts), so it was filed rather than left as a note; the test-header line rides the same card. - Deviation noted, not a REWORK: none beyond the refused label write.
Landing: ready plus auto-merge once every check on the head is green.
- Shape: draft, base
Filing gate ① — a
finding: a published docs page states Console behaviour that is false at the pinned.objectui-sha. reach: the docs site'scontent/docs/ui/forms.mdx, section onsubmitBehavior: { kind: 'redirect' }.What is wrong
content/docs/ui/forms.mdx:389onorigin/main:At the pin this repo builds against (
.objectui-sha=f0268ad784854568aa58a2aa791f6a7502259186), the Console substitutes the tokens:apps/console/src/components/submitRedirect.tsimplements the ruling's three points: relative paths only; interpolation only from{{record.field_name}}, with each value URL-escaped when the redirect is built; and a verbatim redirect on the resolved path.a34c0b299, PR objectui#4992, 2026-08-17). It is already present at the previous pina58626c88dc8, so the note has been false since before the latest bump.So the page tells authors to avoid a feature that works, and the "until it lands" caveat points at an issue that has landed.
Where it was met
The
domain:cliseat 1 declaration6079439946(on #6023, for #22437 / PR #22462) records it as "drift … this page's and predates the PR", read in that PR's Acceptance notes and not edited there.Done when
Generated by Claude Code