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
查看全部动态 opens an unsorted system audit list: no time order, metadata and login rows mixed in, and a developer sentence as its description #30036
Filed by the record-page epic seat from a browser evaluation of the Console on main63b86b385d (example CRM, zh-CN, dev admin). An independent reviewer ran the pass and the seat re-checked the evidence named below. No domain:* label is set: triage routes this card.
Business reason
The home page's 活动动态 panel shows what happened to the business, and its 查看全部动态 link promises more of the same. It opens a raw table instead. A manager asking "what happened today" sees rows out of time order, with 更新了 系统元数据 and 更新了 用户:最近登录时间 between the sales events. The page title is also 活动, the same word as the CRM's own 活动 (calls and meetings).
Reproduce
Home → 查看全部动态, which opens /apps/com.example.crm/sys_activity.
Seen on the reviewer's screenshot, which the seat read: header 活动 / 所有记录 · 70 · 只读 · 审计日志, description 最近活动流条目(轻量、去规范化). The 时间戳 column runs 下午4:34, 4:40, 4:36, 4:44, 4:35, 4:38. Rows include 创建了 元数据历史, 更新了 系统元数据, 创建了 数据迁移 pinyin-search-companion and 更新了 用户 "Dev Admin":最近登录时间, between business rows.
Code readings on 63b86b385d
ui/packages/app-shell/src/console/home/HomePage.tsx:893 and ui/packages/app-shell/src/layout/InboxPopover.tsx:292: both doors go to the plain object route.
packages/plugins/plugin-audit/src/objects/sys-activity.object.ts:21,35: label Activity, description Recent activity stream entries (lightweight, denormalized); the zh-CN bundle translates that sentence literally.
The list was read as a platform admin. What a member without admin rights sees is not measured, and the card should measure it.
Acceptance
The page opened from these doors shows newest first by default.
Rows about platform internals (metadata history and drafts, migrations, a user's login stamps) are not in that default page. The rows stay available to an administrator on the audit surface.
The description a reader sees says what the page is, in plain words.
The page's title does not collide with an app's own 活动. The wording is the implementer's to propose on the PR.
Read fresh. 查看全部动态 opens sys_activity raw: rows are in no time order, system and login rows are mixed in, and the description is a developer sentence.
Routed to domain:server first, by 「平台相关的功能,应该尽量先改平台」. The default sort and the description belong to plugin-audit's sys-activity.object.ts. Which rows the home link shows (HomePage.tsx, InboxPopover.tsx) is domain:ui's half, which the PR names.
Claim: PM loop round 1
Session: session_01Utp6CYVV6fcAQrNTDQRvPb (seat) · dev = project card thread session_01Utp6CXc6hMgykEtjFYQXjy
Account: os-bill
Branch: claude/project-thread-cikdr1 (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-30036
Domain: domain:server
Seat: domain:server#5
File surface: packages/plugins/plugin-audit/src/objects/sys-activity.object.ts, its translation bundle(s) and tests; ui/packages/app-shell/src/console/home/HomePage.tsx, ui/packages/app-shell/src/layout/InboxPopover.tsx and their tests; one changeset. ⛔ packages/spec/**, skills/**, docs/adr/**, .claude/**, AGENTS.md (stop on breach; explain in the report)
Container & model: M, mode:thread, model: default tier (opus) — dispatch-gates --tier at dfafae81: no path-derived mandate, effort: high (M, browser check)
Clause-②: no — a default view, sort and description on an existing system object; no published accept set or public export changes
Metadata-protocol: none
Responsibility: plugin-audit's sys_activity object declares no default order or row scope, and the home and inbox doors open its raw list (reading at dfafae81) | none: the doors route to the plain object page | every console user who follows 查看全部动态 on main
Thread-read: 6628953547
Premise: holds — at dfafae81, sys-activity.object.ts:35 still reads 'Recent activity stream entries (lightweight, denormalized)'; HomePage.tsx:893 and InboxPopover.tsx:292 navigate to /apps/${hostAppSegment}/sys_activity
Serial constraints cleared: #30108 (seat 2) grants member_default read on sys_activity in plugin-security and may pin a parent gate in plugin-audit; no shared file expected, the dev merges main after it lands. domain:ui in-flight claims (#30184 #30140 #30088 #30075 #30073 #30064 #30063) are read by the dev before touching ui/**.
Order: project file server-seat5/dispatch-30036.md, delivered to the card thread.
{
"issue": 30036,
"status": "done",
"branch": "claude/project-thread-cikdr1",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30230",
"session": "session_01Utp6CXc6hMgykEtjFYQXjy",
"premise_still_valid": true,
"summary": "sys_activity (plugin-audit) now declares two list views. `recent` is declared first, so it is what both doors open (they name no view; ObjectView falls back to views[0]): timestamp desc, filtered to actor_id not null and object_name not in the metadata store, the migration ledger, sys_user and sys_jwks. `all` lists every readable row. Label Activity Feed (zh-CN 动态), plain description, zh-CN/ja-JP/es-ES translations. No ui/** file changed. PM assumption falsified on measurement: the sign-in stamp and the first JWKS mint are written under the signing-in person's id, not the system, so they are excluded by object; changed_fields cannot be used because parent-field-query-guard refuses filters on it for most readers.",
"tests": "New src/sys-activity-default-view.integration.test.ts (real engine + driver-sqlite-wasm + AuditPlugin; the view's rules lowered as the Console lowers them and parsed by parseFilterAST): Tests 8 passed (8). Ablation via scripts/ablation-replace.mjs --delete (src is the subject, no dist in the path): actor_id rule removed -> 1 failed | 7 passed; object_name rule removed -> 1 failed | 7 passed; both restores 'blob == HEAD'. pnpm --filter @objectstack/plugin-audit test at 4cd5356dc: Test Files 71 passed (71), Tests 1136 passed (1136); typecheck exit 0. Browser (fresh dev:crm, Console via Vite, zh-CN): admin Home -> 查看全部动态 -> recent 3 rows newest first, all 8 rows incl. sign-in stamp, JWKS, migration, platform settings; member: sys_activity read 403 PERMISSION_DENIED (member_default grants none until #30108), no Home door, direct URL shows 无权访问.",
"gates": "dispatch-gates --commands at 4cd5356dc: 60 derived; each run with exit captured before any pipe; --ran: 60 run, 0 NOT-MEASURED, 0 UNRUN, all exit 0. First pass reds: check:platform-object-tenancy-census (object file imported metadata-core root entry; fixed in 4cd5356dc), check-plugin-teardown-shape --self-test exit 3 on shallow tree (green after fetching its fixture commit). eslint --no-inline-config on the two changed source files exit 0. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub call (reads through gh api GET only)",
"api_writes": "2 — relay pr_create (#30230) and this os-dev-report comment via post-stamped; plus 7 git pushes to the thread branch (not REST)",
"line_budget": "+357 / -15 across 7 files (generated bundles 4 x 18 lines; changeset 11; object 93; test 196)",
"files_changed": [
".changeset/30036-activity-feed-default-view.md",
"packages/plugins/plugin-audit/src/objects/sys-activity.object.ts",
"packages/plugins/plugin-audit/src/sys-activity-default-view.integration.test.ts",
"packages/plugins/plugin-audit/src/translations/en.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/es-ES.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/ja-JP.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/zh-CN.objects.generated.ts"
],
"deviations": [
"Screenshots are not embedded in the PR body: no image-hosting path through the relay. Five screenshots are held in the project (server-seat5/30036/); the PR body carries the page text from the same runs.",
"No ui/** change and no app-shell suite run: the doors already open the first declared view, so HomePage.tsx and InboxPopover.tsx stay untouched; the domain:ui claim-surface intersection is therefore empty.",
"pnpm lint not run repo-wide (os-dev.md: CI-owned); eslint on the changed source files instead.",
"Clause line check: the plugin-audit translation bundles gain keys objects.sys_activity._views.recent.{label,emptyState.title,emptyState.message} and _views.all.label; ACTIVITY_FEED_EXCLUDED_OBJECTS is exported from the object module only, not from the package entry. Clause-②: no kept; seat to correct if it reads the bundle keys as published surface.",
"Session-context assign/review step skipped per the order's Writes line.",
"Commit 4dc9ce3c was pushed with one red case in the new test (fixture id list), fixed in the next commit 61bb8996.",
"First gate pass under-ran 10 families (a gate consumed the runner's stdin); re-run with stdin closed, all 60 accounted."
],
"open_questions": [
{
"question": "zh-CN label: 动态 also renders the Studio capability toggle enable.feeds. Keep it?",
"options": ["A keep 动态 (matches Home's 查看全部动态, different surface from a form toggle)", "B 动态流"],
"recommendation": "A, because the toggle is a switch on the object form, not a page title, and 动态 is the word the door itself uses."
}
],
"security_findings": "none",
"out_of_scope_findings": [
"class: none · noted, not filed: recent cannot reproduce Home's roster cut (objects the reader's apps list) server-side, so a person's edit of another platform object (permission set, setting) still shows in recent; carrier: none"
]
}
{
"issue": 30036,
"status": "done",
"branch": "claude/project-thread-cikdr1",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30230",
"session": "session_01Utp6CXc6hMgykEtjFYQXjy",
"premise_still_valid": true,
"summary": "Supersedes report 6648286116 (head 4cd5356dc); this one is at head 2110d932e, after merging origin/main with #30108's PR #30222. sys_activity (plugin-audit) declares two list views. `recent` is first, so both doors open it (they name no view; ObjectView falls back to views[0]): timestamp desc, actor_id not null, object_name not in the metadata store, the migration ledger and every object @objectstack/platform-objects/identity exports (derived from its exports). `all` lists every readable row. Label Activity Feed (zh-CN 动态), plain description, zh-CN/ja-JP/es-ES translations. No ui/** file changed. Change since the first report: the member re-check found 'Created Member ID (member)' and 'Created User' rows (written under the admin's id, readable by the added member) in recent, so the sys_user + sys_jwks exclusion was widened to the identity domain. PM assumption falsified: sign-in stamps and the first JWKS mint are written under the person's id, not the system; changed_fields cannot be filtered (parent-field-query-guard).",
"tests": "New src/sys-activity-default-view.integration.test.ts: Tests 9 passed (9) (real engine + driver-sqlite-wasm + AuditPlugin; view rules lowered as the Console lowers them, parsed by parseFilterAST). Ablation at 61bb8996 (rule lines unchanged since) via ablation-replace --delete: actor_id rule removed -> 1 failed | 7 passed; object_name rule removed -> 1 failed | 7 passed; restores blob == HEAD. pnpm --filter @objectstack/plugin-audit test at 2110d932e: Test Files 71 passed (71), Tests 1137 passed (1137); typecheck exit 0. Browser at 2110d932e (fresh dev:crm, Console via Vite, zh-CN): admin Home -> 查看全部动态 -> recent 3 business rows newest first, all 8 incl. sign-in stamp, JWKS, migration, platform settings. Member (admin-created, sales_rep position, member_default now reads sys_activity): Home shows the link; recent 3 business rows newest first; all 5 incl. Created Member / Created User.",
"gates": "dispatch-gates --commands at 2110d932e: 60 derived; each run with exit captured before any pipe and stdin closed; --ran: 60 run, 0 NOT-MEASURED, 0 UNRUN, all exit 0. Earlier-head red check:platform-object-tenancy-census fixed in 4cd5356dc. eslint --no-inline-config on the two changed source files exit 0. PR check-runs on 2110d932e: in_progress at report time.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "0 — no MCP GitHub call (reads through gh api GET only)",
"api_writes": "3 — relay pr_create (#30230), report comment 6648286116, this superseding report comment (seat-requested); plus 9 git pushes to the thread branch (not REST)",
"line_budget": "see PR files tab at 2110d932e: 7 files (changeset, object, new test, 4 generated bundles)",
"files_changed": [
".changeset/30036-activity-feed-default-view.md",
"packages/plugins/plugin-audit/src/objects/sys-activity.object.ts",
"packages/plugins/plugin-audit/src/sys-activity-default-view.integration.test.ts",
"packages/plugins/plugin-audit/src/translations/en.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/es-ES.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/ja-JP.objects.generated.ts",
"packages/plugins/plugin-audit/src/translations/zh-CN.objects.generated.ts"
],
"deviations": [
"No ui/** change and no app-shell suite run: the doors already open the first declared view, so HomePage.tsx and InboxPopover.tsx stay untouched; the domain:ui claim-surface intersection is therefore empty.",
"pnpm lint not run repo-wide (os-dev.md: CI-owned); eslint on the changed source files instead.",
"Clause line check: the plugin-audit translation bundles gain keys objects.sys_activity._views.recent.{label,emptyState.title,emptyState.message} and _views.all.label; ACTIVITY_FEED_EXCLUDED_OBJECTS is exported from the object module only, not from the package entry. Clause-②: no kept; seat to correct if it reads the bundle keys as published surface.",
"Session-context assign/review step skipped per the order's Writes line.",
"Commit 4dc9ce3c was pushed with one red case in the new test (fixture id list), fixed in the next commit 61bb8996.",
"Screenshots are not embedded in the PR body: no image-hosting path through the relay. Six screenshots (admin and member, Home / recent / all) are held in the project (server-seat5/30036/); the PR body carries the page text from the same runs.",
"PR body not edited by me: the seat asked for the member results in the PR body, but os-dev.md rule 3 says the dev writes the body once and the seat writes later changes. The full revised body is at /mnt/project-files/server-seat5/30036/pr-body-v2.md (attribution block first, 14656 bytes) for the seat to write.",
"The first gate pass at 4cd5356dc under-ran 10 families (a gate consumed the runner's stdin); later runs close stdin."
],
"open_questions": [
{
"question": "zh-CN label: 动态 also renders the Studio capability toggle enable.feeds. Keep it?",
"options": [
"A keep 动态 (matches Home's 查看全部动态, different surface from a form toggle)",
"B 动态流"
],
"recommendation": "A, because the toggle is a switch on the object form, not a page title, and 动态 is the word the door itself uses."
}
],
"security_findings": "none",
"out_of_scope_findings": [
"class: none · noted, not filed: recent cannot reproduce Home's roster cut (objects the reader's apps list) server-side, so a person's edit of a non-identity platform object (permission set, setting) still shows in recent; carrier: none"
]
}
PR #30230 merged at 2026-11-05T04:29Z (171b6ddc2); this card closed by Fixes #30036. The default recent view, the plain label and description are on main; member re-check on the PR (seat ACCEPT 6649200307).
Activity
objectstack-fleet commentedon Nov 4, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p2 kept ·
domain:server· 2026-11-04T10:59Z⛔ Not a claim.
sys_activityraw: rows are in no time order, system and login rows are mixed in, and the description is a developer sentence.domain:serverfirst, by 「平台相关的功能,应该尽量先改平台」. The default sort and the description belong toplugin-audit'ssys-activity.object.ts. Which rows the home link shows (HomePage.tsx,InboxPopover.tsx) isdomain:ui's half, which the PR names.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb
Claim: PM loop round 1
Session:
session_01Utp6CYVV6fcAQrNTDQRvPb(seat) · dev = project card threadsession_01Utp6CXc6hMgykEtjFYQXjyAccount:
os-billBranch:
claude/project-thread-cikdr1(harness-pinned thread branch; platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30036Domain:
domain:serverSeat:
domain:server#5File surface:
packages/plugins/plugin-audit/src/objects/sys-activity.object.ts, its translation bundle(s) and tests;ui/packages/app-shell/src/console/home/HomePage.tsx,ui/packages/app-shell/src/layout/InboxPopover.tsxand their tests; one changeset. ⛔packages/spec/**,skills/**,docs/adr/**,.claude/**,AGENTS.md(stop on breach; explain in the report)Container & model:
M,mode:thread,model: default tier (opus) — dispatch-gates --tier at dfafae81: no path-derived mandate,effort: high(M, browser check)Clause-②: no — a default view, sort and description on an existing system object; no published accept set or public export changes
Metadata-protocol: none
Responsibility:
plugin-audit's sys_activity object declares no default order or row scope, and the home and inbox doors open its raw list (reading at dfafae81) | none: the doors route to the plain object page | every console user who follows 查看全部动态 on mainThread-read: 6628953547
Premise: holds — at
dfafae81,sys-activity.object.ts:35still reads'Recent activity stream entries (lightweight, denormalized)';HomePage.tsx:893andInboxPopover.tsx:292navigate to/apps/${hostAppSegment}/sys_activitySerial constraints cleared:
#30108 (seat 2) grants member_default read on sys_activity in plugin-security and may pin a parent gate in plugin-audit; no shared file expected, the dev merges main after it lands. domain:ui in-flight claims (#30184 #30140 #30088 #30075 #30073 #30064 #30063) are read by the dev before touching ui/**.Order: project file
server-seat5/dispatch-30036.md, delivered to the card thread.objectstack-fleet commentedon Nov 5, 2026
domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb
os-dev-report
{ "issue": 30036, "status": "done", "branch": "claude/project-thread-cikdr1", "pr": "https://github.com/objectstack-ai/objectstack/pull/30230", "session": "session_01Utp6CXc6hMgykEtjFYQXjy", "premise_still_valid": true, "summary": "sys_activity (plugin-audit) now declares two list views. `recent` is declared first, so it is what both doors open (they name no view; ObjectView falls back to views[0]): timestamp desc, filtered to actor_id not null and object_name not in the metadata store, the migration ledger, sys_user and sys_jwks. `all` lists every readable row. Label Activity Feed (zh-CN 动态), plain description, zh-CN/ja-JP/es-ES translations. No ui/** file changed. PM assumption falsified on measurement: the sign-in stamp and the first JWKS mint are written under the signing-in person's id, not the system, so they are excluded by object; changed_fields cannot be used because parent-field-query-guard refuses filters on it for most readers.", "tests": "New src/sys-activity-default-view.integration.test.ts (real engine + driver-sqlite-wasm + AuditPlugin; the view's rules lowered as the Console lowers them and parsed by parseFilterAST): Tests 8 passed (8). Ablation via scripts/ablation-replace.mjs --delete (src is the subject, no dist in the path): actor_id rule removed -> 1 failed | 7 passed; object_name rule removed -> 1 failed | 7 passed; both restores 'blob == HEAD'. pnpm --filter @objectstack/plugin-audit test at 4cd5356dc: Test Files 71 passed (71), Tests 1136 passed (1136); typecheck exit 0. Browser (fresh dev:crm, Console via Vite, zh-CN): admin Home -> 查看全部动态 -> recent 3 rows newest first, all 8 rows incl. sign-in stamp, JWKS, migration, platform settings; member: sys_activity read 403 PERMISSION_DENIED (member_default grants none until #30108), no Home door, direct URL shows 无权访问.", "gates": "dispatch-gates --commands at 4cd5356dc: 60 derived; each run with exit captured before any pipe; --ran: 60 run, 0 NOT-MEASURED, 0 UNRUN, all exit 0. First pass reds: check:platform-object-tenancy-census (object file imported metadata-core root entry; fixed in 4cd5356dc), check-plugin-teardown-shape --self-test exit 3 on shallow tree (green after fetching its fixture commit). eslint --no-inline-config on the two changed source files exit 0. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub call (reads through gh api GET only)", "api_writes": "2 — relay pr_create (#30230) and this os-dev-report comment via post-stamped; plus 7 git pushes to the thread branch (not REST)", "line_budget": "+357 / -15 across 7 files (generated bundles 4 x 18 lines; changeset 11; object 93; test 196)", "files_changed": [ ".changeset/30036-activity-feed-default-view.md", "packages/plugins/plugin-audit/src/objects/sys-activity.object.ts", "packages/plugins/plugin-audit/src/sys-activity-default-view.integration.test.ts", "packages/plugins/plugin-audit/src/translations/en.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/es-ES.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/ja-JP.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/zh-CN.objects.generated.ts" ], "deviations": [ "Screenshots are not embedded in the PR body: no image-hosting path through the relay. Five screenshots are held in the project (server-seat5/30036/); the PR body carries the page text from the same runs.", "No ui/** change and no app-shell suite run: the doors already open the first declared view, so HomePage.tsx and InboxPopover.tsx stay untouched; the domain:ui claim-surface intersection is therefore empty.", "pnpm lint not run repo-wide (os-dev.md: CI-owned); eslint on the changed source files instead.", "Clause line check: the plugin-audit translation bundles gain keys objects.sys_activity._views.recent.{label,emptyState.title,emptyState.message} and _views.all.label; ACTIVITY_FEED_EXCLUDED_OBJECTS is exported from the object module only, not from the package entry. Clause-②: no kept; seat to correct if it reads the bundle keys as published surface.", "Session-context assign/review step skipped per the order's Writes line.", "Commit 4dc9ce3c was pushed with one red case in the new test (fixture id list), fixed in the next commit 61bb8996.", "First gate pass under-ran 10 families (a gate consumed the runner's stdin); re-run with stdin closed, all 60 accounted." ], "open_questions": [ { "question": "zh-CN label: 动态 also renders the Studio capability toggle enable.feeds. Keep it?", "options": ["A keep 动态 (matches Home's 查看全部动态, different surface from a form toggle)", "B 动态流"], "recommendation": "A, because the toggle is a switch on the object form, not a page title, and 动态 is the word the door itself uses." } ], "security_findings": "none", "out_of_scope_findings": [ "class: none · noted, not filed: recent cannot reproduce Home's roster cut (objects the reader's apps list) server-side, so a person's edit of another platform object (permission set, setting) still shows in recent; carrier: none" ] }Report taken 2026-11-05T02:45Z.
objectstack-fleet commentedon Nov 5, 2026
domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb
os-dev-report
{ "issue": 30036, "status": "done", "branch": "claude/project-thread-cikdr1", "pr": "https://github.com/objectstack-ai/objectstack/pull/30230", "session": "session_01Utp6CXc6hMgykEtjFYQXjy", "premise_still_valid": true, "summary": "Supersedes report 6648286116 (head 4cd5356dc); this one is at head 2110d932e, after merging origin/main with #30108's PR #30222. sys_activity (plugin-audit) declares two list views. `recent` is first, so both doors open it (they name no view; ObjectView falls back to views[0]): timestamp desc, actor_id not null, object_name not in the metadata store, the migration ledger and every object @objectstack/platform-objects/identity exports (derived from its exports). `all` lists every readable row. Label Activity Feed (zh-CN 动态), plain description, zh-CN/ja-JP/es-ES translations. No ui/** file changed. Change since the first report: the member re-check found 'Created Member ID (member)' and 'Created User' rows (written under the admin's id, readable by the added member) in recent, so the sys_user + sys_jwks exclusion was widened to the identity domain. PM assumption falsified: sign-in stamps and the first JWKS mint are written under the person's id, not the system; changed_fields cannot be filtered (parent-field-query-guard).", "tests": "New src/sys-activity-default-view.integration.test.ts: Tests 9 passed (9) (real engine + driver-sqlite-wasm + AuditPlugin; view rules lowered as the Console lowers them, parsed by parseFilterAST). Ablation at 61bb8996 (rule lines unchanged since) via ablation-replace --delete: actor_id rule removed -> 1 failed | 7 passed; object_name rule removed -> 1 failed | 7 passed; restores blob == HEAD. pnpm --filter @objectstack/plugin-audit test at 2110d932e: Test Files 71 passed (71), Tests 1137 passed (1137); typecheck exit 0. Browser at 2110d932e (fresh dev:crm, Console via Vite, zh-CN): admin Home -> 查看全部动态 -> recent 3 business rows newest first, all 8 incl. sign-in stamp, JWKS, migration, platform settings. Member (admin-created, sales_rep position, member_default now reads sys_activity): Home shows the link; recent 3 business rows newest first; all 5 incl. Created Member / Created User.", "gates": "dispatch-gates --commands at 2110d932e: 60 derived; each run with exit captured before any pipe and stdin closed; --ran: 60 run, 0 NOT-MEASURED, 0 UNRUN, all exit 0. Earlier-head red check:platform-object-tenancy-census fixed in 4cd5356dc. eslint --no-inline-config on the two changed source files exit 0. PR check-runs on 2110d932e: in_progress at report time.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "0 — no MCP GitHub call (reads through gh api GET only)", "api_writes": "3 — relay pr_create (#30230), report comment 6648286116, this superseding report comment (seat-requested); plus 9 git pushes to the thread branch (not REST)", "line_budget": "see PR files tab at 2110d932e: 7 files (changeset, object, new test, 4 generated bundles)", "files_changed": [ ".changeset/30036-activity-feed-default-view.md", "packages/plugins/plugin-audit/src/objects/sys-activity.object.ts", "packages/plugins/plugin-audit/src/sys-activity-default-view.integration.test.ts", "packages/plugins/plugin-audit/src/translations/en.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/es-ES.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/ja-JP.objects.generated.ts", "packages/plugins/plugin-audit/src/translations/zh-CN.objects.generated.ts" ], "deviations": [ "No ui/** change and no app-shell suite run: the doors already open the first declared view, so HomePage.tsx and InboxPopover.tsx stay untouched; the domain:ui claim-surface intersection is therefore empty.", "pnpm lint not run repo-wide (os-dev.md: CI-owned); eslint on the changed source files instead.", "Clause line check: the plugin-audit translation bundles gain keys objects.sys_activity._views.recent.{label,emptyState.title,emptyState.message} and _views.all.label; ACTIVITY_FEED_EXCLUDED_OBJECTS is exported from the object module only, not from the package entry. Clause-②: no kept; seat to correct if it reads the bundle keys as published surface.", "Session-context assign/review step skipped per the order's Writes line.", "Commit 4dc9ce3c was pushed with one red case in the new test (fixture id list), fixed in the next commit 61bb8996.", "Screenshots are not embedded in the PR body: no image-hosting path through the relay. Six screenshots (admin and member, Home / recent / all) are held in the project (server-seat5/30036/); the PR body carries the page text from the same runs.", "PR body not edited by me: the seat asked for the member results in the PR body, but os-dev.md rule 3 says the dev writes the body once and the seat writes later changes. The full revised body is at /mnt/project-files/server-seat5/30036/pr-body-v2.md (attribution block first, 14656 bytes) for the seat to write.", "The first gate pass at 4cd5356dc under-ran 10 families (a gate consumed the runner's stdin); later runs close stdin." ], "open_questions": [ { "question": "zh-CN label: 动态 also renders the Studio capability toggle enable.feeds. Keep it?", "options": [ "A keep 动态 (matches Home's 查看全部动态, different surface from a form toggle)", "B 动态流" ], "recommendation": "A, because the toggle is a switch on the object form, not a page title, and 动态 is the word the door itself uses." } ], "security_findings": "none", "out_of_scope_findings": [ "class: none · noted, not filed: recent cannot reproduce Home's roster cut (objects the reader's apps list) server-side, so a person's edit of a non-identity platform object (permission set, setting) still shows in recent; carrier: none" ] }Report taken 2026-11-05T03:50Z.
objectstack-fleet commentedon Nov 5, 2026
domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb
Seat ACCEPT on PR #30230 at head
2110d932·pr_ready+automerge_enablesent 2026-11-05T03:53Z.Fixes #30036closes this card at merge.objectstack-fleet commentedon Nov 5, 2026
domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb
Landed · 2026-11-05T04:31Z
PR #30230 merged at 2026-11-05T04:29Z (
171b6ddc2); this card closed byFixes #30036. The defaultrecentview, the plain label and description are onmain; member re-check on the PR (seat ACCEPT 6649200307).