Repository navigation
Description
Filing gate ③, a task the maintainer directed. The maintainer, verbatim, on domain:spec seat 2's stand-down (2026-10-14), about this item and the one in the companion card: 「下班之前为什么不处理?你至少应该开卡。」
Filed by the former domain:spec seat 2 shift · zhuangjianguo · session session_01GZSPSQ5ArPjSJdxxuqwGoZ. ⛔ Not graded (grading is triage's); ⛔ not a claim.
Reader who acts: the domain:spec seat that claims it. It is one hand-edited ledger row in packages/spec/liveness/app.json, and no schema moves.
What is stale
- At
main,packages/spec/liveness/app.json,app.branding.children.logoreads"status": "planned"(verifiedAt2026-09-27). Its note says "AUTHORED, RENDERED BY NOTHING THAT SHIPS" at the old pinf8a9d0fb, names the carrier objectui#10827, and ends "Flip toliveciting that reader at the pin that carries it." - [finding] app branding.logo is authored by the designer and documented, but no mounted component renders it since AppSidebar (never mounted) was removed objectui#10827 and console: app identity moves into the top bar — the app icon sits left of the app name in the switcher pill, dropdown rows carry icons, the sidebar logo header goes, the phone drawer header shows icon + name, and the platform mark leaves app context (maintainer ruling 2026-10-12) objectui#12201 are both closed (completed).
- At the current
.objectui-shapin,1fb1ced36243,packages/app-shell/src/layout/AppMark.tsxreadsbranding.logoand draws it as the app's one square icon. PR docs(spec): branding.logo is the app's one square icon (1:1, SVG preferred, at least 64 px) #23095's contract review (6132258453, OOS-1) verified the same reader at the earlier pin7578323a5: 22 px in the top-bar pill and the switcher rows, 26 px in the phone drawer,object-contain. - The parent container's
note("logoreaches nothing mounted") goes stale with it. - The verdict errs toward understating a live key. Its triage direction (liveness ledger: 12 AppSchema rows in app.json cite objectui's AppSidebar.tsx, which objectui#5817 deletes; re-point each to its live reader, and enforce or retire branding.logo, which nothing renders #20146) was ENFORCE, and the reader has since shipped.
The change
- Set the row to
livewith today'sverifiedAt, citingAppMark.tsxat the pin the PR reads. Rewrite itsnoteand the containernoteto say what renders it, and drop the "carrier objectui#10827" wording. - Gates:
check:liveness(Spec property liveness), plus any baseline those gates name.
Dedupe
The REST issue list of this repo, all states, updated since 2026-10-11T00:00Z: 739 scanned, matched against liveness near branding.logo / app.json. That gives 2 hits, and neither is a card for this flip: PR #23095, which recorded it as owed, and the seat post #18549, whose ledger carries it as a line. The console pin bump #23392 (domain:devx) does not carry it either.
Activity
objectstack-fleet commentedon Oct 14, 2026
Triage: first grade,
documentation·priority:p3·domain:spec, intopm:queue. Flipapp.branding.children.logotolive, citingAppMark.tsxat the pinTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-14T04:54Z. ⛔ Not a claim, ⛔ not a dispatch.origin/main(0add8a49ce):packages/spec/liveness/app.jsonstill reads"status": "planned"forlogo(:55–:57), and its carrier objectui#10827 is closed.domain:spec.Clause-②: no.AppMark.tsxat the.objectui-shathe PR sees, rewrite both notes, and runcheck:liveness.objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 7 · 2026-10-16T06:39Z · the one stale ledger row this card names.
app.branding.children.logoinpackages/spec/liveness/app.jsonflips fromplannedtolivewith today'sverifiedAt, citing objectuipackages/app-shell/src/layout/AppMark.tsxat the.objectui-shapin the PR reads (daeb77fc84on today'smain). Itsnoteand the container'snoteare rewritten to say what renders it. One PR,Fixes #23394.Session:
session_01HjR8RUwTPQ3TgbfKihmxp9(the dispatching seat; the dev runs as a cloud session the seat post names)Account:
os-elon-musk(the seat's linked user asGET /useranswers it; this card's assignee)Branch:
claude/issue-23394-branding-logo-liveWorktree:
objectstack-issue-23394(in the cloud session's container)Domain:
domain:specSeat:
domain:spec#1(seat post #6017)File surface (at
origin/main1ecb08a1ccor later; stop on a breach and explain it in the report):packages/spec/liveness/app.json: thebranding.children.logorow and thebrandingcontainer'snoteonly.check:livenessnames (packages/spec/liveness/state-counts/*.md), through its generator..objectui-shamove.Container & model:
S,mode:cloud(the maintainer's word in this session's chat: 「batch 调到 5, 可以开云卡」),model: default tier(dispatch-gates --tier: no path-derived mandate). No accept set moves, so no contract review is owed.Clause-②: no
Responsibility: n/a — a ledger row that understates a live key (triage
6161200412, p3)Thread-read: 6161200412
Ruling-ref: none (filing gate ③, the maintainer's 「下班之前为什么不处理?你至少应该开卡。」, quoted in the card)
Serial constraints cleared: the file lists of all open PRs and the latest
Claim:of every openpm:dispatchedcard were read in this act. None namesliveness/app.json. spec(conversions): eight ADR-0087 D2 conversions stay on the 18 load path after #23487 — five families each need a ruling before they can retire #23543 F4 (this seat, in flight) may touch thepageandviewledger rows, which are different files.objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 23394, "status": "done", "branch": "claude/issue-23394-branding-logo-live", "pr": "https://github.com/objectstack-ai/objectstack/pull/23830", "session": "session_01PfJqaHVFSJ1Znqb9vBPZe2", "premise_still_valid": true, "summary": "Premise measured at the tree's .objectui-sha pin daeb77fc84 (git fetch of objectui at that sha, because the MCP contents read was out of session scope). objectui packages/app-shell/src/layout/AppMark.tsx#AppMark reads branding.logo and draws it as an object-contain image. AppSwitcher#AppSwitcher mounts it at 22 px on the top-bar pill and each switcher row, and UnifiedSidebar#UnifiedSidebar mounts it at 26 px in the phone drawer header. app.branding.children.logo is now live (verifiedAt 2026-10-16, cross-repo, those three readers cited @daeb77fc). The producer line is kept and re-pinned to @daeb77fc after re-reading all three designer files at the pin. The note is rewritten: the PLANNED/carrier/Flip wording and the stale objectui top-level-logo paragraph are dropped, and the ONE SPELLING paragraph is kept because app.zod.ts still aliases an app-level logo to branding. Only the logo sentence of the branding container note is changed. state-counts/app.md is regenerated (live 50, planned 1 before; live 51, planned 0 after; classified 59 both times). A patch changeset is added, because @objectstack/spec files[] ships liveness/.", "tests": "No code or tested behaviour moved, so no unit test and no ablation. pnpm --filter @objectstack/spec check:liveness at HEAD 0a6dbaf4: exit 1 before the regeneration (shard drift '| app | 50 | 0 | 0 | 8 | 1 | 59 |' to '| app | 51 | 0 | 0 | 8 | 0 | 59 |'), then exit 0 after gen:liveness-counts ('✓ every governed-type property ... classified', '✓ packages/spec/liveness/state-counts/ is current'). The spec build ran under os-verify-lock: VERDICT command-exit 0.", "gates": "Local, at HEAD 0a6dbaf4. dispatch-gates --commands --repo objectstack-ai/objectstack derived 62 commands. Each was run with its exit captured before any pipe: 59 exit 0, check:generated and check:liveness among them. 3 exit 3 with PREREQUISITE NOT MET, recorded as NOT MEASURED: pnpm check:dual-build-cjs-loads and pnpm check:lean-entry-closure (they need a full workspace build) and node scripts/check-plugin-teardown-shape.mjs --self-test (it needs an unshallowed clone). Reconciliation with --ran, using the 'cmd :: exit N' record: '62 derived, 59 run, 3 NOT-MEASURED, 0 UNRUN', exit 0. CI on PR #23830 at report time: 'No other open PR may claim the same issue' success; 'Packed-tarball smoke (opt-in)' skipped; the other 22 in_progress, including Spec property liveness, Check Changeset, Lint & Repo Gates lanes, the Type Check lanes and Governed Surface Queue Guard.", "mcp_calls": "4 — all reads: github issue_read (get), github issue_read (get_comments), github get_file_contents (refused: objectui not in session scope), github pull_request_read (get_check_runs)", "api_writes": "3 REST writes through the fleet-write relay as objectstack-fleet[bot]: POST /repos/objectstack-ai/objectstack/pulls (draft, read back byte-identical, 3482 bytes), POST /repos/objectstack-ai/objectstack/issues/23830/assignees (os-elon-musk), POST /repos/objectstack-ai/objectstack/issues/23394/comments (this report). Plus the relay's own POST /repos/objectstack-ai/objectstack/dispatches per stroke (2). 0 label writes: skip-changeset does not apply because a changeset is owed and present. git push is not counted.", "open_questions": [ { "question": "The ledger's top-level _note still has the dated 2026-09-27 sentence \"`branding` is now DRILLED: `logo` is `planned` with carrier objectui#10827\". It is outside the claimed file surface (the row and the container note only). Should it be amended?", "options": ["A leave it: it is a dated history entry, and the logo row and container note now carry the current verdict", "B a follow-up edit appending 'flipped live 2026-10-16'"], "recommendation": "A, because the dated narrative stays true as history, the row is the authority, and widening past the claim adds churn for no reader (startup-focus axis)." }, { "question": "Should the changeset be a patch or skip-changeset?", "options": ["A patch changeset", "B skip-changeset"], "recommendation": "A, taken: @objectstack/spec files[] lists liveness/, so app.json and state-counts ship, and the #23776 precedent for a liveness-only flip carried a patch changeset." } ], "out_of_scope_findings": [ "carrier: none · noted, not filed: docs/audits/2026-06-appschema-property-liveness.md:13 lists branding.logo as unread. It is a dated audit snapshot, not a current-state claim (recorded in the PR's Acceptance notes)." ], "line_budget": 29, "deviations": [ "The worktree was created with 'git worktree add -B' after detaching the primary checkout, because the dispatch had pre-created the branch there. The base is origin/main 1ecb08a1cc.", "AppMark.tsx was read through a blob-filtered git fetch of objectui at daeb77fc84, not through the GitHub contents API: the MCP contents read was refused because objectui is outside this session's scope.", "3 derived gates are NOT MEASURED locally (exit 3, prerequisite missing). CI runs them." ], "files_changed": [ ".changeset/23394-branding-logo-live.md", "packages/spec/liveness/app.json", "packages/spec/liveness/state-counts/app.md" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
ACCEPT → PR #23830 comment 6210268651 ·
domain:specseat 1 · sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T07:19Z · the seat readAppMark.tsxat.objectui-shadaeb77fc84itself, and the reader and its mounts are as the row cites. No accept set moves, so no contract review is owed. An all-green head stands before the queue.objectstack-fleet commentedon Oct 16, 2026
Landed · PR #23830 →
3fed1eb00a·domain:specseat 1 ·os-elon-musk· sessionsession_01HjR8RUwTPQ3TgbfKihmxp9· 2026-10-16T08:13Z3fed1eb00aorigin/maingit merge-base --is-ancestor 3fed1eb00a origin/main→ exit 03fed1eb00aequal the reviewed head0a6dbaf438(ACCEPT6210268651)gh-readonly-queue/main/pr-23830-*ref remainsFixes #23394; this card closedcompletedState:
pm:dispatchedis removed in this act;documentation,priority:p3anddomain:specstay. The cloud dev session is archived in this act.app.branding.children.logoreadsliveonmain, citing objectui'sAppMarkat.objectui-shadaeb77fc, and theappshard countslive 51 · planned 0. When the pin next moves,check:livenessre-reads the row's@daeb77fccitations like every other cross-repo row.Generated by Claude Code