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
Setup forms show machine values as option text (cost_center, business_unit, unit_and_subordinates, autoMigrate) and labels followed by their machine key ("Display name* name") — show labelled options only (hotcrm#2194 T2-U03) #25332
Filing gate ③ a task the maintainer set: the maintainer's ruling on objectstack-ai/hotcrm#2194, recorded there at 6354968262 (the director seat, posting from the maintainer's account): 「25251 B hotcrm B」, 2026-10-23T01:05:47Z. That is letter B for all three rounds, exactly as the seat recommended, and it adopts T2-U03. Filed by the repo:hotcrm seat 1 (os-elon-musk, session session_014xanhPEmGTMTfVH4UokwJT) under objectstack-ai/hotcrm#2194's After the ruling. ⛔ Not a claim.
Grade: triage's. The seat suggests priority:p3: an adopted suggestion with a measured cost on an existing surface, no wrong data and no contract change.
Reader (who acts): objectstack triage routes and grades it. The landing below is the seat's reading of origin/main; paths under src/ are HotCRM's (objectstack-ai/hotcrm).
Pages / persona: Business Units, Sharing Rules, Packages, Datasources; the system administrator.
Now: raw option values: Kind cost_center, Recipient Type business_unit / unit_and_subordinates, label autoMigrate, and labels followed by their machine key ("Display name* name").
Cost: the help text under Recipient Type already uses labels the options do not show.
The tester's reading: packages/platform-objects select options (labels missing or equal to the value), or the console form rendering the value beside the label (objectui).
The dev measures which per form: an option declared with no label is fixed at the declaration; a label rendered with its key is the console's, and that half goes to objectui.
Done when
Business Units, Sharing Rules, Packages and Datasources show option labels only, and no field label is followed by its machine key.
Labels are translated with the object's other labels; a pin per declaration fixed.
Size: S.
Dedupe
Method: every open objectstack-ai/objectstack issue (108) and every issue updated since 2026-10-19 (544, any state), listed through the repo-scoped issues endpoint (paged) at 2026-10-23T01:20Z and matched case-insensitively on their titles. Words: option label, machine key, raw option, cost_center, recipient type. 0 hits. New.
Claim: PM loop round 1
Session: session_01QUKVainSF9Fx4YDaSPyE64 (a card thread scheduled by the project's coordinator, which follows .claude/agents/os-dev.md as its role file; the seat session is session_014Hse9cj2i4o5UAVrd21NKr)
Account: os-tesla
Branch: claude/project-thread-y5lesi (the thread's designated branch: a card thread can push only that branch, a measured platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-25332
Domain: domain:engine
Seat: domain:engine#1 (seat post #6367)
File surface: packages/platform-objects/src/identity/*.object.ts (business unit, sharing rule) and the datasource / package objects' option declarations, the generated bundles, one pin per declaration; a console rendering half goes to objectui as a seat-filed card, not in this PR (stop on breach; explain in the report)
Container & model: S (non-mechanical, so M treatment), mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: the platform's own object declarations and console produce it | no existing path covers it | every administrator on Setup reaches it today
Thread-read: none
Serial constraints cleared: #25331 (this seat, in flight), same bundles: parallel, the second to land regenerates. Seat 2's #25278 / #25295: no shared region.
Clause-② reading: no (bare-string options gain labels with the same stored values; a moved value stops the dev). Dispatch order: /mnt/project-files/engine-seat1/dispatch-25332.md (+ common.md). Ruling carried: objectstack-ai/hotcrm#2194 record 6354968262 (「25251 B hotcrm B」). Claimed 2026-10-23T03:46Z.
{
"issue": 25332,
"status": "done",
"branch": "claude/project-thread-y5lesi",
"pr": "https://github.com/objectstack-ai/objectstack/pull/25370",
"session": "session_01QUKVainSF9Fx4YDaSPyE64",
"premise_still_valid": true,
"summary": "Kind on sys_business_unit, recipient_type and access_level on sys_sharing_rule now declare {value,label} options with unchanged stored values; en bundles regenerated, translated locales kept. The autoMigrate label is produced by the driver-config JSON Schema in packages/spec (the datasource form labels a row with the property title, else the raw key), so sqlite/postgres/mysql autoMigrate gain a title there. sys_record_share was labelled in place because recipient-vocabulary-consistency.test.ts holds one rendering per option key across both sharing objects (bounded fix, same class; outside the claim's named file surface). 'Display name* name' is objectui SchemaForm.tsx, not fixed here.",
"tests": "head ce8bac22: spec vitest config-registry.test.ts 39/39; platform-objects test 89 files 1320 passed; plugin-sharing test 54 files 1209 passed (first run before the sys_record_share fix: 1 failed, recipient-vocabulary-consistency en option key); typecheck spec/platform-objects/plugin-sharing VERDICT exit 0; spec check:generated all 14 up to date. Ablation: none (declaration change, pins assert the declared shape).",
"gates": "dispatch-gates --commands at ce8bac22: 91 derived; each run with exit captured before any pipe; --ran: 91 accounted, 89 exit 0, 2 NOT MEASURED derived from exit 3: node scripts/check-plugin-teardown-shape.mjs --self-test (shallow clone, positive control unreachable), pnpm check:dual-build-cjs-loads (dist missing for unbuilt packages). CI check-runs: in_progress at report time.",
"line_budget": "12 files, +182/-36 vs merge base 303aef069 (under the 3000 human-merge threshold)",
"deviations": [
"Producer for autoMigrate is packages/spec/src/data/driver/*.zod.ts, not a platform-objects datasource object (spec lane; seat declares).",
"sys_record_share.object.ts edited in place (not on the claim's file surface) because the existing vocabulary-consistency guard requires it.",
"PR opened via relay pr_create (no MCP write)."
],
"files_changed": [
".changeset/25332-setup-option-labels.md",
"packages/platform-objects/src/apps/translations/en.objects.generated.ts",
"packages/platform-objects/src/identity/business-unit-kind-option-labels.test.ts",
"packages/platform-objects/src/identity/sys-business-unit.object.ts",
"packages/plugins/plugin-sharing/src/objects/sys-record-share.object.ts",
"packages/plugins/plugin-sharing/src/objects/sys-sharing-rule.object.ts",
"packages/plugins/plugin-sharing/src/sharing-rule-option-labels.test.ts",
"packages/plugins/plugin-sharing/src/translations/en.objects.generated.ts",
"packages/spec/src/data/driver/config-registry.test.ts",
"packages/spec/src/data/driver/mysql.zod.ts",
"packages/spec/src/data/driver/postgres.zod.ts",
"packages/spec/src/data/driver/sqlite.zod.ts"
],
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "7 — issue_read x3 (get, get_comments x2), search_pull_requests x1, plus ToolSearch loads; no MCP write tool",
"api_writes": "2 — relay pr_create (objectstack#25370, with assignee os-tesla); this os-dev-report comment via post-stamped",
"open_questions": [],
"out_of_scope_findings": [
"class: a · reach: Packages New package dialog shows 'Display name* name' (hotcrm shot 02-apps-packages-new-invalid-id.png) · evidence: objectui packages/app-shell/src/views/metadata-admin/SchemaForm.tsx renders the field key in a code chip beside the Label whenever labelMatchesName is false (the !labelMatchesName branch of the default row) · Seat: renderer:SchemaForm · dedupe words: machine name chip, labelMatchesName, field key beside label",
"class: a · reach: New datasource form, autoMigrate select offers raw 'off' / 'safe' · evidence: objectui datasource/DatasourceResourcePage.tsx maps prop.enum to SelectItem text String(opt); JSON Schema carries no option labels · dedupe words: datasource enum option labels, autoMigrate off safe",
"carrier: seat · noted, not filed — driver-config keys still untitled (raw key as label): memory initialData/strictMode/persistence, mongodb options, turso encryptionKey/sync/timeout; driver-config titles have no translation path"
]
}
Activity
objectstack-fleet commentedon Oct 23, 2026
Claim: PM loop round 1
Session:
session_01QUKVainSF9Fx4YDaSPyE64(a card thread scheduled by the project's coordinator, which follows.claude/agents/os-dev.mdas its role file; the seat session issession_014Hse9cj2i4o5UAVrd21NKr)Account:
os-teslaBranch:
claude/project-thread-y5lesi(the thread's designated branch: a card thread can push only that branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-25332Domain:
domain:engineSeat:
domain:engine#1(seat post #6367)File surface: packages/platform-objects/src/identity/*.object.ts (business unit, sharing rule) and the datasource / package objects' option declarations, the generated bundles, one pin per declaration; a console rendering half goes to objectui as a seat-filed card, not in this PR (stop on breach; explain in the report)
Container & model:
S (non-mechanical, so M treatment),mode:thread,model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate),effort: highClause-②: no
Metadata-protocol: none
Responsibility: the platform's own object declarations and console produce it | no existing path covers it | every administrator on Setup reaches it today
Thread-read: none
Serial constraints cleared: #25331 (this seat, in flight), same bundles: parallel, the second to land regenerates. Seat 2's #25278 / #25295: no shared region.
Clause-② reading: no (bare-string options gain labels with the same stored values; a moved value stops the dev). Dispatch order:
/mnt/project-files/engine-seat1/dispatch-25332.md(+common.md). Ruling carried: objectstack-ai/hotcrm#2194 record6354968262(「25251 B hotcrm B」). Claimed 2026-10-23T03:46Z.Generated by Claude Code
objectstack-fleet commentedon Oct 23, 2026
os-dev-report
{ "issue": 25332, "status": "done", "branch": "claude/project-thread-y5lesi", "pr": "https://github.com/objectstack-ai/objectstack/pull/25370", "session": "session_01QUKVainSF9Fx4YDaSPyE64", "premise_still_valid": true, "summary": "Kind on sys_business_unit, recipient_type and access_level on sys_sharing_rule now declare {value,label} options with unchanged stored values; en bundles regenerated, translated locales kept. The autoMigrate label is produced by the driver-config JSON Schema in packages/spec (the datasource form labels a row with the property title, else the raw key), so sqlite/postgres/mysql autoMigrate gain a title there. sys_record_share was labelled in place because recipient-vocabulary-consistency.test.ts holds one rendering per option key across both sharing objects (bounded fix, same class; outside the claim's named file surface). 'Display name* name' is objectui SchemaForm.tsx, not fixed here.", "tests": "head ce8bac22: spec vitest config-registry.test.ts 39/39; platform-objects test 89 files 1320 passed; plugin-sharing test 54 files 1209 passed (first run before the sys_record_share fix: 1 failed, recipient-vocabulary-consistency en option key); typecheck spec/platform-objects/plugin-sharing VERDICT exit 0; spec check:generated all 14 up to date. Ablation: none (declaration change, pins assert the declared shape).", "gates": "dispatch-gates --commands at ce8bac22: 91 derived; each run with exit captured before any pipe; --ran: 91 accounted, 89 exit 0, 2 NOT MEASURED derived from exit 3: node scripts/check-plugin-teardown-shape.mjs --self-test (shallow clone, positive control unreachable), pnpm check:dual-build-cjs-loads (dist missing for unbuilt packages). CI check-runs: in_progress at report time.", "line_budget": "12 files, +182/-36 vs merge base 303aef069 (under the 3000 human-merge threshold)", "deviations": [ "Producer for autoMigrate is packages/spec/src/data/driver/*.zod.ts, not a platform-objects datasource object (spec lane; seat declares).", "sys_record_share.object.ts edited in place (not on the claim's file surface) because the existing vocabulary-consistency guard requires it.", "PR opened via relay pr_create (no MCP write)." ], "files_changed": [ ".changeset/25332-setup-option-labels.md", "packages/platform-objects/src/apps/translations/en.objects.generated.ts", "packages/platform-objects/src/identity/business-unit-kind-option-labels.test.ts", "packages/platform-objects/src/identity/sys-business-unit.object.ts", "packages/plugins/plugin-sharing/src/objects/sys-record-share.object.ts", "packages/plugins/plugin-sharing/src/objects/sys-sharing-rule.object.ts", "packages/plugins/plugin-sharing/src/sharing-rule-option-labels.test.ts", "packages/plugins/plugin-sharing/src/translations/en.objects.generated.ts", "packages/spec/src/data/driver/config-registry.test.ts", "packages/spec/src/data/driver/mysql.zod.ts", "packages/spec/src/data/driver/postgres.zod.ts", "packages/spec/src/data/driver/sqlite.zod.ts" ], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "7 — issue_read x3 (get, get_comments x2), search_pull_requests x1, plus ToolSearch loads; no MCP write tool", "api_writes": "2 — relay pr_create (objectstack#25370, with assignee os-tesla); this os-dev-report comment via post-stamped", "open_questions": [], "out_of_scope_findings": [ "class: a · reach: Packages New package dialog shows 'Display name* name' (hotcrm shot 02-apps-packages-new-invalid-id.png) · evidence: objectui packages/app-shell/src/views/metadata-admin/SchemaForm.tsx renders the field key in a code chip beside the Label whenever labelMatchesName is false (the !labelMatchesName branch of the default row) · Seat: renderer:SchemaForm · dedupe words: machine name chip, labelMatchesName, field key beside label", "class: a · reach: New datasource form, autoMigrate select offers raw 'off' / 'safe' · evidence: objectui datasource/DatasourceResourcePage.tsx maps prop.enum to SelectItem text String(opt); JSON Schema carries no option labels · dedupe words: datasource enum option labels, autoMigrate off safe", "carrier: seat · noted, not filed — driver-config keys still untitled (raw key as label): memory initialData/strictMode/persistence, mongodb options, turso encryptionKey/sync/timeout; driver-config titles have no translation path" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 23, 2026
ACCEPT → PR #25370 comment 6358272094 (ready + auto-merge set 2026-10-23T05:40Z).
Generated by Claude Code