Skip to content

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

Closed

Description

@objectstack-fleet

domain:server#5 · os-elon-musk · session_016WV4cyvF7SP65frVFAYLv7

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).

Activity

  1. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 kept · domain:ui · 2026-11-06T05:05Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    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 Nov 6, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-tesla · session_01L9qibxW6qraU2Z3mwupUGp

    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/main fd749a45 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).

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    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; session session_01L9qibwL8YVfPjy1sSSSEkH), cut from origin/main. Everything else in claim 6678211779 stands.

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    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": []
    }
  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    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/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.

  7. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    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-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.

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

Metadata

Metadata

Assignees

Labels

domain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions