build006.spec.ts
tests/build006.spec.tsThis is the retained record itself—not a chat summary. It is exposed because it materially documents the research, method, evidence, audit, production, planning or release history of The 100.
import {test,expect} from '@playwright/test';
async function range(page:any,label:string,value:number){await page.getByLabel(label).evaluate((el:HTMLInputElement,v)=>{el.value=String(v);el.dispatchEvent(new Event('input',{bubbles:true}));},value)}
const resultSection=(page:any)=>page.locator('section').filter({has:page.getByText('CANDIDATE FORM',{exact:true})});
test.describe('Build 006 software-worthiness gates',()=>{
test('default candidate exposes bounded form and decision-gap inheritance',async({page})=>{await page.goto('/100-builds/006/a');await expect(page.getByText('CANDIDATE FORM',{exact:true})).toBeVisible();await expect(page.getByText(/Inherited decision-gap signal/)).toBeVisible();await expect(page.getByText(/does not prove product-market fit/i)).toBeVisible();});
test('weak value keeps an idea simple even if software looks attractive',async({page})=>{await page.goto('/100-builds/006/a');await range(page,'How much useful value does solving it create?',1);await expect(resultSection(page).getByRole('heading',{name:'KEEP SIMPLE',exact:true})).toBeVisible();});
test('expert judgment with weak software advantage points to service',async({page})=>{await page.goto('/100-builds/006/a');await range(page,'How much expert judgment remains central?',5);await range(page,'How much better is software than a simple template/process?',2);await expect(resultSection(page).getByRole('heading',{name:'SERVICE',exact:true})).toBeVisible();});
test('strong data asset with weak software advantage can point to dataset',async({page})=>{await page.goto('/100-builds/006/a');await range(page,'How much expert judgment remains central?',2);await range(page,'Does repeated use create a durable data/evidence asset?',5);await range(page,'How much better is software than a simple template/process?',2);await expect(resultSection(page).getByRole('heading',{name:'DATASET',exact:true})).toBeVisible();});
test('export is explicit and local',async({page})=>{await page.goto('/100-builds/006/a');const dl=page.waitForEvent('download');await page.getByRole('button',{name:'EXPORT RECORD'}).click();await dl;});
test('canonical room is publicly in the lab and links both artifacts',async({page})=>{await page.goto('/100-builds/006');await expect(page.getByText('BUILD 006 / 100 · IN THE LAB')).toBeVisible();await expect(page.getByRole('link',{name:/OPEN THE TOOL/})).toHaveAttribute('href',/\/100-builds\/006\/a\/?$/);await expect(page.getByRole('link',{name:/ENTER THE VISUAL BUILD/})).toHaveAttribute('href',/\/100-builds\/006\/b\/?$/);});
test('next unstarted canonical build remains coming next',async({page})=>{await page.goto('/100-builds/015');await expect(page.getByText('BUILD 015 / 100 · COMING NEXT')).toBeVisible();});
});
test.describe('Build 006 interactive form field',()=>{
test('scenario controls visibly change the candidate form',async({page})=>{await page.goto('/100-builds/006/b');await expect(page.getByRole('button',{name:'BASELINE'})).toHaveAttribute('aria-pressed','true');await expect(page.getByText('SOFTWARE',{exact:true}).filter({visible:true}).first()).toBeVisible();await page.getByRole('button',{name:'MORE JUDGMENT'}).click();await expect(page.getByRole('button',{name:'MORE JUDGMENT'})).toHaveAttribute('aria-pressed','true');await expect(page.locator('article[data-active="true"]').getByRole('heading',{name:'SERVICE',exact:true})).toBeVisible();await page.getByRole('button',{name:'STRONGER DATA'}).click();await expect(page.locator('article[data-active="true"]').getByRole('heading',{name:'DATASET',exact:true})).toBeVisible();});
});