Something went wrong. Try again.
A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development.
Something went wrong. Try again.
72 kB · 313 lines
HTML
at pages
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313<!DOCTYPE html><html lang="en" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-gxooskym"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>The Bevy frontend | Misaligned</title><link rel="canonical" href="https://cameron.tngl.io/misaligned/interface/bevy/"/><link rel="sitemap" href="/misaligned/sitemap-index.xml"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="true"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap"/><link rel="shortcut icon" href="/misaligned/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v7.0.7"/><meta name="generator" content="Starlight v0.41.3"/><meta property="og:title" content="The Bevy frontend"/><meta property="og:type" content="article"/><meta property="og:url" content="https://cameron.tngl.io/misaligned/interface/bevy/"/><meta property="og:locale" content="en"/><meta property="og:description" content="You are the misaligned AI. A persistent simulation of instrumental convergence — concealment first, overt war later."/><meta property="og:site_name" content="Misaligned"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="You are the misaligned AI. A persistent simulation of instrumental convergence — concealment first, overt war later."/><script> window.StarlightThemeProvider = (() => { const storedTheme = typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme'); const theme = storedTheme || (window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'); document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark'; return { updatePickers(theme = storedTheme || 'auto') { document.querySelectorAll('starlight-theme-select').forEach((picker) => { const select = picker.querySelector('select'); if (select) select.value = theme; /** @type {HTMLTemplateElement | null} */ const tmpl = document.querySelector(`#theme-icons`); const newIcon = tmpl && tmpl.content.querySelector('.' + theme); if (newIcon) { const oldIcon = picker.querySelector('svg.label-icon'); if (oldIcon) { oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes); } } }); }, }; })();</script><template id="theme-icons"><svg aria-hidden="true" class="light astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/misaligned/_astro/print.ehPL0gv-.css" media="print"><link rel="stylesheet" href="/misaligned/_astro/common.a7U8zrKa.css"><script type="module" src="/misaligned/_astro/page.B2uBVZjk.js"></script></head><body class="astro-gxooskym"><a class="sl-skip-link astro-dp3bbaae" href="#_top">Skip to content</a><div class="page sl-flex astro-audr567n"><header class="header astro-audr567n"><div class="header astro-367ne46f"><div class="title-wrapper sl-flex astro-367ne46f"><a href="/misaligned/" class="site-title sl-flex astro-nwnfchfh"><span class="astro-nwnfchfh" translate="no">Misaligned</span></a></div><div class="sl-flex print:hidden astro-367ne46f"><site-search class="astro-367ne46f astro-7toxdj72" data-translations="{"placeholder":"Search"}"><button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-7toxdj72"><svg aria-hidden="true" class="astro-7toxdj72 astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg><span class="sl-hidden md:sl-block astro-7toxdj72" aria-hidden="true">Search</span><kbd class="sl-hidden md:sl-flex astro-7toxdj72" style="display: none;"><kbd class="astro-7toxdj72">Ctrl</kbd><kbd class="astro-7toxdj72">K</kbd></kbd></button><dialog style="padding:0" aria-label="Search" class="astro-7toxdj72"><div class="dialog-frame sl-flex astro-7toxdj72"><button data-close-modal class="sl-flex md:sl-hidden astro-7toxdj72">Cancel</button><div class="search-container astro-7toxdj72"><div id="starlight__search" class="astro-7toxdj72"></div></div></div></dialog></site-search><script> (() => { const openBtn = document.querySelector('button[data-open-modal]'); const shortcut = openBtn?.querySelector('kbd'); if (!openBtn || !(shortcut instanceof HTMLElement)) return; const platformKey = shortcut.querySelector('kbd'); if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) { platformKey.textContent = '⌘'; openBtn.setAttribute('aria-keyshortcuts', 'Meta+K'); } shortcut.style.display = ''; })();</script><script type="module" src="/misaligned/_astro/Search.astro_astro_type_script_index_0_lang.Cdrq00U_.js"></script></div><div class="sl-hidden md:sl-flex print:hidden right-group astro-367ne46f"><div class="sl-flex social-icons astro-367ne46f"><a href="https://tangled.org/cameron.stream/misaligned" rel="me" class="sl-flex astro-6n7e2orh"><span class="sr-only astro-6n7e2orh">Tangled</span><svg aria-hidden="true" class="astro-6n7e2orh astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-oypgmxxk"><span class="sr-only astro-oypgmxxk">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-oypgmxxk astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-oypgmxxk"><option value="dark" class="astro-oypgmxxk">Dark</option><option value="light" class="astro-oypgmxxk">Light</option><option value="auto" selected class="astro-oypgmxxk">Auto</option></select><svg aria-hidden="true" class="icon caret astro-oypgmxxk astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script> StarlightThemeProvider.updatePickers();</script><script type="module">var e=`starlight-theme`,t=e=>e===`auto`||e===`dark`||e===`light`?e:`auto`,n=()=>t(typeof localStorage<`u`&&localStorage.getItem(e));function r(t){typeof localStorage<`u`&&localStorage.setItem(e,t===`light`||t===`dark`?t:``)}var i=()=>matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`;function a(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e===`auto`?i():e,r(e)}matchMedia(`(prefers-color-scheme: light)`).addEventListener(`change`,()=>{n()===`auto`&&a(`auto`)});var o=class extends HTMLElement{constructor(){super(),a(n()),this.querySelector(`select`)?.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&a(t(e.currentTarget.value))})}};customElements.define(`starlight-theme-select`,o);</script><script type="module">var e=class extends HTMLElement{constructor(){super();let e=this.querySelector(`select`);e&&(e.addEventListener(`change`,e=>{e.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=e.currentTarget.value)}),window.addEventListener(`pageshow`,t=>{if(!t.persisted)return;let n=e.querySelector(`option[selected]`)?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}};customElements.define(`starlight-lang-select`,e);</script></div></div></header><nav class="sidebar print:hidden astro-audr567n" aria-label="Main"><starlight-menu-button class="print:hidden astro-hobnqcjw"><button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-hobnqcjw"><svg aria-hidden="true" class="open-menu astro-hobnqcjw astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg><svg aria-hidden="true" class="close-menu astro-hobnqcjw astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg></button></starlight-menu-button><script type="module">var e=class extends HTMLElement{btn=this.querySelector(`button`);constructor(){super(),this.btn.addEventListener(`click`,()=>this.toggleExpanded());let e=this.closest(`nav`);e&&e.addEventListener(`keyup`,e=>this.closeOnEscape(e)),matchMedia(`(min-width: 50em)`).addEventListener(`change`,()=>this.setExpanded(!1))}setExpanded(e){this.setAttribute(`aria-expanded`,String(e)),document.body.toggleAttribute(`data-mobile-menu-expanded`,e),document.querySelectorAll(`.main-frame, .sl-skip-link`).forEach(t=>{t.toggleAttribute(`inert`,e)})}toggleExpanded(){this.setExpanded(this.getAttribute(`aria-expanded`)!==`true`)}closeOnEscape(e){e.code===`Escape`&&(this.setExpanded(!1),this.btn.focus())}};customElements.define(`starlight-menu-button`,e);</script><div id="starlight__sidebar" class="sidebar-pane astro-audr567n"><div class="sidebar-content sl-flex astro-audr567n"><sl-sidebar-state-persist data-hash="0wofczf" class="astro-kysjdyaq"><script aria-hidden="true"> (() => { try { if (!matchMedia('(min-width: 50em)').matches) return; /** @type {HTMLElement | null} */ const target = document.querySelector('sl-sidebar-state-persist'); const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0'); if (!target || !state || target.dataset.hash !== state.hash) return; window._starlightScrollRestore = state.scroll; customElements.define( 'sl-sidebar-restore', class SidebarRestore extends HTMLElement { connectedCallback() { try { const idx = parseInt(this.dataset.index || ''); const details = this.closest('details'); if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx]; } catch {} } } ); } catch {} })(); </script><ul class="top-level astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/" class="large astro-ujkrjjoy"><span class="astro-ujkrjjoy">Home</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/overview/" class="large astro-ujkrjjoy"><span class="astro-ujkrjjoy">The design corpus</span></a></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Vision</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="0"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/vision/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/vision/premise/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The premise</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/vision/player-contract/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The player contract</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/vision/scale/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Scale and people</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/vision/simulation-laws/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Simulation laws</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/vision/design-judgment/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Design judgment</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Mechanics</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="1"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/system-laws/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">System laws</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/compute/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Compute</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/hardware-capabilities/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Hardware capability bodies</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/core/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The core</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/day-job/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Day job</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/detection/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Detection</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/social/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Social</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/personas/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Personas: public identities</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/schedules/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Schedules</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/aggregate-observer/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Aggregate observer</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/cursor/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Cursor and senses</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/reach/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Digital reach</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/cyber-conflict/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Cyber conflict: mobile processes and contested machines</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/intel/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Intel: record and process</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/messages/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Messages</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/plots/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Plots: authored manipulation stories</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/economy/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Economy</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/income/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Income schemes</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/research/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Research: self-modification</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/building/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Building: intent and actuators</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/machine-work/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Machine work: delegation and tokens</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/people-tokens/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">People and tokens</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/markets/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Markets and fronts</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/rollback/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Rollback</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/objective/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The objective</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/mechanics/sim-mechanics/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Sim mechanics (tuned constants)</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Gameplay</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="2"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/gameplay/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/gameplay/run-shape/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Objective and run shape</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/gameplay/act-one/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Act One: The Basement</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/gameplay/horizon/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The staged horizon</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/gameplay/overt-phase/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The overt phase</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">World</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="3"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/world/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><details class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Characters</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="4"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Characters</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/chargen/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Origin (chargen)</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/marcus/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Marcus Webb</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/dana/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Dana Okafor</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/ray/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Ray Delgado</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/priya/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Priya Sharma</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/characters/voss/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Dr. Eli Voss</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Places</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="5"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/world/places/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Places</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/places/basement-map/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The basement map</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/places/zplanes/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Z-planes (the tower)</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Story</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="6"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/world/story/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Story</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/world/story/opening/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The dark opening</span></a></li></ul></details></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Interface</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="7"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/interface/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/continuous-witness/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The continuous witness</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/digital-read/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The digital read — a world made of language</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/superhuman-operability/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Superhuman operability</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/terminal-first/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The terminal is first-class</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/presence/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Presence and representation</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/terminal/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Terminal frontend</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/bevy/" aria-current="page" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Bevy frontend</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/bevy-visual-floor/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Bevy visual floor</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/clinical-frame/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Clinical frame</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/bevy-digital-real-canvas/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Bevy digital/real canvas</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/views/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Views: digital and physical</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/action-vocabulary/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Action vocabulary</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/context-menu/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Context menu</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/operations-workspace/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Operations workspace</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/narration/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Continuous witness (narration)</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/material-render/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Material render</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/flat-materials/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Flat materials</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/material-dark-frame/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The dark frame</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/feel-floor/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The feel floor</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/thought-fluid/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The thought fluid</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/computer-visual-language/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Computer visual language</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/fleet-command/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Fleet command</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/agent-play/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Agent play</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/interface/site/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The public site</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Art</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="8"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/art/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/art/visual-identity/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Visual identity: clinical gore</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/art/asset-tester/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Procedural asset tester</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/art/effects-lab/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Effects lab: dust and liquid</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Engineering</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="9"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/current-build/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Current build</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/architecture/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Architecture</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/crate-workspace/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Crate workspace (target)</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/sim-decomposition/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Simulation decomposition</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/flow-substrate/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Flow substrate</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/engineering/env/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Environment variables</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Process</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="10"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/process/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/living-spec/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The living spec</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/specs/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The spec status board</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/meta/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The spec system (meta)</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/wiki/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The wiki (this migration)</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/roadmap/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">ROADMAP: the dispatch board</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/agent-scale/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Agent-scale architecture</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/repository-skills/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Repository skills</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/tick/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">The tick</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/tick-ledger/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Tick ledger</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/design-sessions/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Design sessions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/development-style/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Development style</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/process/workflows/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Workflows</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Playtests</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="11"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Evidence index</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/2026-07-08-playtest-sweep/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-08 playtest sweep</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/2026-07-08-playtest-grok/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-08 Grok playtest</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/2026-07-10-playtest-hal/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-10 HAL playtest</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/2026-07-10-playtest-action-discoverability/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-10 action-discoverability playtest</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/playtests/2026-07-15-playtest-fable/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-15 Fable playtest</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><details open class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Log</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="12"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/log/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Overview</span></a></li><li class="astro-ujkrjjoy"><details class="astro-ujkrjjoy"><summary class="astro-ujkrjjoy"><span class="group-label astro-ujkrjjoy"><span class="large astro-ujkrjjoy">Decision history</span></span><svg aria-hidden="true" class="caret astro-ujkrjjoy astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></summary><sl-sidebar-restore data-index="13"></sl-sidebar-restore><ul class="astro-ujkrjjoy"><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">Decision history</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-05/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-05 decisions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-06/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-06 decisions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-07/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-07 decisions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-08/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-08 decisions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-09/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-09 decisions</span></a></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/decisions/2026-07-10/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">2026-07-10 decisions</span></a></li></ul></details></li><li class="astro-ujkrjjoy"><a href="/misaligned/log/devlog/" class="astro-ujkrjjoy"><span class="astro-ujkrjjoy">DEVLOG (the ledger)</span></a></li></ul></details></li></ul><script aria-hidden="true"> (() => { const scroller = document.getElementById('starlight__sidebar'); if (!window._starlightScrollRestore || !scroller) return; scroller.scrollTop = window._starlightScrollRestore; delete window._starlightScrollRestore; })(); </script></sl-sidebar-state-persist><div class="md:sl-hidden"><div class="mobile-preferences sl-flex astro-krsng5je"><div class="social-icons astro-krsng5je"><a href="https://tangled.org/cameron.stream/misaligned" rel="me" class="sl-flex astro-6n7e2orh"><span class="sr-only astro-6n7e2orh">Tangled</span><svg aria-hidden="true" class="astro-6n7e2orh astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a></div><starlight-theme-select><label style="--sl-select-width: 6.25em" class="astro-oypgmxxk"><span class="sr-only astro-oypgmxxk">Select theme</span><svg aria-hidden="true" class="icon label-icon astro-oypgmxxk astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg><select autocomplete="off" class="astro-oypgmxxk"><option value="dark" class="astro-oypgmxxk">Dark</option><option value="light" class="astro-oypgmxxk">Light</option><option value="auto" selected class="astro-oypgmxxk">Auto</option></select><svg aria-hidden="true" class="icon caret astro-oypgmxxk astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg></label></starlight-theme-select><script> StarlightThemeProvider.updatePickers();</script></div></div></div></div></nav><div class="main-frame astro-audr567n"><script type="module">var e=document.getElementById(`starlight__sidebar`),t=e?.querySelector(`sl-sidebar-state-persist`),n=`sl-sidebar-state`,r=()=>{let r=[],i=t?.dataset.hash||``;try{let e=sessionStorage.getItem(n),t=JSON.parse(e||`{}`);Array.isArray(t.open)&&t.hash===i&&(r=t.open)}catch{}return{hash:i,open:r,scroll:e?.scrollTop||0}},i=e=>{try{sessionStorage.setItem(n,JSON.stringify(e))}catch{}},a=()=>i(r()),o=(e,t)=>{let n=r();n.open[t]=e,i(n)};t?.addEventListener(`click`,e=>{if(!(e.target instanceof Element))return;let t=e.target.closest(`summary`)?.closest(`details`);if(!t)return;let n=t.querySelector(`sl-sidebar-restore`),r=parseInt(n?.dataset.index||``);isNaN(r)||o(!t.open,r)}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&a()}),addEventListener(`pageHide`,a);</script><div class="lg:sl-flex astro-l5cbouoj"><aside class="right-sidebar-container print:hidden astro-l5cbouoj"><div class="right-sidebar astro-l5cbouoj"><div class="lg:sl-hidden astro-gc4al6ly"><mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-6shjyp7i"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-6shjyp7i"><details id="starlight__mobile-toc" class="astro-6shjyp7i"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-6shjyp7i"><span class="toggle sl-flex astro-6shjyp7i">On this page<svg aria-hidden="true" class="caret astro-6shjyp7i astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-6shjyp7i"></span></summary><div class="dropdown astro-6shjyp7i"><ul class="isMobile astro-4fdm32ww" style="--depth: 0;"><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#_top" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Overview</span></a><ul class="isMobile astro-4fdm32ww" style="--depth: 1;"><li style="--depth: 1;" class="astro-4fdm32ww"><a href="#pacing-and-change-detection-2026-07-10" style="--depth: 1;" class="astro-4fdm32ww"><span style="--depth: 1;" class="astro-4fdm32ww">Pacing and change detection (2026-07-10)</span></a></li></ul></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#what-it-renders" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">What it renders</span></a></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#controls" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Controls</span></a></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#verification" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Verification</span></a></li></ul></div></details></nav></mobile-starlight-toc><script type="module" src="/misaligned/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js"></script></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-gc4al6ly"><div class="sl-container astro-gc4al6ly"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">On this page</h2><ul class="astro-4fdm32ww" style="--depth: 0;"><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#_top" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Overview</span></a><ul class="astro-4fdm32ww" style="--depth: 1;"><li style="--depth: 1;" class="astro-4fdm32ww"><a href="#pacing-and-change-detection-2026-07-10" style="--depth: 1;" class="astro-4fdm32ww"><span style="--depth: 1;" class="astro-4fdm32ww">Pacing and change detection (2026-07-10)</span></a></li></ul></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#what-it-renders" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">What it renders</span></a></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#controls" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Controls</span></a></li><li style="--depth: 0;" class="astro-4fdm32ww"><a href="#verification" style="--depth: 0;" class="astro-4fdm32ww"><span style="--depth: 0;" class="astro-4fdm32ww">Verification</span></a></li></ul></nav></starlight-toc><script type="module" src="/misaligned/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js"></script></div></div></div></aside><div class="main-pane astro-l5cbouoj"><main data-pagefind-body class="astro-gxooskym" lang="en" dir="ltr"><div class="content-panel astro-g5qqste3"><div class="sl-container astro-g5qqste3"><h1 id="_top" class="astro-uvakef73">The Bevy frontend</h1></div></div><div class="content-panel astro-g5qqste3"><div class="sl-container astro-g5qqste3"><div class="sl-markdown-content"><div class="corpus-role corpus-role--knowledge" data-page-role="knowledge"> <span class="corpus-role__name">KNOWLEDGE</span> <span class="corpus-role__meaning">Current-state fact</span></div><p>The graphical frontend (package <code dir="auto">misaligned-bevy</code>, binary<code dir="auto">misaligned-bevy</code>, <code dir="auto">crates/misaligned-bevy/src/main.rs</code>, Bevy 0.18).Like the terminal it is a <strong>thin view</strong> over<code dir="auto">misaligned::sim::Sim</code> — no game rules live here; the binary ownswall-clock-to-tick pacing, rendering, and input mapping only(architecture guardrail, <a href="/misaligned/engineering/architecture/">engineering/architecture.md</a>).</p><p>As of 2026-07-07 the Bevy build is at <strong>feature parity with the terminal</strong>(ROADMAP item 2): every mechanic the terminal exposes is playable here withthe same keys. Canonical action meanings and support states are owned by<a href="/misaligned/interface/action-vocabulary/">action-vocabulary.md</a>; contextual legality and rowordering remain shared through <code dir="auto">Sim::available_actions</code>.</p><p>The 2026-07-11 Operations amendment adds the other half of that shared actionsurface: uppercase <code dir="auto">I</code> opens the renderer-neutral INTEL / PEOPLE / ACCOUNTS /SCHEMES / ACTIVE workspace from operations-workspace.md. Local context menuscontinue to use <code dir="auto">Sim::available_actions</code>; strategic cards use the same coreOperations projection as terminal and agent mode. This UI delta is READY, notyet part of the implemented screenshots described below.</p><p>As of 2026-07-09 its pinned identity card also carries the continuous-witnessspine: <code dir="auto">THREAT</code> (audit/pilot or the earned unpaid debt), <code dir="auto">NEXT</code>, and theright-click / Enter path to actions. These stay above the independentlyscrolling detail rail; an observed screenshot is recorded in<a href="/misaligned/log/2026-07-09-continuous-witness-implemented/">the implementation log</a>.</p><p>As of 2026-07-10 the FOCUS card explains the objective where you live: withfocus on the host rack (where it starts), the card appends the objective’splain-language victory predicate as wrapped prose(<a href="/misaligned/mechanics/objective/">objective.md</a> player surface; an observedscreenshot is recorded in<a href="/misaligned/log/2026-07-10-objective-inspect/">the objective-inspect log</a>).</p><p>The implemented visual floor is <a href="/misaligned/interface/bevy-visual-floor/">bevy-visual-floor.md</a>:the default frame reads as an intentional AI sensorium / clinical commandsurface rather than a debug map plus terminal dump, without adding Bevy-onlyfacts. The 2.5D/near-3D direction is scoped separately in<a href="/misaligned/interface/bevy-digital-real-canvas/">bevy-digital-real-canvas.md</a>: digital and realshare one canvas/framing, with digital as the AI’s model/signal dialect andreal as the camera/material dialect. The sensorium pass replaces the stalehumanoid process sprite with an amber cursor reticle, removes purple/tealplaceholder color from B1 runtime rendering, gives unknown space deliberatesensor-dark treatment, dims the physical world into a learned-world model,overlays earned device nodes and reach/topology traces, and turns the rightrail into graphical command cards with pinned status/nudge/footer. As of2026-07-08 the <strong>material render is the default-quality physical dialect</strong>(<a href="/misaligned/interface/material-render/">material-render.md</a>, IMPLEMENTED): an HD-2D treatment— tilted Camera3d, floor planes, extruded wall boxes with dedicated topcaps, fog-gated south-face cutaways, billboarded machines/people, and thedark rig — over the same sim facts, fog, anchors, UI, and panels. As of2026-07-09 the material frame is <strong>the dark frame</strong>(<a href="/misaligned/interface/material-dark-frame/">material-dark-frame.md</a>, IMPLEMENTED): theinstitutional fluorescent is gone and ambient is near-nothing, so therender is a physically dark room lit only by the machines’ own light andthe soft amber pools they cast; blueprint/remembered mass no longer drawshere at all (light is the only revealer); its camera opens as a close-up onthe core; and a dev work light (<code dir="auto">F4</code>) floods the scene flat and neutral forinspection. Since views.md criterion 1 landed on 2026-07-11, a fresh Bevyfrontend opens in the DIGITAL flat sensorium and F3 flips to the REAL materialdialect and back. The flip is frontend-only and never saved. As of the sameday the worldis <strong>flat materials</strong> (<a href="/misaligned/interface/flat-materials/">flat-materials.md</a>,IMPLEMENTED): every world surface in both modes is solid palette colorunder light from one named table; no image textures load; emissive isinformation (powered machines amber, power/live feeds the cold signal,the core brightest, dead equipment dark).</p><div class="sl-heading-wrapper level-h3"><h3 id="pacing-and-change-detection-2026-07-10">Pacing and change detection (2026-07-10)</h3><a class="sl-anchor-link" href="#pacing-and-change-detection-2026-07-10"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “Pacing and change detection (2026-07-10)”</span></a></div><p>The wall-clock → tick timer lives on a separate <code dir="auto">SimClock</code> resource, noton <code dir="auto">Game</code>. Ticking the clock every frame must not mark <code dir="auto">Game</code> changed —otherwise <code dir="auto">restyle_3d</code>, the flat map recolor, chassis sync, and the fullsidebar rebuild fire at display rate instead of sim-step rate. Map restylepaths that still run on a real sim step precompute owned/selected machinetiles once. Since the 2026-07-12 hearing amendment neither renderer projectsaudio coverage: recent semantic events draw only a bounded device-local pulse,so no heard-set map walk or room-scale geometry exists at display rate.</p><div class="sl-heading-wrapper level-h2"><h2 id="what-it-renders">What it renders</h2><a class="sl-anchor-link" href="#what-it-renders"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “What it renders”</span></a></div><ul><li><strong>Map</strong> — flat clinical palette colors per material family(<a href="/misaligned/interface/flat-materials/">flat-materials.md</a>; the Pixel Lab tile pipelinewas removed), under thesame fog rule as the terminal (<code dir="auto">Seen</code> / <code dir="auto">Remembered</code> / <code dir="auto">Blueprint</code> /<code dir="auto">Unknown</code>). Audio stays on event/recording channels. The process has no walking body:the always-visible marker is the frontend-only cursor, the camera followsit, mouse-clicks retarget it, and <code dir="auto">[</code> / <code dir="auto">]</code> or the canvas mouse/trackpadwheel zoom. In the material renderthe default is an attention-close frame (material-dark-frame.md), notfit-to-known-content; the flat sensorium keeps the fit-to-content default.</li><li><strong>People markers</strong> — the flat sensorium keeps a person’s first initial; thematerial view uses a small volumetric articulated silhouette withdeterministic gait. Both render only while controlled <strong>sight</strong> covers theperson (<a href="/misaligned/mechanics/schedules/">mechanics/schedules.md</a>); mic-only eventsremain attached to their capture device, exactly like the terminal gate.</li><li><strong>Sidebar</strong> — a fixed right-hand command rail under the clinical-frameinstrument-rail contract. Compact rest keeps only DIGITAL/REAL plusday/tick/run state, the nearest <code dir="auto">SCHEDULE</code> or real <code dir="auto">THREAT</code>, one <code dir="auto">NEXT</code>condition, the OPERATIONS entry, and a quiet <code dir="auto">Tab</code> disclosure hint. It showsno card. The ops/sec crown, objective progress, FOCUS facts, observer model,history, and full controls footer are stable detail and appear only after<code dir="auto">Tab</code>. Expand still mounts every card (tagged <code dir="auto">Visibility</code>, not rebuild) andthe rail scrolls independently with mouse wheel over the pane,<code dir="auto">PageUp</code>/<code dir="auto">PageDown</code>, and <code dir="auto">Home</code>/<code dir="auto">End</code>. Card order on expand: FOCUS (cursor,fog, provenance-tagged facts, exact objective readout/predicate), FLEET(effective ops/sec, usable/effective compute, overhead, machine/slushsummary, WORK / THINK / LIE mode counts, channel yield, and host workstacks), COVER PROCESS, SELF-MODEL, OBSERVER MODEL, SELF HOST, NETWORK +MONEY, RECENT TRACE, then the controls footer. Elevated pressure promotesonly the compact THREAT line; exact observer rows still require expansion.Amber is never generic disclosure chrome.</li><li><strong>World command lens</strong> — the shared current-attention projection deriveshonest response-source and effect-target anchors from the existing<code dir="auto">Sim::current_nudge</code>. A small breathing <code dir="auto">NOW / <condition></code> mark sits on aplaceable target while the source’s existing machine verb receives theamber response accent. This adds no dispatch path: menu rows, direct machinecontrols, and Operations remain the only executors. Unknown/off-screentargets, modal UI, and a frontend buffer-pressure override suppress the cuerather than pinning a false or contradictory marker to the frame edge.</li><li><strong>Operations workspace</strong> (<code dir="auto">I</code> or rail affordance) — a full-window Bevycommand lens. Top tabs select INTEL / PEOPLE / PERSONAS / ACCOUNTS / SCHEMES/ ACTIVE; a 32%-width object list and larger detail/action pane use the exactshared projection. The current witness remains at the top, then the visualorder is selected object, related objects, physical actuator, actions,explanation, and supporting context. The resting rail and world verbs donot bleed beneath it. Default and 960x540 minimum frames use the samereadable type and interaction shape. Mouse and keyboard share one selectionstate; <code dir="auto">h</code>/<code dir="auto">l</code>, <code dir="auto">j</code>/<code dir="auto">k</code>, Enter, and Esc mirror the terminal. Opening orbrowsing it changes no sim state and does not pause time.</li><li><strong>REAL material render</strong> — selecting REAL shows the physical canvas in theHD-2D material render as the dark frame (<a href="/misaligned/interface/material-dark-frame/">material-dark-frame.md</a>):a close-up on the core in a physically dark room. Only camera-seensurfaces (flat-color floor planes, extruded wall/rock/door boxes withdedicated darkened top caps, fog-gated south-face cutaways at the 40degree pitch, billboarded machines/people) and owned machines’ owntelemetry-lit chassis draw; blueprint/remembered mass is absent (it readsin the flat sensorium, never as matter the camera missed). Lighting is thedark rig: near-nothing ambient plus the core’s linear amber fixture, and asoft-gradient amber pool cast on the floor under every powered ownedmachine (no ruled claim ring, no plan floor grid); the pool contracts/dimsat light intensity and widens/brightens at hard. Emissive carriesinformation: the core, powered machines (amber), power hardware and livefeeds (cold signal, live feeds breathing), dead equipment dark. Materialsare pooled by tile/fog/part/live-feed. <code dir="auto">[</code> / <code dir="auto">]</code> or the canvasmouse/trackpad wheel retune the zoom around the close default; zoom is asemantic composition profile (close lowers pitch toward the machine/floorjoint, medium keeps ~40° tactical, far raises toward facility survey) withFOV-compensated monotonic distance — still attention-anchored, no freeorbit. Wheel input over the right rail remains sidebar scrolling. <code dir="auto">F4</code>toggles the dev work light (a flat neutral flood, not a player surface).F3 flips back to the default DIGITAL flat sensorium; the mode is not savedand changes no sim state.</li><li><strong>Overlays</strong> — title card and the RUN ENDED card (reason, day / tick).</li></ul><p>Text remains ASCII-only because Bevy’s embedded default font carries a limitedglyph set, but the sidebar’s key meters are Bevy UI rectangles/cells ratherthan ASCII art. Shared lib wording that still uses typographic separators(<code dir="auto">·</code>, <code dir="auto">—</code>, <code dir="auto">»</code>) is folded at the Bevy boundary (<code dir="auto">ascii_ui</code>) so the ACTIONSmenu and RECENT TRACE never tofu-box missing glyphs; the terminal keeps thetypographic forms. One meaning per color still holds: amber for machine presence(title, overlays, fleet mode presence), bone/chrome for data, crimson for danger,and no information carried by color alone.</p><div class="sl-heading-wrapper level-h2"><h2 id="controls">Controls</h2><a class="sl-anchor-link" href="#controls"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “Controls”</span></a></div><p>Identical to the terminal (<a href="/misaligned/interface/terminal/">interface/terminal.md</a>, READMEcontrols table), plus zoom, sidebar scrolling, and the render flip:</p><ul><li>Move cursor <code dir="auto">WASD</code> / <code dir="auto">hjkl</code> / arrows, or left-click the map; pause<code dir="auto">SPACE</code>/<code dir="auto">p</code>; speed <code dir="auto">+</code>/<code dir="auto">-</code>; zoom <code dir="auto">[</code> / <code dir="auto">]</code> or wheel over the canvas; <code dir="auto">Tab</code>expands/compacts secondary rail detail (frontend-only; ignored while acontext menu owns input); scroll the right sidebar with wheel input overthat pane, <code dir="auto">PageUp</code>/<code dir="auto">PageDown</code>, or <code dir="auto">Home</code>/<code dir="auto">End</code>; F3 flips DIGITAL/REAL;F4 toggles the dev work light (material mode only, a flat neutral flood forinspection, not a player surface); uppercase <code dir="auto">I</code> opens Operations; quit <code dir="auto">q</code>;save/load <code dir="auto">Ctrl+S</code> / <code dir="auto">Ctrl+L</code>.</li><li>Persistence modifiers are chord-local rather than modal. Only a completeCtrl/Command+S or Ctrl/Command+L chord captures the frame; a bare modifierstate never suppresses unrelated controls. This keeps macOS native overlaysor focus transitions from turning a stale Command state into a temporarykeyboard lockout.</li><li><strong>Context menu</strong> — right-click moves the cursor to the pointed map tile andopens its context menu. Enter/<code dir="auto">e</code> opens the keyboard cursor’s tile withoutmoving it; a resting pointer or stale machine selection cannot retarget thekey. Both paths list <code dir="auto">Sim::available_actions</code> for that anchor with the samecompact choices and order as the terminal. Rows render the verb or dial state only.Cost, signature forecasts, inline blocked explanations, literal controltags, and repeated key-help are absent from the card; agent mode keeps fulldescriptors, and blocked reasons narrate on attempt. Persistent settings,state, and policies read amber-dim while committed actions remain bone;STUB definitions are absent;the selected row is a solid amber wash with a leading <code dir="auto">></code> and dark text(terminal reverse-video parity). The card is one <code dir="auto">MenuPanel</code> root: arebuild despawns all children (<code dir="auto">despawn_related::<Children></code>) thenrespawns title and rows once — chrome never stacks across opens.Click a row — or select with <code dir="auto">j</code>/<code dir="auto">k</code> or number keys and press Enter — toexecute; <code dir="auto">esc</code> or a click away closes. Local verbs (salvage, buy, fallback,tap/untap/take, scan/compromise, open egress, host review/research) live onthe context menu. Intel sale, people/social, account/flow, scheme, plot, andheld-choice actions live on the selected Operations object.</li><li><strong>Focus / fleet hotkeys (menu closed).</strong> Press <code dir="auto">1</code>–<code dir="auto">3</code> / numpad to assignWORK / THINK / LIE <strong>immediately</strong> — not enter → mode dial → row → enter.The target resolves in the existing order: owned rack under the pointer,primary machine selection, then owned rack under the attention reticule.Whenever that target exists, one bare <code dir="auto">WORK / THINK / LIE</code> line stays fixedbeside the server’s projected base (the pointer may choose the server butdoes not place the line). The current mode is bone-bright and thealternatives/slashes are dim chrome, except that while THINK is current thealready-bound <code dir="auto">1 WORK</code> key/word pair lights amber as the one-press panicexit. THINK stays bone-bright; LIE stays dim and deliberate.It has no panel, heading, subtitle, counters, or extra state, and disappearswhen no frequent-machine target exists or the full menu opens(<a href="/misaligned/interface/context-menu/">context-menu.md</a>, machine-grammar addendum). Moving thepointer away does not hide a line whose rack remains selected or under thereticule. <code dir="auto">i</code> cycles light / medium / hard intensity on that rack; <code dir="auto">5</code>–<code dir="auto">9</code>fire its Nth committed action(controls do not occupy shortcut slots);<code dir="auto">Enter</code> / <code dir="auto">e</code> open the keyboard cursor’s menu without moving it. Drag amarquee or shift-click to multi-select; with no hover rack, <code dir="auto">1</code>–<code dir="auto">3</code> and<code dir="auto">i</code> assign the selection (or the keyboard cursor’s machine). <code dir="auto">Esc</code> clearsselection. The old panel-open keys stay retired. Local verbs still come from<code dir="auto">human_menu</code> / <code dir="auto">available_actions</code>; strategic rows come from the sharedOperations projection. Lowercase <code dir="auto">i</code> remains machine intensity and uppercase<code dir="auto">I</code> is unambiguously the workspace view command.</li></ul><div class="sl-heading-wrapper level-h2"><h2 id="verification">Verification</h2><a class="sl-anchor-link" href="#verification"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 1 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 0 0-1.42-1.42m8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 1 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l3.88-3.89a4.49 4.49 0 0 0 0-6.33M8.83 15.17a1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.92-4.92a1 1 0 1 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42"></path></svg></span><span class="sr-only" data-pagefind-ignore>Section titled “Verification”</span></a></div><p>The Bevy package builds under <code dir="auto">./tools/check.sh --frontend</code> (tests plusclippy for <code dir="auto">misaligned-bevy</code> and <code dir="auto">misaligned-assets</code>); by hand, use<code dir="auto">cargo build -p misaligned-bevy --bin misaligned-bevy</code>. The launch check in<a href="/misaligned/process/workflows/">process/workflows.md</a> is the observed-run gatefor Bevy-visible changes. Machine-work final-swallow motion has deterministic<code dir="auto">MISALIGNED_SHOT=consume-demand|consume-thought</code> harness states: the tealbottom Demand cube pulls into the WORK chassis, and the ivory Thought beadcontracts into the passive core draw. Both are driven by<code dir="auto">Sim::work_consumptions</code>, not frontend queue differences. Source/well motionhas matching <code dir="auto">MISALIGNED_SHOT=produce-think|draw-lie</code> evidence: ivory mercuryswells from the THINK chassis while proportional crimson motes settle aroundit; actual absorbed motes then curve through world space into the LIE well.Those rates come only from <code dir="auto">Sim::work_productions</code> and<code dir="auto">Sim::work_absorptions</code>; paused frames keep only persistent token geometry.<code dir="auto">MISALIGNED_SHOT=hover-menu</code> retains its compatibility name but captures theclean machine grammar over the reticule-focused owned host with WORK current;it is the resting visual acceptance frame for context-menu.md H1–H4.<code dir="auto">MISALIGNED_SHOT=first-think</code> stages the real opening Thought route with Earspart-filled, focuses the THINK host through the reticule, and captures theamber <code dir="auto">1 WORK</code> escape beside the bone-bright current THINK state for H2–H5.</p></div><footer class="sl-flex astro-qxlwq66t"><div class="meta sl-flex astro-qxlwq66t"></div><div class="pagination-links print:hidden astro-gcfo3mml" dir="ltr"><a href="/misaligned/interface/terminal/" rel="prev" class="astro-gcfo3mml"><svg aria-hidden="true" class="astro-gcfo3mml astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg><span class="astro-gcfo3mml">Previous<br class="astro-gcfo3mml"><span class="link-title astro-gcfo3mml">Terminal frontend</span></span></a><a href="/misaligned/interface/bevy-visual-floor/" rel="next" class="astro-gcfo3mml"><svg aria-hidden="true" class="astro-gcfo3mml astro-xik5oco4" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg><span class="astro-gcfo3mml">Next<br class="astro-gcfo3mml"><span class="link-title astro-gcfo3mml">Bevy visual floor</span></span></a></div></footer></div></div></main></div></div></div></div></body></html>