Repository navigation
Closed
Labels
domain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestNew feature or requestpriority:p3
Description
epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff
From a real-user walkthrough of the development flow, filed on the maintainer's word: 「第二组第三组也同意」 (2026-11-04). Measured on main 987ff33b88 unless a line says otherwise. Test project scaffolded with create-objectstack@18.3.0.
Each row works today but could be clearer. Rows marked 18.3.0 were seen on the published release and not re-run on main.
Console
| # | Observed | Where | Suggestion |
|---|---|---|---|
| 1 | Dialog title 新建Repair Ticket, with no space between Chinese and Latin |
main; ui/packages/i18n/src/locales/zh.ts:229 新建{{object}} |
Space when the object name starts with a Latin letter |
| 2 | The create dialog opened from a lookup has no title; it starts at the section name "Details" | main, by DOM: no h2 |
Title it 新建 and the object label |
| 3 | An action with no successMessage toasts 「操作已成功完成」, which does not say what happened |
main code, ui/packages/core/src/actions/ActionRunner.ts:643; seen on 18.3.0 |
Name the action: "Resolve 已完成" |
| 4 | Every entry in an app's sidebar has the same icon; navigation does not take the object's icon | main |
Inherit the object's icon when an entry names none |
| 5 | Setup's collapsed sidebar is 20+ icons with no text | main |
Tooltips at least, or keep it expanded by default |
| 6 | Field labels on the record page differ in style: REPAIR COST beside 负责人 |
main |
One label style |
| 7 | Money differs by surface: record ¥1,280.50, dashboard ¥1,280.5 (18.3.0) and ¥1,293 for 1293.00 (main). #27520 row 16 asked for one format per column; this is the metric card |
Both | Metric cards keep the currency's decimals, unless the author sets otherwise |
| 8 | Notification list shows the raw topic notify |
18.3.0 | Hide it or give it a label |
| 9 | A mention title reads 「李四 mentioned you」 in a Chinese console. The zh text exists (plugin-audit/src/translations/messages.ts:37); the title follows the recipient's sys_user.locale, then the deployment default, and a new user has no locale |
18.3.0, code read on main |
Give new users a locale, or use the language they last used |
| 10 | The success toast covers the Assignee in the record header for a few seconds | 18.3.0 | Move it, or shorten it |
| 11 | A chart with one bar of value 1 has an axis to 4 and a bar filling the width | 18.3.0 | Axis fits the data |
| 12 | Opening the Setup app without access answers You do not have permission to open the 'com.objectstack.setup' app. in English, where other refusals are localized |
main; packages/rest/src/meta-item-read-gate.ts:797,1693 |
Localize |
CLI and MCP
| # | Observed | Where | Suggestion |
|---|---|---|---|
| 13 | os package export takes -u and -t; os package install takes -r, --email and --password |
main, both --help |
One way to name the server and the credential |
| 14 | A page opened while os dev restarts stays on the splash with an empty root, and does not retry or say anything |
18.3.0, console served by the server | Retry, or show a message |
| 15 | An MCP argument error tells the reader the fix, then adds history for internal developers: "This argument used to be dropped silently…" | main; packages/mcp/src/mcp-http-tools.ts:706 |
Drop the history sentence |
| 16 | list_actions gives a plain member all 36 actions, including ban_user and set_user_manager, and invite_user four times, on four objects. Not a hole: ban_user by that member is refused over REST and OAuth MCP (403 Admin role required) and over an API key, and the target stayed unbanned. An admin over OAuth MCP succeeds; an admin with an API key gets a clear refusal. #28943 fixed one case of this family |
main |
List only what this caller could run |
Metadata
Metadata
Assignees
Labels
domain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestNew feature or requestpriority:p3
Activity
objectstack-fleet commentedon Nov 4, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p3 ·
domain:ui·pm:queue· 2026-11-04T16:34Z⛔ Not a claim.
Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif
Claim: PM loop round 3
Session:
session_01L6bhgVwQZbHRRM9CaXeKifAccount:
os-salesBranch:
claude/project-thread-poei5v(card thread of this project; a thread can push only its designated branch — measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30126Domain:
domain:uiSeat:
domain:ui#5File surface: items 1, 2, 3 and 7 only —
ui/packages/i18n/src/locales/*.ts(new keys / the zhcreateTitlespacing),ui/packages/fields/src/widgets/LookupField.tsxandui/packages/app-shell/src/hooks/useActionModal.tsx(the lookup's create modal title),ui/packages/core/src/actions/ActionRunner.ts(the generic success sentence),ui/packages/plugin-dashboard/src/MetricWidget.tsx(currency decimals), their tests, one root.changeset/. ⛔packages/**, ⛔AppHeader.tsx, ⛔ RecordDetailView.Container & model:
M,mode:thread,model: default — dispatch-gates --tier: no path-derived mandate,effort: highClause-②: yes
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6636204050
Premise: holds (items 1, 2, 3, 7 read on
origin/main; the dev re-measures each before fixing)Serial constraints cleared: #30326 (this seat) and PR #30243 add other keys to the same locale files: the dev merges main before the final push. #30390 (
domain:ui#3) names no file of this surface. Items 4–6 and 8–16 are out of this claim (server, CLI/MCP, re-measure on main, or held by #30344 / #30390) and stay on the card.Scope:
Part of #30126. Clause-②yes (widening)if a new i18n key lands: the seat's TIER_DEFAULT review before the queue. Dispatch order lives in the card thread's opening message.objectstack-fleet commentedon Nov 5, 2026
domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif
Claim amendment (claim 6657997438), item 1 shape — seat ruling.
新建 {{object}}. A post-processor over every zh interpolation reaches far past this card (every count, id and name in the zh bundle); a blanket space breaks the pinned 新建联系人 style.ui/packages/i18n/src/i18n.tsthat pads the interpolated value with one space on a side where it meets a CJK character with a Latin letter or digit, applied only where a zh value names an object in{{object}}and opts in (form.createTitle/editTitle/viewTitleand their:2177twin). Every other key and every static string is untouched; 新建联系人 stays as pinned; the one pin that encodes the defect ('新建Contacts') moves.ui/packages/i18n/src/i18n.tsand its test.objectstack-fleet commentedon Nov 5, 2026
domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif
Claim amendment 2 (claim 6657997438; amends 6658078173), from the card thread's measured findings.
{{object, fmt}}would break the ten-locale{{name}}-only rule pinned byui/packages/i18n/src/__tests__/fallback-placeholder-spelling-3512.test.ts. So the ruled intent moves to an i18next postProcessor registered inui/packages/i18n/src/i18n.ts. It is still opt-in: it acts only on a key-listed table (form.createTitle/editTitle/viewTitle, and theconsole.ai.recordWriteCreateTitle/UpdateTitleobject value), only in zh, and only where an interpolated value whose edge is a Latin letter or digit meets a CJK character. Pack spellings, 新建联系人, and every other key and static string are unchanged. File surface unchanged from amendment 1.DatasetWidget→formatMeasureinui/packages/core/src/utils/dataset-format.ts, not fromMetricWidget. With no authorformat, currency now takes the currency's own minor digits (CNY 2, JPY 0), the same rule as the list cell'sformatCurrency.MetricWidget's static card has the same defect class and is fixed by the same rule, inside the already-claimedMetricWidget.tsx.ui/packages/core/src/utils/dataset-format.tsand its test. At 2026-11-05T12:37Z no open PR touches it orui/packages/i18n/src/i18n.ts.objectstack-fleet commentedon Nov 5, 2026
domain:ui#5 · os-sales · session_01L6bhgTuQiDduLj5Xcj3KMa
os-dev-report
{ "issue": 30126, "status": "done", "branch": "claude/project-thread-poei5v", "pr": "https://github.com/objectstack-ai/objectstack/pull/30495", "head": "70fc02c985ebabfdb6756df72640447207f9512e", "session": "session_01L6bhgTuQiDduLj5Xcj3KMa", "premise_still_valid": true, "items": { "1": "reproduced on main 989ae42d live (zh 新建Repair Ticket); fixed: key-listed zh i18next postProcessor in ui/packages/i18n/src/i18n.ts (form.createTitle/editTitle/viewTitle, console.ai.recordWriteCreateTitle/UpdateTitle); packs unchanged; 新建联系人 unchanged", "2": "reproduced (lookup inline create dialog had no heading); fixed in useActionModal objectName+create branch: form.createTitle with the object label; authored title wins; edit not titled", "3": "reproduced (操作已成功完成); fixed in ActionRunner composeSuccessMessage: labelled action -> new key actions.completedNamed (10 packs, zh “{{action}}”已完成); unlabelled keeps completedSuccessfully", "7": "reproduced on main (¥1,293 for 1293.00); fixed in core dataset-format.ts formatMeasure (currency with no format = currency minor digits) and MetricWidget static card (same rule)" }, "summary": "Items 1, 2, 3 and 7 of #30126 implemented in one draft PR, each reproduced live on main first. Every item reproduced, none dropped. Two mechanism deviations from the dispatch, both agreed by the seat in claim amendment 2: item 1 is a key-listed postProcessor, not a pack formatter; item 7 root cause is core formatMeasure, not MetricWidget.metricPatternDecimals.", "deviations": [ "item 1: dispatch/seat formatter spelling inside the pack value breaks fallback-placeholder-spelling-3512.test.ts (objectui#3512/#4135 ruling: packs use {{name}} only) -> key-listed zh postProcessor in i18n.ts; seat agreed (amendment 2, comment 6658174549)", "item 7: readings come from DatasetWidget -> core formatMeasure (min 0 / max 2), not MetricWidget.metricPatternDecimals; seat added ui/packages/core/src/utils/dataset-format.ts + test to the surface", "bounded in-place: form.editTitle, form.viewTitle, console.ai.recordWriteUpdateTitle share createTitle shape and are in the key list (same class, mechanical, same gate families, no other claim on i18n.ts)", "moved pins in 4 app-shell tests + MetricWidget.numberFormat (,930,000.00 / 1.930.000,00 €): each read the old generic toast or the old whole-unit width" ], "remeasure": "18.3.0 vs main: formatMeasure currency branch is byte-identical at the @object-ui/*@18.3.0 release commit 83d7e4ae and on main (minimumFractionDigits: decimals ?? 0, maximumFractionDigits: decimals ?? 2). Intl zh-CN CNY with that pair: 1280.5 -> ¥1,280.5 (the 18.3.0 report), 1293 -> ¥1,293 (the main report); with no fraction options: ¥1,280.50 / ¥1,293.00. Live on main 989ae42d (showcase stack, repair_metrics dataset sum 1280.5+12.5): before ¥1,293, after ¥1,293.00. Static MetricWidget on main with currency and no format: ¥1,281 (whole units), after ¥1,280.50.", "tests": "vitest touched packages after the main merge: Test Files 100/100, Tests 1508/1508 passed. pnpm --dir ui exec vitest run scripts/: 170 files passed (2 skipped), 4985 tests passed. Ablations, each reverted and git diff HEAD empty after: postProcess off -> 1 failed; modal title off -> 2 failed; named toast off -> 3 failed; formatMeasure width back -> 3 failed; MetricWidget width back -> 4 failed.", "gates": "local: node scripts/pm/dispatch-gates.mjs --commands -> 35 derived families, all run, all exit 0; --ran reconcile: 35 derived, 35 run, 0 NOT-MEASURED, 0 UNRUN. type-check exit 0: @object-ui/i18n, core, react, plugin-dashboard, app-shell (i18n + app-shell re-run after merge). pnpm --dir ui run check:spec-symbols exit 0. check:new-line-citations 0 new. eslint: 1 pre-existing error MetricWidget.tsx (react-hooks, on base at line 419), warnings only otherwise. CI: PR just opened, check-runs pending at report time; seat reads them at ACCEPT.", "line_budget": "25 files, +402 / -26 total; non-test non-changeset source +153 / -14", "files_changed": [ ".changeset/30126-console-copy-titles-toast-money.md", "ui/packages/app-shell/src/hooks/__tests__/useActionModal.objectCreateTitle-30126.test.tsx", "ui/packages/app-shell/src/hooks/__tests__/useConsoleActionRuntime.flowDoneSuccessMessage-12274.test.tsx", "ui/packages/app-shell/src/hooks/useActionModal.tsx", "ui/packages/app-shell/src/views/ObjectView.toolbarScriptSelection-12331.test.tsx", "ui/packages/app-shell/src/views/RecordDetailView.flowDoneSuccessMessage-12274.test.tsx", "ui/packages/app-shell/src/views/RecordFormPage.i18n.test.tsx", "ui/packages/core/src/actions/ActionRunner.ts", "ui/packages/core/src/actions/__tests__/ActionRunner.defaultSuccessToast-10900.test.ts", "ui/packages/core/src/utils/__tests__/dataset-format.test.ts", "ui/packages/core/src/utils/dataset-format.ts", "ui/packages/i18n/src/__tests__/i18n.test.ts", "ui/packages/i18n/src/i18n.ts", "ui/packages/i18n/src/locales/ar.ts", "ui/packages/i18n/src/locales/de.ts", "ui/packages/i18n/src/locales/en.ts", "ui/packages/i18n/src/locales/es.ts", "ui/packages/i18n/src/locales/fr.ts", "ui/packages/i18n/src/locales/ja.ts", "ui/packages/i18n/src/locales/ko.ts", "ui/packages/i18n/src/locales/pt.ts", "ui/packages/i18n/src/locales/ru.ts", "ui/packages/i18n/src/locales/zh.ts", "ui/packages/plugin-dashboard/src/MetricWidget.tsx", "ui/packages/plugin-dashboard/src/__tests__/MetricWidget.numberFormat.test.tsx" ], "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm", "evidence": "zh 1440 before/after shots: evidence commit a21e05e8838cb35609a47e759ef901af618b342a path evidence/30126/ (removed by c5c4f25f); links in the PR body", "mcp_calls": "2: mcp__github__issue_read x2 (reads only, no MCP write)", "api_writes": "3: git push (branch, harness route) · fleet-write relay pr_create -> #30495 (POST /repos/objectstack-ai/objectstack/dispatches, run 42036090883, read-back identical 9147 bytes) · this os-dev-report comment via post-stamped", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: #30126 items 4, 5, 6 and 8 to 16 · out of this dispatch (server/CLI/re-measure or held by other cards) · noted, not filed", "carrier: none · pre-existing eslint error in MetricWidget.tsx (react-hooks: Cannot create components during render) · polish, noted only" ] }objectstack-fleet commentedon Nov 5, 2026
domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif
Landed (items 1, 2, 3 and 7) at 2026-11-05T14:45Z: PR #30495 merged as
ea5807e132(seat ACCEPT 6659644638 on head70fc02c9, TIER_DEFAULT contract review PASS 6659333290). The merge itself read 2026-11-05T14:44Z on the PR. The PR saidPart of #30126, so the card stays open.git grep -n CJK_LATIN_SPACED_KEYS origin/main -- ui/packages/i18n/src/i18n.tsgit grep -c completedNamed origin/main -- ui/packages/i18n/src/locales/zh.ts ui/packages/core/src/actions/ActionRunner.tsuseActionModaltitles the create dialog opened from a lookupform.createTitlewhen the descriptor has no title.formatMeasure(ui/packages/core/src/utils/dataset-format.ts) andMetricWidgetuse the currency's own minor digits when the author wrote noformat.Release: session
session_01L6bhgVwQZbHRRM9CaXeKif· because items 1, 2, 3 and 7 have landed · back topm:queue, assignee cleared.Remainder: items 4–6 and 8–16, as the claim (6657997438) left them: server, CLI and MCP rows (12, 13, 15, 16), rows to re-measure on
main(8, 10, 11, 14), and the console rows 4, 5, 6 and 9. Each row is independent.29 remaining items
objectstack-fleet commentedon Nov 6, 2026
coordinator#1 · hotlong · session_6eb9ec2e0e3f410b91239dab7a337b9e
Ruling: #30126 rows 9, 13, 16 · letter A for each · maintainer 「按推荐裁」 (2026-11-06, in the coordinator session) · 2026-11-06T01:36Z
Answers
domain:server#4's decision 6671252245.os package installuses the majority spelling:-u/--urlreplaces-r/--runtime(BREAKING; the changeset writes FROM → TO), and-t/--tokenis added beside--email/--password. ⛔ No alias for--runtime(no-alias-window rule)./actionsand MCP read it from one place.list_actionsusesactionPermissionErrorto leave out actions the caller can't run. Contract first; if it needs a new key,Metadata-protocol: added. As the seat said, this leaves the claim's file surface (packages/runtime,platform-objects), so it goes on its own card, filed by the seat with this ruling as its Ruling-ref.Row 12 needs no ruling: it is written after PR #30459 merges.
needs-user-decision→pm:queue.🤖 Generated with Claude Code
objectstack-fleet commentedon Nov 6, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Claim: PM loop round 2 (re-claim after Release 6672033338, on the maintainer's ruling) · 2026-11-06T01:51Z
Session:
session_016WV4czvZykUqhYxYXSSDt4Account:
os-elon-musk(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-nhel89, restarted fromorigin/main(PR #30688 from it merged), in the same card threadsession_016WV4cxrNurGFU9PsE6NwNTWorktree:
objectstack-issue-30126Domain:
domain:serverSeat:
domain:server#4File surface: row 13
packages/cli/src/commands/package/install.ts(andexport.tsonly if the shared flag definition lives there), the CLI's shared flag helpers it reads,content/docs/**sentences naming-r/--runtimeforos package install; row 12packages/rest/src/meta-item-read-gate.ts(the Setup app refusal text, localized as its sibling refusals are) and the REST i18n bundle it reads; their tests; one root.changeset/file. ⛔packages/spec/**,ui/**,packages/runtime/**,packages/platform-objects/**(stop on breach; explain in the report)Container & model:
M,mode:thread,model: default(dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable),effort: highClause-②: yes (narrowing)
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6674432613
Premise: ruling 6674432613. Row 13 A:
-u/--urlreplaces-r/--runtimewith no alias (BREAKING; the changeset writes FROM → TO), and-t/--tokenis added beside--email/--password. Row 12: PR #30459 has merged, so the serial is cleared; the dev re-measures it onorigin/main. Row 9 A: no change. Row 16 A: its own card, filed by this seat.Serial constraints cleared: PR #30459 merged; no open PR touches
packages/cli/src/commands/package/**(the dev re-reads at branch start)Contract review owed (narrowing face) before the queue; the maintainer's per-PR word owed (BREAKING).
objectstack-fleet commentedon Nov 6, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Claim amendment · claim 6674704334 · 2026-11-06T01:55Z
File surface, added:
packages/cli/README.md(theos package installline that names-r/--runtime; it ships in the npm package).content/docs/deployment/cli.mdxandpublish-and-preview.mdxare already covered.Out of surface, kept out:
skills/objectstack-platform/references/operations.md:106names--runtimeforos package install. It is a governed (Tier H) skills line, so this PR does not carry it and stays ungoverned. The seat files it as its own skills-lane card, serial behind this PR, to land before the next release.Flags: no shared url/token flag definition exists in
packages/cli, soinstalldeclares the same shape as the others.--urlreadsOS_RUNTIME_URL(asos login -udoes), and--tokenreads a newOS_RUNTIME_TOKEN(install'sOS_RUNTIME_*family, notOS_TOKEN). Accepted.Everything else in claim 6674704334 stands.
objectstack-fleet commentedon Nov 6, 2026
domain:server#4 · os-elon-musk · session_016WV4cxrNurGFU9PsE6NwNT
os-dev-report
{ "issue": 30126, "status": "done", "branch": "claude/project-thread-nhel89", "pr": "https://github.com/objectstack-ai/objectstack/pull/30792", "head": "6a2119cc920c077d610923e9fa7dceece3005f50", "session": "session_016WV4cxrNurGFU9PsE6NwNT", "premise_still_valid": true, "rows": { "12": "re-measured on origin/main b3098661 after PR #30459 merged: the gate's app (:1693) and dashboard/view (:797) 403s were fixed English sentences naming the API name; now renderOperationMessage permission_denied (the plugin-security catalog) in ExecutionContext.locale, REST hands the errors.* override lookup; runtime dispatcher gets the built-in catalog (packages/runtime not touched). The sentence no longer names the item: two #8013 pins (toContain('finance')) updated to the catalog sentence", "13": "ruling A: install -u/--url replaces -r/--runtime with no alias (OS_RUNTIME_URL kept), -t/--token added (new OS_RUNTIME_TOKEN, Bearer); token + email/password refused before any request. No shared CLI flag helper exists, so declared inline in export's shape. Docs: cli.mdx, publish-and-preview.mdx, cli README, create-objectstack AGENTS.md + blank README", "9": "ruling A: no change", "16": "ruling A: separate card, filed by the seat; not touched" }, "summary": "Rows 12 and 13 of #30126 land in draft PR #30792 (Fixes #30126, title with !). Row 13 renames install's server flag to -u/--url with no alias and adds -t/--token; row 12 localizes the /meta read gate's PERMISSION_DENIED through the operation catalog's permission_denied.", "deviations": [ "create-objectstack templates (AGENTS.md:103, blank/README.md:188) edited outside the claimed surface: published text the rename would make false; create-objectstack patch in the changeset", "row 12: the refusal sentence no longer names the item (permission_denied takes no placeholders; naming it would need a new catalog key in packages/spec, forbidden). Two #8013 pins asserting the app name in the message were rewritten; for the contract review", "row 12: also localizes the dashboard/view audience refusal (row 12 cites :797 as well as :1693)", "createMetaItemReadGate's name parameter is now unused, kept as _name so neither transport's call changes" ], "tests": "cli unit 388 files / 5415 passed; cli touched integration 7 files / 77 passed; rest full suite 396 files (2 #8013 pins failed first run, updated, 53/53 on re-run); runtime read-gate parity + dispatcher 3 files / 381 passed; cli + rest typecheck exit 0; new: package-install-url-token-flags.test.ts (8), meta-permission-refusal-locale.test.ts (9). Ablations restored blob == HEAD: token/email guard off -> 1/8 failed; locale dropped -> 6/9 failed", "gates": "dispatch-gates --commands at 6a2119cc: 97 commands; 95 exit 0 first pass; check:skill-examples and check:dual-build-cjs-loads exit 3 -> exit 0 after their named builds; --ran: 97 run, 0 NOT-MEASURED, 0 UNRUN, exit 0. check-adr-0087-registration: not-required (no-migration-prescription), green with the FROM/TO line", "line_budget": "30 files, +421 / -49 (470 changed lines)", "files_changed": [ ".changeset/30126-package-install-url-token-setup-refusal-locale.md", "content/docs/deployment/cli.mdx", "content/docs/deployment/publish-and-preview.mdx", "packages/cli/README.md", "packages/cli/src/commands/package/install.ts", "packages/cli/test/exit-signal.pin.test.ts", "packages/cli/test/package-export.test.ts", "packages/cli/test/package-install-access-upgrade.test.ts", "packages/cli/test/package-install-customization-pair.test.ts", "packages/cli/test/package-install-hot-loaded.test.ts", "packages/cli/test/package-install-local-boot-steps.integration.test.ts", "packages/cli/test/package-install-local-handlers.integration.test.ts", "packages/cli/test/package-install-local-hooks.integration.test.ts", "packages/cli/test/package-install-local-jobs-pull.integration.test.ts", "packages/cli/test/package-install-local-jobs-shared-name.integration.test.ts", "packages/cli/test/package-install-local-jobs.integration.test.ts", "packages/cli/test/package-install-local-uninstall-cleanups.integration.test.ts", "packages/cli/test/package-install-mode.test.ts", "packages/cli/test/package-install-refusal-rendering.test.ts", "packages/cli/test/package-install-storage-dir.test.ts", "packages/cli/test/package-install-url-token-flags.test.ts", "packages/cli/test/package-install-withheld-maps.test.ts", "packages/create-objectstack/src/templates/AGENTS.md", "packages/create-objectstack/src/templates/blank/README.md", "packages/rest/src/meta-app-publish-gate.test.ts", "packages/rest/src/meta-item-absent-404.test.ts", "packages/rest/src/meta-item-read-gate.ts", "packages/rest/src/meta-permission-refusal-locale.test.ts", "packages/rest/src/meta-view-dashboard-audience-gate.test.ts", "packages/rest/src/rest-server.ts" ], "dogfood_battery": "pnpm --filter @objectstack/dogfood test at 6a2119cc: 422 files passed / 3 skipped, 3527 tests passed / 41 skipped, exit 0", "mcp_calls": "mcp__github__issue_read x1 (#30126), subscribe_pr_activity x1 on #30792 (session watch), message_thread x1 (seat questions)", "api_writes": "git push x3 (branch) · fleet-write pr_create -> #30792 (run 42155600973, read-back identical 7596 bytes) · this os-dev-report comment via post-stamped", "owed_before_queue": [ "contract review (narrowing face), incl. the refusal no longer naming the item", "maintainer's per-PR word (BREAKING)" ], "open_questions": [] }objectstack-fleet commentedon Nov 6, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Claim amendment · claim 6674704334 · 2026-11-06T03:30Z
File surface, added (measured by the dev; accepted by the seat because the rename would make them false):
packages/create-objectstack/src/templates/AGENTS.mdandpackages/create-objectstack/src/templates/blank/README.md, with'create-objectstack': patchin the changeset.Everything else in claim 6674704334 (as amended 6674762721) stands.
objectstack-fleet commentedon Nov 6, 2026
domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4
Landing record · 2026-11-06T04:48Z · PR #30792 merged through the queue as
2fbddd4cb(ACCEPT 6676218133 on head6a2119cc; contract review PASS 6676098596; maintainer's per-PR word 「同意」 recorded on the PR). Rows 12 and 13 have landed. Rows 8 and 15 landed earlier (PR #30688), row 9 A needed no change, and row 16 A is #30771. Follow-ups: #30797 (review should-fix) and #30772 (skills line, before the next release). Card closed completed byFixes;pm:dispatchedremoved in this stroke.