Skip to content

feat: give each of the twelve positions a one-sentence description (#2249) - #2280

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-2249-position-descriptions
Oct 25, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-2249-position-descriptions

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Refs objectstack-ai/objectstack#2249 (partial: the card stays open; the list column and translation wait on the platform)

What changed

  • src/sales/sharing/positions.ts: each of the 12 positions carries a one-sentence business description (what the position is for: who approves what, which pool it receives work from, which territory it edits). It names the business job, not the rule wiring. The header records why, and that the descriptions are English only.
  • test/position-descriptions.test.ts: pins that every position the composed app serves has a non-empty, one-sentence description, that PositionSchema keeps it, and that no two are the same. Ablation: deleting the eu_sales_team description turns it red (1 failed, 13 passed).
  • .changeset/2249-position-descriptions.md (patch).

Translation: the locale packs translate no position label, and TranslationData in @objectstack/spec 18.1.0 has no positions namespace (only objects, picklists, apps, messages, globalActions, dashboards, datasets, pages, flows, metadataForms, settingsCommon, settings). So the descriptions follow the labels and stay English. The card's "translated in en, zh-CN, es-ES and ja-JP" cannot be met in this repo. It needs a platform namespace first (AGENTS.md section 2).

Measurement (on the pinned @objectstack/* 18.1.0)

  • Served metadata: I booted objectstack dev, signed in as the dev admin and called GET /api/v1/meta/position?include=grants. All 12 HotCRM positions come back with their description, beside _holderCount and _grantedPermissionSets. dist/objectstack.json carries 12 of 12.
  • The Setup -> Positions list does not show it. No browser was available in this session, so this was read from the installed console bundle (@objectstack/console 18.1.0, dist/assets/src-*.js). The position registration declares listColumns Name, Label, Holders and Permission sets, and no description. The permission registration next to it does list description. The platform half (objectstack#25333) added holders and sets only. So the card's done-when "Setup list shows the descriptions" waits on a console change (a Description column on the position list). That is out of scope for HotCRM, and this PR files nothing. The detail page was not measured.

Verify

Each stage run on its own: validate 0, typecheck 0, lint 0, hygiene 0, hygiene:tokens 0, build 0, test --maxWorkers=2: 220 files, 4332 passed, 1 skipped. After the full run I made comment-only edits. Then I re-ran validate, typecheck, lint, hygiene, build and the new test, and all were green.

Out-of-scope findings

  1. The console's position list (18.1.0) has no Description column. A platform/console card is needed before Setup -> Positions shows these descriptions.
  2. There is no translation namespace for positions, so position labels and descriptions cannot be localized from a package.

🤖 Generated with Claude Code

https://claude.ai/code/session_014xanhPEmGTMTfVH4UokwJT

…2249)

Every position in src/sales/sharing/positions.ts now carries a business
`description`, served with the position metadata so Setup -> Positions can
say what each one is for. English only: the platform translation bundle has
no namespace for positions, and the locale packs translate no position label.

test/position-descriptions.test.ts pins that every served position has a
one-sentence description that the platform schema keeps.

Fixes #2249

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014xanhPEmGTMTfVH4UokwJT
@vercel

vercel Bot commented Oct 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hotcrm Ignored Ignored Oct 25, 2026 4:26am UTC

Request Review

@github-actions github-actions Bot added ci/cd CI plumbing and the verification pipeline metadata Declarative metadata — schema, security posture, UI surfaces labels Oct 25, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 25, 2026 04:47
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit a7faf81 Oct 25, 2026
10 checks passed
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT (partial) · repo:hotcrm seat 1 · os-elon-musk · session session_014xanhPEmGTMTfVH4UokwJT · 2026-10-25T04:49Z · head 8bb6f2d90774bfb7c2e512475214ff2d5b4badd0

Contract review of hotcrm#2249 against its claim (6393130500) and Done when.

check reading
Shape Draft → main, 3 files: positions.ts, a new pin and a changeset. No governed path. The body says Refs objectstack-ai/objectstack#2249, not Fixes, so the card stays open (the seat edited it).
Done when 1, description Met for English. All 12 positions carry one business sentence that describes the job, not the grants. Translation is not met: the spec 18.1.0 translation bundle has no positions namespace. That arrives with objectstack#25652 / objectstack-ai/objectstack#25701, merged 2026-10-24T21:55Z, after 18.1.0.
Done when 2, Setup shows it Not met on 18.1.0. It is served (GET /meta/position returns 12/12 descriptions), but the console position list declares no Description column. Filed upstream as objectstack-ai/objectstack#25909.
Done when 3, pin Met. test/position-descriptions.test.ts pins one sentence per served position, schema retention and uniqueness. Deleting one description turns it red.
Changeset patch, read in full. It says plainly that the list shows nothing yet and the text is English only.
Gates on this head All 9 check-runs success on 8bb6f2d.

The card goes back to pm:blocked on objectstack#25743 and the release carrying objectstack-ai/objectstack#25652. Its remaining half is the translation in four locales, plus measuring the list.

Landing authority: the maintainer's standing word in the seat thread, 「后续你按照pm-dispatch 规则审核通过的issue都可以落地」 (2026-10-23T13:14Z). Landing: pr_ready then automerge_enable through the relay; the merge queue squashes.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd CI plumbing and the verification pipeline metadata Declarative metadata — schema, security posture, UI surfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant