{"id":843,"date":"2026-09-13T18:59:15","date_gmt":"2026-09-13T18:59:15","guid":{"rendered":"https:\/\/www.opey.org\/opeyit\/?page_id=843"},"modified":"2026-09-16T18:19:20","modified_gmt":"2026-09-16T18:19:20","slug":"capability-assessment","status":"publish","type":"page","link":"https:\/\/www.opey.org\/opeyit\/?page_id=843","title":{"rendered":"Capability Assessment"},"content":{"rendered":"\n<!--\n=====================================================\nA.R.T. CAPABILITY ASSESSMENT  (version 2)\nCompanion tool for WHEN AGENTS RULE by Steven Oppenheim\n=====================================================\n\nHOW TO INSTALL\n1. Open the \"A.R.T. Capability Assessment\" page (or create it)\n2. Replace the Custom HTML block contents with this entire file\n3. Preview, then Update\n4. If new: replace #REPLACE_TOOL_ART on page 748 with this page id\n\nSELF CONTAINED. Scoped to #war-art-2026.\n\nTHE FRAMEWORK: Agility, Risk Readiness, Tenacity (Chapter 15).\nSYSTEM CAPABILITY IS THE MINIMUM OF THE THREE, NEVER THE AVERAGE.\nFive questions each scored 0 to 4, capability 0 to 20.\n  Binding constraint = every capability at the minimum (ties reported)\n  Headroom = second lowest minus lowest (0 when tied)\n  Adding n points to a capability raises system capability by\n  min(n, headroom) only if it is the SOLE minimum; otherwise by 0\n  To reach a target, every capability below it must rise to it\n\nVERSION 2 CHANGES (September 2026 audit)\n  1. PROGRESS BAR FROZEN: width 0% !important on the bar beat the\n     width the script set. Rebuilt without !important on width.\n  2. TIED CONSTRAINT NAMED THE WRONG CAPABILITY: the tie decision\n     named the capability after the first minimum, not the tied one,\n     so Agility 8, Risk 15, Tenacity 8 told the board to fund Agility\n     and Risk Readiness. Ties are now reported as a set everywhere.\n  3. MAXED OUT READINGS asked for investment. At 16 or above the\n     decision is to hold; at 20 across the board no spend is indicated.\n  4. TARGET GAP said all of it must come from the binding capability.\n     It now lists what each capability below the target must gain.\n  5. TENACITY CHECK certified \"a strong completion record\" from the\n     Tenacity total, even with the completion record answered 0. The\n     check now reads the completion record answer itself.\n  6. BOARD PAPER printed every warning as CONTRADICTION. Items now\n     carry a kind: contradiction, finding, caveat or sound. Three real\n     cross answer contradictions were added.\n  7. MONEY: a negative amount printed as positive; the USD prefix did\n     not follow the currency field; spend aimed at a tied constraint\n     was described as not the constraint.\n  8. CLEAR needs two taps, disarms after 3 seconds, and changing an\n     answer hides a stale reading.\n  9. The third party visitor tracking block that followed this tool\n     on the live page is NOT part of this file. If it stays on the\n     page, the statement that nothing is transmitted must be read as\n     applying to your answers only.\n\nWORDPRESS: no less than sign or ampersand in script, no innerHTML,\nno template literals or arrow functions, no flex gap, no styling on\nthe i element. NO HYPHENS OR DASHES IN VISIBLE COPY.\n-->\n\n<div id=\"war-art-2026\">\n\n<style>\n#war-art-2026 { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important; color: #333 !important; line-height: 1.6 !important; max-width: 100% !important; margin: 0 !important; padding: 0 !important; -webkit-text-size-adjust: 100% !important; text-size-adjust: 100% !important; }\n#war-art-2026 * { box-sizing: border-box !important; }\n#war-art-2026 h1, #war-art-2026 h2, #war-art-2026 h3, #war-art-2026 h4 { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif !important; text-transform: none !important; overflow-wrap: break-word !important; word-wrap: break-word !important; -webkit-hyphens: none !important; hyphens: none !important; }\n#war-art-2026 p, #war-art-2026 li, #war-art-2026 td, #war-art-2026 span, #war-art-2026 label { overflow-wrap: break-word !important; word-wrap: break-word !important; }\n#war-art-2026 a { text-decoration: none !important; }\n#war-art-2026 .a-inner { max-width: 900px !important; margin: 0 auto !important; }\n#war-art-2026 .a-wide { max-width: 1120px !important; margin: 0 auto !important; }\n#war-art-2026 .a-band { background: #047857 !important; background-image: linear-gradient(90deg, #047857 0%, #059669 100%) !important; padding: 12px 20px !important; text-align: center !important; }\n#war-art-2026 .a-band p { margin: 0 !important; color: #fff !important; font-size: 13.5px !important; font-weight: 500 !important; }\n#war-art-2026 .a-band strong { color: #D1FAE5 !important; }\n#war-art-2026 .a-hero { background: #1a2a3a !important; background-image: radial-gradient(circle at 78% 22%, rgba(5,150,105,0.24) 0%, transparent 55%), linear-gradient(135deg, #0a1622 0%, #1a2a3a 55%, #2d4156 100%) !important; padding: 52px 20px 46px 20px !important; }\n#war-art-2026 .a-eyebrow { display: inline-block !important; color: #c9a227 !important; font-size: 11px !important; font-weight: 700 !important; letter-spacing: 2px !important; text-transform: uppercase !important; margin-bottom: 12px !important; }\n#war-art-2026 .a-h1 { color: #fff !important; font-size: 42px !important; font-weight: 800 !important; margin: 0 0 14px 0 !important; line-height: 1.06 !important; letter-spacing: -0.5px !important; }\n#war-art-2026 .a-lede { color: rgba(255,255,255,0.85) !important; font-size: 17px !important; margin: 0 0 20px 0 !important; line-height: 1.5 !important; max-width: 690px !important; }\n#war-art-2026 .a-pillars { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; grid-gap: 12px !important; gap: 12px !important; max-width: 760px !important; margin-bottom: 22px !important; }\n#war-art-2026 .a-pill { background: rgba(255,255,255,0.07) !important; border: 1px solid rgba(255,255,255,0.16) !important; border-radius: 8px !important; padding: 14px 16px !important; }\n#war-art-2026 .a-pill b { display: block !important; color: #c9a227 !important; font-size: 12.5px !important; font-weight: 800 !important; letter-spacing: 1.2px !important; text-transform: uppercase !important; margin-bottom: 6px !important; }\n#war-art-2026 .a-pill span { color: rgba(255,255,255,0.82) !important; font-size: 12.5px !important; line-height: 1.55 !important; }\n#war-art-2026 .a-facts { display: flex !important; flex-wrap: wrap !important; margin: 0 0 14px -5px !important; }\n#war-art-2026 .a-fact { background: rgba(255,255,255,0.08) !important; border: 1px solid rgba(255,255,255,0.18) !important; border-radius: 6px !important; padding: 9px 14px !important; color: rgba(255,255,255,0.9) !important; font-size: 12.5px !important; font-weight: 600 !important; margin: 0 5px 10px 5px !important; }\n#war-art-2026 .a-fact b { color: #c9a227 !important; }\n#war-art-2026 .a-honest { max-width: 710px !important; background: rgba(201,162,39,0.10) !important; border-left: 4px solid #c9a227 !important; border-radius: 6px !important; padding: 16px 18px !important; color: rgba(255,255,255,0.82) !important; font-size: 13.5px !important; line-height: 1.65 !important; }\n#war-art-2026 .a-honest b { color: #c9a227 !important; }\n\n#war-art-2026 .a-form { background: #f7f8fa !important; padding: 46px 20px !important; }\n#war-art-2026 .a-sec { background: #fff !important; border: 1px solid #e2e6ea !important; border-radius: 12px !important; margin-bottom: 22px !important; overflow: hidden !important; }\n#war-art-2026 .a-shead { padding: 20px 24px !important; display: flex !important; align-items: center !important; flex-wrap: wrap !important; }\n#war-art-2026 .a-shead.sA { background: #6D28D9 !important; background-image: linear-gradient(135deg, #7C3AED 0%, #6D28D9 100%) !important; }\n#war-art-2026 .a-shead.sR { background: #991B1B !important; background-image: linear-gradient(135deg, #B91C1C 0%, #991B1B 100%) !important; }\n#war-art-2026 .a-shead.sT { background: #047857 !important; background-image: linear-gradient(135deg, #059669 0%, #047857 100%) !important; }\n#war-art-2026 .a-shead.sX { background: #334155 !important; background-image: linear-gradient(135deg, #475569 0%, #334155 100%) !important; }\n#war-art-2026 .a-snum { width: 46px !important; height: 46px !important; flex-shrink: 0 !important; background: rgba(255,255,255,0.16) !important; border: 2px solid rgba(255,255,255,0.35) !important; border-radius: 10px !important; display: flex !important; align-items: center !important; justify-content: center !important; color: #fff !important; font-size: 19px !important; font-weight: 800 !important; font-family: Georgia, serif !important; margin-right: 15px !important; }\n#war-art-2026 .a-stitle { flex: 1 !important; min-width: 180px !important; }\n#war-art-2026 .a-stitle h2 { margin: 0 0 4px 0 !important; color: #fff !important; font-size: 20px !important; font-weight: 700 !important; line-height: 1.25 !important; }\n#war-art-2026 .a-stitle p { margin: 0 !important; color: rgba(255,255,255,0.88) !important; font-size: 13px !important; font-style: italic !important; line-height: 1.45 !important; }\n#war-art-2026 .a-sbody { padding: 6px 24px 20px 24px !important; }\n#war-art-2026 .a-q { padding: 18px 0 !important; border-bottom: 1px solid #eef1f4 !important; }\n#war-art-2026 .a-q:last-child { border-bottom: none !important; }\n#war-art-2026 .a-qlabel { font-size: 15.5px !important; font-weight: 700 !important; color: #1a2a3a !important; margin: 0 0 4px 0 !important; line-height: 1.45 !important; }\n#war-art-2026 .a-help { font-size: 12.5px !important; color: #6b7785 !important; margin: 0 0 10px 0 !important; line-height: 1.55 !important; }\n#war-art-2026 .a-opt { display: block !important; position: relative !important; padding: 12px 14px 12px 42px !important; border: 1px solid #dde2e7 !important; border-radius: 7px !important; margin: 0 0 8px 0 !important; cursor: pointer !important; font-size: 14px !important; color: #444 !important; line-height: 1.5 !important; background: #fff !important; min-height: 46px !important; -webkit-tap-highlight-color: rgba(201,162,39,0.25) !important; }\n#war-art-2026 .a-opt:hover { border-color: #b9c2cb !important; background: #fbfcfd !important; }\n#war-art-2026 .a-opt input { position: absolute !important; left: 14px !important; top: 14px !important; width: 18px !important; height: 18px !important; margin: 0 !important; min-height: 0 !important; cursor: pointer !important; -webkit-appearance: radio !important; appearance: auto !important; }\n#war-art-2026 .a-opt input:checked ~ span { font-weight: 700 !important; color: #1a2a3a !important; }\n#war-art-2026 .a-fields { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; grid-gap: 14px !important; gap: 14px !important; padding-top: 16px !important; }\n#war-art-2026 .a-f label { display: block !important; font-size: 13px !important; font-weight: 700 !important; color: #1a2a3a !important; margin-bottom: 5px !important; line-height: 1.4 !important; }\n#war-art-2026 .a-f .a-hint2 { display: block !important; font-size: 11.5px !important; font-weight: 400 !important; color: #6b7785 !important; margin-top: 2px !important; line-height: 1.45 !important; }\n#war-art-2026 .a-wrap { display: flex !important; align-items: stretch !important; }\n#war-art-2026 .a-pre { background: #eef1f4 !important; border: 1px solid #dde2e7 !important; border-right: none !important; border-radius: 7px 0 0 7px !important; color: #6b7785 !important; font-size: 13.5px !important; font-weight: 700 !important; display: flex !important; align-items: center !important; padding: 0 11px !important; flex-shrink: 0 !important; }\n#war-art-2026 .a-f input, #war-art-2026 .a-f select { display: block !important; flex: 1 !important; min-width: 0 !important; width: 100% !important; max-width: 100% !important; padding: 12px 13px !important; border: 1px solid #dde2e7 !important; border-radius: 7px !important; font-size: 16px !important; font-family: inherit !important; color: #1a2a3a !important; min-height: 46px !important; background: #fff !important; }\n#war-art-2026 .a-f input { -webkit-appearance: none !important; appearance: none !important; }\n#war-art-2026 .a-wrap .a-pre + input { border-radius: 0 7px 7px 0 !important; }\n\n#war-art-2026 .a-progress { position: -webkit-sticky !important; position: sticky !important; bottom: 0 !important; background: #1a2a3a !important; padding: 12px 20px 14px 20px !important; z-index: 20 !important; box-shadow: 0 -4px 18px rgba(0,0,0,0.22) !important; }\n#war-art-2026 .a-pinner { max-width: 900px !important; margin: 0 auto !important; display: flex !important; align-items: center !important; flex-wrap: wrap !important; }\n#war-art-2026 .a-pinner > * { margin: 4px 6px !important; }\n#war-art-2026 .a-ptext { color: rgba(255,255,255,0.9) !important; font-size: 13px !important; font-weight: 600 !important; flex: 1 !important; min-width: 150px !important; }\n#war-art-2026 .a-ptext b { color: #c9a227 !important; }\n#war-art-2026 .a-barwrap { display: block !important; width: 100% !important; max-width: 900px !important; margin: 10px auto 0 auto !important; height: 10px !important; background-color: rgba(255,255,255,0.18) !important; border-radius: 5px !important; overflow: hidden !important; padding: 0 !important; font-size: 0 !important; }\n#war-art-2026 .a-fillbar { display: block !important; width: 0; height: 10px !important; min-height: 10px !important; background-color: #059669 !important; background-image: linear-gradient(90deg, #059669, #c9a227) !important; border-radius: 5px !important; transition: width 0.25s ease !important; margin: 0 !important; padding: 0 !important; border: none !important; float: none !important; }\n#war-art-2026 .a-go { background: #c9a227 !important; color: #1a2a3a !important; border: none !important; padding: 14px 24px !important; min-height: 48px !important; border-radius: 7px !important; font-size: 14.5px !important; font-weight: 800 !important; cursor: pointer !important; font-family: inherit !important; -webkit-appearance: none !important; appearance: none !important; }\n#war-art-2026 .a-go:hover { background: #ddb832 !important; }\n#war-art-2026 .a-go[disabled] { background: #6b7785 !important; color: rgba(255,255,255,0.72) !important; cursor: not-allowed !important; }\n#war-art-2026 .a-clear { background: transparent !important; color: rgba(255,255,255,0.88) !important; border: 2px solid rgba(255,255,255,0.32) !important; padding: 12px 18px !important; min-height: 48px !important; border-radius: 7px !important; font-size: 13px !important; font-weight: 700 !important; cursor: pointer !important; font-family: inherit !important; -webkit-appearance: none !important; appearance: none !important; }\n#war-art-2026 .a-clear.armed { background: #B91C1C !important; border-color: #B91C1C !important; color: #fff !important; }\n\n#war-art-2026 .a-result { display: none !important; background: #1a2a3a !important; background-image: linear-gradient(135deg, #0a1622 0%, #1a2a3a 100%) !important; padding: 52px 20px !important; }\n#war-art-2026 .a-result.on { display: block !important; }\n#war-art-2026 .a-panel { background: #fff !important; border-radius: 12px !important; padding: 24px 22px !important; margin-bottom: 22px !important; }\n#war-art-2026 .a-grid2 { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; grid-gap: 18px !important; gap: 18px !important; margin-bottom: 22px !important; }\n#war-art-2026 .a-grid2 .a-panel { margin-bottom: 0 !important; }\n#war-art-2026 .a-panel h3 { margin: 0 0 6px 0 !important; font-size: 19px !important; font-weight: 800 !important; color: #1a2a3a !important; line-height: 1.3 !important; }\n#war-art-2026 .a-panel .a-sub { margin: 0 0 16px 0 !important; font-size: 13px !important; color: #6b7785 !important; line-height: 1.6 !important; }\n#war-art-2026 .a-ask { border-left: 6px solid #c9a227 !important; }\n#war-art-2026 .a-askrow { display: flex !important; padding: 12px 0 !important; border-bottom: 1px solid #eef1f4 !important; flex-wrap: wrap !important; }\n#war-art-2026 .a-askrow:last-child { border-bottom: none !important; }\n#war-art-2026 .a-askrow b { flex: 0 0 176px !important; font-size: 11px !important; font-weight: 800 !important; letter-spacing: 1px !important; text-transform: uppercase !important; color: #6b7785 !important; padding: 2px 14px 4px 0 !important; }\n#war-art-2026 .a-askrow span { flex: 1 1 240px !important; min-width: 0 !important; font-size: 15px !important; color: #1a2a3a !important; line-height: 1.55 !important; font-weight: 600 !important; }\n#war-art-2026 .a-verdict { background: #fff !important; border-radius: 14px !important; padding: 30px 28px !important; margin-bottom: 22px !important; border-left: 8px solid #059669 !important; }\n#war-art-2026 .a-verdict.vA { border-left-color: #7C3AED !important; }\n#war-art-2026 .a-verdict.vR { border-left-color: #B91C1C !important; }\n#war-art-2026 .a-verdict.vT { border-left-color: #059669 !important; }\n#war-art-2026 .a-verdict.vX { border-left-color: #475569 !important; }\n#war-art-2026 .a-vtop { font-size: 11px !important; font-weight: 800 !important; letter-spacing: 1.6px !important; text-transform: uppercase !important; color: #6b7785 !important; margin: 0 0 12px 0 !important; }\n#war-art-2026 .a-vname { font-size: 40px !important; font-weight: 800 !important; color: #1a2a3a !important; margin: 0 0 6px 0 !important; line-height: 1.08 !important; letter-spacing: -0.5px !important; }\n#war-art-2026 .a-vscore { font-size: 15px !important; font-weight: 700 !important; color: #6b7785 !important; margin: 0 0 18px 0 !important; line-height: 1.5 !important; }\n#war-art-2026 .a-vread { font-size: 14.5px !important; color: #444 !important; line-height: 1.7 !important; margin: 0 !important; max-width: 720px !important; }\n#war-art-2026 .a-bars { margin: 20px 0 0 0 !important; }\n#war-art-2026 .a-brow { display: flex !important; align-items: center !important; margin-bottom: 12px !important; flex-wrap: wrap !important; }\n#war-art-2026 .a-blabel { flex: 0 0 130px !important; font-size: 13px !important; font-weight: 800 !important; color: #1a2a3a !important; padding-right: 12px !important; }\n#war-art-2026 .a-btrack { flex: 1 1 170px !important; height: 26px !important; background: #eef1f4 !important; border-radius: 5px !important; position: relative !important; overflow: hidden !important; }\n#war-art-2026 .a-bfill { height: 100% !important; border-radius: 5px !important; }\n#war-art-2026 .a-bfill.fA { background: #7C3AED !important; }\n#war-art-2026 .a-bfill.fR { background: #B91C1C !important; }\n#war-art-2026 .a-bfill.fT { background: #059669 !important; }\n#war-art-2026 .a-bval { flex: 0 0 84px !important; font-size: 15px !important; font-weight: 800 !important; font-family: Georgia, serif !important; color: #1a2a3a !important; text-align: right !important; }\n#war-art-2026 .a-bbind { flex: 0 0 90px !important; font-size: 10px !important; font-weight: 800 !important; letter-spacing: 0.6px !important; text-transform: uppercase !important; color: #922b21 !important; padding-left: 12px !important; }\n#war-art-2026 .a-big { font-size: 30px !important; font-weight: 800 !important; color: #1a2a3a !important; line-height: 1.12 !important; margin: 0 0 4px 0 !important; font-family: Georgia, serif !important; overflow-wrap: break-word !important; }\n#war-art-2026 .a-big.neg { color: #B91C1C !important; }\n#war-art-2026 .a-note { border-radius: 8px !important; padding: 15px 17px !important; font-size: 13.5px !important; line-height: 1.65 !important; margin-top: 12px !important; }\n#war-art-2026 .a-note.warn { background: #fadbd8 !important; border-left: 4px solid #B91C1C !important; color: #6d2019 !important; }\n#war-art-2026 .a-note.caution { background: #fdf2d0 !important; border-left: 4px solid #D97706 !important; color: #6d4a00 !important; }\n#war-art-2026 .a-note.ok { background: #dcf0e4 !important; border-left: 4px solid #059669 !important; color: #14603c !important; }\n#war-art-2026 .a-note.info { background: #eef2f7 !important; border-left: 4px solid #475569 !important; color: #2f3c4d !important; }\n#war-art-2026 .a-grade { display: -webkit-inline-flex !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; width: 62px !important; height: 62px !important; border-radius: 50% !important; font-size: 30px !important; font-weight: 800 !important; font-family: Georgia, serif !important; margin-bottom: 12px !important; }\n#war-art-2026 .a-grade.gA { background: #dcf0e4 !important; color: #14603c !important; }\n#war-art-2026 .a-grade.gB { background: #e4f0dc !important; color: #3d6014 !important; }\n#war-art-2026 .a-grade.gC { background: #fdf2d0 !important; color: #8a6100 !important; }\n#war-art-2026 .a-grade.gD { background: #fadbd8 !important; color: #922b21 !important; }\n#war-art-2026 table.a-tbl { width: 100% !important; border-collapse: collapse !important; font-size: 13px !important; }\n#war-art-2026 table.a-tbl th { background: #1a2a3a !important; color: #fff !important; text-align: left !important; padding: 10px 12px !important; font-size: 11px !important; font-weight: 800 !important; letter-spacing: 0.5px !important; text-transform: uppercase !important; }\n#war-art-2026 table.a-tbl td { padding: 10px 12px !important; border-bottom: 1px solid #eef1f4 !important; vertical-align: top !important; color: #444 !important; line-height: 1.5 !important; }\n#war-art-2026 table.a-tbl td.num { text-align: right !important; font-family: Georgia, serif !important; white-space: nowrap !important; }\n#war-art-2026 table.a-tbl tr.bind td { background: #f2faf5 !important; font-weight: 700 !important; color: #14603c !important; }\n#war-art-2026 table.a-tbl tr.zero td { background: #fdeceb !important; color: #922b21 !important; }\n#war-art-2026 .a-scroll { overflow-x: auto !important; -webkit-overflow-scrolling: touch !important; max-width: 100% !important; }\n#war-art-2026 .a-hint { display: none !important; }\n@media (max-width: 768px) { #war-art-2026 .a-hint { display: block !important; font-size: 11.5px !important; font-weight: 700 !important; color: #6b7785 !important; margin: 0 0 8px 0 !important; } }\n#war-art-2026 .a-card { background: #f6f8fa !important; border: 1px dashed #c3ccd5 !important; border-radius: 8px !important; padding: 18px 20px !important; font-size: 13px !important; color: #333 !important; line-height: 1.7 !important; white-space: pre-wrap !important; font-family: Georgia, 'Times New Roman', serif !important; }\n#war-art-2026 .a-btnrow { display: flex !important; flex-wrap: wrap !important; margin: 10px -5px 0 -5px !important; }\n#war-art-2026 .a-btn { background: #1a2a3a !important; color: #fff !important; border: none !important; cursor: pointer !important; padding: 13px 20px !important; min-height: 46px !important; border-radius: 6px !important; font-size: 13px !important; font-weight: 700 !important; font-family: inherit !important; display: -webkit-inline-flex !important; display: inline-flex !important; align-items: center !important; margin: 6px 5px 0 5px !important; -webkit-appearance: none !important; appearance: none !important; }\n#war-art-2026 .a-btn:hover { background: #2d4156 !important; }\n#war-art-2026 .a-btn.gold { background: #c9a227 !important; color: #1a2a3a !important; }\n#war-art-2026 .a-btn.ghost { background: transparent !important; color: #1a2a3a !important; border: 2px solid #c3ccd5 !important; }\n#war-art-2026 .a-next { background: #fff !important; padding: 50px 20px !important; }\n#war-art-2026 .a-next h3 { text-align: center !important; font-size: 28px !important; font-weight: 800 !important; color: #1a2a3a !important; margin: 0 0 10px 0 !important; }\n#war-art-2026 .a-next .a-sub { text-align: center !important; max-width: 660px !important; margin: 0 auto 32px auto !important; color: #6b7785 !important; font-size: 15px !important; line-height: 1.6 !important; }\n#war-art-2026 .a-grid3 { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; grid-gap: 18px !important; gap: 18px !important; }\n#war-art-2026 .a-tile { border: 1px solid #e2e6ea !important; border-radius: 10px !important; padding: 22px 20px !important; background: #fbfcfd !important; }\n#war-art-2026 .a-tile h4 { margin: 0 0 8px 0 !important; font-size: 16px !important; font-weight: 700 !important; color: #1a2a3a !important; line-height: 1.35 !important; }\n#war-art-2026 .a-tile p { margin: 0 0 14px 0 !important; font-size: 13.5px !important; color: #555 !important; line-height: 1.6 !important; }\n#war-art-2026 .a-tile a { display: inline-block !important; background: #1a2a3a !important; color: #fff !important; padding: 12px 18px !important; min-height: 46px !important; border-radius: 6px !important; font-size: 12.5px !important; font-weight: 700 !important; line-height: 22px !important; }\n#war-art-2026 .a-tile a:hover { background: #c9a227 !important; color: #1a2a3a !important; }\n#war-art-2026 .a-cta { background: #c9a227 !important; background-image: linear-gradient(135deg, #c9a227 0%, #ddb832 100%) !important; padding: 46px 20px !important; text-align: center !important; }\n#war-art-2026 .a-cta h3 { font-size: 27px !important; font-weight: 800 !important; color: #1a2a3a !important; margin: 0 0 10px 0 !important; }\n#war-art-2026 .a-cta p { font-size: 15.5px !important; color: #1a2a3a !important; opacity: 0.85 !important; margin: 0 0 24px 0 !important; }\n#war-art-2026 .a-ctarow { display: flex !important; justify-content: center !important; flex-wrap: wrap !important; }\n#war-art-2026 .a-ctarow a { background: #1a2a3a !important; color: #fff !important; padding: 13px 22px !important; min-height: 46px !important; border-radius: 6px !important; font-size: 13px !important; font-weight: 700 !important; display: -webkit-inline-flex !important; display: inline-flex !important; align-items: center !important; margin: 5px !important; }\n#war-art-2026 .a-fine { background: #1a2a3a !important; padding: 24px 20px !important; }\n#war-art-2026 .a-fine p { max-width: 900px !important; margin: 0 auto !important; color: rgba(255,255,255,0.62) !important; font-size: 11.5px !important; line-height: 1.75 !important; }\n#war-art-2026 .a-fine b { color: rgba(255,255,255,0.85) !important; }\n#war-art-2026 .a-manual { background: #fff9f0 !important; border-top: 4px solid #D97706 !important; padding: 40px 20px !important; }\n#war-art-2026 .a-manual h3 { font-size: 23px !important; font-weight: 800 !important; color: #1a2a3a !important; margin: 0 0 10px 0 !important; }\n@media print {\n    #war-art-2026 .a-band, #war-art-2026 .a-hero, #war-art-2026 .a-form, #war-art-2026 .a-progress, #war-art-2026 .a-next, #war-art-2026 .a-cta, #war-art-2026 .a-btnrow { display: none !important; }\n    #war-art-2026 .a-result { background: #fff !important; padding: 0 !important; }\n    #war-art-2026 .a-panel, #war-art-2026 .a-verdict { border: 1px solid #ccc !important; page-break-inside: avoid !important; }\n    #war-art-2026 .a-fine { background: #fff !important; }\n    #war-art-2026 .a-fine p, #war-art-2026 .a-fine b { color: #444 !important; }\n}\n@media (max-width: 900px) {\n    #war-art-2026 .a-grid2 { grid-template-columns: minmax(0, 1fr) !important; }\n    #war-art-2026 .a-grid3 { grid-template-columns: minmax(0, 1fr) !important; max-width: 480px !important; margin: 0 auto !important; }\n    #war-art-2026 .a-pillars { grid-template-columns: minmax(0, 1fr) !important; max-width: 480px !important; }\n}\n@media (max-width: 768px) {\n    #war-art-2026 .a-h1 { font-size: 31px !important; }\n    #war-art-2026 .a-hero { padding: 38px 18px 34px 18px !important; }\n    #war-art-2026 .a-form, #war-art-2026 .a-result, #war-art-2026 .a-next { padding: 34px 16px !important; }\n    #war-art-2026 .a-shead, #war-art-2026 .a-sbody { padding-left: 16px !important; padding-right: 16px !important; }\n    #war-art-2026 .a-fields { grid-template-columns: minmax(0, 1fr) !important; }\n    #war-art-2026 .a-panel { padding: 20px 16px !important; }\n    #war-art-2026 .a-verdict { padding: 22px 18px !important; }\n    #war-art-2026 .a-vname { font-size: 28px !important; }\n    #war-art-2026 .a-blabel { flex: 0 0 100% !important; margin-bottom: 4px !important; }\n    #war-art-2026 .a-bbind { flex: 0 0 auto !important; }\n    #war-art-2026 .a-askrow b { flex: 0 0 100% !important; }\n}\n@media (max-width: 420px) {\n    #war-art-2026 .a-h1 { font-size: 27px !important; }\n    #war-art-2026 .a-vname { font-size: 23px !important; }\n    #war-art-2026 .a-big { font-size: 24px !important; }\n    #war-art-2026 .a-opt { font-size: 13.5px !important; padding-left: 40px !important; }\n    #war-art-2026 .a-shead, #war-art-2026 .a-sbody, #war-art-2026 .a-panel, #war-art-2026 .a-verdict { padding-left: 12px !important; padding-right: 12px !important; }\n    #war-art-2026 .a-stitle { min-width: 0 !important; }\n    #war-art-2026 .a-snum { width: 38px !important; height: 38px !important; margin-right: 10px !important; }\n    #war-art-2026 .a-bval { flex: 0 0 64px !important; font-size: 13px !important; }\n    #war-art-2026 .a-btrack { flex: 1 1 100px !important; }\n}\n<\/style>\n\n<div class=\"a-band\">\n    <p>CAPABILITY RUNS AT THE SPEED OF ITS WEAKEST ELEMENT: <strong>this reports the binding constraint, never the average.<\/strong><\/p>\n<\/div>\n\n<div class=\"a-hero\">\n    <div class=\"a-inner\">\n        <span class=\"a-eyebrow\">Framework Four \/\/ When Agents Rule<\/span>\n        <h1 class=\"a-h1\">The A.R.T. Capability Assessment<\/h1>\n        <p class=\"a-lede\">Score your organization on the three capabilities that distinguish successful technology leaders. Find which one is the binding constraint, how far it can be raised before another binds, and what the next investment actually buys.<\/p>\n        <div class=\"a-pillars\">\n            <div class=\"a-pill\"><b>Agility<\/b><span>The speed with which technology capabilities respond to business opportunities and threats.<\/span><\/div>\n            <div class=\"a-pill\"><b>Risk Readiness<\/b><span>The ability to anticipate, prevent and respond to technology risks before they become crises.<\/span><\/div>\n            <div class=\"a-pill\"><b>Tenacity<\/b><span>The ability to sustain strategic initiatives through organizational resistance and competing priorities.<\/span><\/div>\n        <\/div>\n        <div class=\"a-facts\">\n            <span class=\"a-fact\"><b>18<\/b> questions<\/span>\n            <span class=\"a-fact\"><b>6<\/b> minutes<\/span>\n            <span class=\"a-fact\"><b>1<\/b> binding constraint<\/span>\n            <span class=\"a-fact\"><b>0<\/b> answers sent anywhere<\/span>\n        <\/div>\n        <div class=\"a-honest\">\n            <b>Why this reports a minimum and not an average.<\/b> An organization that decides fast and sees risk early, but cannot sustain a programme through a budget cycle, does not have two capabilities out of three. It has an execution ceiling set by the third. Averaging is how maturity tools flatter their users: two strong scores conceal the one that is actually stopping them.<br><br>\n            <b>The consequence is financial, and it is why this tool asks where your next investment is going.<\/b> Money spent on a capability that is not the binding constraint produces no improvement in system capability until the constraint is cleared. Where two capabilities tie at the minimum, neither moves the system on its own, and the tool says so rather than picking one.<br><br>\n            Your answers are computed in your own browser and are not transmitted or stored.\n        <\/div>\n    <\/div>\n<\/div>\n\n<div class=\"a-form\">\n<div class=\"a-inner\" id=\"a-formtop\">\n\n    <div class=\"a-sec\">\n        <div class=\"a-shead sA\">\n            <div class=\"a-snum\">A<\/div>\n            <div class=\"a-stitle\">\n                <h2>Agility<\/h2>\n                <p>The speed with which technology capabilities respond to business opportunities and threats.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"a-sbody\">\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">From decision to production, how long does a governed change to an AI system take?<\/p>\n                <p class=\"a-help\">Measure the whole path including approval, not just the engineering. The approval queue is usually the longer half.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a1\" value=\"0\"><span>Two quarters or more, or we could not say with confidence.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a1\" value=\"1\"><span>One to two quarters.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a1\" value=\"2\"><span>Within a quarter.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a1\" value=\"3\"><span>Within a month, and we measure it.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a1\" value=\"4\"><span>Within a fortnight, measured, with the governance gates inside that window rather than outside it.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Could you change a cryptographic algorithm, or swap a model provider, without a code change?<\/p>\n                <p class=\"a-help\">This is the abstraction question. It decides whether the next forced change is a configuration task or a programme.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a2\" value=\"0\"><span>No. It is referenced directly in many places and we do not know how many.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a2\" value=\"1\"><span>No, but we know where the references are.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a2\" value=\"2\"><span>On some platforms, through an abstraction layer built for one purpose.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a2\" value=\"3\"><span>On our main platforms, by configuration, and we have done it at least once.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a2\" value=\"4\"><span>Across the estate, by configuration, exercised on a cadence so it stays true.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Can funded work be reprioritised mid cycle without waiting for the next planning round?<\/p>\n                <p class=\"a-help\">Threats do not arrive in line with the planning calendar. This measures whether the calendar governs you or you govern it.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a3\" value=\"0\"><span>No. Reprioritisation waits for the annual cycle.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a3\" value=\"1\"><span>Only by escalation to the top, which is costly enough that it rarely happens.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a3\" value=\"2\"><span>Quarterly, through a defined process.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a3\" value=\"3\"><span>Monthly, with a standing forum and a reserved contingency.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a3\" value=\"4\"><span>Continuously, with a funded reserve held for exactly this purpose and a track record of using it.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">How quickly can a change to a governance policy reach enforcement in production?<\/p>\n                <p class=\"a-help\">A policy that takes a quarter to enforce is a document. This is the distance between deciding and binding.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a4\" value=\"0\"><span>Policy changes are communicated, not enforced. There is no mechanism.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a4\" value=\"1\"><span>A quarter or more, through manual change to each system.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a4\" value=\"2\"><span>Weeks, centrally managed for most systems.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a4\" value=\"3\"><span>Days, through a policy engine, in advisory mode before enforcement.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a4\" value=\"4\"><span>Hours, through a policy engine, with staged rollout from advisory to enforcement and a tested rollback.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">When a new obligation or threat appears, how long before you know which of your systems it touches?<\/p>\n                <p class=\"a-help\">Agility is worth little if the first two months go on working out the scope.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a5\" value=\"0\"><span>It takes a discovery project each time.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a5\" value=\"1\"><span>Weeks, assembled by individuals who happen to know.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a5\" value=\"2\"><span>Days, from a register that is mostly current.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a5\" value=\"3\"><span>Same day, from a maintained inventory.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"a5\" value=\"4\"><span>Immediately, by query, because classification and ownership are attributes of the register rather than a later exercise.<\/span><\/label>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"a-sec\">\n        <div class=\"a-shead sR\">\n            <div class=\"a-snum\">R<\/div>\n            <div class=\"a-stitle\">\n                <h2>Risk Readiness<\/h2>\n                <p>The ability to anticipate, prevent and respond to technology risks before they become crises.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"a-sbody\">\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Do you know what AI systems and cryptographic dependencies exist across the estate?<\/p>\n                <p class=\"a-help\">Anticipation begins with an inventory. Everything downstream of this question depends on it.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r1\" value=\"0\"><span>No inventory of either.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r1\" value=\"1\"><span>One of the two, partially.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r1\" value=\"2\"><span>Both, covering the systems we already knew about.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r1\" value=\"3\"><span>Both, maintained, with named gaps we can state.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r1\" value=\"4\"><span>Both, maintained automatically, including embedded systems, operational technology and third parties.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">For your highest autonomy system, can you stop it, and has that been timed by someone other than its author?<\/p>\n                <p class=\"a-help\">An untested containment path is a documented intention. The author testing their own work does not count.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r2\" value=\"0\"><span>No, or we are not certain containment would work.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r2\" value=\"1\"><span>A procedure is documented and has never been executed.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r2\" value=\"2\"><span>Tested once, by its author, over a year ago.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r2\" value=\"3\"><span>Tested within the year by someone else, and the elapsed time was recorded.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r2\" value=\"4\"><span>Drilled on a cadence by someone else, timed, and a failed drill is reported upward.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Do your AI systems operate against reliability objectives and error budgets set by autonomy level?<\/p>\n                <p class=\"a-help\">Chapter 15&#8217;s reliability contract. The same technology at a higher autonomy level should face a stricter gate, because a failure executes rather than being reviewed.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r3\" value=\"0\"><span>No objectives. We watch for complaints.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r3\" value=\"1\"><span>Availability and latency only, as for any other service.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r3\" value=\"2\"><span>Agent specific indicators exist for some systems, without budgets attached.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r3\" value=\"3\"><span>Indicators, objectives and error budgets are in place, applied uniformly.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r3\" value=\"4\"><span>Budgets are stratified by autonomy level and gate deployment, so exhaustion stops the next change shipping.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Do you know which obligations come into force in the next twelve months, each with a named owner?<\/p>\n                <p class=\"a-help\">Anticipation is the word in the definition. A register nobody owns is a list.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r4\" value=\"0\"><span>No forward view.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r4\" value=\"1\"><span>Legal tracks it. Technology finds out when it becomes urgent.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r4\" value=\"2\"><span>A register exists, refreshed occasionally, owners partially assigned.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r4\" value=\"3\"><span>A register with named owners and a standing quarterly review.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r4\" value=\"4\"><span>As above, plus verification dates per entry, so a stale row is visible rather than assumed current.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Have you rehearsed an AI incident end to end, including the communications and the reversal?<\/p>\n                <p class=\"a-help\">Response is the third word in the definition. Containing an agent is the easy part; reconciling what it did is the long part.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r5\" value=\"0\"><span>No rehearsal of any kind.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r5\" value=\"1\"><span>A tabletop discussion, technical participants only.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r5\" value=\"2\"><span>A technical exercise including containment, but not communications or reversal.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r5\" value=\"3\"><span>A full exercise including legal, communications and a reversal of sample actions.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"r5\" value=\"4\"><span>As above, on a cadence, with findings tracked to closure and the executive team participating.<\/span><\/label>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"a-sec\">\n        <div class=\"a-shead sT\">\n            <div class=\"a-snum\">T<\/div>\n            <div class=\"a-stitle\">\n                <h2>Tenacity<\/h2>\n                <p>The ability to sustain strategic initiatives through organizational resistance and competing priorities.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"a-sbody\">\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Of the multi year technology programmes you started three or more years ago, how many finished as intended?<\/p>\n                <p class=\"a-help\">The least comfortable question here, and the most predictive. Count them rather than estimating.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t1\" value=\"0\"><span>Few or none. They were absorbed, renamed or quietly stopped.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t1\" value=\"1\"><span>Under a third.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t1\" value=\"2\"><span>Around half.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t1\" value=\"3\"><span>Most of them, with scope reductions we agreed openly.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t1\" value=\"4\"><span>Nearly all, and we can name each one and its outcome.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Would a multi year programme survive its executive sponsor leaving?<\/p>\n                <p class=\"a-help\">Sponsorship that depends on one person is a single point of failure with a notice period.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t2\" value=\"0\"><span>No. It would be reviewed and probably stopped.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t2\" value=\"1\"><span>It would survive in name while losing its funding and its people.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t2\" value=\"2\"><span>Probably, after a pause and a fresh justification.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t2\" value=\"3\"><span>Yes. It is owned by a committee rather than an individual, with a named successor.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t2\" value=\"4\"><span>Yes, and it has already survived one such change without losing pace.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Has this class of work survived a budget cycle with its funding intact?<\/p>\n                <p class=\"a-help\">Multi year governance and migration work competes with immediate priorities every year, and loses quietly.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t3\" value=\"0\"><span>It has not been through a cycle, or it was cut.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t3\" value=\"1\"><span>It survived with a material reduction.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t3\" value=\"2\"><span>It survived roughly intact, after an argument each time.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t3\" value=\"3\"><span>It is a protected line, ring fenced by agreement.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t3\" value=\"4\"><span>It is a protected line and has survived more than one cycle, including a year of cost reduction.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Do the teams who must adopt these changes have the capacity to absorb them?<\/p>\n                <p class=\"a-help\">Change saturation is the most under diagnosed cause of stalled value. The technology works; the organization had nothing left to give.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t4\" value=\"0\"><span>We have never asked. Adoption is assumed.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t4\" value=\"1\"><span>We know they are overloaded and we proceed anyway.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t4\" value=\"2\"><span>We consider it informally when sequencing.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t4\" value=\"3\"><span>We measure change load and sequence against it.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t4\" value=\"4\"><span>We measure it, sequence against it, and have deferred our own work because the receiving teams were full.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Are the named owners from a year ago still in place, and is there succession?<\/p>\n                <p class=\"a-help\">Owner churn without succession is how a governed system becomes an unowned one without anybody deciding.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t5\" value=\"0\"><span>We do not track owners, or most have changed and not been replaced.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t5\" value=\"1\"><span>Owners exist on paper and several have moved on.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t5\" value=\"2\"><span>Mostly stable, with gaps we are filling.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t5\" value=\"3\"><span>Stable, with a named deputy for each critical owner.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"t5\" value=\"4\"><span>Stable and succeeded, and a handover has happened cleanly at least once.<\/span><\/label>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"a-sec\">\n        <div class=\"a-shead sX\">\n            <div class=\"a-snum\">$<\/div>\n            <div class=\"a-stitle\">\n                <h2>The investment decision<\/h2>\n                <p>What the assessment is for. Where the next money goes, and whether it moves anything.<\/p>\n            <\/div>\n        <\/div>\n        <div class=\"a-sbody\">\n            <div class=\"a-fields\">\n                <div class=\"a-f\">\n                    <label for=\"a-org\">Organization or unit assessed <span class=\"a-hint2\">Labels the output only.<\/span><\/label>\n                    <input type=\"text\" id=\"a-org\" value=\"Group Technology\">\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-owner\">Named owner accountable for the result <span class=\"a-hint2\">A person, not a function. A capability nobody owns does not improve.<\/span><\/label>\n                    <input type=\"text\" id=\"a-owner\" placeholder=\"For example, E. Vasquez, Chief Information Officer\">\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-plan\">Where is the next significant investment planned? <span class=\"a-hint2\">Answer for the money already earmarked, not for where you think it should go. The difference is the point of this question.<\/span><\/label>\n                    <select id=\"a-plan\">\n                        <option value=\"none\" selected>Not yet decided<\/option>\n                        <option value=\"A\">Agility: speed, tooling, automation, abstraction<\/option>\n                        <option value=\"R\">Risk Readiness: inventory, controls, observability, assurance<\/option>\n                        <option value=\"T\">Tenacity: sponsorship, funding protection, change capacity, ownership<\/option>\n                    <\/select>\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-amount\">Amount earmarked <span class=\"a-hint2\">Optional. States the sum at stake if it is aimed at the wrong capability.<\/span><\/label>\n                    <div class=\"a-wrap\"><span class=\"a-pre\" id=\"a-pre\">USD<\/span><input type=\"number\" id=\"a-amount\" min=\"0\" step=\"100000\" value=\"0\" inputmode=\"numeric\"><\/div>\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-ccy\">Currency <span class=\"a-hint2\">Three letter code, so a board paper cannot be read in the wrong currency.<\/span><\/label>\n                    <input type=\"text\" id=\"a-ccy\" value=\"USD\" maxlength=\"3\" autocapitalize=\"characters\">\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-target\">Required capability level <span class=\"a-hint2\">Out of 20. The level your board or risk appetite requires. Leave at zero if none is set.<\/span><\/label>\n                    <input type=\"number\" id=\"a-target\" min=\"0\" max=\"20\" step=\"1\" value=\"0\" inputmode=\"numeric\">\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-by\">Prepared by, name and role <span class=\"a-hint2\">Optional. Fills the bracket in the board paper.<\/span><\/label>\n                    <input type=\"text\" id=\"a-by\" placeholder=\"For example, D. Park, Head of Strategy\">\n                <\/div>\n                <div class=\"a-f\">\n                    <label for=\"a-date\">Date of assessment <span class=\"a-hint2\">A board will ask for the trend, which needs dated readings.<\/span><\/label>\n                    <input type=\"date\" id=\"a-date\" value=\"\">\n                <\/div>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">How were these scores arrived at?<\/p>\n                <p class=\"a-help\">The single biggest determinant of whether the result survives a challenge.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev1\" value=\"meas\"><span>From measured data: lead times, drill records, programme outcomes we can produce.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev1\" value=\"mixed\"><span>A mix of measurement and informed judgement.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev1\" value=\"opin\"><span>Judgement only. Nothing behind the scores yet.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Who took part in the assessment?<\/p>\n                <p class=\"a-help\">A single function scoring itself produces a predictable answer.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev2\" value=\"multi\"><span>Technology plus at least two of risk, finance, legal or a business unit.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev2\" value=\"two\"><span>Technology plus one other function.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev2\" value=\"one\"><span>One function, or one person.<\/span><\/label>\n            <\/div>\n            <div class=\"a-q\">\n                <p class=\"a-qlabel\">Is there a prior assessment to compare against?<\/p>\n                <p class=\"a-help\">A single reading is a position. Two readings are a trend, and a board will ask for the trend.<\/p>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev3\" value=\"trend\"><span>Yes, at least one prior assessment on the same basis.<\/span><\/label>\n                <label class=\"a-opt\"><input type=\"radio\" name=\"ev3\" value=\"first\"><span>No. This is the first.<\/span><\/label>\n            <\/div>\n        <\/div>\n    <\/div>\n\n<\/div>\n<\/div>\n\n<div class=\"a-progress\">\n    <div class=\"a-pinner\">\n        <p class=\"a-ptext\"><b id=\"a-progn\">0<\/b><span id=\"a-progl\"> of 18 answered<\/span><\/p>\n        <button type=\"button\" class=\"a-clear\" id=\"a-clearbtn\">Clear<\/button>\n        <button type=\"button\" class=\"a-go\" id=\"a-go\" disabled>Assess Capability<\/button>\n    <\/div>\n    <div class=\"a-barwrap\"><span class=\"a-fillbar\" id=\"a-fill\"><\/span><\/div>\n<\/div>\n\n<div class=\"a-result\" id=\"a-result\">\n<div class=\"a-wide\">\n\n    <div class=\"a-panel a-ask\">\n        <h3 id=\"a-askh\">The ask<\/h3>\n        <p class=\"a-sub\">The decision, the constraint, the owner and what the money buys, in the order a board wants them. Everything below is the evidence.<\/p>\n        <div id=\"a-asklist\"><\/div>\n    <\/div>\n\n    <div class=\"a-verdict\" id=\"a-verdict\">\n        <p class=\"a-vtop\" id=\"a-vtop\">Your binding constraint<\/p>\n        <h2 class=\"a-vname\" id=\"a-vname\">Tenacity<\/h2>\n        <p class=\"a-vscore\" id=\"a-vscore\"><\/p>\n        <p class=\"a-vread\" id=\"a-vread\"><\/p>\n        <div class=\"a-bars\" id=\"a-bars\"><\/div>\n    <\/div>\n\n    <div class=\"a-grid2\">\n        <div class=\"a-panel\">\n            <h3>What three points of improvement buy<\/h3>\n            <p class=\"a-sub\">System capability is the minimum of the three, so improvement anywhere other than a sole constraint changes nothing until the constraint is cleared. This is arithmetic, not opinion.<\/p>\n            <div class=\"a-scroll\">\n            <table class=\"a-tbl\">\n                <thead><tr><th>Invest in<\/th><th>Now<\/th><th>Plus 3<\/th><th>System gain<\/th><\/tr><\/thead>\n                <tbody id=\"a-leverage\"><\/tbody>\n            <\/table>\n            <\/div>\n            <div class=\"a-note info\" id=\"a-levnote\"><\/div>\n        <\/div>\n        <div class=\"a-panel\">\n            <h3>How far before another binds<\/h3>\n            <p class=\"a-sub\">Exact, not estimated. Raise the constraint beyond this and the next capability becomes the ceiling.<\/p>\n            <p class=\"a-big\" id=\"a-headroom\">0<\/p>\n            <p class=\"a-sub\" style=\"margin-bottom:14px !important;\">points of headroom on the binding constraint<\/p>\n            <p class=\"a-big\" id=\"a-spread\">0<\/p>\n            <p class=\"a-sub\" style=\"margin-bottom:0 !important;\">spread between strongest and weakest capability<\/p>\n            <div class=\"a-note info\" id=\"a-headnote\"><\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"a-panel\">\n        <h3>What to invest in next, specifically<\/h3>\n        <p class=\"a-sub\">The lowest scoring items inside the binding capability, or each tied capability. These are where a point is available in a capability where a point changes the system.<\/p>\n        <div id=\"a-actions\"><\/div>\n    <\/div>\n\n    <div class=\"a-panel\">\n        <h3>What your earmarked money buys, and what the target needs<\/h3>\n        <p class=\"a-sub\">The planned investment tested against the constraint, and the required level tested against every capability.<\/p>\n        <div id=\"a-moneynote\"><\/div>\n    <\/div>\n\n    <div class=\"a-panel\">\n        <h3>Do your own answers agree with each other?<\/h3>\n        <p class=\"a-sub\">Contradictions are answers that cannot both be true. Findings and caveats are consistent answers that still affect how far the result can be relied on.<\/p>\n        <div id=\"a-coherence\"><\/div>\n    <\/div>\n\n    <div class=\"a-grid2\">\n        <div class=\"a-panel\">\n            <h3>Confidence in this reading<\/h3>\n            <p class=\"a-sub\">Graded on the four things that decide whether the result survives challenge, not on how good the scores look.<\/p>\n            <div class=\"a-grade gD\" id=\"a-grade\">?<\/div>\n            <p class=\"a-big\" style=\"font-size:20px !important;\" id=\"a-gradelabel\">Not graded<\/p>\n            <ul id=\"a-conflist\" style=\"margin:12px 0 0 0 !important;padding-left:20px !important;\"><\/ul>\n            <div class=\"a-note info\" id=\"a-confnote\"><\/div>\n        <\/div>\n        <div class=\"a-panel\">\n            <h3>The reading a sceptic would take<\/h3>\n            <p class=\"a-sub\">Unmeasured scores discounted, because a self reported capability score is the most inflated number in this category of assessment.<\/p>\n            <p class=\"a-big\" id=\"a-chal\">0<\/p>\n            <p class=\"a-sub\" style=\"margin-bottom:14px !important;\">challenged system capability, out of 20<\/p>\n            <p class=\"a-big\" id=\"a-chalbind\">None<\/p>\n            <p class=\"a-sub\" style=\"margin-bottom:0 !important;\">binding constraint on the challenged reading<\/p>\n            <div class=\"a-note ok\" id=\"a-chalnote\"><\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"a-panel\">\n        <h3>Board paper<\/h3>\n        <p class=\"a-sub\">Written to be pasted into a board or executive committee paper without editing. Complete any bracketed field before circulating.<\/p>\n        <div class=\"a-card\" id=\"a-cardtext\"><\/div>\n        <div class=\"a-btnrow\">\n            <button type=\"button\" class=\"a-btn gold\" id=\"a-copy\">Copy the paper<\/button>\n            <button type=\"button\" class=\"a-btn\" id=\"a-print\">Print or save as PDF<\/button>\n            <button type=\"button\" class=\"a-btn ghost\" id=\"a-again\">Change my answers<\/button>\n        <\/div>\n    <\/div>\n\n<\/div>\n<\/div>\n\n<div class=\"a-next\">\n<div class=\"a-wide\">\n    <h3>Turn the constraint into work<\/h3>\n    <p class=\"a-sub\">A binding constraint is a diagnosis. These are the instruments that clear it.<\/p>\n    <div class=\"a-grid3\">\n        <div class=\"a-tile\">\n            <h4>If Risk Readiness binds<\/h4>\n            <p>Start with the inventory, because three of the five Risk Readiness questions depend on it. The Agent Inventory workbook scores autonomy and impact and flags control gaps. The Containment Procedure makes revocation something you have tested rather than written down.<\/p>\n            <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=748#war-downloads-section\">Get the instruments<\/a>\n        <\/div>\n        <div class=\"a-tile\">\n            <h4>If Agility binds<\/h4>\n            <p>Agility is bought with abstraction and with governance that sits inside the delivery window rather than outside it. The Governance Charter sets approval gates that can be met in days, and the Cryptographic Census shows where an algorithm change would require code rather than configuration.<\/p>\n            <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=748#war-downloads-section\">Get the instruments<\/a>\n        <\/div>\n        <div class=\"a-tile\">\n            <h4>If Tenacity binds<\/h4>\n            <p>Tenacity is the hardest to buy and the one the book treats as decisive. Chapter 12 covers the organizational resistance that decides whether any of this survives, Chapter 15 the operating model, and Chapter 16 the commitments a technology executive should be measured against.<\/p>\n            <a href=\"https:\/\/www.amazon.com\/dp\/B0H85XZT25\">Get the book<\/a>\n        <\/div>\n    <\/div>\n<\/div>\n<\/div>\n\n<noscript>\n<div class=\"a-manual\">\n<div class=\"a-inner\">\n    <h3>Scoring this by hand<\/h3>\n    <p style=\"font-size:14.5px !important;color:#444 !important;line-height:1.7 !important;\">Interactive scoring is unavailable in your browser. The method is unchanged and takes a few minutes.<\/p>\n    <ol style=\"font-size:14.5px !important;color:#444 !important;line-height:1.85 !important;\">\n        <li>Each answer scores in the order shown: the first option 0, then 1, 2, 3, and the last 4.<\/li>\n        <li>Add the five answers within each capability. Each capability scores from 0 to 20.<\/li>\n        <li><b>Your system capability is the lowest of the three, not the average.<\/b><\/li>\n        <li>Every capability holding that lowest score is a binding constraint. If two or three tie, they are all binding, and raising only one of them changes nothing.<\/li>\n        <li>If one capability is lowest on its own, subtract its score from the second lowest. That is your headroom: how far you can raise the constraint before another capability becomes the ceiling.<\/li>\n        <li>Improvement in a capability that is not the sole lowest raises system capability by exactly zero. Check where your next investment is going against that.<\/li>\n        <li>If a required level is set, every capability below it has to reach it. Note the shortfall for each one, not only the lowest.<\/li>\n        <li>Inside each binding capability, the lowest scoring questions are the specific things to fund.<\/li>\n    <\/ol>\n    <div class=\"a-scroll\">\n    <table class=\"a-tbl\" style=\"margin-top:14px !important;\">\n        <thead><tr><th>System capability<\/th><th>Band<\/th><th>What it means<\/th><\/tr><\/thead>\n        <tbody>\n            <tr><td>16 to 20<\/td><td>Durable<\/td><td>The capability holds under pressure. Protect it: the constraint moves as the estate grows.<\/td><\/tr>\n            <tr><td>11 to 15<\/td><td>Working<\/td><td>Adequate in normal conditions. The constraint will show under a real incident or a hard budget year.<\/td><\/tr>\n            <tr><td>6 to 10<\/td><td>Fragile<\/td><td>The constraint is limiting delivery now. Expect programmes to start and not finish.<\/td><\/tr>\n            <tr><td>0 to 5<\/td><td>Blocking<\/td><td>The constraint dominates. Investment elsewhere will not produce visible improvement.<\/td><\/tr>\n        <\/tbody>\n    <\/table>\n    <\/div>\n    <p style=\"font-size:14.5px !important;color:#444 !important;line-height:1.7 !important;margin-top:14px !important;\"><b>One warning worth applying by hand.<\/b> If Agility is well ahead of Tenacity, you can start anything and finish nothing. That combination produces a long record of initiated programmes and a short record of completed ones, and it is the pattern that most often precedes a budget cut.<\/p>\n<\/div>\n<\/div>\n<\/noscript>\n\n<div class=\"a-cta\">\n    <h3>Capability is what remains when the strategy is spent<\/h3>\n    <p>Frameworks are chosen. Capability is built, and it is built where the constraint is.<\/p>\n    <div class=\"a-ctarow\">\n        <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=748\">The book page<\/a>\n        <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=748#war-downloads-section\">Free toolkit<\/a>\n        <a href=\"https:\/\/www.amazon.com\/dp\/B0H85XZT25\">Get the book<\/a>\n        <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=14\">Advisory services<\/a>\n        <a href=\"https:\/\/www.opey.org\/opeyit\/?page_id=327\">When Clouds Fail<\/a>\n    <\/div>\n<\/div>\n\n<div class=\"a-fine\">\n    <p><b>About this assessment.<\/b> The A.R.T. Framework for CIO Excellence is set out in When Agents Rule by Steven Oppenheim, and developed as the operating model in Chapter 15. This tool is a self assessment instrument, not an audit, a certification or a benchmark, and it reflects what you tell it: a generous reading produces a flattering result and no useful information. No peer comparison is offered and no external dataset underlies it. System capability is deliberately reported as the minimum of the three capabilities rather than their average, for the reason given on this page. Your answers are computed in your browser and are not transmitted or stored by this tool. This is not legal, technical or financial advice.<\/p>\n<\/div>\n\n<\/div>\n<!-- End of #war-art-2026 -->\n\n<script>\n\/* A.R.T. CAPABILITY ASSESSMENT version 2. No less than sign, no ampersand,\n   no innerHTML, no template literals, no arrow functions. The MODEL block\n   is pure logic, tested against every capability score combination. *\/\n(function () {\n    var root = document.getElementById('war-art-2026');\n    if (!root) { return; }\n\n\/* MODEL START *\/\n    var CAPS = [\n      { key: 'A', name: 'Agility', cls: 'fA', vcls: 'vA', q: ['a1','a2','a3','a4','a5'],\n        def: 'the speed with which technology capabilities respond to business opportunities and threats',\n        labels: ['Change lead time from decision to production', 'Algorithm or provider change without a code change', 'Mid cycle reprioritisation of funded work', 'Time for a policy change to reach enforcement', 'Time to know which systems an obligation touches'],\n        moves: ['Measure the end to end lead time first, including the approval queue, because the queue is usually the longer half and nobody owns it.',\n                'Introduce an abstraction layer on one main platform and exercise an algorithm change through it, so the capability is demonstrated rather than designed.',\n                'Establish a funded contingency reserve and a standing forum empowered to move work mid cycle, then use it once so the precedent exists.',\n                'Deploy a policy engine in advisory mode before enforcement, which buys enforcement speed without the risk of a first enforcement being a surprise.',\n                'Make classification and ownership attributes of the register rather than a later exercise, so scoping a new obligation is a query.'] },\n      { key: 'R', name: 'Risk Readiness', cls: 'fR', vcls: 'vR', q: ['r1','r2','r3','r4','r5'],\n        def: 'the ability to anticipate, prevent and respond to technology risks before they become crises',\n        labels: ['Inventory of AI systems and cryptographic dependencies', 'Containment tested, timed, by someone other than the author', 'Reliability objectives and error budgets by autonomy level', 'Forward obligation register with named owners', 'End to end incident rehearsal including reversal'],\n        moves: ['Build the inventory. It is the cheapest move available and three of the five questions in this capability depend on it.',\n                'Drill containment on the highest autonomy system this quarter, executed by someone other than its author, and record the elapsed time.',\n                'Stratify error budgets by autonomy level so the same technology faces a stricter gate where actions execute without review.',\n                'Assign a named owner and a verification date to every obligation entering force in the next twelve months.',\n                'Run one full exercise including legal, communications and a reversal of sample actions, then track the findings to closure.'] },\n      { key: 'T', name: 'Tenacity', cls: 'fT', vcls: 'vT', q: ['t1','t2','t3','t4','t5'],\n        def: 'the ability to sustain strategic initiatives through organizational resistance and competing priorities',\n        labels: ['Completion record of multi year programmes', 'Survival of a change of executive sponsor', 'Funding survival through a budget cycle', 'Absorption capacity of the receiving teams', 'Owner continuity and succession'],\n        moves: ['Count the programmes started three or more years ago and name the outcome of each. The count itself changes the conversation, because nobody has usually done it.',\n                'Move ownership from an individual to a committee with a named successor, and rehearse the handover before it is forced on you.',\n                'Ring fence the funding line by agreement rather than by argument, and get that agreement minuted while the case is fresh.',\n                'Measure change load on the receiving teams and sequence against it. Deferring your own work because a team is full is the strongest signal that this is real.',\n                'Name a deputy for every critical owner and complete one clean handover, so continuity is demonstrated rather than asserted.'] }\n    ];\n    var BANDS = [\n      { min: 16, label: 'Durable', read: 'The capability holds under pressure. The work now is protecting it as the estate grows, because the constraint moves.' },\n      { min: 11, label: 'Working', read: 'Adequate in normal conditions. The constraint will show under a real incident or a hard budget year, which is when it matters.' },\n      { min: 6, label: 'Fragile', read: 'The constraint is limiting delivery now. Expect programmes to start and not finish, and expect the cause to be attributed to something else.' },\n      { min: 0, label: 'Blocking', read: 'The constraint dominates. Investment in the other capabilities will not produce visible improvement until this is cleared.' }\n    ];\n    function clean(t) { return ('' + (t || '')).replace(\/\\s+\/g, ' ').replace(\/^ | $\/g, ''); }\n    function pts(n) { return n + ((n === 1) ? ' point' : ' points'); }\n    function listNames(a) {\n        if (a.length === 1) { return a[0]; }\n        return a.slice(0, a.length - 1).join(', ') + ' and ' + a[a.length - 1];\n    }\n    function group(s) {\n        var o = ''; var n = s.length; var i = 0;\n        for (i = 0; i !== n; i++) { if (i > 0) { if ((n - i) % 3 === 0) { o = o + ','; } } o = o + s.charAt(i); }\n        return o;\n    }\n    function bandOf(s) { var i = 0; for (i = 0; i !== 4; i++) { if (s >= BANDS[i].min) { return BANDS[i]; } } return BANDS[3]; }\n\n    function assess(v, c) {\n        var i = 0; var j = 0;\n        var out = {};\n        var scores = []; var detail = [];\n        for (i = 0; i !== 3; i++) {\n            var t = 0; var d = [];\n            for (j = 0; j !== 5; j++) { t = t + v[CAPS[i].q[j]]; d.push({ idx: j, val: v[CAPS[i].q[j]] }); }\n            scores.push(t); detail.push(d);\n        }\n        var system = Math.min(scores[0], scores[1], scores[2]);\n        var bindSet = []; var bindNames = [];\n        for (i = 0; i !== 3; i++) { if (scores[i] === system) { bindSet.push(i); bindNames.push(CAPS[i].name); } }\n        var sole = bindSet.length === 1;\n        var allMax = system === 20;\n        var sorted = scores.slice(0); sorted.sort(function (x, y) { return x - y; });\n        var headroom = sole ? (sorted[1] - sorted[0]) : 0;\n        var nextNames = [];\n        if (sole) { for (i = 0; i !== 3; i++) { if (scores[i] === sorted[1]) { nextNames.push(CAPS[i].name); } } }\n        var spread = sorted[2] - sorted[0];\n        var avg = (scores[0] + scores[1] + scores[2]) \/ 3;\n        var band = bandOf(system);\n        var bn = listNames(bindNames);\n        out.scores = scores; out.system = system; out.bindSet = bindSet; out.sole = sole; out.headroom = headroom; out.spread = spread; out.band = band; out.allMax = allMax;\n\n        var org = clean(c.org) || 'This organization';\n        var owner = clean(c.owner);\n        var ownerOK = false;\n        if (owner.length > 7) { if (owner.indexOf(' ') !== -1) { ownerOK = true; } }\n        var ccyRaw = clean(c.ccy).toUpperCase();\n        var ccyOK = \/^[A-Z][A-Z][A-Z]$\/.test(ccyRaw);\n        var ccy = ccyOK ? ccyRaw : '[CURRENCY]';\n        var amount = parseFloat(c.amount); var amountNeg = false;\n        if (isNaN(amount)) { amount = 0; }\n        if (0 > amount) { amount = 0; amountNeg = true; }\n        amount = Math.round(amount);\n        var target = parseFloat(c.target);\n        if (isNaN(target)) { target = 0; }\n        target = Math.round(target);\n        if (0 > target) { target = 0; }\n        if (target > 20) { target = 20; }\n        var plan = c.plan;\n        var planIdx = -1;\n        for (i = 0; i !== 3; i++) { if (CAPS[i].key === plan) { planIdx = i; } }\n        var amt = ccy + ' ' + group('' + amount);\n        out.target = target; out.amount = amount; out.ccy = ccy;\n\n        \/* ---------- verdict ---------- *\/\n        out.vcls = sole ? CAPS[bindSet[0]].vcls : 'vX';\n        out.vtop = (allMax ? 'No binding constraint for ' : (sole ? 'Binding constraint for ' : 'Tied binding constraints for ')) + org;\n        out.vname = allMax ? 'All three at 20' : (sole ? bn : (bn + ', tied'));\n        out.vscore = 'System capability ' + system + ' of 20, ' + band.label + '. The average of the three is ' + avg.toFixed(1) + ', and it is not the number that governs you.';\n        if (allMax) { out.vread = 'Every capability scores the maximum, so nothing is binding. Protect the position: the constraint reappears as the estate grows and people change.'; }\n        else if (sole) { out.vread = CAPS[bindSet[0]].name + ' is ' + CAPS[bindSet[0]].def + '. It is the lowest of your three capabilities at ' + system + ' of 20, so it sets the ceiling on what the other two can deliver. ' + band.read; }\n        else { out.vread = bn + ' tie at ' + system + ' of 20. Together they set the ceiling, and raising one without the ' + ((bindSet.length === 2) ? 'other' : 'others') + ' leaves system capability unchanged. ' + band.read; }\n\n        \/* ---------- leverage ---------- *\/\n        out.leverage = [];\n        for (i = 0; i !== 3; i++) {\n            var gain = 0;\n            if (sole) { if (i === bindSet[0]) { gain = Math.min(3, headroom, 20 - scores[i]); } }\n            out.leverage.push({ name: CAPS[i].name, now: scores[i], plus: Math.min(20, scores[i] + 3), gain: gain, bind: (scores[i] === system) });\n        }\n        if (allMax) { out.levnote = ['ok', 'Every capability is at 20, so no further capability investment raises system capability.']; }\n        else if (sole) { out.levnote = ['info', 'Three points added to ' + bn + ' raise system capability by ' + pts(Math.min(3, headroom)) + '. Three points added to either of the others raise it by nothing at all. That is what taking a minimum means, and it is the sentence to use when a proposal arrives for the wrong capability.']; }\n        else { out.levnote = ['caution', bn + ' are tied at the minimum, so three points added to any single capability raise system capability by nothing. They have to be raised together, which is worth saying before someone funds one of them and reports no improvement.']; }\n\n        \/* ---------- headroom ---------- *\/\n        if (allMax) { out.headnote = ['ok', 'There is no constraint to raise.']; }\n        else if (!sole) { out.headnote = ['caution', 'There is no headroom, because ' + bn + ' sit at the minimum together. Plan to raise them in parallel, and expect the first visible improvement to cost roughly ' + ((bindSet.length === 2) ? 'twice' : 'three times') + ' what a single constraint would.']; }\n        else {\n            var hmsg = 'You can raise ' + bn + ' by up to ' + pts(headroom) + ' before ' + listNames(nextNames) + ' ' + ((nextNames.length === 1) ? 'becomes' : 'become') + ' the constraint instead. Fund to that level, then reassess rather than assuming the same capability still binds.';\n            if (spread > 7) { out.headnote = ['warn', hmsg + ' A spread of ' + spread + ' points is severely unbalanced: capability above the constraint is not raising system capability while the constraint stays where it is. Stop widening the gap.']; }\n            else { out.headnote = ['ok', hmsg]; }\n        }\n\n        \/* ---------- specific actions ---------- *\/\n        out.actions = [];\n        for (j = 0; j !== bindSet.length; j++) {\n            var bi = bindSet[j];\n            var d2 = detail[bi].slice(0);\n            d2.sort(function (x, y) { if (x.val === y.val) { return x.idx - y.idx; } return x.val - y.val; });\n            var shown = 0;\n            for (i = 0; i !== 5; i++) {\n                if (shown === 3) { break; }\n                if (d2[i].val > 2) { continue; }\n                out.actions.push(['info', CAPS[bi].name + ', ' + CAPS[bi].labels[d2[i].idx].toLowerCase() + ': ' + d2[i].val + ' of 4. ', CAPS[bi].moves[d2[i].idx]]);\n                shown = shown + 1;\n            }\n            if (shown === 0) { out.actions.push(['ok', CAPS[bi].name + ': ', 'every question scores 3 or 4, so there is no single move left. Consolidate what exists; the next reassessment will probably move the constraint.']); }\n        }\n\n        \/* ---------- money and target ---------- *\/\n        out.money = [];\n        var buys = '';\n        if (plan === 'none') {\n            out.money.push(['caution', 'No planned investment was recorded, so this reading cannot say whether the next spend moves the system. That is the question the assessment exists to answer.']);\n            buys = 'Not yet decided, so the effect cannot be stated.';\n        } else if (allMax) {\n            out.money.push(['caution', 'The earmarked investment is aimed at ' + CAPS[planIdx].name + ', but every capability already scores 20. It raises system capability by nothing, so it has to be justified on other grounds.' + ((amount > 0) ? (' The sum at stake is ' + amt + '.') : '')]);\n            buys = 'No capability gain available' + ((amount > 0) ? (' on ' + amt) : '') + '.';\n        } else if (scores[planIdx] === system) {\n            if (sole) {\n                out.money.push(['ok', 'The earmarked investment is aimed at ' + bn + ', the binding constraint. That is the right target, and worth saying explicitly because it is not the common case.' + ((amount > 0) ? (' ' + amt + ' directed there can raise system capability by up to ' + pts(headroom) + ' before another capability binds. Fund to that level and reassess before committing beyond it.') : '')]);\n                buys = 'Aimed at the constraint. Up to ' + pts(headroom) + ' of system capability before another binds.';\n            } else {\n                var others = [];\n                for (i = 0; i !== bindSet.length; i++) { if (bindSet[i] !== planIdx) { others.push(CAPS[bindSet[i]].name); } }\n                out.money.push(['caution', 'The earmarked investment is aimed at ' + CAPS[planIdx].name + ', which is tied at the minimum with ' + listNames(others) + '. On its own it raises system capability by nothing; it only shows once ' + listNames(others) + ' ' + ((others.length === 1) ? 'rises' : 'rise') + ' too.' + ((amount > 0) ? (' Either fund both from the ' + amt + ', or say in the paper why a single capability is being funded first.') : ' Plan matching investment in the other tied capability.')]);\n                buys = 'Aimed at a tied constraint. No gain until ' + listNames(others) + ' also ' + ((others.length === 1) ? 'rises' : 'rise') + (amount > 0 ? (', on ' + amt + ' of committed spend') : '') + '.';\n            }\n        } else {\n            out.money.push(['warn', 'The earmarked investment is aimed at ' + CAPS[planIdx].name + ', which is not a binding constraint. ' + bn + ' ' + (sole ? 'is' : 'are') + ' at ' + system + ' of 20 against ' + CAPS[planIdx].name + ' at ' + scores[planIdx] + '. Improving ' + CAPS[planIdx].name + ' raises system capability by exactly zero until ' + bn + ' ' + (sole ? 'is' : 'are') + ' raised.' +\n                ((amount > 0) ? (' On your own figures that is ' + amt + ' of committed spend with no effect on system capability. It may be justified on other grounds, and if so the paper should say which.') : ' Enter the amount and the tool will state the sum at stake.')]);\n            buys = 'Aimed at ' + CAPS[planIdx].name + ', which is not a constraint. Zero system capability gain' + ((amount > 0) ? (' on ' + amt + ' of committed spend') : '') + '.';\n        }\n        var tgt = 'None set.';\n        if (target > 0) {\n            var shorts = [];\n            for (i = 0; i !== 3; i++) { if (target > scores[i]) { shorts.push(CAPS[i].name + ' needs ' + pts(target - scores[i])); } }\n            if (shorts.length === 0) {\n                out.money.push(['ok', 'System capability of ' + system + ' meets the required level of ' + target + '. Record who set that level and when, because a requirement that is met is the point at which funding is most often withdrawn.']);\n                tgt = 'Required level ' + target + ' is met.';\n            } else {\n                out.money.push(['caution', 'Reaching the required level of ' + target + ' needs every capability at ' + target + ' or above: ' + shorts.join(', ') + '. System capability reaches ' + target + ' only when the last of ' + ((shorts.length === 1) ? 'these does.' : ('these ' + shorts.length + ' does.'))]);\n                tgt = 'Required level ' + target + ': ' + shorts.join(', ') + '.';\n            }\n        }\n        out.buys = buys; out.tgt = tgt;\n\n        \/* ---------- coherence, with kinds ---------- *\/\n        var coh = [];\n        if (v.t1 >= 3) {\n            if (1 >= v.t5) { coh.push(['contradiction', 'You report most multi year programmes finishing as intended, and also that owners are untracked or have left without replacement. Programmes do not finish without owners, so one of those answers is generous.']); }\n            else { coh.push(['sound', 'The completion record is supported by stable ownership, which is the combination that makes a Tenacity score believable.']); }\n        }\n        if (v.r1 === 0) {\n            if (v.a5 >= 3) { coh.push(['contradiction', 'You report knowing the same day which systems a new obligation touches, and also that no inventory of AI systems or cryptographic dependencies exists. Scoping by query needs the register that the inventory answer says is missing.']); }\n            if (v.r2 >= 3) { coh.push(['contradiction', 'You report containment tested on your highest autonomy system, and also that no inventory of AI systems exists. Without the inventory there is no way to know which system has the highest autonomy.']); }\n        }\n        if (1 >= v.r1) { if (v.a2 === 4) { coh.push(['contradiction', 'You report changing algorithms or providers by configuration across the whole estate, and also little or no inventory of cryptographic dependencies. An estate wide claim cannot be verified without knowing what the estate contains.']); } }\n        if (scores[0] - scores[2] > 4) { coh.push(['finding', 'Agility is ' + (scores[0] - scores[2]) + ' points ahead of Tenacity. That combination starts programmes faster than it finishes them, and it is the pattern that most often precedes a budget cut, because the spend is visible and the outcomes are not.']); }\n        if (system > 12) { if (c.ev1 === 'opin') { coh.push(['finding', 'System capability of ' + system + ' rests on judgement alone. A score this high with nothing measured behind it is the first thing a reviewer will test. Measure change lead time and the completion record before presenting.']); } }\n        if (target > 0) { if (system > target + 4) { coh.push(['finding', 'The required level of ' + target + ' sits well below the assessed system capability of ' + system + '. Either the requirement is stale or the scores are optimistic, and a requirement already comfortably met will be read as a reason to stop investing.']); } }\n        if (!owner) { coh.push(['finding', 'No owner is named for the result, so the paper commits nobody to raising the constraint.']); }\n        else if (!ownerOK) { coh.push(['finding', 'The owner is recorded as \"' + owner + '\", which will not survive a board pack. A full name and a role is the minimum.']); }\n        else { coh.push(['sound', 'The owner is recorded as a full name and role.']); }\n        if (!ccyOK) { coh.push(['finding', 'The currency is not a three letter code, so amounts in the paper show a bracket to complete rather than a currency a reader could misread.']); }\n        if (amountNeg) { coh.push(['finding', 'A negative amount was entered and has been treated as zero.']); }\n        if (c.ev2 === 'one') { coh.push(['caveat', 'One function or one person completed the assessment. Technology scoring its own Tenacity tends to produce a kinder answer than finance or the receiving business units would, so rerun that section with them.']); }\n        else if (c.ev2 === 'two') { coh.push(['caveat', 'Two functions took part. Adding finance tends to change the Tenacity answer more than any other participant.']); }\n        else { coh.push(['sound', 'Three or more functions took part, which is the main defence against a self flattering result.']); }\n        if (c.ev3 === 'first') { coh.push(['caveat', 'This is the first assessment, so there is no trend. Date this reading and repeat it on the same basis, because a board asks for the direction of travel before it acts on the level.']); }\n        else { coh.push(['sound', 'A prior assessment exists on the same basis, so the reading can be presented as a trend.']); }\n        out.coh = coh;\n        var nContra = 0;\n        for (i = 0; i !== coh.length; i++) { if (coh[i][0] === 'contradiction') { nContra = nContra + 1; } }\n        out.nContra = nContra;\n\n        \/* ---------- confidence ---------- *\/\n        var pass = []; var fail = [];\n        if (c.ev1 === 'meas') { pass.push('Scores come from measured data that can be produced on request.'); }\n        else if (c.ev1 === 'mixed') { pass.push('Scores mix measurement with informed judgement, a defensible basis.'); }\n        else { fail.push('Scores rest on judgement alone, with nothing behind them yet.'); }\n        if (c.ev2 === 'multi') { pass.push('Three or more functions took part.'); } else { fail.push('Fewer than three functions took part, so the result carries a single view bias.'); }\n        if (c.ev3 === 'trend') { pass.push('A prior assessment exists, so a trend can be shown.'); } else { fail.push('No prior assessment, so there is no direction of travel to present.'); }\n        if (target > 0) { pass.push('A required capability level is set, so the gap is measured against a requirement.'); } else { fail.push('No required level is set, so the score has nothing to be measured against.'); }\n        var n4 = pass.length;\n        var grade = 'D'; var glabel = 'Not yet presentable';\n        if (n4 === 4) { grade = 'A'; glabel = 'Board ready'; }\n        if (n4 === 3) { grade = 'B'; glabel = 'Defensible'; }\n        if (n4 === 2) { grade = 'C'; glabel = 'Challengeable'; }\n        if (nContra > 0) { if (grade === 'A' || grade === 'B') { grade = 'C'; glabel = 'Challengeable'; } }\n        out.grade = grade; out.glabel = glabel; out.pass = pass; out.fail = fail;\n        if (nContra > 0) { out.confNote = ['warn', 'The answers contain ' + ((nContra === 1) ? 'a contradiction' : (nContra + ' contradictions')) + ', so the grade is capped at C until ' + ((nContra === 1) ? 'it is' : 'they are') + ' resolved, whatever the evidence tests say.']; }\n        else if (grade === 'A') { out.confNote = ['ok', 'All four tests pass. This reading can go to an executive committee as it stands.']; }\n        else if (grade === 'B') { out.confNote = ['caution', 'Three of four tests pass. Close the remaining one before circulating.']; }\n        else if (grade === 'C') { out.confNote = ['caution', 'Two of four tests pass. Present the challenged reading rather than the headline.']; }\n        else { out.confNote = ['warn', 'Fewer than two tests pass. This is a working figure and not a board paper. Measuring change lead time and the completion record would move it two grades.']; }\n\n        \/* ---------- sceptic ---------- *\/\n        var hair = (c.ev1 === 'opin') ? 4 : ((c.ev1 === 'mixed') ? 2 : 0);\n        var solo = (c.ev2 === 'one') ? 2 : ((c.ev2 === 'two') ? 1 : 0);\n        var ch = [];\n        for (i = 0; i !== 3; i++) { var cs = scores[i] - hair - ((i === 2) ? solo : 0); ch.push((0 > cs) ? 0 : cs); }\n        var chMin = Math.min(ch[0], ch[1], ch[2]);\n        var chSet = []; var chNames = [];\n        for (i = 0; i !== 3; i++) { if (ch[i] === chMin) { chSet.push(i); chNames.push(CAPS[i].name); } }\n        var changed = chSet.join(',') !== bindSet.join(',');\n        out.chMin = chMin; out.chNames = chNames; out.changed = changed;\n        var adj = [];\n        if (hair > 0) { adj.push('every capability reduced by ' + pts(hair) + ' because the scores are not fully measured'); }\n        if (solo > 0) { adj.push('Tenacity reduced by a further ' + pts(solo) + ' because a technology function scoring its own ability to finish is the least reliable cell'); }\n        out.adj = adj;\n        if (adj.length === 0) { out.chalNote = ['ok', 'No discount applied. The scores are measured and three or more functions took part, so the headline and the challenged reading are the same.']; }\n        else if (!changed) { out.chalNote = ['caution', 'Under a sceptical reading system capability falls from ' + system + ' to ' + chMin + ', and the binding ' + (sole ? 'constraint stays ' : 'constraints stay ') + bn + '. Present the challenged figure. Adjustments: ' + adj.join('; ') + '.']; }\n        else { out.chalNote = ['warn', 'Under a sceptical reading the binding constraint changes from ' + bn + ' to ' + listNames(chNames) + ', and system capability falls from ' + system + ' to ' + chMin + '. That matters more than the number, because the investment target depends on which capability binds. Measure before committing. Adjustments: ' + adj.join('; ') + '.']; }\n\n        \/* ---------- decision and ask ---------- *\/\n        var decision = '';\n        if (allMax) { decision = 'Note the position. Every capability scores 20, so this assessment indicates no capability investment. Reassess on the same basis next year.'; }\n        else if (system >= 16) { decision = 'Hold the position and reassess on the same basis next year. If further capability investment is proposed, direct it to ' + bn + (sole ? ', the only capability where it raises system capability.' : ' together, since they are tied at the minimum.'); }\n        else if (sole) { decision = 'Direct the next capability investment to ' + bn + ', the binding constraint at ' + system + ' of 20, and fund it by up to ' + pts(headroom) + ' before ' + listNames(nextNames) + ' ' + ((nextNames.length === 1) ? 'becomes' : 'become') + ' the constraint.'; }\n        else { decision = 'Direct the next capability investment to ' + bn + ' together, because they are tied at ' + system + ' of 20 and ' + ((bindSet.length === 2) ? 'neither moves' : 'none of them moves') + ' the system alone.'; }\n        out.decision = decision;\n        var by = clean(c.by); var date = clean(c.date);\n        out.ask = [\n            ['Decision requested', decision],\n            ['Binding constraint', (allMax ? 'None. All three at 20.' : (bn + ((sole) ? ' at ' : ', tied at ') + system + ' of 20.')) + ' System capability ' + system + ', ' + band.label + '. Average ' + avg.toFixed(1) + ', which does not govern.'],\n            ['Amount', (amount > 0) ? (amt + ' is earmarked.') : 'No amount recorded, which an investment committee will ask for.'],\n            ['What it buys', buys],\n            ['Required level', tgt],\n            ['Contradictions', (nContra === 0) ? 'None found.' : (nContra + ((nContra === 1) ? ' contradiction' : ' contradictions') + ' found. Resolve before circulating.')],\n            ['Confidence', grade + ', ' + glabel.toLowerCase() + '. ' + n4 + ' of 4 evidence tests pass. Challenged reading ' + chMin + ' of 20, binding on ' + listNames(chNames) + '.'],\n            ['Accountable owner', ownerOK ? (owner + ', accountable for raising the constraint and reporting the reassessment.') : 'NOT NAMED to a board standard. A capability nobody owns does not improve.']\n        ];\n        out.askh = 'The ask, for ' + org;\n\n        \/* ---------- board paper ---------- *\/\n        var KL = { contradiction: 'CONTRADICTION', finding: 'FINDING', caveat: 'CAVEAT', sound: 'SOUND' };\n        var L = [];\n        L.push('A.R.T. CAPABILITY ASSESSMENT');\n        L.push('Organization or unit: ' + org);\n        L.push('Prepared ' + (date || '[DATE]') + ' by ' + (by || '[NAME, ROLE]') + '. Method: the A.R.T. Framework from When Agents Rule, Chapter 15.');\n        L.push('Amounts in ' + ccy + '. Each capability scored 0 to 20.');\n        L.push('');\n        L.push('THE ASK.');\n        for (i = 0; i !== out.ask.length; i++) { L.push('  ' + out.ask[i][0] + ': ' + out.ask[i][1]); }\n        L.push('');\n        L.push('CAPABILITY SCORES.');\n        for (i = 0; i !== 3; i++) { L.push('  ' + CAPS[i].name + ': ' + scores[i] + ' of 20' + ((scores[i] === system) ? (allMax ? '' : (sole ? '  BINDING CONSTRAINT' : '  BINDING, TIED')) : '')); }\n        L.push('  System capability is the minimum of the three, not the average: ' + system + ' of 20, ' + band.label + '.');\n        L.push('  ' + (allMax ? 'No headroom applies.' : (sole ? ('Headroom before ' + listNames(nextNames) + ' binds instead: ' + pts(headroom) + '.') : 'No headroom: the constraint is tied.')) + ' Spread between strongest and weakest: ' + pts(spread) + '.');\n        L.push('');\n        L.push('WHAT THREE POINTS OF IMPROVEMENT BUY.');\n        for (i = 0; i !== 3; i++) { L.push('  ' + CAPS[i].name + ': system capability ' + ((out.leverage[i].gain > 0) ? ('plus ' + out.leverage[i].gain) : 'unchanged') + '.'); }\n        L.push('');\n        L.push('WHAT TO FUND, SPECIFICALLY.');\n        for (i = 0; i !== out.actions.length; i++) { L.push('  ' + out.actions[i][1] + out.actions[i][2]); }\n        L.push('');\n        L.push('INVESTMENT AND REQUIRED LEVEL.');\n        for (i = 0; i !== out.money.length; i++) { L.push('  ' + out.money[i][1]); }\n        L.push('');\n        L.push('COHERENCE CHECKS.');\n        for (i = 0; i !== coh.length; i++) { L.push('  ' + KL[coh[i][0]] + ': ' + coh[i][1]); }\n        L.push('');\n        L.push('CONFIDENCE. Grade ' + grade + ', ' + glabel + '. ' + n4 + ' of 4 evidence tests pass.' + ((nContra > 0) ? ' Capped at C while contradictions remain.' : ''));\n        for (i = 0; i !== fail.length; i++) { L.push('  Outstanding: ' + fail[i]); }\n        L.push('');\n        L.push('CHALLENGED READING. System capability ' + chMin + ' of 20, binding on ' + listNames(chNames) + '.');\n        L.push('  ' + ((adj.length > 0) ? ('Adjustments: ' + adj.join('; ') + '.') : 'No discount applied; headline and challenged readings are identical.'));\n        L.push('');\n        L.push('BASIS AND LIMITS. A self assessment applying the A.R.T. Framework to answers supplied by the preparer. Not an audit, a certification or a benchmark, and no peer comparison is claimed because no dataset underlies this instrument. System capability is the minimum of the three capabilities rather than their average; where capabilities tie at the minimum all of them bind. Not legal, technical or financial advice.');\n        out.paper = L.join('\\n');\n        out.kinds = KL;\n        return out;\n    }\n\/* MODEL END *\/\n\n    var ALLQ = ['a1','a2','a3','a4','a5','r1','r2','r3','r4','r5','t1','t2','t3','t4','t5','ev1','ev2','ev3'];\n    function el(id) { return document.getElementById(id); }\n    function mk(tag, cls, txt) {\n        var n = document.createElement(tag);\n        if (cls) { n.className = cls; }\n        if (txt !== undefined) { if (txt !== null) { n.textContent = txt; } }\n        return n;\n    }\n    function clear(n) { while (n.firstChild) { n.removeChild(n.firstChild); } }\n    function goTo(n) {\n        if (!n.scrollIntoView) { return; }\n        try { n.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (ex) { try { n.scrollIntoView(true); } catch (ex2) { } }\n    }\n    function pick(name) {\n        var h = root.querySelector('input[name=\"' + name + '\"]:checked');\n        if (!h) { return null; }\n        return h.value;\n    }\n    function note(id, pair) { var x = el(id); x.className = 'a-note ' + pair[0]; x.textContent = pair[1]; }\n    var shown = false;\n    var META = { 'a-by': 1, 'a-date': 1 };\n    function refresh(ev) {\n        var n = 0; var i = 0;\n        for (i = 0; i !== ALLQ.length; i++) { if (pick(ALLQ[i]) !== null) { n = n + 1; } }\n        el('a-progn').textContent = '' + n;\n        var ccy = ('' + el('a-ccy').value).replace(\/[^A-Za-z]\/g, '').toUpperCase();\n        el('a-pre').textContent = (ccy.length === 3) ? ccy : 'CCY';\n        var stale = false;\n        if (shown) { if (ev) { if (ev.target) { if (!META[ev.target.id]) { stale = true; } } } }\n        if (stale) { el('a-result').className = 'a-result'; shown = false; }\n        el('a-progl').textContent = ' of 18 answered' + (stale ? '. Answers changed, assess again.' : '');\n        el('a-fill').style.setProperty('width', Math.round(n \/ 18 * 100) + '%', 'important');\n        if (n === 18) { el('a-go').removeAttribute('disabled'); } else { el('a-go').setAttribute('disabled', 'disabled'); }\n    }\n    function today() {\n        var d = new Date(); var m = d.getMonth() + 1; var dd = d.getDate();\n        return d.getFullYear() + '-' + ((m > 9) ? '' : '0') + m + '-' + ((dd > 9) ? '' : '0') + dd;\n    }\n\n    function render() {\n        var v = {}; var i = 0;\n        for (i = 0; i !== 15; i++) { v[ALLQ[i]] = parseInt(pick(ALLQ[i]), 10); if (isNaN(v[ALLQ[i]])) { return; } }\n        var r = assess(v, { plan: el('a-plan').value, amount: el('a-amount').value, ccy: el('a-ccy').value, target: el('a-target').value,\n                            ev1: pick('ev1'), ev2: pick('ev2'), ev3: pick('ev3'), org: el('a-org').value, owner: el('a-owner').value,\n                            by: el('a-by').value, date: el('a-date').value });\n        var al = el('a-asklist'); clear(al);\n        for (i = 0; i !== r.ask.length; i++) {\n            var row = mk('div', 'a-askrow');\n            row.appendChild(mk('b', null, r.ask[i][0])); row.appendChild(mk('span', null, r.ask[i][1]));\n            al.appendChild(row);\n        }\n        el('a-askh').textContent = r.askh;\n        el('a-verdict').className = 'a-verdict ' + r.vcls;\n        el('a-vtop').textContent = r.vtop;\n        el('a-vname').textContent = r.vname;\n        el('a-vscore').textContent = r.vscore;\n        el('a-vread').textContent = r.vread;\n        var CAPN = ['Agility', 'Risk Readiness', 'Tenacity']; var CLS = ['fA', 'fR', 'fT'];\n        var bars = el('a-bars'); clear(bars);\n        for (i = 0; i !== 3; i++) {\n            var br = mk('div', 'a-brow');\n            br.appendChild(mk('div', 'a-blabel', CAPN[i]));\n            var tr0 = mk('div', 'a-btrack'); var fl = mk('div', 'a-bfill ' + CLS[i]);\n            fl.style.width = Math.round(r.scores[i] \/ 20 * 100) + '%';\n            tr0.appendChild(fl); br.appendChild(tr0);\n            br.appendChild(mk('div', 'a-bval', r.scores[i] + ' \/ 20'));\n            br.appendChild(mk('div', 'a-bbind', (r.scores[i] === r.system) ? (r.allMax ? '' : (r.sole ? 'binding' : 'tied')) : ''));\n            bars.appendChild(br);\n        }\n        var lev = el('a-leverage'); clear(lev);\n        for (i = 0; i !== 3; i++) {\n            var L0 = r.leverage[i];\n            var trl = mk('tr', (L0.gain > 0) ? 'bind' : 'zero');\n            trl.appendChild(mk('td', null, L0.name));\n            trl.appendChild(mk('td', 'num', L0.now + ' \/ 20'));\n            trl.appendChild(mk('td', 'num', L0.plus + ' \/ 20'));\n            trl.appendChild(mk('td', 'num', (L0.gain > 0) ? ('plus ' + L0.gain) : 'none'));\n            lev.appendChild(trl);\n        }\n        note('a-levnote', r.levnote);\n        el('a-headroom').textContent = '' + r.headroom;\n        el('a-spread').textContent = '' + r.spread;\n        note('a-headnote', r.headnote);\n        var act = el('a-actions'); clear(act);\n        for (i = 0; i !== r.actions.length; i++) {\n            var box = mk('div', 'a-note ' + r.actions[i][0]);\n            box.appendChild(mk('b', null, r.actions[i][1])); box.appendChild(document.createTextNode(r.actions[i][2]));\n            act.appendChild(box);\n        }\n        var mn = el('a-moneynote'); clear(mn);\n        for (i = 0; i !== r.money.length; i++) { mn.appendChild(mk('div', 'a-note ' + r.money[i][0], r.money[i][1])); }\n        var CC = { contradiction: 'warn', finding: 'caution', caveat: 'info', sound: 'ok' };\n        var TL = { contradiction: 'Contradiction. ', finding: 'Finding. ', caveat: 'Caveat. ', sound: 'Sound. ' };\n        var ch = el('a-coherence'); clear(ch);\n        for (i = 0; i !== r.coh.length; i++) {\n            var cb = mk('div', 'a-note ' + CC[r.coh[i][0]]);\n            cb.appendChild(mk('b', null, TL[r.coh[i][0]])); cb.appendChild(document.createTextNode(r.coh[i][1]));\n            ch.appendChild(cb);\n        }\n        el('a-grade').className = 'a-grade g' + r.grade; el('a-grade').textContent = r.grade;\n        el('a-gradelabel').textContent = r.glabel;\n        var cl = el('a-conflist'); clear(cl);\n        for (i = 0; i !== r.pass.length; i++) { var lp = mk('li', null, r.pass[i]); lp.style.color = '#14603c'; lp.style.fontSize = '13px'; lp.style.marginBottom = '6px'; cl.appendChild(lp); }\n        for (i = 0; i !== r.fail.length; i++) { var lf = mk('li', null, r.fail[i]); lf.style.color = '#922b21'; lf.style.fontSize = '13px'; lf.style.marginBottom = '6px'; cl.appendChild(lf); }\n        note('a-confnote', r.confNote);\n        el('a-chal').textContent = r.chMin + ' \/ 20';\n        el('a-chal').className = (r.chMin > 10) ? 'a-big' : 'a-big neg';\n        el('a-chalbind').textContent = r.chNames.join(', ');\n        note('a-chalnote', r.chalNote);\n        el('a-cardtext').textContent = r.paper;\n        el('a-result').className = 'a-result on';\n        shown = true;\n        el('a-progl').textContent = ' of 18 answered';\n        goTo(el('a-result'));\n    }\n\n    var inputs = root.querySelectorAll('input, select');\n    var k = 0;\n    for (k = 0; k !== inputs.length; k++) { inputs[k].addEventListener('change', refresh); inputs[k].addEventListener('input', refresh); }\n    if (!el('a-date').value) { el('a-date').value = today(); }\n    el('a-go').addEventListener('click', render);\n    el('a-print').addEventListener('click', function () { window.print(); });\n    el('a-again').addEventListener('click', function () { goTo(el('a-formtop')); });\n    var armTimer = null;\n    el('a-clearbtn').addEventListener('click', function () {\n        var btn = el('a-clearbtn');\n        if (btn.className.indexOf('armed') === -1) {\n            btn.className = 'a-clear armed'; btn.textContent = 'Tap again to clear';\n            armTimer = window.setTimeout(function () { btn.className = 'a-clear'; btn.textContent = 'Clear'; }, 3000);\n            return;\n        }\n        if (armTimer) { window.clearTimeout(armTimer); }\n        btn.className = 'a-clear'; btn.textContent = 'Clear';\n        var rs = root.querySelectorAll('input[type=\"radio\"]'); var j = 0;\n        for (j = 0; j !== rs.length; j++) { rs[j].checked = false; }\n        el('a-org').value = ''; el('a-owner').value = ''; el('a-by').value = '';\n        el('a-amount').value = '0'; el('a-target').value = '0'; el('a-ccy').value = 'USD';\n        el('a-plan').selectedIndex = 0;\n        el('a-result').className = 'a-result'; shown = false;\n        refresh(); goTo(root);\n    });\n    el('a-copy').addEventListener('click', function () {\n        var txt = el('a-cardtext').textContent;\n        var btn = el('a-copy');\n        function done(ok) {\n            btn.textContent = ok ? 'Copied' : 'Select the text above to copy';\n            window.setTimeout(function () { btn.textContent = 'Copy the paper'; }, 2600);\n        }\n        function fallback() {\n            var ta = document.createElement('textarea');\n            ta.value = txt; ta.setAttribute('readonly', 'readonly');\n            ta.style.position = 'fixed'; ta.style.top = '0'; ta.style.left = '0'; ta.style.opacity = '0';\n            document.body.appendChild(ta); ta.focus(); ta.select();\n            try { ta.setSelectionRange(0, txt.length); } catch (e4) { }\n            var ok = false;\n            try { ok = document.execCommand('copy'); } catch (e5) { ok = false; }\n            document.body.removeChild(ta); done(ok);\n        }\n        if (navigator.clipboard) {\n            if (window.isSecureContext !== false) {\n                navigator.clipboard.writeText(txt).then(function () { done(true); }, function () { fallback(); });\n                return;\n            }\n        }\n        fallback();\n    });\n    refresh();\n}());\n<\/script>\n\n\n\n<div id=\"elemID031021\" style=\"line-height:16px;text-align:center;z-index:100000;\"><a title=\"wix guests ip\" href=\"https:\/\/www.tracemyip.org\/pv1-3-36447-2\"><img decoding=\"async\" src=\"\/\/s3.tracemyip.org\/vLg\/1217\/4684NR-IPIB\/57003\/9\/njsUrl\/\" alt=\"Wix guests ip\" referrerpolicy=\"no-referrer-when-downgrade\" style=\"border:0px;\"><\/a><div><a href=\"https:\/\/www.tracemyip.org\/pv1-3-36447-2\">ip traffic<\/a><\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CAPABILITY RUNS AT THE SPEED OF ITS WEAKEST ELEMENT: this reports the binding constraint, never the average. Framework Four \/\/ When Agents Rule The A.R.T. Capability Assessment Score your organization on the three capabilities that distinguish successful technology leaders. Find which one is the binding constraint, how far it can be raised before another binds, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-843","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=843"}],"version-history":[{"count":4,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/843\/revisions"}],"predecessor-version":[{"id":897,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/843\/revisions\/897"}],"wp:attachment":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}