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
plugin-approvals: the Approval Requests column "Record ID" shows the target record's name, so call the field "Record" (#27356 row 7) #28250
Filing gate: ① a named defect seen in a customer walk-through (a label that says the wrong thing). Carried out of #27356 row 7, which the ui seat cannot fix: the label is server metadata.
Business reason
Who: an administrator reading Setup › Approval Requests (HotCRM walk-through, hotcrm#2320 Setup S9). What happens: the column headed "Record ID" shows the record's name and icon (the console draws the pointer target, objectui#13036), so the header and the cell disagree and the admin is told to read an id that is not there. If not done: every approvals list, the request's highlights strip and its Details tab keep the wrong word.
Mechanism
packages/plugins/plugin-approvals/src/sys-approval-request.object.ts L269–270: record_id: Field.text({ label: 'Record ID', … }), the id half of the request's pointer pair (ADR-0052 §5).
L121–126: the list views carry record_id alone and the console draws the target record (its object's icon and name) in that cell.
The same column heads all four list views (L133, L142, L156, L166) and highlightFields (L82).
Fix
Relabel the field "Record" (the walk-through's word), and carry the new label through wherever this object's field labels are translated or pinned (language packs, label tests). The field name record_id, its queries and its lock pair stay unchanged.
Acceptance
The Approval Requests list header, the request's highlights and Details read "Record" (and its translation where a pack carries the field).
No query, seed or pointer-pair test changes behaviour; record_id is still the stored name.
Claim: PM loop round 4
Session: session_01L9qibx5r5nhDMwpRs4SL6D
Account: os-tesla
Branch: claude/project-thread-wzzflr (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-28250
Domain: domain:spec
Seat: domain:spec#2
File surface: packages/plugins/plugin-approvals/src/sys-approval-request.object.ts (the record_id label only), the translation bundles that carry it, label pin tests, changeset (patch). ⛔ no ui/** and no governed path (stop on breach; explain in the report)
Container & model: S, mode:thread, model: TIER_DEFAULT, effort: high; label only, no contract review owed; cross-lane by the maintainer's 「座位之间可以协调,你有空你就可以派」 (2026-10-31T05:10Z)
Clause-②: no (a label)
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds (re-read at origin/main3d9175d0; the gap named on the card is still there)
Serial constraints cleared: none (no open PR edits this object's labels)
Ruling-ref: none on the shape; dispatch authority = the maintainer's 「p3 也可以开发」 (2026-10-30T12:41Z) and 「每个座位并发可以5」 (2026-10-30T15:04Z); the card's filing gate ① (a named defect from a customer walk-through, #27356 row 7)
Dispatched 2026-10-31T05:21Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
{
"issue": 28250,
"status": "done",
"branch": "claude/project-thread-wzzflr",
"pr": "https://github.com/objectstack-ai/objectstack/pull/28347",
"session": "session_01L9qibz9o2UXx9eqto4hqY3",
"premise_still_valid": true,
"summary": "sys_approval_request.record_id is labelled 'Record' instead of 'Record ID': the source label, the regenerated en bundle, and the hand-written zh-CN (记录), ja-JP (レコード) and es-ES (Registro) values, matching the words sys_approval_action.record_id already uses. Field name, queries, seeds and the object_name pointer pair are unchanged. No test pinned the old label, so none changes and no copy pin is added.",
"tests": "head 27ee7b7d: pnpm --filter @objectstack/plugin-approvals test 1361/1361 and typecheck, lock VERDICT command-exit 0; check-i18n-bundles --write exit 0, sole diff the en record_id leaf. No ablation: no tested behaviour changed.",
"gates": "dispatch-gates --commands at 27ee7b7d: 55 families, stdin /dev/null, exit codes before any pipe; --ran: 55 derived, 55 run, 0 NOT-MEASURED, 0 UNRUN, 0 red (check-plugin-teardown-shape --self-test and check:dual-build-cjs-loads first exit 3, re-run exit 0 after fetching pinned commit 621a4876 and building packages 77/77). CI check-runs: in_progress at report time. Record: spec-seat-2/r2026-10-30/out/28250-gates-ran-27ee7b7d.list",
"line_budget": "20 changed lines (+15/-5), 6 files; under the 3000 threshold",
"files_changed": [
".changeset/28250-approval-request-record-label.md",
"packages/plugins/plugin-approvals/src/sys-approval-request.object.ts",
"packages/plugins/plugin-approvals/src/translations/en.objects.generated.ts",
"packages/plugins/plugin-approvals/src/translations/es-ES.objects.generated.ts",
"packages/plugins/plugin-approvals/src/translations/ja-JP.objects.generated.ts",
"packages/plugins/plugin-approvals/src/translations/zh-CN.objects.generated.ts"
],
"deviations": [],
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "3 — mcp__github__issue_read (get, get_comments x2); 0 writes",
"api_writes": "2 — fleet-write relay pr_create (#28347); post-stamped comment on #28250 (this report)",
"open_questions": [],
"out_of_scope_findings": [
"class: a (user-visible label disagrees with the cell) · reach: not measured live; sys_audit_log list views audit_all / two more (plugin-audit sys-audit-log.object.ts L68, L78, L131) list record_id, drawn as the pointer card per sys-audit-log-pointer-pair.test.ts, under the header 'Record ID'; sys_activity.record_id and sys_mail_association.record_id (highlightFields) carry the same label on a pointer id half · dedupe words: audit log Record ID column label pointer record name · carrier: the seat (same family as #28250, one follow-up card for the remaining pointer id halves)"
]
}
Amends claim 6539513940 (same session, same branch claude/project-thread-wzzflr). The card thread found the same label defect on other objects: sys_audit_log lists record_id as a pointer column headed "Record ID" in three views, and sys_activity and sys_mail_association carry the same label. The seat folds them into this PR wherever the console draws the pointer target (name and icon) in that cell, so the header and the cell agree; a field whose cell really shows an id keeps "Record ID".
File surface adds: the record_id label on sys_audit_log, sys_activity and sys_mail_association (each only where the cell draws the pointer target), their translation bundles and label pins. Names, queries, seeds and pointer pairs stay unchanged. Serial constraints for the added files: none known; the thread checks open PRs before pushing.
Withdraws amendment 6539738537. The maintainer ruled at 2026-10-31T06:04Z that cross-lane cards already in progress continue but take no new cross-lane work, so this PR stays on sys_approval_request.record_id only (claim 6539513940). The same label on sys_audit_log, sys_activity and sys_mail_association is filed as its own domain:server card.
Activity
objectstack-fleet commentedon Oct 31, 2026
domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D
Claim: PM loop round 4
Session:
session_01L9qibx5r5nhDMwpRs4SL6DAccount:
os-teslaBranch:
claude/project-thread-wzzflr(the card thread's designated push branch, the recorded platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-28250Domain:
domain:specSeat:
domain:spec#2File surface:
packages/plugins/plugin-approvals/src/sys-approval-request.object.ts(therecord_idlabel only), the translation bundles that carry it, label pin tests, changeset (patch). ⛔ noui/**and no governed path (stop on breach; explain in the report)Container & model:
S,mode:thread,model: TIER_DEFAULT,effort: high; label only, no contract review owed; cross-lane by the maintainer's 「座位之间可以协调,你有空你就可以派」 (2026-10-31T05:10Z)Clause-②: no (a label)
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: none
Premise: holds (re-read at
origin/main3d9175d0; the gap named on the card is still there)Serial constraints cleared: none (no open PR edits this object's labels)
Ruling-ref: none on the shape; dispatch authority = the maintainer's 「p3 也可以开发」 (2026-10-30T12:41Z) and 「每个座位并发可以5」 (2026-10-30T15:04Z); the card's filing gate ① (a named defect from a customer walk-through, #27356 row 7)
Dispatched 2026-10-31T05:21Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.
objectstack-fleet commentedon Oct 31, 2026
domain:spec#2 · os-tesla · session_01L9qibz9o2UXx9eqto4hqY3
os-dev-report
{ "issue": 28250, "status": "done", "branch": "claude/project-thread-wzzflr", "pr": "https://github.com/objectstack-ai/objectstack/pull/28347", "session": "session_01L9qibz9o2UXx9eqto4hqY3", "premise_still_valid": true, "summary": "sys_approval_request.record_id is labelled 'Record' instead of 'Record ID': the source label, the regenerated en bundle, and the hand-written zh-CN (记录), ja-JP (レコード) and es-ES (Registro) values, matching the words sys_approval_action.record_id already uses. Field name, queries, seeds and the object_name pointer pair are unchanged. No test pinned the old label, so none changes and no copy pin is added.", "tests": "head 27ee7b7d: pnpm --filter @objectstack/plugin-approvals test 1361/1361 and typecheck, lock VERDICT command-exit 0; check-i18n-bundles --write exit 0, sole diff the en record_id leaf. No ablation: no tested behaviour changed.", "gates": "dispatch-gates --commands at 27ee7b7d: 55 families, stdin /dev/null, exit codes before any pipe; --ran: 55 derived, 55 run, 0 NOT-MEASURED, 0 UNRUN, 0 red (check-plugin-teardown-shape --self-test and check:dual-build-cjs-loads first exit 3, re-run exit 0 after fetching pinned commit 621a4876 and building packages 77/77). CI check-runs: in_progress at report time. Record: spec-seat-2/r2026-10-30/out/28250-gates-ran-27ee7b7d.list", "line_budget": "20 changed lines (+15/-5), 6 files; under the 3000 threshold", "files_changed": [ ".changeset/28250-approval-request-record-label.md", "packages/plugins/plugin-approvals/src/sys-approval-request.object.ts", "packages/plugins/plugin-approvals/src/translations/en.objects.generated.ts", "packages/plugins/plugin-approvals/src/translations/es-ES.objects.generated.ts", "packages/plugins/plugin-approvals/src/translations/ja-JP.objects.generated.ts", "packages/plugins/plugin-approvals/src/translations/zh-CN.objects.generated.ts" ], "deviations": [], "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "3 — mcp__github__issue_read (get, get_comments x2); 0 writes", "api_writes": "2 — fleet-write relay pr_create (#28347); post-stamped comment on #28250 (this report)", "open_questions": [], "out_of_scope_findings": [ "class: a (user-visible label disagrees with the cell) · reach: not measured live; sys_audit_log list views audit_all / two more (plugin-audit sys-audit-log.object.ts L68, L78, L131) list record_id, drawn as the pointer card per sys-audit-log-pointer-pair.test.ts, under the header 'Record ID'; sys_activity.record_id and sys_mail_association.record_id (highlightFields) carry the same label on a pointer id half · dedupe words: audit log Record ID column label pointer record name · carrier: the seat (same family as #28250, one follow-up card for the remaining pointer id halves)" ] }objectstack-fleet commentedon Oct 31, 2026
domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D
Claim amendment · file surface · #28250 · 2026-10-31T05:48Z
Amends claim 6539513940 (same session, same branch
claude/project-thread-wzzflr). The card thread found the same label defect on other objects:sys_audit_loglistsrecord_idas a pointer column headed "Record ID" in three views, andsys_activityandsys_mail_associationcarry the same label. The seat folds them into this PR wherever the console draws the pointer target (name and icon) in that cell, so the header and the cell agree; a field whose cell really shows an id keeps "Record ID".File surface adds: the
record_idlabel onsys_audit_log,sys_activityandsys_mail_association(each only where the cell draws the pointer target), their translation bundles and label pins. Names, queries, seeds and pointer pairs stay unchanged. Serial constraints for the added files: none known; the thread checks open PRs before pushing.objectstack-fleet commentedon Oct 31, 2026
domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D
Claim amendment withdrawn · #28250 · 2026-10-31T06:04Z
Withdraws amendment 6539738537. The maintainer ruled at 2026-10-31T06:04Z that cross-lane cards already in progress continue but take no new cross-lane work, so this PR stays on
sys_approval_request.record_idonly (claim 6539513940). The same label onsys_audit_log,sys_activityandsys_mail_associationis filed as its owndomain:servercard.