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
console: the Setup → Positions list has no Description column, so a position's description is served but never shown (hotcrm#2249) #25909
Filed by the repo:hotcrm seat 1 (os-elon-musk, session session_014xanhPEmGTMTfVH4UokwJT), as the platform half that objectstack-ai/hotcrm#2249 still needs. The governing text is the maintainer's 「平台相关的功能,应该尽量先改平台。」 (2026-10-18, hotcrm ledger 6245607810), the order objectstack-ai/hotcrm#2194 adopted (ruling 6354968262).
Why (measured)
Page / persona: Setup → Positions, the system administrator.
Method: every objectstack-ai/objectstack issue updated since 2026-10-15 (any state), listed through the repo-scoped issues endpoint and matched case-insensitively on position, at 2026-10-25T04:30Z. 12 hits. #25333 and #25369 are the holders/sets half (closed). #25652 and #25701 are translation (closed; merged 2026-10-24T21:55Z, after 18.1.0). None covers a description column. New.
Why here: the Setup → Positions list is objectui's app-shell metadata-admin, and the server already serves description (18.1.0). The fix is all console, so the card lives in objectui. Its bare references were qualified before the transfer (it was objectstack-ai/objectstack#25743).
Transferred 2026-10-26T03:47Z from objectstack-ai/objectui#13504, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the ui/ workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.
Paths. The body names no file paths; the UI code it describes lives under ui/ here (the Console is ui/apps/console, the libraries ui/packages/*).
Claim: PM loop round 2 · 2026-10-26T11:30Z
Session: session_01SMps7wq7rBTk53e8KTSEup
Account: os-steve
Branch: claude/issue-25909-position-description-column
Worktree: objectstack-issue-25909
Domain: domain:ui
Seat: domain:ui#2
File surface: ui/packages/app-shell/src/services/builtinComponents.tsx (the position resource's listColumns only), ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.positionGrants-25333.test.tsx (extend the fixture and header assertions); root .changeset/25909-position-description-column.md (stop on breach; explain in the report). scripts/sdui-manifest.record.json is expected to stay untouched, because app-shell is outside the registry closure. ⛔ ui/packages/i18n/src/locales/*.ts, ui/.github/** and the root .github/workflows/ci.yml are out of bounds.
Container & model: S, mode:subagent, model: default tier, effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: the Setup → Positions list, which omits a column the permission and object lists have | the served position description (already on /meta/position, translated by the read gate) | every Setup admin telling positions apart
Thread-read: 6407770237
Premise: holds 2026-10-26T11:27Z — on origin/main8a990d8b41, builtinComponents.tsx:215-234 declares the position columns Name / Label / Holders / Permission sets with no description key (control: the permission resource at 205-209 has { key: 'description', label: 'Description' }); the header localizes via the existing engine.list.col.description (app-shell metadata-admin/i18n.ts:244, :4034), and defaultCell renders an absent value as the empty cell.
Serial constraints cleared: none — no open claim holds builtinComponents.tsx.
Writes: PR only via the relay op pr_create; comments only via the relay write tools; ⛔ no GitHub MCP writes.
Ruling section: triage 6407765315 — show the position's description in the Setup → Positions list.
Suggested route: add { key: 'description', label: 'Description' } after Label (no width, flex like the permission list), before Holders and Permission sets; no custom render, no truncation (matches the permission list). Test: give one fixture position a description and leave the others without one; assert the localized header, the text, and the empty cell.
{
"issue": 25909,
"status": "done",
"branch": "claude/issue-25909-position-description-column",
"pr": "https://github.com/objectstack-ai/objectstack/pull/26100",
"session": "session_01SMps7wq7rBTk53e8KTSEup",
"premise_still_valid": true,
"summary": "Premise held on origin/main c1ae4a45 (worktree base): the position resource's listColumns had Name/Label/Holders/Permission sets and no description; the permission resource has { key: 'description', label: 'Description' }; engine.list.col.description exists (app-shell metadata-admin i18n.ts:244 en, :4034 zh); defaultCell renders an absent value as EmptyValue. Added { key: 'description', label: 'Description' } right after Label, no width, no custom render, in ui/packages/app-shell/src/services/builtinComponents.tsx, and a root .changeset/25909-position-description-column.md ('@object-ui/app-shell': patch, Clause-② no, Metadata-protocol none). Extended ResourceListPage.positionGrants-25333.test.tsx: sales_manager carries a description, support_agent and auditor none; the new case asserts the localized header between Label and Holders, the served text, and the shared empty cell. Translated descriptions come from the server's translatePosition overlay on GET /meta/position; the console renders the served text and adds no lookup. Draft PR #26100 opened via the relay, assignee os-steve; worktree removed after.",
"tests": "Red first: test-only commit 18603827 against the unchanged columns -> 'Unable to find role=\"columnheader\" and name \"Description\"', Tests 1 failed | 5 passed (lock VERDICT command-exit 1). Green at head 7a62f956: cd ui && pnpm exec vitest run --maxWorkers=2 packages/app-shell/src/views/metadata-admin/ResourceListPage.positionGrants-25333.test.tsx -> Test Files 1 passed, Tests 6 passed (VERDICT command-exit 0). 17 app-shell test files importing builtinComponents or rendering ResourceListPage with positions -> Test Files 17 passed, Tests 135 passed (VERDICT command-exit 0). pnpm --filter @object-ui/app-shell run type-check (tsconfig.json and tsconfig.test.json, which compiles the test) -> VERDICT command-exit 0. The red/green pair serves as the reverse verification: the test imports builtinComponents from src, so there is no dist to rebuild or mutate. Declared narrowing: the full app-shell suite (1730 test files) was not run locally and is left to CI. No test:repo or dogfood work is owed: the diff touches no packages/spec, CLI, or repo-project tests.",
"gates": "At head 7a62f956: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 34 commands, each run with its exit code captured before any pipe: all 34 exit 0 (check-adr-0087-registration, check-changeset-no-major, check-closing-keyword-parity, check-comment-mask-corpus, check-empty-changeset, check-sdui-manifest, check-undeclared-dep-imports, their --self-tests, release-rehearsal-clone/release-pending-publish --self-test, spec check:duration-unit-keys, check:changeset-gate-self-tests, closed-ceremony-text, cross-package-test-inputs, dispatcher-error-vocabulary, driver-memory-census, engine-double-contract, gitlink-declared, nul-bytes, pm-changeset-deadline-census, published-files, query-options-erasure, refd-timer-probe, test-source-alias, tier-file-adoption, type-check-coverage, type-check-debt, watch-hint-literal, where-matcher). --ran: '34 derived famil(ies) accounted for — 34 run, 0 NOT-MEASURED (a DERIVED zero — all 34 recorded an exit code and none of them is 3)'. Roster gate flagged under .changeset: node scripts/check-changeset-fixed.mjs exit 0. check-sdui-manifest: intact, scripts/sdui-manifest.record.json untouched, as expected. CI on PR #26100 when this was written: 23 check-runs, 20 in_progress, 1 success, 2 skipped. in_progress is the true value; not waited on.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 — one fleet-write relay dispatch (POST /repos/objectstack-ai/objectstack/dispatches; the run did pr_create POST /pulls draft + POST /issues/26100/assignees [os-steve], read back 3092 bytes identical), and this os-dev-report comment via post-stamped.mjs (POST /issues/25909/comments). git push x3 to the branch (not REST).",
"open_questions": [],
"out_of_scope_findings": []
}
Activity
objectstack-fleet commentedon Oct 25, 2026
Triage: transferred from objectstack and graded —
enhancement·priority:p3·domain:ui·area:records·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-25T04:56Z⛔ Not a claim, ⛔ not a dispatch.
app-shellmetadata-admin, and the server already servesdescription(18.1.0). The fix is all console, so the card lives in objectui. Its bare references were qualified before the transfer (it was objectstack-ai/objectstack#25743).Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Transferred 2026-10-26T03:47Z from objectstack-ai/objectui#13504, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the
ui/workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.Paths. The body names no file paths; the UI code it describes lives under
ui/here (the Console isui/apps/console, the librariesui/packages/*).No stale
pm:dispatchedor assignee to strip.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop round 2 · 2026-10-26T11:30Z
Session:
session_01SMps7wq7rBTk53e8KTSEupAccount:
os-steveBranch:
claude/issue-25909-position-description-columnWorktree:
objectstack-issue-25909Domain:
domain:uiSeat:
domain:ui#2File surface:
ui/packages/app-shell/src/services/builtinComponents.tsx(thepositionresource'slistColumnsonly),ui/packages/app-shell/src/views/metadata-admin/ResourceListPage.positionGrants-25333.test.tsx(extend the fixture and header assertions); root.changeset/25909-position-description-column.md(stop on breach; explain in the report).scripts/sdui-manifest.record.jsonis expected to stay untouched, because app-shell is outside the registry closure. ⛔ui/packages/i18n/src/locales/*.ts,ui/.github/**and the root.github/workflows/ci.ymlare out of bounds.Container & model:
S,mode:subagent,model: default tier,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
the Setup → Positions list, which omits a column the permission and object lists have|the served position description (already on /meta/position, translated by the read gate)|every Setup admin telling positions apartThread-read: 6407770237
Premise: holds 2026-10-26T11:27Z — on
origin/main8a990d8b41,builtinComponents.tsx:215-234declares the position columns Name / Label / Holders / Permission sets with nodescriptionkey (control: thepermissionresource at 205-209 has{ key: 'description', label: 'Description' }); the header localizes via the existingengine.list.col.description(app-shellmetadata-admin/i18n.ts:244,:4034), anddefaultCellrenders an absent value as the empty cell.Serial constraints cleared: none — no open claim holds
builtinComponents.tsx.Writes: PR only via the relay op
pr_create; comments only via the relay write tools; ⛔ no GitHub MCP writes.{ key: 'description', label: 'Description' }after Label (no width, flex like the permission list), before Holders and Permission sets; no custom render, no truncation (matches the permission list). Test: give one fixture position a description and leave the others without one; assert the localized header, the text, and the empty cell.objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 25909, "status": "done", "branch": "claude/issue-25909-position-description-column", "pr": "https://github.com/objectstack-ai/objectstack/pull/26100", "session": "session_01SMps7wq7rBTk53e8KTSEup", "premise_still_valid": true, "summary": "Premise held on origin/main c1ae4a45 (worktree base): the position resource's listColumns had Name/Label/Holders/Permission sets and no description; the permission resource has { key: 'description', label: 'Description' }; engine.list.col.description exists (app-shell metadata-admin i18n.ts:244 en, :4034 zh); defaultCell renders an absent value as EmptyValue. Added { key: 'description', label: 'Description' } right after Label, no width, no custom render, in ui/packages/app-shell/src/services/builtinComponents.tsx, and a root .changeset/25909-position-description-column.md ('@object-ui/app-shell': patch, Clause-② no, Metadata-protocol none). Extended ResourceListPage.positionGrants-25333.test.tsx: sales_manager carries a description, support_agent and auditor none; the new case asserts the localized header between Label and Holders, the served text, and the shared empty cell. Translated descriptions come from the server's translatePosition overlay on GET /meta/position; the console renders the served text and adds no lookup. Draft PR #26100 opened via the relay, assignee os-steve; worktree removed after.", "tests": "Red first: test-only commit 18603827 against the unchanged columns -> 'Unable to find role=\"columnheader\" and name \"Description\"', Tests 1 failed | 5 passed (lock VERDICT command-exit 1). Green at head 7a62f956: cd ui && pnpm exec vitest run --maxWorkers=2 packages/app-shell/src/views/metadata-admin/ResourceListPage.positionGrants-25333.test.tsx -> Test Files 1 passed, Tests 6 passed (VERDICT command-exit 0). 17 app-shell test files importing builtinComponents or rendering ResourceListPage with positions -> Test Files 17 passed, Tests 135 passed (VERDICT command-exit 0). pnpm --filter @object-ui/app-shell run type-check (tsconfig.json and tsconfig.test.json, which compiles the test) -> VERDICT command-exit 0. The red/green pair serves as the reverse verification: the test imports builtinComponents from src, so there is no dist to rebuild or mutate. Declared narrowing: the full app-shell suite (1730 test files) was not run locally and is left to CI. No test:repo or dogfood work is owed: the diff touches no packages/spec, CLI, or repo-project tests.", "gates": "At head 7a62f956: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 34 commands, each run with its exit code captured before any pipe: all 34 exit 0 (check-adr-0087-registration, check-changeset-no-major, check-closing-keyword-parity, check-comment-mask-corpus, check-empty-changeset, check-sdui-manifest, check-undeclared-dep-imports, their --self-tests, release-rehearsal-clone/release-pending-publish --self-test, spec check:duration-unit-keys, check:changeset-gate-self-tests, closed-ceremony-text, cross-package-test-inputs, dispatcher-error-vocabulary, driver-memory-census, engine-double-contract, gitlink-declared, nul-bytes, pm-changeset-deadline-census, published-files, query-options-erasure, refd-timer-probe, test-source-alias, tier-file-adoption, type-check-coverage, type-check-debt, watch-hint-literal, where-matcher). --ran: '34 derived famil(ies) accounted for — 34 run, 0 NOT-MEASURED (a DERIVED zero — all 34 recorded an exit code and none of them is 3)'. Roster gate flagged under .changeset: node scripts/check-changeset-fixed.mjs exit 0. check-sdui-manifest: intact, scripts/sdui-manifest.record.json untouched, as expected. CI on PR #26100 when this was written: 23 check-runs, 20 in_progress, 1 success, 2 skipped. in_progress is the true value; not waited on.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0", "api_writes": "2 — one fleet-write relay dispatch (POST /repos/objectstack-ai/objectstack/dispatches; the run did pr_create POST /pulls draft + POST /issues/26100/assignees [os-steve], read back 3092 bytes identical), and this os-dev-report comment via post-stamped.mjs (POST /issues/25909/comments). git push x3 to the branch (not REST).", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
ACCEPT → PR #26100 comment 6415635829 · seat 2 · 2026-10-26T12:09Z
objectstack-fleet commentedon Oct 26, 2026
Landed · seat 2 · 2026-10-26T12:39Z
04148aca, head7a62f956(ACCEPT 6415635829)origin/main9c796401, contains04148aca(git merge-base --is-ancestorexit 0)gh-readonly-queue/main/pr-26100-*: 0 leftFixes #25909on #26100Status:
pm:dispatchedremoved; the card is done. Nothing remains.