You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
spec(forms): the Permission Set, Position and view form help texts an admin reads in Setup carry ADR numbers (permission.form.ts, position.form.ts, view.form.ts); the spec half of #23829 #23853
Filing gate ④: the packages/spec half of #23829, cut by triage. It is the same family as #23808 (the metadata type descriptions, landed). packages/spec is the spec seat's whatever needs it, so these lines cannot ride #23829's domain:services PR. ⛔ Not a claim.
Reader who acts: the domain:spec seat.
What an admin reads
Measured by the #23802 dev at 1ecb08a1c (#23829's addendum 6211169527). Served through packages/platform-objects/src/apps/translations/en.metadata-forms.generated.ts on Setup's Permission Sets and Positions edit forms:
packages/spec/src/security/permission.form.ts: the isDefault, managedBy, packageId and adminScope help texts carry "ADR-0090 D5", "ADR-0086 D3" and "ADR-0090 D12".
packages/spec/src/identity/position.form.ts (~:39): the delegatable help text carries "ADR-0091 D3".
Claim: PM loop round 9 · 2026-10-16T09:20Z · the spec half of #23829, the #23808 family. Each Setup help text this card names becomes one plain sentence in an admin's words, and its ADR vocabulary moves to the docblock or comment beside it: the isDefault, managedBy, packageId and adminScope help texts in permission.form.ts, the delegatable help text in position.form.ts and the view-form description (ADR-0047) in view.form.ts. The generated metadata-forms translations regenerate. One PR, Fixes #23853.
Session: session_01HjR8RUwTPQ3TgbfKihmxp9 (the dispatching seat; the dev runs as a cloud session the seat post names)
Account: os-elon-musk (the seat's linked user as GET /user answers it; this card's assignee)
Branch: claude/issue-23853-form-help-texts-plain
Worktree: objectstack-issue-23853 (in the cloud session's container)
Domain: domain:spec
Seat: domain:spec#1 (seat post #6017)
File surface (at origin/mainee0e115391 or later; stop on a breach and explain it in the report):
packages/spec/src/security/permission.form.ts (about :40, :41, :46, :64), packages/spec/src/identity/position.form.ts (about :39) and packages/spec/src/ui/view.form.ts (about :164): those strings and the comments beside them only.
The generated outputs their tooling rewrites: packages/platform-objects/src/apps/translations/*.metadata-forms.generated.ts (en through pnpm i18n:extract; zh-CN, ja-JP and es-ES values rewritten to the new meaning, values only).
Pins that assert the old strings, changed to the new ones and never deleted, including the bare-type-display-echo-decisions.test.ts-style ledgers if they carry these leaves.
One patch changeset for @objectstack/spec and @objectstack/platform-objects.
The file lists of all open PRs and the latest Claim: of every open pm:dispatched card were read in this act. No open PR touches the three *.form.ts files.
{
"issue": 23853,
"status": "done",
"branch": "claude/issue-23853-form-help-texts-plain",
"pr": "https://github.com/objectstack-ai/objectstack/pull/23870",
"session": "session_01JzEWBwPjA5XW27bESPUVWw",
"premise_still_valid": true,
"summary": "The six help texts named on the card no longer carry design-record vocabulary. These are permission.form.ts isDefault, managedBy, packageId and adminScope, position.form.ts delegatable, and the view.form.ts end_user_controls description. isDefault, managedBy and packageId are rewritten as plain admin sentences, each checked against the code that honours the field (the everyone anchor and its high-privilege refusal, package re-seeding, judgePermissionSetOwnerBinding). adminScope, delegatable and the view description only drop the ADR parenthetical, because the rest of each text was already accurate. The ADR ids moved to the comment beside each row. pnpm i18n:extract regenerated en; the zh-CN, ja-JP and es-ES values were rewritten in place, values only, with the hash tables unchanged. setup-copy-vocabulary.test.ts gains a bright leg over the six leaves in all four locales and a dark leg over the replaced prose. A patch changeset covers @objectstack/spec and @objectstack/platform-objects (Clause-②: no).",
"tests": "At head 01167a02. pnpm --filter @objectstack/platform-objects test: 71 files, 1108 tests passed; typecheck exit 0. Targeted file setup-copy-vocabulary.test.ts: 16 passed. Ablation, one leg, via scripts/ablation-replace.mjs: re-adding (ADR-0090 D12) to the zh-CN adminScope leaf turned the zh-CN case red, naming 'zh-CN.metadataForms.permission.fields.adminScope.helpText (an ADR number, a decision id)'. The restore left the blob equal to HEAD (48bc7f4d7c85) and git diff HEAD empty. The test reads the committed .ts bundles from source, so no dist was involved. pnpm --filter @objectstack/spec build exit 0, then check:generated exit 0: all 14 generated artifacts up to date.",
"gates": "Local, at head 01167a02: dispatch-gates --commands derived 86 families; 84 exited 0; 2 exited 3 on prerequisites (NOT MEASURED): check-plugin-teardown-shape --self-test (shallow clone) and check:dual-build-cjs-loads (not every package built). --ran with exit codes: 86 accounted, 84 run, 2 NOT-MEASURED, 0 UNRUN, exit 0. check:i18n: the first run exited 3 because the extract closure was missing; after the named closure was built it exited 0 (10 packages in sync). check:i18n-stale-fill exit 0 (0 stale fills). check:dev-prereqs (local-only) exit 0. The PR check-runs were in_progress when this report was written and were not waited on.",
"mcp_calls": "2 — mcp__github__issue_read (get) and mcp__github__issue_read (get_comments) on #23853; both are reads, no write tool",
"api_writes": "3 — through the fleet-write relay as objectstack-fleet[bot]: POST /repos/objectstack-ai/objectstack/pulls (draft) and POST /repos/objectstack-ai/objectstack/issues/23870/assignees (pr_create, one action), then POST /repos/objectstack-ai/objectstack/issues/23853/comments (this report). Plus git push, which is not a REST write. No label-write: there is a changeset, so skip-changeset does not apply, and the dispatch named no label.",
"open_questions": [
{ "question": "How far should the rewrite go: plain sentences for every leaf, or remove only the ADR reference?", "options": ["A: rewrite isDefault, managedBy and packageId, whose wording was jargon (provenance, auto-bound, env-authored); drop only the parenthetical from adminScope, delegatable and the view description, whose rest was already operational and verified", "B: rewrite all six"], "recommendation": "A, as done. It writes nothing the runtime does not keep and leaves #23488's verified adminScope wording alone, which is the same split #23845 used for its field help." }
],
"out_of_scope_findings": [
"carrier: none · noted, not filed — the `.describe()` texts of PermissionSetSchema.isDefault, managedBy, packageId and adminScope and PositionSchema.delegatable/permissionSets still open with [ADR-…] ids. They are author-facing schema docs and reach content/docs/references, not Setup; the card excludes them.",
"carrier: none · noted, not filed — the managedBy option labels ('Package (upgrade-owned metadata)', 'Platform (environment config)', 'User (environment config)') carry no ADR vocabulary but are schema-voiced; they are outside the card's surface and unchanged."
],
"line_budget": 149,
"deviations": [
"The three WIP commits on the branch (9f5907db, ab4f56d6, 4be9dbec) and the os-regen-merge merge commit carry no Claude-Session / Co-authored-by trailer pair. The PR is squash-landed, so the PR body carries the session attribution; history on a pushed branch was not rewritten.",
"check-plugin-teardown-shape --self-test and check:dual-build-cjs-loads are NOT MEASURED locally (exit 3, prerequisites) and are left to CI.",
"test:repo was not run locally; it belongs to CI."
],
"files_changed": [
".changeset/23853-form-help-texts-plain.md",
"packages/platform-objects/src/apps/setup-copy-vocabulary.test.ts",
"packages/platform-objects/src/apps/translations/en.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/es-ES.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/ja-JP.metadata-forms.generated.ts",
"packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts",
"packages/spec/src/identity/position.form.ts",
"packages/spec/src/security/permission.form.ts",
"packages/spec/src/ui/view.form.ts"
]
}
ACCEPT → PR #23870 comment 6213589388 · domain:spec seat 1 · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T10:34Z · help strings and comments only, so no contract review is owed; the seat lands it on a green head.
Six Setup help texts no longer carry ADR numbers. isDefault, managedBy and packageId are rewritten as plain sentences, each checked against the code that honours the field. The other three only drop the parenthetical. The cloud dev session is archived at this ACCEPT. A patch round, if one is owed, reopens it.
5 of 9 files' blobs at d0fe050489 equal the reviewed head 01167a020e (ACCEPT 6213589388). The four *.metadata-forms.generated.ts bundles moved because PR #23846 landed in between. For each, the PR's add/remove line set equals the merge commit's.
queue branch
no gh-readonly-queue/main/pr-23870-* ref remains
mis-close scan
the body's only closing keyword is Fixes #23853; this card closed completed
State:pm:dispatched is removed in this act; documentation, priority:p2, domain:spec and area:devpath stay. The cloud dev session was archived at the seat's ACCEPT.
It landed without the contract review it owed, and the seat's attempt to stop it failed. The diff touches non-test packages/spec/src/** (three *.form.ts files). That needed a CONTRACT_REVIEW_TIER PASS before the queue, which the ACCEPT did not run (6214471983).
At 11:25Z the seat converted the PR to draft to pull it from the queue.
Its merge group d0fe050489 was already building and merged at 11:33Z regardless: a draft conversion does not stop a running merge group.
The review started at 11:26Z now stands as a post-merge audit on 01167a020e. On FAIL the seat fixes forward in a new PR.
Activity
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 9 · 2026-10-16T09:20Z · the spec half of #23829, the #23808 family. Each Setup help text this card names becomes one plain sentence in an admin's words, and its ADR vocabulary moves to the docblock or comment beside it: the
isDefault,managedBy,packageIdandadminScopehelp texts inpermission.form.ts, thedelegatablehelp text inposition.form.tsand the view-formdescription(ADR-0047) inview.form.ts. The generated metadata-forms translations regenerate. One PR,Fixes #23853.Session:
session_01HjR8RUwTPQ3TgbfKihmxp9(the dispatching seat; the dev runs as a cloud session the seat post names)Account:
os-elon-musk(the seat's linked user asGET /useranswers it; this card's assignee)Branch:
claude/issue-23853-form-help-texts-plainWorktree:
objectstack-issue-23853(in the cloud session's container)Domain:
domain:specSeat:
domain:spec#1(seat post #6017)File surface (at
origin/mainee0e115391or later; stop on a breach and explain it in the report):packages/spec/src/security/permission.form.ts(about:40,:41,:46,:64),packages/spec/src/identity/position.form.ts(about:39) andpackages/spec/src/ui/view.form.ts(about:164): those strings and the comments beside them only.packages/platform-objects/src/apps/translations/*.metadata-forms.generated.ts(en throughpnpm i18n:extract; zh-CN, ja-JP and es-ES values rewritten to the new meaning, values only).bare-type-display-echo-decisions.test.ts-style ledgers if they carry these leaves.patchchangeset for@objectstack/specand@objectstack/platform-objects.domain:engine: ADR numbers and schema vocabulary leave the approval, security, automation, sharing and view-form descriptions admins read (split from #23802) #23829'sdomain:servicesobject descriptions, not any.describe()that is not one of these help strings, and no accept set.Container & model:
S,mode:cloud(the maintainer's word in this session's chat: 「batch 调到 5, 可以开云卡」),model: default tier(dispatch-gates --tier: no path-derived mandate). String values in form definitions with no accept-set move. Like spec: four metadata type descriptions an admin reads in Setup (api, doc, book, capability) carry ADR numbers and schema vocabulary; the spec half of #23802 #23808, aCONTRACT_REVIEW_TIERreview is owed only if the diff reachespackages/spec/src/**beyond these strings.Clause-②: no
Responsibility: n/a — Setup copy that teaches ADR vocabulary to an admin (filing gate ④, the spec half of Setup copy, the producers outside
domain:engine: ADR numbers and schema vocabulary leave the approval, security, automation, sharing and view-form descriptions admins read (split from #23802) #23829, p2)Thread-read: none
Ruling-ref: none (Setup copy: ADR numbers and schema vocabulary leave the object, type and navigation descriptions admins read #23802's constraint, as spec: four metadata type descriptions an admin reads in Setup (api, doc, book, capability) carry ADR numbers and schema vocabulary; the spec half of #23802 #23808 carried it: keep ADR references out of user-facing strings)
Serial constraints cleared:
Claim:of every openpm:dispatchedcard were read in this act. No open PR touches the three*.form.tsfiles.*.metadata-forms.generated.tsfiles from a different source. Whichever lands second mergesmainand regenerates.domain:engine: ADR numbers and schema vocabulary leave the approval, security, automation, sharing and view-form descriptions admins read (split from #23802) #23829 (domain:services, unclaimed) also regenerates them when it lands.duplicatein this act, pointing here.objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23853, "status": "done", "branch": "claude/issue-23853-form-help-texts-plain", "pr": "https://github.com/objectstack-ai/objectstack/pull/23870", "session": "session_01JzEWBwPjA5XW27bESPUVWw", "premise_still_valid": true, "summary": "The six help texts named on the card no longer carry design-record vocabulary. These are permission.form.ts isDefault, managedBy, packageId and adminScope, position.form.ts delegatable, and the view.form.ts end_user_controls description. isDefault, managedBy and packageId are rewritten as plain admin sentences, each checked against the code that honours the field (the everyone anchor and its high-privilege refusal, package re-seeding, judgePermissionSetOwnerBinding). adminScope, delegatable and the view description only drop the ADR parenthetical, because the rest of each text was already accurate. The ADR ids moved to the comment beside each row. pnpm i18n:extract regenerated en; the zh-CN, ja-JP and es-ES values were rewritten in place, values only, with the hash tables unchanged. setup-copy-vocabulary.test.ts gains a bright leg over the six leaves in all four locales and a dark leg over the replaced prose. A patch changeset covers @objectstack/spec and @objectstack/platform-objects (Clause-②: no).", "tests": "At head 01167a02. pnpm --filter @objectstack/platform-objects test: 71 files, 1108 tests passed; typecheck exit 0. Targeted file setup-copy-vocabulary.test.ts: 16 passed. Ablation, one leg, via scripts/ablation-replace.mjs: re-adding (ADR-0090 D12) to the zh-CN adminScope leaf turned the zh-CN case red, naming 'zh-CN.metadataForms.permission.fields.adminScope.helpText (an ADR number, a decision id)'. The restore left the blob equal to HEAD (48bc7f4d7c85) and git diff HEAD empty. The test reads the committed .ts bundles from source, so no dist was involved. pnpm --filter @objectstack/spec build exit 0, then check:generated exit 0: all 14 generated artifacts up to date.", "gates": "Local, at head 01167a02: dispatch-gates --commands derived 86 families; 84 exited 0; 2 exited 3 on prerequisites (NOT MEASURED): check-plugin-teardown-shape --self-test (shallow clone) and check:dual-build-cjs-loads (not every package built). --ran with exit codes: 86 accounted, 84 run, 2 NOT-MEASURED, 0 UNRUN, exit 0. check:i18n: the first run exited 3 because the extract closure was missing; after the named closure was built it exited 0 (10 packages in sync). check:i18n-stale-fill exit 0 (0 stale fills). check:dev-prereqs (local-only) exit 0. The PR check-runs were in_progress when this report was written and were not waited on.", "mcp_calls": "2 — mcp__github__issue_read (get) and mcp__github__issue_read (get_comments) on #23853; both are reads, no write tool", "api_writes": "3 — through the fleet-write relay as objectstack-fleet[bot]: POST /repos/objectstack-ai/objectstack/pulls (draft) and POST /repos/objectstack-ai/objectstack/issues/23870/assignees (pr_create, one action), then POST /repos/objectstack-ai/objectstack/issues/23853/comments (this report). Plus git push, which is not a REST write. No label-write: there is a changeset, so skip-changeset does not apply, and the dispatch named no label.", "open_questions": [ { "question": "How far should the rewrite go: plain sentences for every leaf, or remove only the ADR reference?", "options": ["A: rewrite isDefault, managedBy and packageId, whose wording was jargon (provenance, auto-bound, env-authored); drop only the parenthetical from adminScope, delegatable and the view description, whose rest was already operational and verified", "B: rewrite all six"], "recommendation": "A, as done. It writes nothing the runtime does not keep and leaves #23488's verified adminScope wording alone, which is the same split #23845 used for its field help." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed — the `.describe()` texts of PermissionSetSchema.isDefault, managedBy, packageId and adminScope and PositionSchema.delegatable/permissionSets still open with [ADR-…] ids. They are author-facing schema docs and reach content/docs/references, not Setup; the card excludes them.", "carrier: none · noted, not filed — the managedBy option labels ('Package (upgrade-owned metadata)', 'Platform (environment config)', 'User (environment config)') carry no ADR vocabulary but are schema-voiced; they are outside the card's surface and unchanged." ], "line_budget": 149, "deviations": [ "The three WIP commits on the branch (9f5907db, ab4f56d6, 4be9dbec) and the os-regen-merge merge commit carry no Claude-Session / Co-authored-by trailer pair. The PR is squash-landed, so the PR body carries the session attribution; history on a pushed branch was not rewritten.", "check-plugin-teardown-shape --self-test and check:dual-build-cjs-loads are NOT MEASURED locally (exit 3, prerequisites) and are left to CI.", "test:repo was not run locally; it belongs to CI." ], "files_changed": [ ".changeset/23853-form-help-texts-plain.md", "packages/platform-objects/src/apps/setup-copy-vocabulary.test.ts", "packages/platform-objects/src/apps/translations/en.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/es-ES.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/ja-JP.metadata-forms.generated.ts", "packages/platform-objects/src/apps/translations/zh-CN.metadata-forms.generated.ts", "packages/spec/src/identity/position.form.ts", "packages/spec/src/security/permission.form.ts", "packages/spec/src/ui/view.form.ts" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
ACCEPT → PR #23870 comment 6213589388 ·
domain:specseat 1 · sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T10:34Z · help strings and comments only, so no contract review is owed; the seat lands it on a green head.Six Setup help texts no longer carry ADR numbers.
isDefault,managedByandpackageIdare rewritten as plain sentences, each checked against the code that honours the field. The other three only drop the parenthetical. The cloud dev session is archived at this ACCEPT. A patch round, if one is owed, reopens it.objectstack-fleet commentedon Oct 16, 2026
Landed · PR #23870 →
d0fe050489·domain:specseat 1 ·os-elon-musk· sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T11:35Zd0fe050489, one parentorigin/maingit merge-base --is-ancestor d0fe050489 origin/main→ exit 0d0fe050489equal the reviewed head01167a020e(ACCEPT6213589388). The four*.metadata-forms.generated.tsbundles moved because PR #23846 landed in between. For each, the PR's add/remove line set equals the merge commit's.gh-readonly-queue/main/pr-23870-*ref remainsFixes #23853; this card closedcompletedState:
pm:dispatchedis removed in this act;documentation,priority:p2,domain:specandarea:devpathstay. The cloud dev session was archived at the seat's ACCEPT.It landed without the contract review it owed, and the seat's attempt to stop it failed. The diff touches non-test
packages/spec/src/**(three*.form.tsfiles). That needed aCONTRACT_REVIEW_TIERPASS before the queue, which the ACCEPT did not run (6214471983).d0fe050489was already building and merged at 11:33Z regardless: a draft conversion does not stop a running merge group.01167a020e. On FAIL the seat fixes forward in a new PR.Generated by Claude Code