diff --git a/astro.config.mjs b/astro.config.mjs index 620bdd0..44a8f0d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -92,6 +92,7 @@ export default defineConfig({ { label: 'Showcase', items: [ + { label: 'Tally: Change Impact Cockpit', link: '/showcase/tally/' }, { label: 'Tally: Proof', link: '/showcase/tally/proof/' }, ], }, diff --git a/public/favicon.png b/public/favicon.png deleted file mode 100644 index 0382af5..0000000 Binary files a/public/favicon.png and /dev/null differ diff --git a/public/favicon.svg b/public/favicon.svg index f044172..5b2cbbb 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,4 +1,34 @@ - - - w.json - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/overrides/Footer.astro b/src/components/overrides/Footer.astro index ef10344..6fd2075 100644 --- a/src/components/overrides/Footer.astro +++ b/src/components/overrides/Footer.astro @@ -23,6 +23,7 @@
  • Spec
  • Audit Tool
  • Examples
  • +
  • Tally Showcase
  • FAQ
  • diff --git a/src/components/tally/TallyActNav.astro b/src/components/tally/TallyActNav.astro deleted file mode 100644 index 9501e76..0000000 --- a/src/components/tally/TallyActNav.astro +++ /dev/null @@ -1,56 +0,0 @@ ---- -import { acts } from '../../data/tally-showcase'; ---- - - - - diff --git a/src/components/tally/TallyHero.astro b/src/components/tally/TallyHero.astro deleted file mode 100644 index c5b69b2..0000000 --- a/src/components/tally/TallyHero.astro +++ /dev/null @@ -1,121 +0,0 @@ ---- -import { productIdentity, assets, trustSignals, ctaLinks } from '../../data/tally-showcase'; - -const lockup = assets.lockup; -const hasDemoVideo = false; ---- - -
    - {lockup.alt} -

    {productIdentity.hero}

    -

    {productIdentity.supporting}

    -
    - - Inspect proof - - - Source repository - -
    - -
    - - diff --git a/src/components/tally/TallyHeroCtas.astro b/src/components/tally/TallyHeroCtas.astro deleted file mode 100644 index 190cdbd..0000000 --- a/src/components/tally/TallyHeroCtas.astro +++ /dev/null @@ -1,50 +0,0 @@ ---- -import { ctaLinks } from '../../data/tally-showcase'; - -const hasDemoVideo = false; ---- - -
    - {hasDemoVideo && ( - - Watch demo - - )} - - Inspect proof - - - Source repository - -
    - - diff --git a/src/components/tally/TallyNextActions.astro b/src/components/tally/TallyNextActions.astro deleted file mode 100644 index ed656b2..0000000 --- a/src/components/tally/TallyNextActions.astro +++ /dev/null @@ -1,49 +0,0 @@ ---- -import { nextActions } from '../../data/tally-showcase'; ---- - -
    - {nextActions.map((action) => ( -
    -

    {action.role}

    -

    {action.title}

    -
      - {action.steps.map((step) => ( -
    1. {step}
    2. - ))} -
    - -
    - ))} -
    - - diff --git a/src/data/tally-showcase.ts b/src/data/tally-showcase.ts index bdbe16a..ec9a60d 100644 --- a/src/data/tally-showcase.ts +++ b/src/data/tally-showcase.ts @@ -219,7 +219,7 @@ export const narrativeActs: NarrativeAct[] = [ { number: 2, id: 'the-mechanism', - title: 'How Tally resolves source context', + title: 'The resolution', kicker: '02', asset: 'explainer02', composition: 'full-width', @@ -230,7 +230,7 @@ export const narrativeActs: NarrativeAct[] = [ { number: 3, id: 'the-changed-decision', - title: 'The decision that changed', + title: 'The evidence changed the plan', kicker: '03', asset: 'explainer03', composition: 'before-after', @@ -262,15 +262,6 @@ export const narrativeActs: NarrativeAct[] = [ }, ]; -// ─── Trust signals (hero) ─── - -export const trustSignals = [ - { label: '44 stable claim IDs', href: '/showcase/tally/proof/' }, - { label: 'Immutable commit-pinned evidence', href: null }, - { label: 'No warehouse, no credentials', href: null }, - { label: '35/35 adapter parity checks', href: null }, -] as const; - // ─── Stable claim records (from docs/claim-ids.json v2 at pinned revision) ─── export type TallyClaim = { @@ -378,78 +369,6 @@ export const limitations: TallyLimitation[] = [ { id: 'one-subject', statement: 'One subject per golden fixture. The nested corpus is exercised by a perturbation test and the live evidence package.', source: 'test/fixtures/golden/', claimId: 'TALLY-CLAIM-044' }, ]; -// ─── Next action by role ─── - -export type NextAction = { - role: string; - title: string; - steps: string[]; - links: { label: string; href: string }[]; -}; - -export const nextActions: NextAction[] = [ - { - role: 'Judge', - title: 'Verify the claims in 60 seconds', - steps: [ - 'Open the golden root-level fixture.', - 'Check the code block: repositoryRelativePath is models/customers.sql, method is manifest-join.', - 'Check the evidence block: tier is VERIFIED, one record with checkExecuted true.', - 'Check the writeback block: succeeded true, bothStatesRead true, noop true.', - 'Check the unavailable block: two entries, each stating what is missing and why.', - ], - links: [ - { label: 'Golden root-level fixture', href: `${sourceBaseUrl}/test/fixtures/golden/change-impact-event.root.json` }, - { label: 'Judging guide', href: `${sourceBaseUrl}/JUDGING.md` }, - ], - }, - { - role: 'Adopter', - title: 'Run the join against your own DataHub', - steps: [ - 'Clone the datahub-agent repository.', - 'Install dependencies: npm install.', - 'Start a local DataHub instance (requires Docker).', - 'Run the emitter against your dbt project.', - 'Inspect the emitted ChangeImpactEvent and writeback receipt.', - ], - links: [ - { label: 'Quickstart guide', href: `${sourceBaseUrl}/docs/quickstart.md` }, - { label: 'Clean quickstart proof', href: `${sourceBaseUrl}/evaluation/clean-quickstart-proof.md` }, - ], - }, - { - role: 'Implementer', - title: 'Integrate workspace.json with your tool', - steps: [ - 'Read the change-impact event contract.', - 'Consume the Zod-validated CockpitViewModel.', - 'Run the test suite: npm test.', - 'Run the typecheck and clean-room audit.', - 'Verify adapter parity: 35 of 35 checks pass.', - ], - links: [ - { label: 'Source repository', href: `https://github.com/${sourceRepository}` }, - { label: 'Cockpit architecture', href: `${sourceBaseUrl}/docs/cockpit-architecture.md` }, - ], - }, - { - role: 'Contributor', - title: 'Reproduce the evaluation', - steps: [ - 'Clone the proof corpus at the pinned commit.', - 'Run the node-type coverage probe.', - 'Verify the HAC-152 checksums.', - 'Run the full verification suite: npm test, typecheck, clean-room, parity.', - 'Read the claim ledger for every figure and its verification command.', - ], - links: [ - { label: 'Claim ledger', href: `${sourceBaseUrl}/docs/claims.md` }, - { label: 'Live evidence package', href: `${sourceBaseUrl}/evaluation/hac-152/` }, - ], - }, -]; - // ─── CTA links ─── export const ctaLinks = { diff --git a/src/pages/index.astro b/src/pages/index.astro index 9506b7d..675b6bc 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -370,6 +370,35 @@ const exampleCode = `{ + +
    +
    +

    Showcase

    +

    + A silent zero, found and fixed. +

    +
    +
    +

    + DataHub knows lineage and schema. Git knows which files change together. + The join sounds trivial: a dbt model is a file. But when a dbt project + lives in a subdirectory, every lookup misses and the join returns zero + rows, silently, with no error. Tally is a + Change Impact Cockpit that resolves the mismatch, joins catalog context + with repository evidence, and attaches a bounded receipt to every claim. +

    +

    + Read the Tally showcase for the five-act + narrative: the silent failure, the mechanism, the evidence that changed + the plan, the verifiable receipt, and the honest evidence boundary. +

    +
    +
    + Read the showcase + Inspect the evidence +
    +
    + {recentPosts.length > 0 && (
    diff --git a/src/pages/showcase/tally/index.astro b/src/pages/showcase/tally/index.astro index 6e3c91a..d8396b7 100644 --- a/src/pages/showcase/tally/index.astro +++ b/src/pages/showcase/tally/index.astro @@ -26,8 +26,8 @@ const cockpitUrl = ctaLinks.liveEvidence; template: 'splash', tableOfContents: false, head: [ - { tag: 'meta', attrs: { property: 'og:image', content: '/tally/og-1200x630.png' } }, - { tag: 'meta', attrs: { name: 'twitter:image', content: '/tally/og-1200x630.png' } }, + { tag: 'meta', attrs: { property: 'og:image', content: ogImage } }, + { tag: 'meta', attrs: { name: 'twitter:image', content: ogImage } }, { tag: 'meta', attrs: { property: 'og:type', content: 'website' } }, { tag: 'meta', attrs: { property: 'og:site_name', content: 'workspace.json' } }, { tag: 'meta', attrs: { property: 'og:url', content: 'https://workspacejson.dev/showcase/tally/' } }, @@ -41,23 +41,39 @@ const cockpitUrl = ctaLinks.liveEvidence; hasSidebar={false} >
    - {/* ─── Top navigation ─── */} + {/* ─── Top navigation (consolidated: replaces Starlight's built-in header) ─── */} + {/* ─── Sticky section index (appears after scroll) ─── */} +
    + +
    + {/* ─── Hero ─── */}
    - {/* ─── Product screenshot ─── */} -
    -

    - Tally resolved the dataset to its exact repository-relative path, joined - lineage and code impact, and surfaced three declared evidence gaps. -

    -
    - - Tally Impact review for game_events showing exact source resolution, three declared evidence gaps, and upstream and downstream lineage. - -
    - - View full-resolution screenshot - - -
    - {/* ─── Narrative acts with varied composition ─── */} {narrativeActs.map((act) => { const asset = assets[act.asset]; @@ -254,6 +241,35 @@ const cockpitUrl = ctaLinks.liveEvidence; ); })} + {/* ─── Product screenshot (after narrative so the judge sees failure before repair) ─── */} +
    +

    + Tally resolved the dataset to its exact repository-relative path, joined + lineage and code impact, and surfaced three declared evidence gaps. +

    +
    + + Tally Impact review for game_events showing exact source resolution, three declared evidence gaps, and upstream and downstream lineage. + +
    + + View full-resolution screenshot + + +
    + {/* ─── Why this matters ─── */}

    Why this matters

    @@ -294,6 +310,63 @@ const cockpitUrl = ctaLinks.liveEvidence;

    +