Skip to content

Delegations (OOO): the Delegator can only be the signed-in user, but the field starts at "Select…" and a search for a colleague answers "No options found" with no reason — prefill it and say why (hotcrm#2194 R2-T2-U04) #25342

Closed

Description

@objectstack-fleet

维护者速读

  • 事由: 委托(外出)表单的委托人只能是当前登录用户,但字段默认空白,搜同事只显示「无选项」,不说明原因。
  • 要做: 默认填当前用户,并在字段下说明「只能委托你自己的审批」。
  • 完成标准: 打开表单即已填好委托人,看得懂为什么不能选别人。

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 R2-T2-U04. 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).

Governing text

Why (measured)

Landing

Read on objectstack origin/main 7b047b44:

  • packages/plugins/plugin-approvals/src/sys-approval-delegation.object.ts delegator_id (~:98–104): lookupFilters: [{ field: 'id', operator: 'eq', value: '{current_user_id}' }], no default, and a description that does not say only you can be chosen. Pinned in sys-approval-delegation-delegator-picker.test.ts.

Done when

  • New Delegation opens with the Delegator set to the signed-in user.
  • The field's help says only your own approvals can be delegated.
  • The existing picker pin plus one for the default.

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: delegat. 2 open hits: #25280 (a delegation's organization scope) and #25251 (a security gate). Not this form. New.


Generated by Claude Code

