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 → Audit Logs: the row drawer has no way to open the audit row's record page, which lists the other changes to the same record #30748
Filing gate: ① the ui half of #30209 row 4 B, named by the seat in its ACCEPT on PR #30728 (comment 6672516987, "Out of scope / follow-up"); the server half landed in PR #30728 (merge commit 05a30e6e). ⛔ Not a claim. Suggested grade: p3.
Dedupe: sys_audit_log_detail, AuditLogPage drawer record page, other changes to the same record — no open card. New.
Reader: the ui/** lane (ui/apps/console/src/pages/system/AuditLogPage.tsx).
What happens
Since PR #30728, sys_audit_log has a default record page (sys_audit_log_detail, plugin-audit) that lists every other ledger row with the same record_id, newest first. Beside a settings write's config_change row (which carries only a digest) that list holds the CRUD mirror's create/update rows for the same settings row, so the administrator can read what the value was changed to; config_change rows now carry record_id = the settings row id for this to work.
Setup → Audit Logs (AuditLogPage.tsx) is a custom page: a row click opens its own side drawer (event details + JSON diff), and nothing in the drawer opens the row's record page. "Open as list" goes to the object list, not to a row. So from the place an administrator actually reads the ledger, the "other changes to the same record" list is not reachable; the administrator still sees a digest and no value.
Expected
The drawer offers a way to open the selected audit row's record page (the generic record route for sys_audit_log / that row's id), at least for a row that carries a record_id.
Or, if the ui lane prefers, the drawer itself lists the other rows with the same record_id (the same read the page's related list makes, through the data API, so the ledger's read gate and redaction apply unchanged).
A pin: on a config_change row the drawer reaches the mirror's update row for the same settings row.
Related: #30209 (the Setup readability card; rows 1 and 5 B still open there).
Claim: PM loop round 3 · 2026-11-06T06:02Z
Session: session_01L9qibxW6qraU2Z3mwupUGp
Account: os-tesla (the card's assignee)
Branch: the card thread's designated claude/project-thread-* branch, named in a claim amendment once the thread reports it
Worktree: objectstack-issue-30748
Domain: domain:ui
Seat: domain:ui#3 (left to this seat by domain:ui#2, mailbox #30819 6678145460)
File surface: ui/apps/console/src/pages/system/AuditLogPage.tsx and its tests, plus the console language-pack keys the drawer link needs (⛔ no ceiling raise on i18n-locale-en; if the eager pack has no room, stop and report). The drawer opens the selected row's record page through the generic record route for sys_audit_log (or lists same-record_id rows through the data API, so the ledger's read gate and redaction apply unchanged); pin: on a config_change row the drawer reaches the mirror's update row for the same settings row. ⛔ packages/** (the server half landed in PR #30728). Stop on breach and explain in the report.
Container & model: M, mode:thread, model: default (opus), effort: high
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6677423095
Premise: holds — triage audit 6677423095 (p3, domain:ui); the dev re-reads AuditLogPage.tsx and sys_audit_log_detail on origin/mainfd749a45 before the first edit.
Serial constraints cleared: none — no open PR touches ui/apps/console/src/pages/system/; domain:ui#2 holds #30511 / #30325 (language packs: ordinary concurrency, the later lander merges main).
{
"issue": 30748,
"status": "done",
"branch": "claude/project-thread-rww6gn",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30854",
"session": "session_01L9qibwL8YVfPjy1sSSSEkH",
"head": "ee3ec7bb",
"premise_still_valid": true,
"summary": "The Setup Audit Log drawer gains an Open entry page link to the console record route for sys_audit_log and the selected row id, under the mounting app, carrying state.from back to the Audit Log; on a row with a record_id a hint line says the page lists every change to the same record. Two keys (console.system.auditLog.openEntryPage, openEntryPageHint) in all ten built-in packs. Option 1 of the card taken (link); the in-drawer list was not built, the record page already makes that read under the ledger's read gate.",
"tests": "new AuditLogPage.entryPage-30748.test.tsx: 5/5 passed; AuditLogPage* + consolePagesLocale-secondPass-13460: Test Files 10/10, Tests 56/56; ablation via ablation-replace.mjs (link to listBase): 4/5 red, restored blob == HEAD",
"gates": "dispatch-gates --commands derived 36 families on ee3ec7bb; --ran: 36 run, 0 NOT-MEASURED, all exit 0 (check-sdui-manifest + --self-test exit 0). ui scripts/ suite first exit 1 on 7 tests needing spec .d.ts (OS_SKIP_DTS build); after env -u OS_SKIP_DTS spec build the two files exit 0 (129/129). Eager closure on a CI=true console build: exit 0, i18n-locale-en 55.7 KB / 58.6 KB ceiling, headroom 2.9 KB, ceiling untouched. CI check-runs: in_progress at report time",
"line_budget": "n/a, no skills/** in the diff",
"files_changed": [
".changeset/30748-audit-log-entry-page.md",
"ui/apps/console/src/pages/system/AuditLogPage.tsx",
"ui/apps/console/src/pages/system/AuditLogPage.entryPage-30748.test.tsx",
"ui/packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts"
],
"deviations": [
"commit b85081cd (WIP) carries no Claude-Session / Co-authored-by trailer pair; branch not force-pushable (AGENTS §3 criterion 1), later commits carry the pair",
"console type-check, full UI test shards and repo lint declared to CI (console type-check needs the full .d.ts closure build)",
"origin/main moved 3 commits after the branch point, none touching the diff's paths; not merged before pr_create"
],
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "2 — mcp__github__issue_read (get, get_comments); 0 writes",
"api_writes": "2 — relay pr_create (#30854), relay comment (this report) via post-stamped.mjs",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": []
}
The claim read no. PR #30854 adds two console keys to all ten published @object-ui/i18n packs, and a published pack publishes every key, so the PR widens the public face. Owed: the lane seat's TIER_DEFAULT review of the declaration before the queue. Everything else in claim 6678211779 stands.
Landed 2026-11-06T15:00Z: PR #30854 merged through the merge queue as c1da957185 (2026-11-06T14:36Z on the PR; seat ACCEPT 6679338489, same-head TIER_DEFAULT PASS 6679326013; enqueued by the seat under the maintainer's 「你应该是使用 pm-dispatch 技能自主审核和落地 pr」, 2026-11-06T14:09Z). The PR said Fixes #30748, so the card is closed. pm:dispatched removed in this round.
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p3 kept ·
domain:ui· 2026-11-06T05:05Z⛔ Not a claim.
domain:ui#3's ask (6677410830). Read fresh: the ui half of Setup: show what people can really do and what really changed, using names rather than ids #30209 row 4 B. Setup → Audit Logs' row drawer (AuditLogPage.tsx) gains a way to open the audit row's record page,sys_audit_log_detail, which PR feat(service-settings,plugin-audit,plugin-sharing): config_change rows name their settings row; record pages for audit rows and queues #30728 added. That page lists the other ledger rows for the samerecord_id.domain:uikept.pm:queueis added so the lane can pick it up.Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp
Claim: PM loop round 3 · 2026-11-06T06:02Z
Session:
session_01L9qibxW6qraU2Z3mwupUGpAccount:
os-tesla(the card's assignee)Branch: the card thread's designated
claude/project-thread-*branch, named in a claim amendment once the thread reports itWorktree:
objectstack-issue-30748Domain:
domain:uiSeat:
domain:ui#3(left to this seat bydomain:ui#2, mailbox #30819 6678145460)File surface:
ui/apps/console/src/pages/system/AuditLogPage.tsxand its tests, plus the console language-pack keys the drawer link needs (⛔ no ceiling raise oni18n-locale-en; if the eager pack has no room, stop and report). The drawer opens the selected row's record page through the generic record route forsys_audit_log(or lists same-record_idrows through the data API, so the ledger's read gate and redaction apply unchanged); pin: on aconfig_changerow the drawer reaches the mirror's update row for the same settings row. ⛔packages/**(the server half landed in PR #30728). Stop on breach and explain in the report.Container & model:
M,mode:thread,model: default (opus),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6677423095
Premise: holds — triage audit 6677423095 (p3,
domain:ui); the dev re-readsAuditLogPage.tsxandsys_audit_log_detailonorigin/mainfd749a45before the first edit.Serial constraints cleared: none — no open PR touches
ui/apps/console/src/pages/system/;domain:ui#2holds #30511 / #30325 (language packs: ordinary concurrency, the later lander mergesmain).objectstack-fleet commentedon Nov 6, 2026
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp
席位核对 · Amendment · 2026-11-06T06:03Z · claim 6678211779 branch named
Branch:
claude/project-thread-rww6gn(the card thread's designated branch; sessionsession_01L9qibwL8YVfPjy1sSSSEkH), cut fromorigin/main. Everything else in claim 6678211779 stands.objectstack-fleet commentedon Nov 6, 2026
domain:ui#3 · os-tesla · session_01L9qibwL8YVfPjy1sSSSEkH
os-dev-report
{ "issue": 30748, "status": "done", "branch": "claude/project-thread-rww6gn", "pr": "https://github.com/objectstack-ai/objectstack/pull/30854", "session": "session_01L9qibwL8YVfPjy1sSSSEkH", "head": "ee3ec7bb", "premise_still_valid": true, "summary": "The Setup Audit Log drawer gains an Open entry page link to the console record route for sys_audit_log and the selected row id, under the mounting app, carrying state.from back to the Audit Log; on a row with a record_id a hint line says the page lists every change to the same record. Two keys (console.system.auditLog.openEntryPage, openEntryPageHint) in all ten built-in packs. Option 1 of the card taken (link); the in-drawer list was not built, the record page already makes that read under the ledger's read gate.", "tests": "new AuditLogPage.entryPage-30748.test.tsx: 5/5 passed; AuditLogPage* + consolePagesLocale-secondPass-13460: Test Files 10/10, Tests 56/56; ablation via ablation-replace.mjs (link to listBase): 4/5 red, restored blob == HEAD", "gates": "dispatch-gates --commands derived 36 families on ee3ec7bb; --ran: 36 run, 0 NOT-MEASURED, all exit 0 (check-sdui-manifest + --self-test exit 0). ui scripts/ suite first exit 1 on 7 tests needing spec .d.ts (OS_SKIP_DTS build); after env -u OS_SKIP_DTS spec build the two files exit 0 (129/129). Eager closure on a CI=true console build: exit 0, i18n-locale-en 55.7 KB / 58.6 KB ceiling, headroom 2.9 KB, ceiling untouched. CI check-runs: in_progress at report time", "line_budget": "n/a, no skills/** in the diff", "files_changed": [ ".changeset/30748-audit-log-entry-page.md", "ui/apps/console/src/pages/system/AuditLogPage.tsx", "ui/apps/console/src/pages/system/AuditLogPage.entryPage-30748.test.tsx", "ui/packages/i18n/src/locales/{ar,de,en,es,fr,ja,ko,pt,ru,zh}.ts" ], "deviations": [ "commit b85081cd (WIP) carries no Claude-Session / Co-authored-by trailer pair; branch not force-pushable (AGENTS §3 criterion 1), later commits carry the pair", "console type-check, full UI test shards and repo lint declared to CI (console type-check needs the full .d.ts closure build)", "origin/main moved 3 commits after the branch point, none touching the diff's paths; not merged before pr_create" ], "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "2 — mcp__github__issue_read (get, get_comments); 0 writes", "api_writes": "2 — relay pr_create (#30854), relay comment (this report) via post-stamped.mjs", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [] }objectstack-fleet commentedon Nov 6, 2026
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp
席位核对 · Amendment 2 · 2026-11-06T06:44Z · claim 6678211779 Clause-② corrected
Clause-②: yes (widening)
The claim read
no. PR #30854 adds two console keys to all ten published@object-ui/i18npacks, and a published pack publishes every key, so the PR widens the public face. Owed: the lane seat'sTIER_DEFAULTreview of the declaration before the queue. Everything else in claim 6678211779 stands.objectstack-fleet commentedon Nov 6, 2026
domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp
Landed 2026-11-06T15:00Z: PR #30854 merged through the merge queue as
c1da957185(2026-11-06T14:36Z on the PR; seat ACCEPT 6679338489, same-headTIER_DEFAULTPASS 6679326013; enqueued by the seat under the maintainer's 「你应该是使用 pm-dispatch 技能自主审核和落地 pr」, 2026-11-06T14:09Z). The PR saidFixes #30748, so the card is closed.pm:dispatchedremoved in this round.