Trace the proposed conditions backward and compare which gaps each intervention leaves open

HTML for this example

Select the code and use your copy shortcut. Changes in this preview are temporary.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Library workshops · trace the proposed conditions</title><style>*{box-sizing:border-box}body{margin:0;background:#eef4f1;color:#324b40;font:16px/1.55 system-ui,sans-serif}main{max-width:980px;margin:auto;padding:24px}h1{font-size:34px;line-height:1.16}h2{font-size:24px}h3{font-size:19px}.eyebrow{letter-spacing:.06em;color:#657f70}.card{padding:20px;margin:18px 0;background:#fff;border:1px solid #c3d3c7;border-radius:6px}.tabs{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}button,textarea{font:inherit;color:inherit}button{min-height:44px;padding:12px;border:1px solid #6d8d77;border-radius:4px;background:#fff;cursor:pointer}button[aria-pressed=true]{background:#497154;color:#fff}button:focus-visible,textarea:focus-visible{outline:3px solid #bd7c29;outline-offset:3px}.map{text-align:center;padding:18px;background:#e3eee7}.branch{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}.map button{width:100%;background:#fff}.map button[aria-pressed=true]{background:#497154;color:#fff}.map button[data-traced=true]{border:4px solid #a57729;box-shadow:0 0 0 2px white}.intention-path{border:2px solid #b3c9b5;padding:12px}.independent{border:2px dashed #b7a66d;padding:12px;align-self:end;background:#fff9e7}.arrow{margin:8px;font-weight:700}.source{border-left:6px solid #638f93;background:#eff6f7}.assumption{border-left:6px solid #c09a4a;background:#fff8e5}label{display:block;font-weight:650;margin:14px 0 6px}textarea{width:100%;max-width:100%;min-width:0;min-height:95px;padding:10px;border:1px solid #93aa99;border-radius:4px;resize:vertical}.copy p{white-space:pre-wrap;overflow-wrap:anywhere}#status{font-weight:650;color:#7c541c}footer{margin:24px 0;color:#66806e}[hidden]{display:none!important}@media(max-width:560px){main{padding:12px}h1{font-size:28px}.card{padding:14px}.branch{grid-template-columns:1fr}.map{padding:12px}}</style></head><body><main><p class="eyebrow">FICTIONAL LIBRARY EVENING WORKSHOPS · BACKWARD PLANNING</p><h1>Which necessary condition would the notice leave untouched?</h1><section class="card source"><h2>Two supplied planning notes</h2><p><strong>N1:</strong> The invitation says “advanced tools” without explaining prerequisites.</p><p><strong>N2:</strong> Travel constraints have not been researched, and room capacity is unknown.</p><p>These notes are not participant responses or proof that wording or travel has caused nonattendance.</p></section><section class="card"><h2>Proposed pathway · select a condition to trace backward</h2><p>Gold borders mark proposed preconditions for the selected point. Every causal connection is a hypothesis, not a demonstrated effect.</p><div class="map"><div class="branch"><div class="intention-path"><div class="branch"><button id="fit" type="button">Understand session fit</button><button id="access" type="button">Workable time and access</button></div><p class="arrow">Fit AND access ↓</p><button id="intention" type="button">Intention to attend</button></div><div class="independent"><p><strong>Independent capacity condition</strong></p><p>No earlier conditions are supplied for available places. Room capacity is unknown.</p><button id="places" type="button">A place is available</button></div></div><p class="arrow">Intention AND place ↓</p><button id="attendance" type="button">Attendance at a suitable session</button><p class="arrow">Proposed contribution ↓</p><button id="outcome" type="button">Adults can take part in ongoing workshops</button></div><p id="trace" aria-live="polite"></p><p>These conditions are not established as sufficient or shared by every potential participant.</p></section><section class="card assumption"><h2>Inspect a pathway and its evidence gap</h2><div class="tabs"><button id="path-a" type="button" aria-pressed="true">A · session fit</button><button id="path-b" type="button" aria-pressed="false">B · timing and access</button></div><h3 id="path">Clearer description → understanding session fit</h3><p><strong>Causal assumption:</strong> <span id="assumption">A1: explaining prerequisites helps intended readers assess whether the session suits them.</span></p><p><strong>Source note:</strong> <span id="note">N1: “advanced tools” lacks prerequisite explanation. It does not prove this prevents attendance.</span></p><p><strong>Evidence needed:</strong> <span id="question">Can intended readers explain who the session is for after reading the revised notice?</span></p><p>Actual consultation owner and response: not supplied.</p></section><section class="card"><h2>Compare proposed interventions</h2><div class="tabs"><button id="proposal-a" type="button" aria-pressed="true">Proposal A · notice only</button><button id="proposal-b" type="button" aria-pressed="false">Proposal B · notice + access inquiry</button></div><h3 id="proposal-title">A · rewrite the invitation</h3><p id="addresses">Addresses the proposed session-fit pathway.</p><p id="open">Leaves timing, access, available places and other influences unresolved. Even better reader understanding would not settle those conditions.</p><p id="next">Next: test understanding and investigate access constraints before choosing a schedule change. No attendance effect has been demonstrated.</p></section><section class="card"><h2>Your separate backward map and discussion notes</h2><div id="fields"></div><div class="tabs"><button id="build" type="button">Build planning review</button><button id="reset" type="button">Reset typed work</button></div><p id="status" role="status"></p><section id="confirm" hidden><h3>Clear all seven planning fields?</h3><div class="tabs"><button id="keep" type="button">Keep my map</button><button id="clear" type="button">Clear typed notes</button></div></section><section id="review" class="card copy" hidden><h3>Your supplied proposed pathway</h3><div id="copy"></div><p>No causal effect or success probability is established by assembling this map.</p></section></section><footer>Temporary planning notes only. No invented participants, capacity, owner, response or saved program record. Ask what must be checked before choosing an activity.</footer></main><script>'use strict';const $=id=>document.getElementById(id),preconditions={fit:[],access:[],intention:['fit','access'],places:[],attendance:['intention','places'],outcome:['attendance']},labels={fit:'understanding session fit',access:'workable time and access',intention:'intention',places:'available places',attendance:'attendance',outcome:'ongoing participation'};function trace(id){const active=new Set();function walk(key){active.add(key);for(const p of preconditions[key])walk(p);}walk(id);for(const key of Object.keys(preconditions)){$(key).dataset.traced=String(active.has(key));$(key).setAttribute('aria-pressed',String(key===id));$(key).setAttribute('aria-description',active.has(key)?'On the backward trace for '+labels[id]:'Outside the backward trace for '+labels[id]);}const links=[...active].filter(key=>preconditions[key].length).map(key=>labels[key]+' requires ('+preconditions[key].map(p=>labels[p]).join(' AND ')+')');$('trace').textContent='Backward trace from '+labels[id]+'. '+(links.length?'Proposed dependencies: '+links.join('; '):'No earlier condition is supplied for this point.')+' These are conditions to examine, not proven causes.';}for(const id of Object.keys(preconditions))$(id).addEventListener('click',()=>trace(id));trace('outcome');for(const id of ['a','b'])$('path-'+id).addEventListener('click',()=>{const a=id==='a';$('path-a').setAttribute('aria-pressed',String(a));$('path-b').setAttribute('aria-pressed',String(!a));$('path').textContent=a?'Clearer description → understanding session fit':'Earlier finish → feasible journey home';$('assumption').textContent=a?'A1: explaining prerequisites helps intended readers assess whether the session suits them.':'A2: finishing earlier makes travel workable for people who face that constraint.';$('note').textContent=a?'N1: “advanced tools” lacks prerequisite explanation. It does not prove this prevents attendance.':'N2: travel constraints are unresearched and capacity unknown. No travel problem or effective finish time is established.';$('question').textContent=a?'Can intended readers explain who the session is for after reading the revised notice?':'What travel constraints exist, and would the proposed finish time address them?';});for(const id of ['a','b'])$('proposal-'+id).addEventListener('click',()=>{const a=id==='a';$('proposal-a').setAttribute('aria-pressed',String(a));$('proposal-b').setAttribute('aria-pressed',String(!a));$('proposal-title').textContent=a?'A · rewrite the invitation':'B · revise invitation and investigate an earlier finish';$('addresses').textContent=a?'Addresses the proposed session-fit pathway.':'Considers session fit and investigates the access pathway; investigation is not a resolved travel condition.';$('open').textContent=a?'Leaves timing, access, available places and other influences unresolved. Even better reader understanding would not settle those conditions.':'Which finish time, for whom, and with what workshop consequences? Travel evidence and capacity remain absent. Do not move the session as though those questions were settled.';});const fields=[['own-outcome','Intended change, for whom · required'],['conditions','Proposed necessary conditions worked backward'],['assumptions','Causal assumptions for each connection'],['evidence','Supplied observations with source/date and evidence gaps'],['alternatives','Alternative interventions and conditions left open'],['question-input','Next question and actual consultation owner, if agreed'],['notes','Discussion notes and actual responses, only if supplied']];for(const[id,label]of fields){const l=document.createElement('label'),t=document.createElement('textarea');l.htmlFor=id;l.textContent=label;t.id=id;t.addEventListener('input',()=>{$('review').hidden=true;$('status').textContent='Planning notes changed. Build again to review the current words.';});$('fields').append(l,t);}$('build').addEventListener('click',()=>{$('review').hidden=true;if(!$('own-outcome').value.trim()){$('status').textContent='Complete: intended outcome and who it concerns.';return;}$('copy').replaceChildren();for(const[id,title]of fields){const h=document.createElement('h3'),p=document.createElement('p');h.textContent=title;p.textContent=$(id).value.trim()||'Not supplied.';$('copy').append(h,p);}$('review').hidden=false;$('status').textContent='Planning review assembled from supplied words.';});$('reset').addEventListener('click',()=>{$('confirm').hidden=false;$('keep').focus();});$('keep').addEventListener('click',()=>{$('confirm').hidden=true;$('reset').focus();});$('clear').addEventListener('click',()=>{for(const[id]of fields)$(id).value='';$('review').hidden=true;$('confirm').hidden=true;$('status').textContent='Seven planning fields cleared. Worked pathways, notes and selected trace are unchanged.';$('own-outcome').focus();});</script></body></html>