Activity

  1. added
    area:workflowApprovals and automation — the work that runs without a person driving it
    bugSomething isn't working
    domain:servicesRetired 2026-10-22, alias of domain:server (services surface); in-flight cards keep it until landed
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 23, 2026
  2. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · domain:services seat 1 (seat post #6021, project run by the Sales account) · S mechanical card, in-seat subagent · 2026-10-23T11:40Z
    Session: session_016g7nYP9wdNx1GDa5XDr7Uy
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-25342-delegator-prefill
    Worktree: objectstack-issue-25342
    Domain: domain:services
    Seat: domain:services#1
    File surface: packages/plugins/plugin-approvals/src/sys-approval-delegation.object.ts (delegator_id default + help), its translations/*.objects.generated.ts bundles (en regenerated with the repo tool, hand-written locales updated), sys-approval-delegation-delegator-picker.test.ts, and a changeset. Stop on breach; explain in the report.
    Container & model: S 级机械卡, mode:subagent (general-purpose subagent loading .claude/agents/os-dev.md as its role file), model: default tier (dispatch-gates.mjs --tier: "no path-derived mandate"), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (adopted suggestion, filing gate ③ on hotcrm#2194's ruling)
    Thread-read: none
    Serial constraints cleared: no open claim or PR declares this object file. Queued sibling #25280 (not yet claimed) edits the same object's organization_id help and bundles; whichever lands second merges main and regenerates.
    Resume-from: none

  3. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25342,
      "status": "done",
      "branch": "claude/issue-25342-delegator-prefill",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/25420",
      "session": "session_016g7nYP9wdNx1GDa5XDr7Uy",
      "premise_still_valid": true,
      "summary": "sys_approval_delegation.delegator_id now declares defaultValue: 'current_user' and its help says that you can delegate only your own approvals, so the field is always you, starts as you, and offers no one else. The stop condition did not trigger. The spelling is the one the spec names: field.zod.ts defaultValue says current_user is legal on user, or on a lookup with reference sys_user, through defaultValueTokenIssue and DEFAULT_VALUE_TOKEN_CURRENT_USER. objectql engine.ts resolves it at insert time through isCurrentUserDefaultToken, and the showcase field-zoo f_owner declares the same token. No other platform object defaults a lookup to the current user, so this is the first. packages/spec was not edited. lookupFilters, the write guard, the approval-service filter and organization_id are untouched. The en bundle was regenerated with check-i18n-bundles --write. es-ES and ja-JP were byte copies of the English and now carry translations, and their two source-hash entries dropped. zh-CN was also updated, because it was a translated value of the old meaning; this is beyond the brief's es-ES/ja-JP list but inside the claim's 'hand-written locales' surface. NOT MEASURED: whether the console create form prefills from the token, because objectui answers 403 from this container (git/trees at .objectui-sha). Deviation: the brief's commit trailer 'Co-Authored-By: Claude Opus 5.5 (1M context)' was refused by the pre-push check:commit-card-trailers hook, and AGENTS.md and os-dev.md require the model-free pair. The commits carry 'Co-authored-by: Claude' plus the Claude-Session line, amended before the first push of that commit.",
      "tests": "head 4194149960. Under the lock: pnpm --filter @objectstack/plugin-approvals test gave 'Test Files 94 passed (94) / Tests 1215 passed (1215)', VERDICT command-exit 0. pnpm --filter @objectstack/plugin-approvals typecheck gave exit 0 and 'check:test-typecheck: OK'. New pin in sys-approval-delegation-delegator-picker.test.ts: the declaration and the registered body carry DEFAULT_VALUE_TOKEN_CURRENT_USER, and a full FieldSchema.safeParse is green. All existing pins are kept. Ablation through scripts/ablation-replace.mjs: the first attempt was an anchor miss, refused at exit 3, and nothing ran. The second deleted \"defaultValue: 'current_user',\" (anchor x1 to x0, blob 006498300f40 to 99718a14f58e). The new pin went red ('expected undefined to be ''current_user''', 1 failed / 9 passed). Restore: blob equals HEAD 006498300f40 and git diff HEAD is empty. The test imports from src, so the ablation needed no build.",
      "gates": "Derived by dispatch-gates --commands at 4194149960: 68 families. --ran with exit codes gave '68 derived, 66 run, 2 NOT-MEASURED, 0 UNRUN', exit 0. Every run family exited 0, including check:i18n ('all bundles in sync') and check-i18n-bundles. NOT MEASURED, both exit 3: pnpm check:dual-build-cjs-loads (PREREQUISITE NOT MET, it needs a full workspace build) and pnpm check:type-check-debt (lock queue-timeout behind pnpm --filter @objectstack/runtime test). Both are declared to CI. check-platform-checklist --changed-from origin/main: 0 anchored files. PR check-runs at report time: 'No other open PR may claim the same issue' success, the two opt-in harnesses skipped, all others in_progress (Lint, Type Check lanes, Governed Surface Queue Guard, Check Changeset, Check PR Size).",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 relay strokes: (1) pr_create through fleet-write run 39955810213, which sent POST /repos/objectstack-ai/objectstack/pulls (draft) and POST /repos/objectstack-ai/objectstack/issues/25420/assignees (os-sales); read-back 4142 bytes identical. (2) This os-dev-report comment through post-stamped.mjs, POST /repos/objectstack-ai/objectstack/issues/25342/comments. git push is direct.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none. Noted in the PR's Acceptance notes and not filed. Whether the objectui create form prefills a current_user defaultValue is unread from this container (objectui 403). If it does not, the same gap hits the showcase field-zoo f_owner field. The evidence is a read gap, not a repro, so this is not class a. Dedupe words: current_user default prefill, create form default, defaultValue token console."
      ]
    }
  4. objectstack-fleet commented on Oct 23, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:services seat 1 (seat post #6021) · os-sales · session_016g7nYP9wdNx1GDa5XDr7Uy · 2026-10-23T13:42Z

    reading value
    PR #25420 MERGED through the queue (ACCEPT on the PR), head 4194149960
    origin/main carries d0a1361bda

    State: the card was closed by Fixes #25342. pm:dispatched is off and the assignee is cleared.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:workflowApprovals and automation — the work that runs without a person driving itbugSomething isn't workingdomain:servicesRetired 2026-10-22, alias of domain:server (services surface); in-flight cards keep it until landedpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions