- One artifact, two consumers on separate vendor agent platforms: workspace.json for Codex and
+ One spec, multiple consumers:
+ Codex and
Buildomator (formerly gsd-plugin)
- for Claude Code.
+ both read workspace.json to give agent platforms codebase context.
Read the spec
diff --git a/src/pages/showcase/tally/index.astro b/src/pages/showcase/tally/index.astro
index d8396b7..98d54ab 100644
--- a/src/pages/showcase/tally/index.astro
+++ b/src/pages/showcase/tally/index.astro
@@ -97,6 +97,9 @@ const cockpitUrl = ctaLinks.liveEvidence;
Explore the evidence
+
+ Try Tally
+
diff --git a/tests/tally.spec.ts b/tests/tally.spec.ts
index 62fd7e5..5ea9188 100644
--- a/tests/tally.spec.ts
+++ b/tests/tally.spec.ts
@@ -245,12 +245,15 @@ test.describe('showcase: hero', () => {
expect(href).toBe('#the-problem');
});
- test('hero has exactly two CTAs (no ghost Try Tally)', async ({ page }) => {
+ test('hero has exactly three CTAs including ghost Try Tally', async ({ page }) => {
await page.goto(NARRATIVE, { waitUntil: 'load' });
const ctas = page.locator('.tally-hero-ctas a');
- expect(await ctas.count()).toBe(2);
+ expect(await ctas.count()).toBe(3);
const ghost = page.locator('.tally-hero-ctas .tally-cta-ghost');
- expect(await ghost.count()).toBe(0);
+ expect(await ghost.count()).toBe(1);
+ expect(await ghost.textContent()).toContain('Try Tally');
+ const href = await ghost.getAttribute('href');
+ expect(href).toBe('https://tally.workspacejson.dev/');
});
test('Explore the evidence CTA links to proof page', async ({ page }) => {