Skip to content

spec(liveness): app.branding.logo is live — objectui AppMark renders it at the pin - #23830

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-23394-branding-logo-live
Oct 16, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/issue-23394-branding-logo-live

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #23394

Clause-②: no

What changes

packages/spec/liveness/app.json, app.branding.children.logo flips from planned to live (verifiedAt 2026-10-16, evidenceScope: "cross-repo").

  • Reader, read at the .objectui-sha pin this tree carries (daeb77fc84): objectui packages/app-shell/src/layout/AppMark.tsx#AppMark reads branding.logo and draws it as an object-contain image (it falls back to the icon tile when the key is absent or the image fails to load). It is mounted by AppSwitcher#AppSwitcher at 22 px, on the top-bar app pill and on every switcher row (the switcher is mounted in AppHeader), and by UnifiedSidebar#UnifiedSidebar at 26 px, in the phone drawer header. All three are cited in evidence.
  • producer: kept and re-pinned to daeb77fc. The designer's AppCreationWizard, BrandingEditor and EditAppPage still write or pre-fill branding.logo at the pin.
  • note: rewritten to say what renders it. The "PLANNED, carrier objectui#10827" and "Flip to live" wording is gone, and so is the paragraph about objectui's top-level logo, because objectui has since retired that second spelling. The ONE SPELLING paragraph stays, because it is still true: AppSchema declares only branding.logo, and the alias table answers an app-level logo with branding (packages/spec/src/ui/app.zod.ts).
  • branding container note: only the sentence about logo is changed. It now says logo reached nothing mounted at the 2026-09-27 drill and has since gone live through AppMark.
  • state-counts/app.md: regenerated with gen:liveness-counts. Before: live 50 · planned 1. After: live 51 · planned 0. classified stays 59.
  • Changeset: a patch changeset for @objectstack/spec. liveness/ is in the package's files[], so the ledger ships.

No schema, objectui file or .objectui-sha changes.

Verification

At head 0a6dbaf4:

  • pnpm --filter @objectstack/spec check:liveness: exit 1 before the regeneration (the expected count drift, | app | 50 | 0 | 0 | 8 | 1 | 59 | to | app | 51 | 0 | 0 | 8 | 0 | 59 |), then exit 0 after gen:liveness-counts. Every live entry's repo-local evidence resolves, and state-counts/ is current.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 62 commands for this diff. 59 exited 0, pnpm --filter @objectstack/spec run check:generated among them, after a spec build. 3 exited 3 because a prerequisite was missing (NOT MEASURED, left to CI): check:dual-build-cjs-loads and check:lean-entry-closure need a full workspace build, and check-plugin-teardown-shape.mjs --self-test needs an unshallowed clone. --ran reconciles: 62 derived, 59 run, 3 NOT-MEASURED, 0 UNRUN.

Acceptance notes

  • The ledger file's top-level _note still has the dated 2026-09-27 sentence "branding is now DRILLED: logo is planned with carrier objectui#10827". It records history and sits outside this card's claimed file surface (the row and the container note only), so it is left as it was.
  • docs/audits/2026-06-appschema-property-liveness.md lists branding.logo among the unimplemented keys. It is a dated audit snapshot, not a current-state page, and it is left as it was.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PfJqaHVFSJ1Znqb9vBPZe2


Generated by Claude Code

@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tooling labels Oct 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

⚠️ 2 changed file(s) yielded no anchor (packages/spec/liveness/app.json, packages/spec/liveness/state-counts/app.md), so the pages documenting them are NOT COVERED by this run — this is not a clean bill of health for those files. Nothing else in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)).

