Engineering judgment, tested against reality.
+ +From the latest
++ AI raises the floor dramatically. It does not flatten the ceiling. The profession that survives is the one hardest to demo without, not just hardest to do without. The professional sees second-order failures coming. The amateur with AI doesn't know there is a second order. ++ + Read "AI Commoditizes Features, But Judgment Compounds" + +
A six-part investigation into rage, a Rust monorepo build system that fuses BuildXL's provable correctness with lage's ergonomics. From syscall sandboxing to content-addressed storage.
+]*class="excerpt"/, 'should have a blockquote with class excerpt'); + }); + + it('should have a link to the full post', () => { + const content = readPage(); + // The featured section should contain a link to read the full post + assert.match(content, /class="featured-link"/, 'should have a featured-link to the full post'); + }); + }); + + describe('Series section', () => { + it('should have a series section', () => { + const content = readPage(); + assert.match(content, /class="series"/, 'should have a section with class series'); + }); + + it('should mention the Rage series', () => { + const content = readPage(); + assert.match(content, /Rage/, 'should mention Rage in the series section'); + }); + + it('should list planned posts', () => { + const content = readPage(); + assert.match(content, /class="series-item"/, 'should have series items'); + }); + + it('should indicate coming soon items', () => { + const content = readPage(); + assert.match(content, /coming soon/i, 'should indicate coming soon posts'); + }); + }); + + describe('All posts section', () => { + it('should have a posts listing section below the pitch', () => { + const content = readPage(); + assert.match(content, /class="all-posts"/, 'should have a section with class all-posts'); + }); + + it('should map posts to compact entries', () => { + const content = readPage(); + assert.match(content, /sortedPosts\.map/, 'should map sortedPosts'); + }); + + it('should show post titles as links', () => { + const content = readPage(); + // Each post entry should link to its page + assert.match(content, /posts\/\$\{post\.id\}/, 'should link to post pages'); + }); + }); + + describe('Layout', () => { it('should use BaseLayout with title Crash Test Dev', () => { const content = readPage(); assert.match(content, /{ const content = readPage(); assert.match(content, / { - const content = readPage(); - assert.match(content, / { - const content = readPage(); - assert.match(content, /sortedPosts\.map/, 'should map sortedPosts'); - assert.match(content, / { - const content = readPage(); - assert.match(content, /title\s*=\s*\{post\.data\.title\}/, 'should pass title'); - }); - - it('should pass date from post.data.date', () => { - const content = readPage(); - assert.match(content, /date\s*=\s*\{post\.data\.date\}/, 'should pass date'); - }); - - it('should pass type from post.data.type', () => { - const content = readPage(); - assert.match(content, /type\s*=\s*\{post\.data\.type\}/, 'should pass type'); - }); - - it('should pass summary from post.data.summary', () => { - const content = readPage(); - assert.match(content, /summary\s*=\s*\{post\.data\.summary\}/, 'should pass summary'); - }); - - it('should pass slug as post.id', () => { - const content = readPage(); - assert.match(content, /slug\s*=\s*\{post\.id\}/, 'should pass slug as post.id'); - }); - - it('should compute and pass readingTime from post.body', () => { - const content = readPage(); - assert.match(content, /getReadingTime\s*\(\s*post\.body/, 'should call getReadingTime(post.body...)'); - assert.match(content, /readingTime\s*=\s*\{/, 'should pass readingTime prop'); - }); }); describe('Style', () => { - it('should have .post-list with prose max-width', () => { + it('should use --width-prose for content width', () => { const content = readPage(); - assert.match(content, /\.post-list\s*\{/, 'should have .post-list selector'); - assert.match(content, /max-width\s*:\s*var\(--width-prose\)/, 'should have prose max-width'); + assert.match(content, /max-width\s*:\s*var\(--width-prose\)/, 'should constrain content to prose width'); }); - it('should have space-6 top and space-12 bottom margins', () => { + it('should use --font-structure for hero heading', () => { const content = readPage(); - assert.match(content, /margin-top\s*:\s*var\(--space-6\)/, 'should have space-6 top margin'); - assert.match(content, /margin-bottom\s*:\s*var\(--space-12\)/, 'should have space-12 bottom margin'); + assert.match(content, /\.hero[\s\S]*?font-family\s*:\s*var\(--font-structure\)/, 'should use structure font in hero'); }); - it('should have auto left and right margins', () => { + it('should use --font-prose for excerpt', () => { const content = readPage(); - assert.match(content, /margin-left\s*:\s*auto/, 'should have auto left margin'); - assert.match(content, /margin-right\s*:\s*auto/, 'should have auto right margin'); + assert.match(content, /\.excerpt[\s\S]*?font-family\s*:\s*var\(--font-prose\)/, 'should use prose font for excerpt'); }); - it('should have flex column display', () => { + it('should not have the old .post-list as the main layout', () => { const content = readPage(); - assert.match(content, /display\s*:\s*flex/, 'should have flex display'); - assert.match(content, /flex-direction\s*:\s*column/, 'should have column direction'); - }); - - it('should have space-2 gap', () => { - const content = readPage(); - assert.match(content, /gap\s*:\s*var\(--space-2\)/, 'should have space-2 gap'); + // The old flat list structure should be gone + assert.doesNotMatch(content, /