diff --git a/presentations/less-prompting-more-shipping/slides.mjs b/presentations/less-prompting-more-shipping/slides.mjs index 4b23c79..a7d839a 100644 --- a/presentations/less-prompting-more-shipping/slides.mjs +++ b/presentations/less-prompting-more-shipping/slides.mjs @@ -21,7 +21,7 @@ export const slides = [ "id": "starting-point", "title": "We are not starting from “no AI”.", "minutes": 2, - "body": "
Assignment facts
Solo architect → CTO
No formal authority over teams
Unknown until discovery
Stack, tools, process, baselines
Capacity and actual bottlenecks
Solo architect → CTO
No formal authority over teams
Stack, tools, process, baselines
Capacity and actual bottlenecks
Eight separate AI Agents, each human-controlled.
` + contributionsFigure + `Eight separate AI Agents, each human-controlled.
` + contributionsFigure + `AI Agent = Claude, Cline, ChatGPT or a similar tool, used under human control.
Triggers → skills → handoffs → acceptance.
Relationships and cooperation—not merely a catalogue.
", + "body": "Triggers → skills → handoffs → acceptance.
Relationships and cooperation—not merely a catalogue.
", "notes": "Within every adopted phase repeat the loop: understand the current situation, select relevant metrics and baseline, engineer connected skills, use them in real work, collect outcomes/friction/feedback, then reassess and repeat. Topology defines what exists, how skills relate, when each triggers and how they cooperate. In Delivery trace codebase principles through system logic, tests, builds/packaging and deployment before designing that topology. A code-change skill may hand an exact patch and regression evidence to independent review; its trigger is an eligible change, not an ambient right to act. Governance and Measurement support the whole loop. Qualify revisions before use, and reconsider simpler interventions whenever the evidence says they fit better.", "sources": [ "roadmap", diff --git a/presentations/less-prompting-more-shipping/theme.css b/presentations/less-prompting-more-shipping/theme.css index 49b869b..55411fb 100644 --- a/presentations/less-prompting-more-shipping/theme.css +++ b/presentations/less-prompting-more-shipping/theme.css @@ -85,15 +85,24 @@ html.print-pdf .toolbar{display:none}html.print-pdf .reveal.deck{top:0;height:10 .deck .journey small,.deck .horizon small{display:block;font-size:17px;color:#805b00;font-weight:900;letter-spacing:.04em;margin-bottom:14px} .deck .journey b{font-size:31px;display:block;margin-bottom:20px} .deck .journey span{font-size:25px}.deck .journey i{font-style:normal} -.deck .learning-loop{display:grid;grid-template-columns:1fr 40px 1fr 40px 1fr;align-items:center;gap:12px;margin:32px 0 22px} -.deck .learning-loop span{border:2px solid #14131a;padding:22px 10px;font-size:27px;text-align:center} -.deck .learning-loop i{font-style:normal;text-align:center}.deck .learning-loop i:nth-child(6){grid-column:5} +.deck .learning-loop{display:grid;grid-template-columns:1fr 28px 1fr 28px 1fr 28px 1fr;align-items:center;gap:0 8px;margin:22px 0} +.deck #learning-loop .statement{margin:16px 0 0}.deck #learning-loop .small{margin-top:12px} +.deck .learning-loop span{border:2px solid #14131a;padding:8px;font-size:27px;text-align:center} +.deck .learning-loop i{font-style:normal;text-align:center;line-height:1} +.deck .learning-loop>:nth-child(1){grid-area:1/1}.deck .learning-loop>:nth-child(2){grid-area:1/2}.deck .learning-loop>:nth-child(3){grid-area:1/3} +.deck .learning-loop>:nth-child(4){grid-area:2/3} +.deck .learning-loop>:nth-child(5){grid-area:3/3}.deck .learning-loop>:nth-child(6){grid-area:3/4}.deck .learning-loop>:nth-child(7){grid-area:3/5} +.deck .learning-loop>:nth-child(8){grid-area:4/5} +.deck .learning-loop>:nth-child(9){grid-area:5/5}.deck .learning-loop>:nth-child(10){grid-area:5/6}.deck .learning-loop>:nth-child(11){grid-area:5/7} .deck .horizon{margin:35px 0;border-left:5px solid #ffc950;padding-left:25px} .deck .horizon b{font-size:32px;display:block}.deck .horizon .near{background:#e9e9ec;padding:22px;margin-top:28px} .deck .horizon span{display:block;font-size:25px;margin-top:14px} .portrait .deck .target-cycle.wide{display:none}.portrait .deck .target-cycle.phone{display:block;height:540px} .portrait .deck #target h2{font-size:40px} .portrait .deck #target .small{font-size:24px;margin-top:20px} +.portrait .deck #contributors .small{margin:12px 0} +.portrait .deck #contributors .contribution-grid{gap:6px;margin:14px 0} +.portrait .deck #contributors .contribution-grid>div{padding:4px 8px} .portrait .deck .contribution-grid{grid-template-columns:1fr 1fr;gap:12px;margin:24px 0} .portrait .deck .contribution-grid>div{padding:8px;flex-direction:column;justify-content:center;gap:0;font-size:27px} .portrait .deck .contribution-grid i{transform:rotate(90deg)}.portrait .deck .contribution-grid b{text-align:center} @@ -101,6 +110,6 @@ html.print-pdf .toolbar{display:none}html.print-pdf .reveal.deck{top:0;height:10 .portrait .deck .journey>div{width:100%;padding:12px 0;border-top-width:4px} .portrait .deck .journey b{font-size:29px;margin-bottom:8px}.portrait .deck .journey small{margin-bottom:8px} .portrait .deck .journey i{transform:rotate(90deg);line-height:1} -.portrait .deck .learning-loop{grid-template-columns:1fr 28px 1fr 28px 1fr;gap:6px;margin:30px 0} -.portrait .deck .learning-loop span{font-size:24px;padding:20px 4px} +.portrait .deck .learning-loop{grid-template-columns:1fr 16px 1fr 16px 1fr 16px 1fr;gap:0 3px;margin:30px 0} +.portrait .deck .learning-loop span{font-size:24px;padding:14px 2px} .portrait .deck .horizon b{font-size:32px} diff --git a/scripts/browser/homepage-embed.cjs b/scripts/browser/homepage-embed.cjs index c4b83ad..acfd4b8 100644 --- a/scripts/browser/homepage-embed.cjs +++ b/scripts/browser/homepage-embed.cjs @@ -1,4 +1,5 @@ const {chromium}=require('playwright'); +const staircaseFits=require('./presentation-staircase.cjs'); const assert=require('node:assert/strict');const fs=require('node:fs'); (async()=>{ const base=process.argv[2]||'http://127.0.0.1:43853';const root=base+'/eldorado-v1/documentation/'; @@ -22,7 +23,8 @@ const assert=require('node:assert/strict');const fs=require('node:fs'); for(let i=0;i<23;i++){ assert.equal(await f.evaluate(()=>Reveal.getIndices().h),i);visited.push(await f.evaluate(()=>Reveal.getCurrentSlide().id)); const bad=await f.evaluate(()=>{const r=Reveal.getCurrentSlide().getBoundingClientRect();return [...Reveal.getCurrentSlide().querySelectorAll('svg,text,.journey,.learning-loop,.contribution-grid,h1,h2,p,li,table,.flow,.roles,.timeline')].filter(e=>!e.closest('.notes')&&e.getBoundingClientRect().width>0).filter(e=>{const b=e.getBoundingClientRect();return b.bottom>r.bottom+1||b.right>r.right+1||b.left
/);
+});
+test('contributors explains human-controlled AI tools below the diagram',()=>{
+ const body=slides.find(s=>s.id==='contributors').body;
+ const definition='AI Agent = Claude, Cline, ChatGPT or a similar tool, used under human control.';
+ assert(body.includes(definition));
+ assert(body.indexOf(definition)>body.indexOf('contribution-grid'));
+ assert(body.includes('Dashed ⇢ contribution from outside the cycle.'));
+});
+test('learning loop staircase preserves the original semantic sequence',()=>{
+ const body=slides.find(s=>s.id==='learning-loop').body;
+ const loop=body.split('')[0];
+ assert.deepEqual([...loop.matchAll(/(.*?)<\/span>/g)].map(m=>m[1]),['Understand work','Measure + baseline','Engineer topology','Use in real work','Collect results','Reassess']);
+ assert.deepEqual([...loop.matchAll(/(.*?)<\/i>/g)].map(m=>m[1]),['→','↓','→','↓','→']);
+ assert(body.includes('↻ Repeat within each phase.'));
+});
test('build emits local pinned Reveal assets, stable IDs and no production CDN',()=>{
execFileSync(process.execPath,['scripts/build-presentations.mjs']);
const dir='static/presentations/less-prompting-more-shipping'; const html=read(`${dir}/index.html`);