Skip to content

refactor(spec)!: retire global_nav from ACTION_LOCATIONS — a location the product never rendered, and the designer previewed anyway (#6888) - #7322

Merged
os-zhuang merged 3 commits into
mainfrom
claude/issue-6888-retire-global-nav
Aug 10, 2026
Merged

refactor(spec)!: retire global_nav from ACTION_LOCATIONS — a location the product never rendered, and the designer previewed anyway (#6888)#7322
os-zhuang merged 3 commits into
mainfrom
claude/issue-6888-retire-global-nav

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Closes #6888

Retires global_nav from ACTION_LOCATIONS, executing the maintainer's
2026-08-09 direction-2 ruling. In-repo half only — the Studio designer surfaces
(ActionPreview.tsx mock frame, inspector entry, palette dropdown option) are
sub-issue #7100 in objectui, contract-first behind this card; #7100 unlocks
when this closes.

Maintainer ruling (quoted verbatim)

Maintainer ruling (2026-08-09): direction 2 — retire global_nav. pm:queue; domain routing left to the triage seat.

Retire global_nav from ACTION_LOCATIONS under ADR-0087, remove the Studio designer's mock command-palette preview frame (ActionPreview.tsx) and its inspector/palette entries, update the two showcase actions that declare it, and fix the unrunnable records-forms.action-location-matrix global_nav variant in the QA checklist.

Rationale (three-axis): zero demand evidence — no user has asked for command-palette actions; the only two declarers are our own showcase corpus. Wiring the palette (direction 1) would be capability expansion with no pull, exactly the class the maintainer's standing scope-inflation ruling forbids — if real appetite appears later, it re-enters through the front door. And the sharpest harm is the designer previewing a surface the product does not have: an authoring tool that promises ⌘K rendering teaches authors (and AI copying the corpus) to declare dead metadata — worse than a missing feature.

Note for the implementing seat: the retirement touches the ADR-0087 registries — per the maintainer's standing discipline, any PR editing docs/adr/** is maintainer-merged only, no auto-merge, no queue entry by agents.

Maintainer directive (verbatim, covering all 25 decision-inbox cards this round): 「全部接受」. Recorded by PM session session_01LGRN2cSRfggfX9B2L83bQc. Veto window open — comment to overturn.

Premise re-verified on origin/main @ 3e8e669c0

All three legs still held before the change (the issue's line numbers had drifted;
the facts had not):

Claim State on main Where
global_nav still in ACTION_LOCATIONS present, 7th member packages/spec/src/ui/action.zod.ts:536 (doc line :527 — issue said :463/:454, drifted)
the two showcase declarers still declare it both do examples/app-showcase/src/ui/actions/index.ts:184, :363
the QA global_nav variant still present present, plus an unrunnable step docs/qa/platform-checklist/areas/records-forms.json:1385 and the dispatch step

Independently re-confirmed the "nothing renders it" half against the vendored
objectui, since the retirement rests on it: actionRendersAt
(packages/types/src/ui-action.ts:86-99) is the single placement predicate since
objectui#3142 and is a pure declared.includes(location) — nothing maps
global_nav onto a surface, and packages/app-shell/src/chrome/CommandPalette.tsx
reads no action metadata at all.

Route: this is an enum-VALUE retirement, not a key removal

Per the repo's spec-property-retirement playbook, the three routes are
retiredKey() tombstone / strict-removal + guidance map / neither — and none of
them applies to a def that survives while losing one value
. The house mechanism
for that case is the enum's own error map dispatched on issue.input, set by
crypto.hash on HookBodyCapability (#4391) and array_agg/string_agg on
AggregationFunction (#6188). Consequences, all deliberate:

  • Nothing lands in RETIRED_KEYS_BY_MAJOR — that table is keyed
    ${defKey}:${name} for authorable KEYS, and no key changed. Adding a row would
    be a registration nothing consumed (gate b2).
  • The four surface ratchets are expected byte-identicalapi-surface/,
    authorable-surface/, json-schema.manifest/, export-origins/ record export-
    and def-existence, not a def's value set. Confirmed zero diff; see the gate
    table below. (The playbook is explicit that reading this zero as "the agent
    forgot to regenerate" is the wrong verdict for this route, and that reading it
    as normal for a whole-def removal is the opposite error.)
  • The prescription is the only channel that reaches an author, so it carries
    the full story and closes with the [finding][spec] Tombstones over STRIP-only conversions say os migrate meta --from 16 will "rewrite it" — the corpus is split between two verbs for one behaviour #6856 route-D house sentence.

Per-surface changes

Surface Change
packages/spec/src/ui/action.zod.ts 'global_nav' removed from ACTION_LOCATIONS (7 to 6) and from the semantics doc list; house tombstone note added to the docblock; GLOBAL_NAV_RETIRED prescription + error map on ActionLocationSchema, keyed on issue.input
packages/spec/src/conversions/registry.ts new D2 action-global-nav-location-removed (toMajor: 17, retiredFromLoadPath: true), wired into CONVERSIONS_BY_MAJOR[17]
packages/spec/src/migrations/registry.ts D3 step-17 conversionIds entry + rationale paragraph
packages/spec/liveness/action.json locations row keeps status: live (the KEY is live and enforced) with a fresh verifiedAt + evidence recording the per-member audit
examples/app-showcase/src/ui/actions/index.ts both declarers to locations: []; docblocks rewritten
docs/qa/platform-checklist/areas/records-forms.json global_nav variant deleted; fixture fleet, nav step, dispatch step, exclusivity clause and evidence count updated; enumSource.expect 7 to 6; revision 2 to 3 with a history entry
content/docs/protocol/objectui/actions.mdx, content/docs/ui/actions.mdx table rows removed
skills/objectstack-ui/SKILL.md table row removed
packages/lint/src/validate-action-locations.ts global_nav dropped from the action-no-placement hint's list of places to put the action
packages/spec/src/studio/plugin.zod.ts, packages/spec/src/studio/action-location-retirement.test.ts the #4737 dual-source narrative said "7-value"; re-worded and its global_nav probes re-pointed at record_section, so that test keeps pinning the rename rather than accidentally pinning this retirement
content/docs/references/ui/action.mdx, docs/protocol-upgrade-guide.md, packages/spec/spec-changes.json regenerated
.changeset/action-global-nav-location-retired.md new, @objectstack/spec: major

Not touched: content/docs/releases/.

The empty-array edge: strip the value, KEEP the key

locations: ['global_nav'] converts to locations: [] — never delete locations.
On this surface the two are different declarations, not two spellings of one:

  • locations: [] is the documented headless shape (content/docs/ui/actions.mdx,
    "Headless actions: declare it, then hide it") — the action stays callable over
    REST/MCP/AI and keeps its capability gate, param contract and audit trail.
  • an absent locations means the author never placed the action, which is
    exactly what packages/lint's action-no-placement rule warns about. That rule
    states the distinction in its own words: "an author who said 'nowhere,
    deliberately' ([]) and one who never said anything at all (key absent)".

So dropping the key would convert a deliberate placement into a lint finding and
discard the author's statement of intent. This follows
hook-body-crypto-hash-removed ("the capabilities key itself stays — an empty
grant set is legal"), not dataset-measure-array-string-agg-removed, which drops
its item for a validity reason that does not apply here: a measure with neither
aggregate nor derived fails the dataset's own refinement, whereas an action
with locations: [] parses and is documented to.

Registry counts, before to after

Registry Before After
CONVERSIONS_BY_MAJOR[17] 55 56
MIGRATIONS_BY_MAJOR[17].conversionIds 55 56
RETIRED_KEYS_BY_MAJOR[17] 16 16 (unchanged — enum VALUE, no key retired)
MIGRATIONS_BY_MAJOR[17].semantic 46 46 (unchanged — the conversion rewrites real sources, so no semantic entry is needed)
ACTION_LOCATIONS members 7 6

Reverse verification — direction predicted before running

Predicted in writing first, then measured by reverting only
packages/spec/src/ui/action.zod.ts to origin/main (via git checkout origin/main --,
never git stash) and re-running the same suite:

New pin Predicted Measured with the fix removed
is no longer a member of the vocabulary RED REDexpected [ 'list_toolbar', 'list_item', …(5) ] to not include 'global_nav'
refuses the value WITH the prescription — bare enum and whole action alike RED REDexpected [Function] to throw an error (the value parsed clean, so no prescription existed to assert)
tells ONLY the retired spelling that it "was removed" GREEN (invariant) GREEN, as predicted
accepts the migrated shape … locations: [] GREEN (invariant) GREEN, as predicted

Plus one collateral red, predicted and not counted as evidence: the pre-existing
exposes the full set of supported locations pin, whose expectation this PR
rewrites from 7 members to 6.

The two invariants are deliberately green on both sides and say so here rather
than being dressed up as before/after evidence: they pin the error map's
issue.input keying (a typo must not be told its value "was removed") and the
migration target, neither of which the removal alone would prove.

A bare .toThrow() would have been useless here and the pins avoid it: with the
fix reverted the value parses green, so an assertion carrying one bit could
not tell "refused with no prescription" from "not refused at all" — which are the
two things this retirement has to distinguish.

Gates

Gate Result
pnpm --filter @objectstack/spec build PASS (exit 0)
pnpm --filter @objectstack/spec check:generated 11/11 up to date after regenerating exactly the 3 it proved stale — spec-changes.json, docs/protocol-upgrade-guide.md, content/docs/references/**. Ran with --fix (never the whole set)
the four surface ratchets check:api-surface, check:authorable-surface, check:export-origins and the json-schema.manifest/ projection: green with zero regeneration. This is the CORRECT reading for an enum-VALUE retirement, and is stated here because the zero is also what a forgotten regen looks like on a whole-def removal
the 7 source audits check:generated deliberately does not run check:liveness PASS · check:empty-state PASS · check:skill-examples PASS · check:variant-docs PASS · check:exported-any PASS · check:dual-source-exports PASS · check:scripts-typecheck PASS (each exit code captured before the next ran, never through a pipe)
node scripts/check-adr-0087-registration.mjs --base origin/main PASS — 1 declared-breaking changeset(s) … [major+bang] registered action-global-nav-location-removed (new here: action-global-nav-location-removed)
pnpm --filter @objectstack/spec test PASS — Test Files 359 passed (359) / Tests 9387 passed (9387)
pnpm --filter @objectstack/spec typecheck PASS (exit 0)
pnpm --filter @objectstack/lint test PASS — Test Files 68 passed (68) / Tests 1771 passed, 4 skipped (1775)
pnpm --filter @objectstack/lint typecheck PASS (exit 0)
node scripts/check-nul-bytes.mjs PASS — 6593 files, no raw control bytes; plus a targeted grep -naP self-scan over every changed file

@objectstack/lint first reported 18 failed files and a typecheck exit 2. That was
the fresh-worktree trap, not this change: unbuilt siblings (Cannot find module '@objectstack/formula', '@objectstack/sdui-parser'), with no failure naming
validate-action-locations or global_nav. Run
pnpm --filter '@objectstack/lint^...' build first and both go green — recorded so
the next reader does not re-diagnose it.

docs/adr/** touched: NO

node scripts/check-adr-0087-registration.mjs is satisfied by registry code
plus the changeset's adr-0087: registered action-global-nav-location-removed
marker; it demanded no docs/adr/** edit. Per the ruling's note and PD #14, none
was made — git diff --name-only origin/main -- docs/adr is empty.

Flagged for review, not silently decided

showcase_new_task had global_nav as its ONLY location, so it becomes
locations: [] — a headless type: 'modal' action. No replacement placement was
invented for it, because choosing one is a product decision about the showcase
rather than a consequence of this retirement. It is not left dead: the showcase's
live "Create Task" path is the Overview page's element:button CTA carrying an
inline action of the same name (examples/app-showcase/src/ui/pages/index.ts:95),
which is what a user actually clicks. showcase_portfolio_snapshot needs no such
note — it is object-less by design and its docblock already said global_nav was
chosen "for the same reason" it has no objectName, so [] is the declaration it
always meant.

Changeset level: major, matching #7067 (manifest.loading) and both enum-value
precedents (#6188, #6815). The ADR-0087 gate reads it as [major+bang], which is
what it requires to accept the D2 registration.


Generated by Claude Code

@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 10, 2026 7:19am

Request Review

Resolved examples/app-showcase/src/ui/actions/index.ts: main's #6739 fix
(showcase_new_task type modal->form, target showcase_task.edit) is kept
intact; this branch's #6888 change applies to `locations` only, which
becomes [] now that global_nav is retired. Docblock carries both narratives.

Regenerated spec-changes.json + protocol-upgrade-guide.md from the merged
registries after a real build (never hand-merged - both are generated).
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/lint, @objectstack/spec.

106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via @objectstack/spec)
  • content/docs/automation/connectors.mdx (via @objectstack/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via @objectstack/lint, packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via packages/spec)
  • content/docs/concepts/north-star.mdx (via @objectstack/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/cli.mdx (via @objectstack/spec)
  • content/docs/deployment/tenancy-modes.mdx (via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/examples.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via @objectstack/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via @objectstack/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/spec)
  • content/docs/kernel/services.mdx (via @objectstack/spec)
  • content/docs/permissions/authorization.mdx (via @objectstack/lint, @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/permissions/system-context.mdx (via packages/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/http-protocol.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/apps.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/field-grouping-and-order.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

7 release-owned page(s) also reference the affected code. These are read-only:

  • content/docs/releases/implementation-status.mdx (via @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v16.mdx (via @objectstack/spec)
  • content/docs/releases/v17.mdx (via @objectstack/lint, @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Copy link
Copy Markdown
Contributor Author

Rebased onto current main by merge (the PR was opened against a base that had fallen behind, which left it dirty and dispatched zero workflows). One real conflict, worth stating because it is a semantic overlap rather than a textual one:

examples/app-showcase/src/ui/actions/index.tsshowcase_new_task. #6739 landed on main while this branch was open and changed the same action, for the other half of the problem this card's issue describes. The two changes are orthogonal and both are kept:

before after
#6739 (main) — the TYPE type: 'modal', target: 'showcase_component_gallery' type: 'form', target: 'showcase_task.edit'
#6888 (this PR) — the PLACEMENT locations: ['global_nav'] locations: []

Nothing from #6739 was reverted: its maintainer-ruled reasoning (a modal target names a PAGE and only a page, so pointing the modal at showcase_task would be a build error — the fix is the type) is preserved verbatim in the merged docblock, with this card's placement paragraph added after it. The merged action is type: 'form' + target: 'showcase_task.edit' + locations: [].

Worth noting for review: the merge makes the "flagged for review" note in the PR body less sharp than when written. It flagged a headless type: 'modal' action as the awkward residue; after #6739 it is a headless type: 'form' action targeting a real edit view, which is a coherent thing to invoke over REST/MCP. The open question is unchanged in substance — this action has no UI placement, and picking one is a product decision about the showcase, not a consequence of the retirement — but it is a smaller one.

Generated artifacts (packages/spec/spec-changes.json, docs/protocol-upgrade-guide.md) were not hand-merged; the repo's merge driver left them conflicted by design and they were regenerated from the merged registries after a real pnpm --filter @objectstack/spec build.

Re-verified on the merged tree, all green:

  • check:generated — 11/11 up to date
  • check-adr-0087-registration --base origin/main[major+bang] registered action-global-nav-location-removed
  • @objectstack/spec test 361 passed (361) / 9460 passed (9460), typecheck exit 0
  • @objectstack/lint test 70 passed (70) / 1848 passed, 4 skipped, typecheck exit 0
  • check-nul-bytes OK (6723 files)
  • CI on 37b36f6d7: 26/26 checks green, including ESLint (which carries the family gates), TypeScript Type Check, Check Changeset, Spec property liveness and ADR maintainer approval

CONVERSIONS_BY_MAJOR[17] recounted from the merged file: 56, mine present. docs/adr/** still untouched (git diff --name-only origin/main -- docs/adr is empty).

One transient worth recording so the next reader does not re-diagnose it: @objectstack/lint failed one file after the merge with Cannot find package 'zod'. That was a stale node_modules, not the merge — main added zod to packages/lint's dependencies after this worktree's original pnpm install. A re-install fixed it.


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review August 10, 2026 07:40
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 10, 2026
Merged via the queue into main with commit e027b3e Aug 10, 2026
27 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-6888-retire-global-nav branch August 10, 2026 07:54
os-zhuang pushed a commit that referenced this pull request Aug 10, 2026
The textual merge kept this branch's side of `spec-changes.json` and
`docs/protocol-upgrade-guide.md`, which predate PR #7322's
`action-global-nav-location-removed` conversion. Regenerated from the merged
registry so both that entry and this branch's `sharing-execution-context-retired`
semantic entry project into the artifacts. Generated files, never hand-merged.

Claude-Session: https://claude.ai/code/session_01ArkxxyvoyPaDhHiX5KhQBi

Co-authored-by: os-zhuang <steve@objectstack.ai>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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 protocol:ui size/m tests tooling

Projects

None yet

2 participants