// Interactive practice matrix — capability rows × ladder columns. // Click any cell to inspect its practice drill. function PracticeMatrix() { const caps = window.CAPABILITIES; const rungs = window.RUNGS; const matrix = window.MATRIX; const [hover, setHover] = React.useState({ cap: 'value', rung: 'mimic' }); const [filterCap, setFilterCap] = React.useState('all'); const [filterRung, setFilterRung] = React.useState('all'); const [pinned, setPinned] = React.useState(false); const activeCap = caps.find(c => c.id === hover.cap); const activeRung = rungs.find(r => r.id === hover.rung); const body = matrix[hover.cap]?.[hover.rung] || 'Embedded in scoring lens — evidence attached.'; const rowDim = (capId) => filterCap !== 'all' && capId !== filterCap; const colDim = (rungId) => filterRung !== 'all' && rungId !== filterRung; return (

06 · PRACTICE MATRIX

Advisory readiness comes from repeated client drills and real cases.

Each ladder rung adds real-world pressure and feedback. Hover any cell to see the practice drill it contains. Filter by capability or by rung to zoom in.

{/* Filters */}
Capability {caps.map(c => ( ))}
Rung {rungs.map(r => ( ))}
{/* Grid */}
{rungs.map(r => (
{r.sub}
{r.label}
))} {caps.map(cap => (
{cap.short}
{rungs.map(rung => { const filled = !!matrix[cap.id]?.[rung.id]; const isActive = hover.cap === cap.id && hover.rung === rung.id; const dim = rowDim(cap.id) || colDim(rung.id); return (
!pinned && setHover({ cap: cap.id, rung: rung.id })} onClick={() => { setHover({ cap: cap.id, rung: rung.id }); setPinned(true); }} title={`${cap.short} × ${rung.label}`} > {filled ? '●' : ''}
); })}
))}
{/* Legend */}
Active drill
Embedded in scoring lens
{pinned ? 'Cell pinned — click another to swap' : 'Hover any cell'} {pinned && }
{/* Side detail */}
{activeRung.sub}
{activeCap.short} × {activeRung.label}
{activeCap.name}
What learners do at the {activeRung.label} rung
{body || 'Embedded in scoring lens — evidence attached.'}
Each drill carries its own rubric — same anchors across teams and regions.
); } window.PracticeMatrix = PracticeMatrix;