Cedar Team • communication procedure — Write a communication procedure that classifies an update, identifies affected recipients, chooses the agreed channel and verifies an…

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>Cedar Team • communication procedure</title><style>*{box-sizing:border-box}body{margin:0;background:var(--bg,#eef3f6);color:#172a39;font:16px/1.5 system-ui,sans-serif}main{max-width:1200px;margin:auto;padding:28px}h1{font-size:clamp(27px,4vw,42px);line-height:1.12;margin:8px 0 12px;letter-spacing:-.035em}h2{font-size:23px;line-height:1.2;margin:0 0 18px}h3{font-size:17px;margin:14px 0 8px}p{margin:8px 0 16px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.15em;font-weight:800;color:var(--accent,#176b71)}.lead{max-width:75ch;color:#405568}.panel{background:#fff;border:1px solid #cdd9e1;border-radius:14px;padding:24px;margin:18px 0}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.wide{grid-template-columns:1.6fr 1fr}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.metric{border-left:4px solid var(--accent,#176b71);background:#f4f8fa;padding:18px}.big{display:block;font-size:36px;font-weight:800;line-height:1.2}.muted,small{color:#536879;font-size:14px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}button{background:var(--accent,#176b71);color:white;border:2px solid transparent;border-radius:8px;padding:10px 16px;min-height:44px;cursor:pointer;font:inherit;font-weight:650}button.secondary{background:#e8eff4;color:#172a39}button:disabled{opacity:.48;cursor:default}button[aria-pressed=true]{outline:3px solid #172a39;outline-offset:2px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #de7616;outline-offset:3px}label{display:block;font-weight:650;margin:12px 0 6px}input,select,textarea{font:inherit;color:inherit;border:1px solid #8b9eae;border-radius:6px;background:white;padding:10px;width:100%;min-height:44px}textarea{resize:vertical;min-height:110px}input[type=checkbox]{width:22px;min-height:22px;vertical-align:middle}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;background:#eff4f7;color:#3d5261}th,td{padding:12px;border-bottom:1px solid #dce5eb;vertical-align:top}.scroll{overflow-x:auto}caption{text-align:left;margin-bottom:12px;font-weight:700}.notice{background:#eef5f9;border-left:4px solid #628ba1;padding:14px;margin:14px 0}.error{color:#9c2924;font-weight:650}.pill{display:inline-block;border-radius:30px;padding:4px 10px;background:#e5f3ee;color:#17614f;font-size:13px;font-weight:750}.draft{white-space:pre-wrap;font:17px/1.65 Georgia,serif}.rule{display:block;width:100%;text-align:left;margin:10px 0}.rule strong{font-size:26px}details{margin:18px 0}summary{cursor:pointer;font-weight:700;padding:12px;background:#e9eff3;border-radius:6px;min-height:44px}footer{margin:30px 0;color:#536879;font-size:14px}ol,ul{padding-left:23px}.time-input{max-width:90px}.section-no{font-size:52px;color:#b5c8d5;font-weight:800;line-height:1}.tag{font-weight:700;color:var(--accent,#176b71)}[hidden]{display:none!important}@media(max-width:760px){main{padding:18px}.grid,.wide{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr}.panel{padding:18px}.big{font-size:30px}th,td{padding:9px}}:root{--accent:#345d85;--bg:#edf2f7}.identity{border-left:5px solid #8eaac3;padding-left:18px}.draft{font:20px/1.7 Georgia,serif;max-width:70ch}.panel aside{border-left:1px solid #d4dfe7;padding-left:22px}.panel aside p{line-height:1.8}#case-title{font-size:30px}.scroll input{min-width:230px}@media(max-width:760px){.panel aside{border-left:0;border-top:1px solid #d4dfe7;padding:18px 0 0}}</style></head><body><main>
<span class="eyebrow">Cedar Team / fictional communication records</span><h1>Confirm the decision before the announcement.</h1><p class="lead">Trace the update, route and acknowledgement as separate evidence.</p><nav class="row" aria-label="Independent case views"><button type="button" id="view-u01">U01 · Proposal</button><button type="button" id="view-l01" class="secondary">L01 · Sent log / acknowledgement gap</button></nav>
<section class="panel"><div class="identity"><span id="case-id" class="eyebrow"></span><h2 id="case-title"></h2><p id="case-evidence" class="notice" aria-live="polite"></p></div><div class="grid wide"><div><h3 id="brief-label"></h3><div id="message-preview" class="draft"></div></div><aside><h3>U01 / fixed source facts</h3><p><strong>Current requirement: PDF</strong><br>Proposed requirement: DOCX<br>Author: Mia<br>Affected: Leo, writer; Jo, reviewer<br>A01 approval: absent</p><p class="pill">U01 stays Proposed</p><p class="muted">L01 is a separate illustrative sent-state entry. It supplies no approval chain for U01.</p></aside></div></section>
<section class="panel"><h2>Event-routing matrix</h2><div class="row"><button type="button" id="route-proposal" class="secondary">Proposal needing a decision</button><button type="button" id="route-approved" class="secondary">Approved operational change</button><button type="button" id="route-ack" class="secondary">Missing required acknowledgement</button><button type="button" id="route-restricted" class="secondary">Restricted or confidential update</button></div><h3 id="route-title"></h3><p id="route-audience"></p><p id="route-evidence"></p><p id="route-state" class="notice" aria-live="polite"></p><div class="scroll"><table><thead><tr><th>Event</th><th>Actual agreed route</th><th>Purpose / audience / communication standard</th></tr></thead><tbody><tr><th>Proposal needing a decision</th><td><label for="channel-proposal">Proposal needing a decision — agreed route</label><input id="channel-proposal" type="text" value=""></td><td><label for="standard-proposal">Proposal needing a decision — team standard</label><input id="standard-proposal" type="text" value=""></td></tr><tr><th>Approved operational change</th><td><label for="channel-approved">Approved operational change — agreed route</label><input id="channel-approved" type="text" value=""></td><td><label for="standard-approved">Approved operational change — team standard</label><input id="standard-approved" type="text" value=""></td></tr><tr><th>Missing required acknowledgement</th><td><label for="channel-ack">Missing required acknowledgement — agreed route</label><input id="channel-ack" type="text" value=""></td><td><label for="standard-ack">Missing required acknowledgement — team standard</label><input id="standard-ack" type="text" value=""></td></tr><tr><th>Restricted or confidential update</th><td><label for="channel-restricted">Restricted or confidential update — agreed route</label><input id="channel-restricted" type="text" value=""></td><td><label for="standard-restricted">Restricted or confidential update — team standard</label><input id="standard-restricted" type="text" value=""></td></tr></tbody></table></div><p class="muted">No channel or response deadline is implied. Confirm confidentiality and authorized recipients before distribution.</p></section>
<section class="panel"><h2>Controlled procedure / team inputs</h2><div class="grid"><label for="procedure-id">Procedure ID</label><input id="procedure-id" type="text" value=""><label for="revision">Procedure revision</label><input id="revision" type="text" value=""><label for="procedure-owner">Actual procedure owner</label><input id="procedure-owner" type="text" value=""><label for="procedure-status">Procedure approval status / evidence</label><input id="procedure-status" type="text" value=""><label for="effective">Procedure effective date</label><input id="effective" type="text" value=""><label for="decision-owner">U01 actual decision owner</label><input id="decision-owner" type="text" value=""><label for="confidentiality">U01 confidentiality classification / authority</label><input id="confidentiality" type="text" value=""><label for="ack-requirement">Team acknowledgement requirement / evidence standard</label><input id="ack-requirement" type="text" value=""><label for="timing-basis">Team response expectation / actual timing basis</label><input id="timing-basis" type="text" value=""></div><ol><li>Identify the event and check confidentiality.</li><li>Confirm actual status and source reference.</li><li>Map affected roles and intended recipients.</li><li>Choose the route from the supplied team agreement.</li><li>Prepare the exact proposal or approved-change message.</li><li>Retain actual sending and message reference when it occurs.</li><li>Collect the acknowledgement the agreement actually requires.</li><li>Route gaps through confirmed escalation and retain the actual outcome.</li></ol></section>
<section class="panel"><h2>L01 / acknowledgement and E01 exception record</h2><p>Fictional sent-state entry; intended recipient Leo. Actual reference and acknowledgement are not supplied. Unknown deadline cannot be called missed.</p><div class="grid"><label for="l-message">L01 actual message reference</label><input id="l-message" type="text" value=""><label for="l-approval">L01 actual approval reference</label><input id="l-approval" type="text" value=""><label for="l-channel">L01 actual channel evidence</label><input id="l-channel" type="text" value=""><label for="leo-ack">Leo’s actual acknowledgement evidence</label><input id="leo-ack" type="text" value=""><label for="followup">Actual attempted follow-up</label><input id="followup" type="text" value=""><label for="e-decider">E01 actual decider</label><input id="e-decider" type="text" value=""><label for="e-route">E01 agreed route / channel</label><input id="e-route" type="text" value=""><label for="e-deadline">E01 supplied deadline and timing basis</label><input id="e-deadline" type="text" value=""><label for="e-decision">E01 actual decision reference</label><input id="e-decision" type="text" value=""><label for="e-outcome">E01 actual outcome</label><input id="e-outcome" type="text" value=""></div><button type="button" id="review-evidence" class="secondary">Review the record gaps</button><p id="record-state" class="notice" aria-live="polite"></p></section>
<details><summary>Reusable approved-update brief — separate from U01</summary><p>Complete only from an actual approval and its exact source. Entering a reference here does not change the U01 fixture or verify authority.</p><div class="grid"><label for="approved-id">Separate approved-update ID</label><input id="approved-id" type="text" value=""><label for="approved-ref">Actual governing approval reference</label><input id="approved-ref" type="text" value=""><label for="approved-version">Exact approved update version</label><input id="approved-version" type="text" value=""><label for="approved-time">Supplied effective timing</label><input id="approved-time" type="text" value=""><label for="approved-audience">Authorized affected recipients</label><input id="approved-audience" type="text" value=""><label for="approved-action">Authorized requested action</label><input id="approved-action" type="text" value=""><label for="approved-channel">Approved channel / confidentiality basis</label><input id="approved-channel" type="text" value=""></div><button type="button" id="prepare-approved" class="secondary">Prepare separate review brief</button><p id="approved-state" class="notice" aria-live="polite">Blank reusable brief — actual approval inputs not supplied.</p><div id="approved-preview" class="draft"></div></details>
<section class="panel"><h2>Procedure and records / manual handoff</h2><label for="procedure-text">Exact prepared procedure and evidence notes</label><textarea id="procedure-text" readonly></textarea><button type="button" id="select-procedure-text" class="secondary">Select text</button><p id="procedure-text-status" class="muted">Select the text, then use your device’s copy command. Nothing is saved.</p></section><footer>Sanitized local HTML companion, not the team’s maintained native procedure or tracker. No messages, read receipts, approvals, notifications, completed escalations, integrations or saved edits are produced.</footer></main><script>const $=id=>document.getElementById(id);const on=(id,fn)=>$(id).addEventListener('click',fn);const text=(id,value)=>$(id).textContent=value;const bind=(id,fn,event='input')=>$(id).addEventListener(event,fn);const selectText=id=>{if(!$(id).value){text(id+'-status','Complete the required fields before selecting text.');return;}$(id).focus();$(id).select();text(id+'-status','Text selected. Use your device’s copy command; nothing has been sent or saved.');};
const NL=String.fromCharCode(10);const fields=["procedure-id","revision","procedure-owner","procedure-status","effective","decision-owner","confidentiality","ack-requirement","timing-basis","l-message","l-approval","l-channel","leo-ack","followup","e-decider","e-route","e-deadline","e-decision","e-outcome","approved-id","approved-ref","approved-version","approved-time","approved-audience","approved-action","approved-channel"],labels={"procedure-id":"Procedure ID","revision":"Procedure revision","procedure-owner":"Actual procedure owner","procedure-status":"Procedure approval status / evidence","effective":"Procedure effective date","decision-owner":"U01 actual decision owner","confidentiality":"U01 confidentiality classification / authority","ack-requirement":"Team acknowledgement requirement / evidence standard","timing-basis":"Team response expectation / actual timing basis","l-message":"L01 actual message reference","l-approval":"L01 actual approval reference","l-channel":"L01 actual channel evidence","leo-ack":"Leo’s actual acknowledgement evidence","followup":"Actual attempted follow-up","e-decider":"E01 actual decider","e-route":"E01 agreed route / channel","e-deadline":"E01 supplied deadline and timing basis","e-decision":"E01 actual decision reference","e-outcome":"E01 actual outcome","approved-id":"Separate approved-update ID","approved-ref":"Actual governing approval reference","approved-version":"Exact approved update version","approved-time":"Supplied effective timing","approved-audience":"Authorized affected recipients","approved-action":"Authorized requested action","approved-channel":"Approved channel / confidentiality basis"},routes=[["proposal","Proposal needing a decision","Confirmed decision owner and necessary contributors","Proposal reference and actual decision"],["approved","Approved operational change","Roles whose work changes, including writer and reviewer","Exact approved version and actual message reference"],["ack","Missing required acknowledgement","Recipient and confirmed escalation owner","Required acknowledgement status and escalation decision"],["restricted","Restricted or confidential update","Authorized recipients only","Confirmed classification and audience"]];let current='u01',route='proposal';const proposal='U01 is a proposed change from PDF to DOCX for draft submissions. A01 is not present in the supplied record. Please confirm the responsible decision owner, approval status, and the reference governing any change. Leo’s submission work and Jo’s review work are affected. The communication route and response expectations remain to be confirmed.';function show(k){current=k;['u01','l01'].forEach(x=>$('view-'+x).setAttribute('aria-pressed',String(x===k)));text('case-id',k==='u01'?'U01 / status Proposed':'L01 / separate illustrative sent-state log');text('case-title',k==='u01'?'PDF → DOCX is still a proposal.':'Sent recorded. Acknowledgement unresolved.');text('case-evidence',k==='u01'?'A01 is absent. DOCX cannot be announced as active. Decision owner and agreed route remain to confirm.':'Leo is the intended recipient. A sent-state entry does not prove read, understood or acknowledged; actual message reference is missing in the fixture.');text('brief-label',k==='u01'?'Draft request for a decision / not a sent message':'Next evidence question / not a completed escalation');text('message-preview',k==='u01'?proposal:'What actual message reference and acknowledgement evidence are required? Confirm E01’s decider, agreed route and supplied deadline before describing a follow-up or outcome. This case does not approve U01.');}function routeView(k){route=k;const r=routes.find(x=>x[0]===k);text('route-title',r[1]);text('route-audience','Intended audience: '+r[2]);text('route-evidence','Required evidence: '+r[3]);routes.forEach(x=>$('route-'+x[0]).setAttribute('aria-pressed',String(x[0]===k)));const ch=$('channel-'+k).value.trim(),st=$('standard-'+k).value.trim();text('route-state',!ch||!st?'Route unresolved — supply the team-agreed channel and its purpose/audience/standard.':'Supplied route note: '+ch+'. Standard: '+st+'. Human confirmation of authority, confidentiality and recipients is still required.');}routes.forEach(r=>on('route-'+r[0],()=>routeView(r[0])));on('view-u01',()=>show('u01'));on('view-l01',()=>show('l01'));function status(){return !$('leo-ack').value.trim()?'Acknowledgement unresolved — no Leo acknowledgement evidence supplied.':!$('l-message').value.trim()?'Acknowledgement note supplied, but the actual message reference is missing; association requires review.':'Message-reference and acknowledgement notes supplied for human review; read, understanding and approval are not automatically verified.';}function resetApproved(){text('approved-state','Inputs edited — prepare the separate review brief again.');text('approved-preview','');}function pack(){routeView(route);text('record-state',status()+' E01 remains an evidence review; no completed escalation or missed deadline is inferred.');$('procedure-text').value=['CEDAR TEAM / INTERNAL COMMUNICATION SOP — DRAFT','U01: Proposed PDF-to-DOCX change; current requirement PDF; A01 absent.','Mia author; Leo writer and Jo reviewer affected.','Draft request: '+proposal,'L01: separate fictional sent-state entry; no U01 approval implied.',...routes.map(r=>r[1]+': route '+($('channel-'+r[0]).value||'[TO CONFIRM]')+'; standard '+($('standard-'+r[0]).value||'[TO CONFIRM]')),...fields.map(k=>labels[k]+': '+($(k).value||'[TO CONFIRM / not supplied]')),'Procedure: event/confidentiality → status/source → affected roles → agreed route → exact draft → actual send record → required acknowledgement → confirmed escalation/outcome.','Record review: '+status(),'No deadline is treated as missed while timing is unknown. No actual message or escalation performed by this companion.'].join(NL);}fields.forEach(k=>bind(k,()=>{if(k.startsWith('approved-'))resetApproved();pack();}));routes.forEach(r=>['channel-','standard-'].forEach(p=>bind(p+r[0],pack)));on('review-evidence',()=>{const missing=['l-message','l-approval','l-channel','leo-ack','e-decider','e-route','e-deadline','e-decision','e-outcome'].filter(k=>!$(k).value.trim());text('record-state',status()+' '+missing.length+' message/acknowledgement/exception fields remain unconfirmed. U01 remains Proposed; no overdue or completed escalation claim.');});on('prepare-approved',()=>{const ids=fields.filter(k=>k.startsWith('approved-'));if(ids.some(k=>!$(k).value.trim())){text('approved-state','Brief incomplete — supply update ID, approval reference, exact version, effective timing, recipients, action and channel basis.');text('approved-preview','');return;}text('approved-state','Separate supplied-input draft for human authorization review. U01 remains Proposed.');text('approved-preview','Update '+$('approved-id').value+' / version '+$('approved-version').value+'. Supplied governing reference: '+$('approved-ref').value+'. Effective timing: '+$('approved-time').value+'. Audience: '+$('approved-audience').value+'. Requested action: '+$('approved-action').value+'. Channel / confidentiality basis: '+$('approved-channel').value+'. This draft has not been approved, sent or acknowledged by this companion.');});on('select-procedure-text',()=>selectText('procedure-text'));show('u01');pack();globalThis.app={status,fields,get:()=>({current,route,update:'Proposed'})};</script></body></html>