Showcase redesign: six-domain layout, registry-driven coverage, capability-map tour#2619
Merged
Merged
Conversation
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
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Redesigns
examples/app-showcasearound 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 onpnpm --filter @objectstack/example-showcase verify:refactor(showcase)— six-domain layout.src/now mirrorsDEFAULT_METADATA_TYPE_REGISTRY's domains (data/,ui/,automation/,system/,security/), puregit mv+ import-specifier updates. Two files are pinned by contract:src/coverage.ts(package export) and flatsrc/docs/(CLI doc collector, ADR-0046).feat(showcase)— registry-driven kind coverage.KIND_COVERAGEenumerates every metadata kind in the registry; each isdemonstrated(proof files must exist) orwaived(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 → Declarativeconnectors: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.feat(showcase)— cube + object extension.showcase_deliverycube (analyticsCubes) and an additive overlay onshowcase_account(objectExtensions) — the two ≥app-crm parity gaps with real runtime support.test/gap-fill.test.tsproves the stack wiring and the extension merge against the realSchemaRegistry. (defineMapping / declarative connectors were verified to be inert at runtime and are waived, not faked — Prime Directive chore: version packages #10.)feat(showcase)— capability-map landing + guided tour. Five per-domain tour docs with live```metadataembeds (ADR-0051), a Guided Tour book group, and ashowcase_capability_maphtml-kind landing page (first nav item — the delivered landing mechanism;homePageIdhas 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.docs(showcase,examples)— truth pass. Removes the phantom "agent wired to a tool and a skill" claim + nonexistentsrc/agents/from the README and package description; documents the new layout and coverage contract; rewrites the staleexamples/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 verifygreen at every commit (validate + typecheck + 49 tests; validate lints the new tour docs: flatness, prefixes, links, metadata-embed liveness).showcase_capability_mappage resolves;GET /api/v1/analytics/metalistsshowcase_deliveryandPOST /api/v1/analytics/queryreturns real aggregates over seeded tasks;showcase_accountmetadata contains the merged extension fields; all five tour docs serve 200; the book resolves groups Getting Started / Guided Tour / Guides.packages/console/distnot built — no../objectuicheckout); 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