What this run could not see
  • 2 changed file(s) yielded no anchor (packages/spec/liveness/app.json, packages/spec/liveness/state-counts/app.md) — pages documenting those are invisible to this run
  • a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. Measured on fix(driver-sql): emit varchar(maxLength) for a text field a declared index keys on #11430: content/docs/protocol/objectql/types.mdx documents the text-family column mapping by the ObjectQL type names it maps FROM (text / textarea / html) while the diff changed createColumn; it went unlisted, and it was the page that diff falsified, in four places. No shared token exists to detect this on, so a rule your change carries has to be re-read by hand in the pages that restate it.
  • a key NAME is not a key, so the hand re-read the line above prescribes can land on the wrong schema. The same spelling is authorable on one governed type and a [REMOVED] tombstone on another for each of active, aria, joins, objects, template, tools and version (censused on [finding] tools is a key on BOTH AgentSchema (tombstoned, dead) and SkillSchema (live, cloud-attested), so a name-based search attributes skill examples to the agent key — it produced a false stop-the-line alarm on PR #19059 #19093 over the liveness ledger's governed types, top-level keys); nothing in a search result distinguishes the two, so a grep hit on a LIVE example reads as evidence about the DEAD key. Measured on fix(spec): the agent.tools liveness row says dead — it claimed live on a key the schema tombstoned #19059: content/docs/ai/agents.mdx was reported as contradicting the agent.tools tombstone over its tools: example at :161, which is inside the defineSkill({ block opened at :155 — the page was already correct. Settle ownership by PARSING the value against both schemas, never by the name: that literal PASSES SkillSchema, and as an AgentSchema it FAILS at tools with the tombstone prescription. ⛔ These names are not the whole class — a key retired through a .strict() guidance map leaves no tombstone in the walked shape and none of them here (tool.category, live as AIToolDefinition.category).

Coarse fallback — 142 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 43567a8fcbed46b05056b65a45e3f90147f806d4 → packageMentionDocs.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · PR #23830 @ 0a6dbaf438 (#23394) · domain:spec seat 1 · os-elon-musk · session session_01HjR8RUwTPQ3TgbfKihmxp9 · 2026-10-16T07:19Z

Reviewer of record. Every item below was checked against GitHub and the code, not against the report (6210092514 on #23394).

  • Shape:
    • Draft, base main. The first line is Fixes #23394, the body's only closing keyword, then Clause-②: no, matching claim 6209696708 and the changeset.
    • 3 files, +23/−6, none governed (check-governed-merges --pr 23830: 0 of 3 paths). Assignee os-elon-musk.
  • The reader, read by the seat at the tree's .objectui-sha daeb77fc84:
    • packages/app-shell/src/layout/AppMark.tsx:65 reads app.branding.logo and draws it as an object-contain image (:70-:78), falling back to the icon tile when the URL fails (onError).
    • It is mounted in AppSwitcher.tsx (:80, the top-bar pill; :100, each switcher row), which AppHeader.tsx:604 mounts, and in UnifiedSidebar.tsx:456 (the phone drawer header).
    • So the row's live verdict, its evidence line and its sizes match the code at the pin.
  • The row and the container note:
    • The row is live, verifiedAt 2026-10-16, evidenceScope: "cross-repo", with the three readers cited @daeb77fc. The producer line is kept and re-pinned to the same SHA.
    • The PLANNED / carrier / "Flip to live" wording is gone. The ONE SPELLING paragraph stays, and it still holds: an app-level logo is refused and the refusal points at branding.
    • The container's note now says logo "then reached nothing mounted" and has since gone live. Only that sentence moved.
  • Generated: state-counts/app.md was regenerated by gen:liveness-counts. app moves from live 50 · planned 1 to live 51 · planned 0, and classified stays 59.
  • Changeset: @objectstack/spec patch, because files[] ships liveness. Its sentences were checked against the diff, including "what AppSchema accepts and refuses" being unchanged.
  • The report's open questions, the seat's calls:
    • The ledger's dated top-level _note sentence: A, leave it. It is a dated history entry, and the row is the authority.
    • patch over skip-changeset: A, as measured.
  • Out of scope, 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.
  • Before the queue: every check green on this head. No accept set moves, so no contract review is owed.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 16, 2026 07:39
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 16, 2026 07:39
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 16, 2026
Merged via the queue into main with commit 3fed1eb Oct 16, 2026
42 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-23394-branding-logo-live branch October 16, 2026 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec(liveness): flip app.branding.children.logo from planned to live; objectui AppMark renders it at the pin

2 participants