Skip to content

Showcase redesign: six-domain layout, registry-driven coverage, capability-map tour#2619

Merged
os-zhuang merged 7 commits into
mainfrom
claude/metadata-showcase-redesign-ougiov
Jul 5, 2026
Merged

Showcase redesign: six-domain layout, registry-driven coverage, capability-map tour#2619
os-zhuang merged 7 commits into
mainfrom
claude/metadata-showcase-redesign-ougiov

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

Redesigns examples/app-showcase around the platform's own metadata taxonomy so the kitchen-sink app actually keeps up with the platform — structurally, verifiably, and honestly. Five commits, each independently green on pnpm --filter @objectstack/example-showcase verify:

  1. refactor(showcase) — six-domain layout. src/ now mirrors DEFAULT_METADATA_TYPE_REGISTRY's domains (data/, ui/, automation/, system/, security/), pure git mv + import-specifier updates. Two files are pinned by contract: src/coverage.ts (package export) and flat src/docs/ (CLI doc collector, ADR-0046).
  2. feat(showcase) — registry-driven kind coverage. KIND_COVERAGE enumerates every metadata kind in the registry; each is demonstrated (proof files must exist) or waived (reason + tracking issue required, enforced by test). New platform kind ⇒ red CI until accounted for. Waivers: agent/tool/skill → Showcase: AI-domain examples (agent/tool/skill) deferred — cloud/MCP-only per ADR-0063 #2610, mappings → defineMapping artifacts are registered but never consumed — wire named mappings into REST import or de-scope from the stack #2611, declarative connectors → Declarative connectors: stack entries are inert — bridge them to the automation connector registry or document as descriptor-only #2612, trigger/router/function/service/external_catalog → Metadata kinds without a code-authoring surface: trigger, router, function, service, external_catalog #2613; unenforced validation types stay on Validation rules: 6 of 9 spec rule types are declared but not enforced at runtime #1475.
  3. feat(showcase) — cube + object extension. showcase_delivery cube (analyticsCubes) and an additive overlay on showcase_account (objectExtensions) — the two ≥app-crm parity gaps with real runtime support. test/gap-fill.test.ts proves the stack wiring and the extension merge against the real SchemaRegistry. (defineMapping / declarative connectors were verified to be inert at runtime and are waived, not faked — Prime Directive chore: version packages #10.)
  4. feat(showcase) — capability-map landing + guided tour. Five per-domain tour docs with live ```metadata embeds (ADR-0051), a Guided Tour book group, and a showcase_capability_map html-kind landing page (first nav item — the delivered landing mechanism; homePageId has no console consumer). The AI card is explicitly "deferred", linking Showcase: AI-domain examples (agent/tool/skill) deferred — cloud/MCP-only per ADR-0063 #2610.
  5. docs(showcase,examples) — truth pass. Removes the phantom "agent wired to a tool and a skill" claim + nonexistent src/agents/ from the README and package description; documents the new layout and coverage contract; rewrites the stale examples/README.md (plugin-bi never existed; app-crm/embed-objectql do).

Why

The showcase claimed capabilities it didn't have (an AI chain), silently lacked ones it should demo (cube, extension), and its coverage test only guarded enum variants — so kind-level gaps were invisible. This PR makes the coverage contract two-level and self-enforcing, and gives visitors a front door that indexes every demo by protocol domain.

Verification

  • pnpm --filter @objectstack/example-showcase verify green at every commit (validate + typecheck + 49 tests; validate lints the new tour docs: flatness, prefixes, links, metadata-embed liveness).
  • Booted a fresh dev server and verified end-to-end via API: first nav item is the Capability Map; showcase_capability_map page resolves; GET /api/v1/analytics/meta lists showcase_delivery and POST /api/v1/analytics/query returns real aggregates over seeded tasks; showcase_account metadata contains the merged extension fields; all five tour docs serve 200; the book resolves groups Getting Started / Guided Tour / Guides.
  • Console UI walkthrough not possible in this environment (packages/console/dist not built — no ../objectui checkout); e2e smoke (showcase-smoke.spec.ts) now sweeps the capability-map page for nightly runs.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs


Generated by Claude Code

claude added 5 commits July 5, 2026 02:43
Restructure examples/app-showcase/src into the same domain taxonomy the
metadata registry uses (DEFAULT_METADATA_TYPE_REGISTRY): data/, ui/,
automation/, system/, security/. Pure mechanical move (git mv) plus
import-specifier updates in objectstack.config.ts, the test files, and
the descriptive paths in the coverage manifest.

Two files are pinned in place by contract and stay at src/:
- src/coverage.ts — package export "./coverage"
- src/docs/ — the CLI doc collector requires a flat src/docs (ADR-0046)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
…emonstrated or waived

Extend the coverage manifest from enum variants to metadata kinds:
KIND_COVERAGE enumerates DEFAULT_METADATA_TYPE_REGISTRY, and the coverage
test now fails when the platform gains a kind the showcase has not
accounted for, when a demonstrated kind's proof files go missing, or when
a waiver lacks a reason + tracking-issue link. STACK_COLLECTION_COVERAGE
applies the same contract to stack collections that are not registry
kinds (mappings, connectors).

Waivers (Prime Directive #10 — never fake coverage, never hide a gap):
- agent/tool/skill → #2610 (AI examples deferred; ADR-0063 cloud/MCP-only)
- mappings → #2611 (registered but never consumed)
- connectors → #2612 (declarative entries inert; live demo is plugin-based)
- trigger/router/function/service/external_catalog → #2613 (no declarative
  authoring surface)
- validation notes the 6 unenforced rule types → #1475

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
…he backbone

Close the two ≥app-crm parity gaps the coverage manifest can prove today:

- src/data/analytics/showcase.cube.ts — showcase_delivery cube over
  showcase_task (count / estimate-hours aggregates / done-rate; status,
  priority, assignee, due-date time dimension; many_to_one join to
  showcase_project), wired via analyticsCubes and served by the
  foundational analytics capability at /api/v1/analytics/*.
- src/data/extensions/account.extension.ts — additive overlay merged into
  showcase_account (loyalty_tier / linkedin_url / csat_score, priority
  210), wired via objectExtensions.

test/gap-fill.test.ts proves both: the stack wiring, the cube shape, and
the extension merge against the REAL SchemaRegistry (the same merge
registerApp performs at boot). STACK_COLLECTION_COVERAGE flips
analyticsCubes/objectExtensions to demonstrated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
Give the showcase a front door that indexes every demo:

- Five tour docs (src/docs/showcase_tour_{data,ui,automation,system,
  security}.md) — one per protocol domain, mirroring the src/ layout,
  with live ```metadata embeds (ADR-0051: state machine, flow at
  business detail, permission matrix) and honest pointers to the
  coverage waivers. Docs-as-metadata demoing itself.
- ShowcaseBook gains a 'Guided Tour' group (explicit page list to fix
  the domain order).
- showcase_capability_map — an html-kind SDUI home page with one card
  per domain linking flagship demos + the domain tour; the AI card is
  explicitly 'deferred' (ADR-0063, #2610), never a fake demo. Inserted
  as the FIRST navigation item (the delivered landing convention —
  homePageId has no console consumer). Start Here stays as the page-
  authoring teaching index, relabeled 'Page Authoring'.
- e2e smoke sweeps the new landing; doc/book coverage entries point at
  the tour files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
…nt the new layout

- app-showcase/README.md: drop the false 'AI: an agent wired to a tool
  and a skill' claim and the nonexistent src/agents/ tree entry; replace
  with an explicit 'Where is AI?' waiver note (ADR-0063, #2610).
  Document the six-domain directory layout (with the two pinned
  exceptions and why), the two-level coverage contract, the guided tour
  + capability map, and the cube/extension additions. Fix the report-
  types claim (tabular is a ListView lens per ADR-0021).
- package.json: description no longer advertises an AI capability chain.
- objectstack.config.ts: header comment reflects the tour layer and the
  kind-level verification contract.
- examples/README.md: rewrite the stale catalog — plugin-bi does not
  exist; app-crm, app-showcase, and embed-objectql do. Point 'which
  example demonstrates what' at the CI-enforced coverage manifest
  instead of a hand-maintained protocol table.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
@vercel

vercel Bot commented Jul 5, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jul 5, 2026 4:22am

Request Review

@os-zhuang os-zhuang marked this pull request as ready for review July 5, 2026 04:16
claude added 2 commits July 5, 2026 04:17
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
…ase-redesign-ougiov

# Conflicts:
#	examples/app-showcase/package.json
@github-actions github-actions Bot added documentation Improvements or additions to documentation dependencies Pull requests that update a dependency file tests size/xl labels Jul 5, 2026
@os-zhuang os-zhuang merged commit 31faea1 into main Jul 5, 2026
16 checks passed
@os-zhuang os-zhuang deleted the claude/metadata-showcase-redesign-ougiov branch July 5, 2026 04:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation size/xl tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants