Skip to content

aterm v0.95.0

Choose a tag to compare

@alabsystems alabsystems released this 28 Sep 02:47
· 14 commits to main since this release

aterm v0.95.0

2026-09-28 · 417 changes since v0.94.0

Features

  • config: editing only a lexicon or pack file hot-reloads it
  • introspection: compose-side prim counters and the video trail ledger
  • verify: the GUI smoke's paced burst in four effect lanes
  • containment: confine Containment writes; refuse to start without an OS sandbox
  • harness: a git read is approved only where its config runs nothing
  • control/windows: a peer pid gate on the Windows control socket
  • keeper P0: the recovery census — one ledger row per windowed launch says how the run before it ended
  • tones: a password prompt sounds one tone — every key the same, no ting, no melody moved
  • tones: a capital's ring is a twelfth — the strike stays the line's own note, struck forte
  • harness/upgrade: SAME FAMILY FIRST, THEN THE PRIORITY LIST — the owner's decision of 2026-09-27

Fixes

  • trail-sound: a close bracket straight after its open keeps its tink
  • gui: close the open effects & wake follow-ups (items 6, 7, 8, 10, 11, 15, 17, 21)
  • spin-gate: a fixture that actually splits the clocks, re-proven red
  • help: regenerate both help goldens for the video … trail flag
  • status: an owed agent look waits for the output to pause, not the next due instant
  • spec-link: recount the registry after main's three new models (200 -> 203)
  • tests: the four update-ledger writers in app_native hold the ledger lock
  • gui: one attach-time focus adoption — withdraw the 500 ms grace winit's creation-time blur always spent
  • introspection: a ribbon witness that can go red, and the video trail's tail is taken at finalize
  • verify: the GUI smoke's effect lanes cross the effects master with the sounds, must show engagement, and are calibrated
  • tests: two load flakes the merge contract hit — a sink failure that a fork could hide, and a stopwatch
  • tippy: a_refused_window_claim_defers_its_held_flip_look passes its Copy closure by value
  • containment: the tests and the skill state the fail-closed contract; the scope says what stays open
  • harness: the git-read check finds git as the classifier does, reads submodules, and counts a filter only where selected
  • harness: a git read is judged where the Bash tool stands, read from the live session's transcript
  • lint: the classifier's wrapper result is a named type
  • forge: re-measure the six winit cells for the fork's windows-sys move
  • logging, windows: the log rotates on Windows — the rotation lock is opened so it can be locked
  • render: keep capped rainbow slabs attached to head
  • cross: make foreign-cell checks compile cleanly
  • release: a head the cut made is finished, never refused — and ReleasePublishOnce proves the join, both floor reads and the upload order it claims
  • release: the debugging aids stay in dist/ — the public channel carries the client set and nothing it does not need
  • release: the finished-head resume re-sends its PATCH — a read-only resume wedges once another release has taken latest
  • release: a journal is read by its header first — a finished one of any format is history, an unfinished one goes to the cutter that wrote it
  • sandbox: macOS refuses RLIMIT_AS only below the mapped size — say so, and make the refused-limit test reach its path
  • keeper P0: the census thread declares its QoS role, and a run that left no evidence is unknown, never clean
  • keeper P0: the ledger's first row never reads another kind of launch's crash as the run before it
  • fabric: keep roster status off a busy timeline
  • rainbow: keep leftward wake head lit at quad cap
  • rainbow: keep midline edit head lit at quad cap
  • manual: the help pages say what the code does now, without history or mechanism
  • manual: review fixes
  • update: Linux update lines name the copy, the version and the next step
  • update: review fixes
  • reroute: each reroute line says what runs, and only once it can run
  • reroute: review fixes
  • gui: refusals, menu rows and hover text state the fact and the one remedy
  • gui: review fixes
  • merge: audit #4 meets main — refuse_input names the measured cause, the atpkg tests follow main's one activation link, and the round's CHANGELOG entry
  • tools: the handback lane reads who holds the terminal before each key — a Ctrl-C on a guess reached zsh, not the job
  • control: a lane holds a REQUEST, not a connection — persistent drivers no longer use up the socket
  • control: the connection cap answers to the descriptor limit; the lanes' live negative control is deterministic
  • harness/upgrade: a dry run no longer reports a caught-up session as behind
  • rainbow: preserve uncapped quad order and retry only at cap
  • pty: a spawned shell inherits its stdio and nothing else
  • claude: stop dormant footer refreshes
  • upgrade: no stop is for good — a stopped round rests two hours, then a new round asks again
  • rainbow-kitty: zsh's Ctrl-R search lays no band under zle's fake cursor
  • rainbow-kitty: review fixes — a hopping Ctrl-R match lays no band, a hidden caret keeps its lane
  • rainbow-kitty: a word typed in at the fold keeps its first letter, and no stub in the indent
  • rainbow-kitty: an insert that pushes a word down keeps its band, and a re-wrapped word keeps its first letter
  • rainbow-kitty: review fixes — a typo fixed mid-word keeps the wrapped word lit, a hard-broken token keeps its row, a word that stays keeps its light
  • rainbow-kitty: fix/trail-land review fixes — a flushed park is witnessed by the glyph it was held over, a soft wrap keeps the prefix left of its key, typeahead across the wrap lays no indent stub
  • rainbow-kitty: trail-land merge review fixes — the soft wrap's seam is pinned off the relaid word and the indent, a skipped neighbour row is no row, the witnesses' docs name their readers
  • aterm-update: review fixes — nothing looks past a head the client cannot install from; next_check= is absent while the loop checks
  • harness/upgrade: a restart moves the model to the newest of its OWN family — never across, never down, an alias kept, [1m] kept
  • upgrade: the no-stall round's review — a resting round is not moving, still reads overdue, owns its first settle, and a repeating stop backs off
  • claude: distinguish footer request in lock census
  • handback: a re-armed input mode is the re-armer's — one missed job no longer disables every later handback in its session
  • tools: the handback lane releases its live holder by a line on its stdin, not a 2 s timer — and forces the missed one-shot that load only sometimes dealt
  • tools: the handback lane's forced miss runs LAST, followed by one recovery row — every pre-existing zsh row runs from a clean state again
  • windows: aterm is a Windows daily driver — console front door, Enter chords, atpkg, history, close safety
  • gate: the grep guard's git greps never recurse into submodules, and the footer watch's dormant mutant lives in its stop
  • drive: a verb followed by --help asks for help, and can no longer type into the active tab

Performance

  • harness: cache unchanged Claude footer transcript tails
  • atpkg: reuse process snapshot for quiet flip checks
  • gui: swap single-pane glow into render input
  • atpkg: recheck empty index eligibility each park slice
  • fabric: skip broadcast parsing with no topic subscribers
  • claude: reuse pane text buffers across changed frames
  • atpkg: retry shared index stamp at its expiry

Refactors

  • policy: retire the undischargeable Kani harnesses; docs in the present tense

Tests

  • gpu, render: pin the rebuilt face, and fail rather than skip a broken renderer
  • paint: a split window being typed into, with its effect-off twin
  • gui: the handoff paint decision is tested through the helper the proof calls; RED-before claims say what they pin
  • one headless boot, and a product that cannot start fails
  • the three newer live boots fail a product that cannot start too
  • the Windows twin's launch_isolation compiles again
  • a headless instance is not WindowServer-free — say so, and skip AppKit's refusal
  • provenance: the compile-fail guarantees run as doctests; stale sandbox docs
  • gui: roster the renamed Windows peer-check test
  • host_live: wait for the relaunch fake's first launch before counting launches
  • host_live: the relaunch and upgrade tests wait for the fake's first launch
  • claude-lights: fail the sink on its own socket, not by closing a peer another process may hold
  • claude-lights: the accepted follow-up holds its deadline ahead, so a slow machine cannot turn its Return into a take-back
  • 18 tests no longer trust a close that a sibling's child can still hold
  • control lanes: the cap is a refusal that STAYS; a made moment keeps the retry live
  • app_input: paste fixtures' sinks own their pipe, so a queued paste cannot land in another test's pipe
  • aterm-verify: time the dead-instance handback from the death, not the stage start
  • supervise: the idle-fix merge's two host-step tests stop on the step, as main's Stop asks
  • host, presence: fake Claude Codes keep the cursor on the prompt box's caret row, as Claude does
  • objc: the MainThreadBound container drive runs in the workspace test run, as a harness=false test
  • verify: the answering-smoke fixture checks its config with builtins, not seven grep spawns
  • title-summary: the home test names no real account — 'dev', not the owner's login (the public export refuses it)

Docs

  • effects, gpu, render: retire stale wiring and flip notes that described closed work
  • gui: two doc comments back on the functions they describe
  • correct what the effects package's own notes got wrong, record the bracket A/B, and log the round
  • the gui wave's neighbouring passages say what is now true
  • cap: no-mint-reachability is delivered; cite the gate by its real file
  • consent: name what measuring §7 S2 needs, at the flag it would flip
  • containment: the man page and the modes listing say what each mode enforces
  • containment: --sandbox's one-line help and its spawn test name the write confinement; drop a #7996 tag
  • three claims the wave left half-corrected
  • four claims the tree no longer bears out
  • keeper P0: a killed run whose consumed marker was pruned reads as clean — say so
  • gate decruft wave 1: the live docs describe the gate that runs — the new ladder, what moved to --full, and what is gone
  • gate: the wave-1 docs say only what the code does — dates, pins and row names corrected

Other

  • sink: stop reaches a parked paste, the UI egress refuses at the cap, sever and per-class egress permits
  • gui: bounded typed egress, refused keys ring the bell, sever on close, deferred keys arm the echo clock, input legs measured
  • capture: reserve a frame's bytes before capturing, answer busy before the photograph
  • gui: pin the reply lane's byte plateau under a query flood
  • sink: a writer waiting for spill room arranges a pending drainer itself
  • sink: the unix-only refusal constructors and spill-room wait compile warning-free on Windows
  • harness: the version probe and the codex daemon update build on Windows
  • gui: mouse, wheel and focus reports take the keys' route — encoded on the UI thread, queued behind earlier input, never inline on ConPTY
  • harness test: the version probe's bounded checks time the probe, not a new script's first exec
  • capture: a frame's reserved bytes go with its raw framebuffer, before the answer
  • egress: a stopped paste's close still reaches the program, every UI-thread report takes the reports' route, reports get their own budget
  • sink: the spill's prepend rule names both prepends, the split tail and a stopped paste's owed close
  • core: the damage-scoped refill reuses a resident row mask
  • scrollback: dense segment walk; product scans read history through it
  • web hosts: damage-scoped refill as the single damage consumer
  • gui: output-wake scale proof; the status gate retries only unclassified newcomers
  • gui: end-to-end present-retry test through a scripted CPU surface
  • core/grid: clippy-clean the dense-walk readers
  • gui: one terminal hold per single-pane frame; the torn-frame fence is gone
  • render: the two-hold vocabulary goes with the second hold
  • gui: the scale proof's no-wait check is causal, not a stopwatch
  • gui tests: the TrustIr registry count follows …; every ledger writer holds the ledger
  • review: the native search reads history densely; claims and comments say what the code does
  • cells: aterm-gui's test build compiles for Linux and Windows
  • effects: take the recommended defaults on four parked taste calls
  • aterm-gui: close five small gaps the triage found open, each with a test
  • aterm-gui: stale notes corrected and small product calls recorded
  • containment: TmpOnly writes are OS-scoped, and Containment fails closed off macOS
  • aterm-gui: a maximized window's restore capture persists the frame it restores down to
  • aterm-gui: input latency corrects coordinated omission with a per-window edge ring
  • PressCustody: model the three shapes the Tier-1 conformance listed as KNOWN GAPS
  • identity_claim: close the handoff window with a successor marker (third gate)
  • consent: the Claude Code footer's refused repository read is the per-session EPERM producer
  • aterm-gui: round 18's identity rows — New Window/Tab With Identity… and Show Identity
  • windows: control-socket peer gate — afunix peer pid plus a token-user compare
  • native markdown: inline spans paint — bold, code, links, strikethrough, emphasis
  • aterm-gui: the identity picker test scopes ATERM_STATE_HOME, not a second override
  • aterm-gui: the Linux motion read sits outside the macOS module's doc, and stale notes follow the gui wave
  • windows: the harness upgrade probes and the successor markers compile off Unix again
  • containment: two doc words tippy's doc_markdown refused (TmpOnly, unsandboxed)
  • identity_claim: the marker write collapses its nested if (tippy collapsible_if)
  • aterm-gui: the deferred-flip test passes its Copy closure by value (tippy needless_borrows_for_generic_args)
  • PressCustody conformance: the header lists coverage notes, not KNOWN GAPS
  • containment: macOS unchanged — the TmpOnly write scope is withdrawn pending the owner's ruling
  • aterm-gui tests: every env scope primes the update-root Once before it locks
  • native markdown: styled spans clip to the block's own text, never into the cut's ellipsis
  • handoff: the corroborated group sweep keeps the fork lane's pin as its second proof
  • metrics: a full input-edge ring lets go of never-echoed keys before refusing a fresh one
  • aterm-gui: the normal-frame tracker's rule is testable, and its tautological test is gone
  • effects: split cursor_glow's tests into cursor_glow/tests/<area>.rs
  • effects: split cursor_glow.rs into named parts (style, custody, companion, raster, ...)
  • gui/effects: the native window drives the resident pet through CompanionOwner
  • effects: point the last cursor_glow.rs citations at the part that holds them
  • gui: the spec-link registry pin counts main's three new models (200 -> 203)
  • companion: the owner lifecycle bind projects the brain's identity, and the native sense projection is gone
  • gui: pin the one native cadence change Phase 2 made — a static resident offers nothing on the shed recovery ramp
  • aterm-link: one trust_of table; the exited-keep note and hook tombstone told true
  • harness: a git read is approved only when its config runs nothing
  • session: no VT model, one agents-dir rule, a Windows protected-spawn twin
  • harness: rm_policy's cd limit is permanent, and says why
  • ctl: tier 3 of the mux guard takes tmux's TERM_PROGRAM
  • net: the launch-nonce pin reads the remote's roster; the relay test is sequenced
  • keyboard: a right-side modifier is the kitty RIGHT_* key; sink's token bucket stays with its design
  • control: close the introspection residuals
  • metrics: fires apart from arms, wakes by variant, turns by root, the GPU repaint scope
  • drive: say that typed text reads as pasted to a model worker
  • gui: direct tests for the pane selection fold and the capture model's pane loop
  • gui: the one unit test that built a GPU renderer moves to a live-GPU lane
  • verify: the interrupt test waits for its stage group to be live
  • harness: a git read's cwd is read fresh, and its post-index-change hook counts
  • operator: a dead client's next frees its waiter; RFC §9's live runs
  • harness: below 10 GiB free the window reclaims its agents' stale build dirs
  • control: the gui's tests and goldens follow the package's own changes
  • supervise: the zero-settle press is checked by its event, not a 250 ms clock
  • ctl: the mux guard decides from one MuxEnv, not eight positional options
  • lint: the workspace passes tippy -D warnings again
  • verify: the unhandled interrupt stand-in meets SIGINT at its default
  • harness: one git-read check — withdraw this branch's copy for wb/security's
  • keyboard: a modifier's release keeps its kitty bit while the other side is held
  • disk: every [disk] key is known to Manual, a negative floor is off, and the tick frees the volume it measured
  • control: a half-closed operator client keeps its next; an older sibling's escalations still reach the menu; the verb docs say what the wire does
  • flakes: four load flakes wait on facts, not clocks; the fabric demo's check joins the gate
  • ctl help golden: regenerated for the key and text entries
  • disk: the verb's help and the design's knob line name the negative-off rule and the measured volume
  • update: watched-output gap, one RFC3339 parser, derived stale bound, dead check-lane code gone
  • atpkg: one activation link, typed-lane Unreachable, C-toolchain probe, hook reroute order
  • install.sh: the uninstaller's ownership tests on the install path; --no-toolchain persists
  • verify/xtask/release: retire the targo-clippy candidate; honest x86_64 refusal
  • update: two processes arming one build swap it once — model + Tier-1
  • release/atpkg-index: the x86_64 slice runs before a universal cut; no silent darwin-triple drop
  • update(test): name the LOCK_UN release at the two-process Tier-1's lock hand-offs
  • atpkg(test): the tmux pane command is a literal, not a format!
  • update: the boot lane's peek, lock and under-lock decision are one function the two-process Tier-1 runs
  • release: a builder without Rosetta is refused before the claim, not after the build
  • atpkg(test): the failed-flip repair is staged the way a junction swap fails; tmux carries the reroute case
  • install.sh: the bin verdict runs a foreign file bounded and stdin-less; the plan and the store lanes say what happened
  • aterm-cli(test): trustfmt the no-toolchain page test
  • atpkg(prereq): the probe's bound is the host's, so the answering tests do not race the code assessment
  • aterm-cli(manual): pkg lease names <toolchain-dir>, the operand the binary parses
  • atpkg(test): main's provenance-heal tests read the one activation link
  • update: the schedule's constants compile everywhere, the schedule does not; three descriptions of the watched-output gap and the two-process Tier-1 say what the code does
  • agent/types: the harness's transcript-stamp reader is the workspace parser, so …+05:30 is refused, not read as UTC
  • agent(test): each scratch call gets its own directory — two Codex drive tests shared one and raced
  • atpkg(test): the default set's C-toolchain line takes the probe's host, so its test widens the bound as prereq's tests do
  • install.sh: a re-run repairs a damaged aterm.app instead of skipping it, and --no-toolchain says what it does to an installed toolset
  • release: a universal cut keeps the record of running its x86_64 slice; the runbook and the bootstrap name Rosetta
  • install.sh: the foreign-binary --version bound is one script constant, so the suite's answering cases do not race code assessment
  • aterm-gui(test): every test whose blocked attempt writes the apply ledger holds its lock
  • build(winit): windows-sys 0.52 -> 0.61 in the fork, handles through typed conversions
  • build(cells): main's harness and program code type-checks for Windows and Linux ARM again
  • build(cells): one mechanism for the off-Unix harness fix; parse_procargs2 stays macOS-only
  • build(winit): the last handle casts go through handle.rs; the fork declares rust-version 1.84
  • style(containment): trustfmt the fail-closed audit assertion
  • style(harness): trustfmt the loop test … added
  • aterm-alloc: #![no_std] + alloc, so the arrayvec shim's no_std holds for its graph
  • aterm-buffer: ReadCap/WriteCap are aterm_cap capabilities, not forgeable unit structs
  • aterm-search: O(1) tail removal for postings; retire test-only jump_to_match; honest Kani harnesses
  • proof markers: strengthen the Pin packing harness; drop stale TODOs; date the OSC harness verdict
  • aterm-spec: drop the stale trail-audio KNOWN PARTIAL note; past-tense the ty POR canary
  • grid: WideCharConsistent is asserted by the fuzzers, and the DECDWL resize bug it found is fixed
  • spec-models/clean: ct_eq.lean checks green on ground instances; delete the unelaboratable keyboard_shift.lean
  • XTSMGRAPHICS sixel geometry rides the CSI 14 t window-ops gate instead of an unconditional mint
  • conformance: SO + DECSTBM + truecolor region scroll (REARCH B-5), with no-SO and SI controls
  • window_auth: one mint path — delete the now-unused bool-only try_mint
  • checkpoint: carry application colours and shell integration across a handoff; delete HostBindings
  • fmt: rustfmt the wave's earlier commits
  • update: sync the fixed-path swap's parent directory; the disk-transaction model says what it covers
  • render: draw the Unicode 16 block octants (U+1CD00-1CDE5) procedurally
  • custody: model the in-place rewrite of the selected rows (OutputRewritesTheSelectedRows)
  • spec: model the §3.2 two-way supernova burst mutex (SupernovaBurstMutex), bound to the real grants
  • paint: the paced recorder publishes its sampling ledger; scan reads holes from it
  • aterm-bidi: complete UAX #9 — X1-X10 embeddings/overrides/isolates, N0 bracket pairs, the full Bidi_Class table
  • control verbs: regenerate the paired help goldens for the custody and video rows
  • paint: re-enable the main-screen effect-off control — the ledgered instrument reads it sound
  • aterm-link tests: the stray guard counts daemons, not shells that name them
  • aterm-gui: the bench-support headless fixture builds again (DocumentStore::for_test)
  • history carry: the key reserve raises only the shortfall, so carried shell marks keep their lines
  • checkpoint meta: say that every live session now writes absolute_row_counter, and pin the key set
  • grid tests: the DECDWL truncation regression starts from an intact wide pair
  • window_auth: the module docs describe the one mint as it is — policy gate first, the bool as fallback
  • spec: register SupernovaBurstMutex, and say its Tier-1 bind is test-only
  • custody: take back OutputRewritesTheSelectedRows — wb/gui's PressCustody is the superset
  • paint: the sampling ledger books a tick only when its redraw proved the screen unchanged
  • control verbs: regenerate the help golden — the custody row is main's again, the video row names the proved-unchanged ticks
  • paint: the effect-off control's doc names m7, and the re-measurement under the tightened ledger
  • fmt: trustfmt the history-carry GUI test
  • forge mirror: settle the open seams instead of carrying TODO tags
  • verify.sh: refuse a checkout with no toolchain pin (exit 3)
  • install: land the Linux hicolor icons the desktop entry names
  • verify: run gate forge, gate fault and gate cells-foreign on every tier
  • wasm perf lane: module-size ceiling, the three Wave-6 present lanes
  • kani floor: run the four SIMD unwind harnesses by name, and self-test it
  • grid: A3 scroll zero-alloc lemma — bounded in the merge contract, Kani pair authored
  • gui: count the MPT-2..5 and subscribe idle-wake wins in the merge contract
  • style: targo-fmt the verify stage, perf lane and new verify tests
  • verify: the ladder contract and PROCESS.md name the three new gate verbs
  • kani: the dispatch-body frontier measured; A3's discharge need made exact
  • forge: re-pin the winit fork after the WakeTimer patch (…)
  • host_live: the upgrade fake is macOS-only, as its one caller is
  • verify: the foreign cells build in the snapshot's cells lane, which the disk preflight counts and caps
  • forge mirror: the deferred signature is named as what would anchor rows, never as one that exists
  • verify: the cells budget's two floors are compile-time assertions
  • land: the merged tree compiles, and main's footer test is formatted
  • land: two tests the merge left pinned to words and a box nobody named
  • atpkg flow: trustfmt the typed-lane assertion
  • atpkg/hooks: inside aterm the shell hook puts <prefix>/reroute first, ahead of agents/, so a bare cargo is announced in a TTY session too
  • atpkg/hooks: a TTY session whose front door handed no agents dir still gets reroute first; docs and CHANGELOG say what the change does
  • aterm-link: fault injection dies by SIGKILL through the aterm-uds cordon, not abort()
  • gui: a dev seam keeps every test off the owner's clipboard — and a unit test that wrote it on every run no longer does
  • messages: day three on today's main — upstream's new rows keep the rulings, the upgrade row says what happened, and a reused log id never swaps records
  • aterm-gui Settings card: 80 tests and 11.7k lines leave with the retired painter, input model and hit-testing
  • aterm-gui: 7 tools-as-tests leave — ignored benches, print-only probes and env-gated PNG dumps
  • aterm-gui consent fences: 5 fewer — two B13 path pins go, five module fences fold into two
  • aterm-gui: 9 source-text pins leave and six tests drop their source-scan tails
  • aterm-gui: 11 duplicates, stub tests and a tombstone leave
  • aterm-gui native_config_language: 84 -> 81 tests — the three retired-key families fold into the family sweep
  • aterm-gui app_introspect: 106 -> 104 tests — the split and single-pane first-capture pet twins become two parameterised tests
  • aterm-gui control_query: 77 -> 71 tests — the seven metrics-form pins become one field table
  • aterm-gui: 28 copy-paste tests become 6 tables across app_config, alert_keys, accessibility and quit_safety
  • aterm-gui: three source pins and three tails come back — each was the only proof of its property
  • aterm-gui consent fence: the global/env scan reads both modules to their test module
  • decruft(update-core): the Releases API GET is gone — nothing has called it since R3
  • decruft(release): a cut publishes once, straight onto the channel — the private draft/flip/archive/verify leg and the mirror are gone
  • decruft(release): an unclaimed release is adopted only as the source release — the byte-proved "own release" reading had no producer left
  • harness(upgrade): a background wait that can never end no longer holds a Claude Code upgrade for good
  • after merging assembly/0.95: a citation of the retired draft delete, and a load-sensitive bound
  • WIP: the adversarial reviewer's repairs in progress — UNVERIFIED
  • gui(keeper P1): the crash journal — a crashed window's layout and folders come back
  • gui(keeper P1): the journal's write rate, measured — titles wait 30 s, a repaint wakes nothing
  • gui(keeper P1): NoLoss on the real kernel, and the boot order pinned
  • gui(keeper P1): the bench-support build has the test App's inert journal lane too
  • gui(keeper P1): off unix the journal's file half is said to be dead code, not left to warn
  • gui(keeper P1): the journal's test layouts compile off unix, where the message tests use them
  • gui(keeper P1): Tier-1 replays every claim with its evidence read first — the WIP repair, verified and kept
  • watchdog: the sampler's per-wake verdict is SamplerWake, not a second Wake
  • watchdog: the quiet rule ends only a spin reported at a park point
  • harness(upgrade): a Codex background terminal is waited on, asked about again and given up on — and a dead Claude's leftover session file no longer strands a restart
  • harness(upgrade): at a break the Codex wait keeps the break's name — only an idle point's wait on terminals alone is named background-terminal
  • style(harness): format remote Codex upgrade assertions
  • control lanes: the request lanes loop on serve_next; the warm-up scan reads the lanes
  • phase: Claude Code is idle only at its composer, so await agent idle waits for the REPL
  • phase: Claude Code's shell-mode prompt box reads idle again, as before the composer rule
  • agent verdict: read the last 40 DRAWN rows, so Claude Code's inline REPL is idle
  • agent verdict: Claude Code is idle at the prompt box that HOLDS THE CURSOR
  • fmt: r13_presence.rs at its crate's edition (2021), which the merge contract's per-file sweep reads
  • harness: the harness's own turns are no task — a session nobody asked anything gets no notice, no carry-on, no act
  • harness: a turn end the upgrade let go is decided again, its pauses start over after a turn, and quiet is the agent's verdict's
  • harness: a turn the harness types returns once its submit is taken — the tab is never held on the agent's answer
  • harness: the owner's view of the upgrades is published headless too; a fresh restart is a move the view shows
  • harness: one restart arm, the task memo keeps its transcript, and an unknown verdict leaves the settle to the screen
  • harness_host test: return the pauses directly (tippy let_and_return)
  • harness_host test: three looks is at least three — the fourth follows at once
  • harness_host: a turn between two looks starts the ladder over, not the hold on the turn ends
  • supervise: a point a host step moved is not decided again — only one it left standing
  • harness: a first prompt of someone else's is a task the moment it is recorded; a fresh restart settles briefly first
  • harness: what a tab's own supervisor typed is no task — read from its ledger beside the mark
  • harness: every text that carries the mark is built from the one mark
  • harness docs: D1 names the case it closed, the invented work stays open, and Codex is said as it is
  • supervise: a turn the harness typed is no work of the worker's — its answer neither lengthens nor ends the short streak
  • supervise: a turn the host typed holds the policy's acts back, never the host's own next step
  • harness: a restart holds the tab from its last look to the relaunched agent's first idle, and a fresh one settles the full QUIET_S
  • harness: a restart whose carry-on is typed reads restarting/…/continued until its model is read — never a blank column
  • harness: a session is behind from its worker's attach — its upgrade row and age start there, not at the first step
  • supervise test: the host that asks again counts down without the deprecated fetch_update
  • supervise: a harness turn answered with real work ends the short streak — a short answer leaves it, and its back-off, as they stood
  • supervise: a restart whose host typed the carry-on typed a harness turn — its answer is awaited as the harness's
  • harness: a carried-on restart reads restarting while its model is waited for, then done from the wait's end
  • harness: a session is behind from the activation notice too, after an earlier upgrade too, and a Codex as a Claude Code
  • control: a drive lease can be a HARD hold — every other connection's writes refused, its own typed through — and signal … quiet=<s> refuses itself on a person or unread input
  • supervise: a point the loop's reader cannot vouch for is waited on by its content, never by the server's verdict
  • host_live: the relaunch-on-exit test waits for the first launch and the worker's first idle point, not two seconds
  • harness: every restart holds its tab with the server's hard hold, never let go for the relaunch line, renewed through every wait — Codex's /exit too — and the signal is quiet= the grace
  • harness(codex): the /exit restart's last look answers ControlFlow — a stop is a report, not an error, and tippy is clean again
  • harness: a look that cannot read the session is a wait — journaled, looked at again on the ladder — never "nothing to take"; a READY'd session is never let go for one
  • harness: a fresh launch is behind from its worker's attach — its note is asked until Claude Code's record reads, and the state is minted with the attach's second
  • harness docs: the re-test of … — what held live, N3's real scope, the look that could not read, and the column's words as they are
  • harness: a look's record counts as read only where it decides — a process not read whole is wait:no-process, never "not due"; a launch's record is waited on for its first 30 s, not for good
  • harness host: a look whose read failed climbs its own short ladder (5 s to a minute) and spends none of the step's waits; a launch's unwritten record is not logged at every attach
  • harness docs: what a look that cannot read decides, said as the code does — the socket, the records, the process and a launch's first 30 s wait; what no later look would read otherwise is still nothing to take
  • harness host tests: wait on what the look journaled, not on the step count; the snapshot test waits for its relaunching worker to be reaped
  • aterm-gui: the encode worker tests wait for a starved Background-QoS worker as long as it takes
  • claude lights tests: a closed sink is SHUT DOWN, not only its observer dropped — a forked child's copy kept the socket open
  • aterm-verify tests: an early-exiting instance is read off the lane's own reason, not a 10 s stopwatch — red on main's own tree
  • decruft(examples): the three drives no gate ran are gone — drawable_acquire_drive, objc_dispatch_drive, objc_containment_bench
  • decruft(gpu): the drawable-acquire probe seam is gone — its only installer was the deleted drive
  • decruft(gui): the styled-frame allocation test nothing ran is gone
  • gate(verify): the per-commit ladder is 30 rows — the test compile starts at t0, regex search is always built, and six duplicate rows are gone
  • gate(verify): every run is a real run of a snapshot — --selftest, --in-place, --timings, the nested-gate bypass and the retired-hook migration are gone
  • gate(verify): the gate's own tests keep one witness per property — duplicates and implementation pins pruned
  • tools(grep_guard): one stripped corpus serves every source rule — 108 s to 18 s — and the retired rules are gone
  • xtask(gate): gate lint is tippy and trustfmt — the guards lane and the paint, spin and proof-cache scripts are deleted
  • style(aterm-agent): upgrade_codex_drive_tests.rs is trustfmt-clean
  • gate(decruft wave 1): the reviewers' fixes — the release-then-probe lint stays, full disk stays COULD NOT RUN, and the prose matches the gate
  • harness: the login wall is read, waited out and never spent
  • spec: HarnessLoginWall — the login wall's model, Tier-0 and Tier-1
  • harness: name harness_login_wall_model among the models bound to this module
  • harness: the login Claude Code 2.1.283 writes lifts the wall
  • harness: say what a notice Claude Code asks again after a /login is counted as
  • harness(login wall): the tests hold under main's cursor and taskless rules
  • spec(harness): the model ladder is a derived model, bound to the real model_moves_now
  • messages: day four — strain runs without focus, the log is sectioned by day, and a Claude upgrade stall says which tab and what it waits on
  • harness: a drift canary for every captured Claude Code build, and the tool that captures one
  • aterm-effects: re-baseline the typed-parity pins for the capped rainbow head (…)
  • Revert the typed-parity re-baseline: upstream restored the uncapped quad order at the source
  • containment: TmpOnly confines writes to the temp roots (decided 2026-09-26)
  • harness/git-read: judge a git read in the WORKER's environment; the two refinements recorded as decided
  • containment: the history allowance cannot be redirected, and only the user's own $TMPDIR joins the write roots
  • harness/git-read: every spelling of git grep -O and git <cmd> --help are no reads; the probe's git and the Bash tool's settings are the worker's to choose, so they escalate; the worker is bound by the id the loop addresses
  • harness/upgrade: trustfmt the Codex re-ask test the 0.95 assembly merge left unformatted
  • xtask gate cells: every run prints what it cost; forge's every-tier stage records its departure from the triage
  • effects: the frozen-sweep vacuity floor follows the band redesign (5,000 -> 3,600)
  • aterm-verify: cells-foreign's place on every tier rests on where it ends, measured against the test run's start
  • aterm-agent: trustfmt the codex drive re-ask test that reached main unformatted
  • supervise: a point read before any footer waits on the content, so the mode's first frame is read
  • harness: a build whose --version answered late is looked at again, and host_live's fakes pay their first run themselves
  • aterm-link tests: a stray is a daemon of THIS checkout's build, so other worktrees' live suites never block a run
  • harness: due's AskAgainAt is tested at its source, the timed look is named, and host_live waits on the host's own retry
  • supervise: the content wait on an unread mode is the agent's start alone, and the changelog says what was shown
  • aterm-link tests: a stray is any of this checkout's builds, read by the file it runs
  • aterm-agent: trustfmt the Codex background-terminal re-ask test main landed unformatted
  • aterm-gui tests: "attached again" after a relaunch waits for a NEW worker, not the one winding down
  • atpkg: Flock's citation names its surviving witness — the aterm-verify probe it cited was pruned
  • host_live: the upgrade deadline follows the no-version looks the loop JOURNALS
  • harness(upgrade tests): the login wall's Targets names no unanswered build
  • claude footer: drop the thinking light; ⌂ shows the session's path (~/aterm), not the repo name
  • atpkg,aterm-gui,aterm: no sentence still promises a GitHub rate-limit hold the package lane no longer has
  • aterm-update: a Mac behind a source-first head installs the app release it slept through, found on git's unmetered tag list; a deferral no longer wakes its own process inside its window; update status says checked_at and next_check
  • claude footer: request is request_facts, so the lock census stops reading it as the program resolver's
  • gui: the Claude footer resolver declares its scheduling role inside its spawn closure
  • spec(claude footer): DormantWatchCannotRead names its slip — a session stop that leaves the watch reading (the dormant-refresh class of …)
  • spec(claude footer): the dormant-refresh mutant is a Buggy branch of StopSession, so ty's strict vacuity credits it
  • shell integration (cmd): no run-time read of ATERM_DISABLE_PROMPT_TITLES — a user's own PROMPT title is the override
  • aterm-gui: a live copy of the restore manifest, so a crash, a kill or a power loss reopens the layout
  • aterm-gui: the live layout carries the agent each tab hosts
  • aterm-gui: the live layout writer declares its QoS role (Background, the messages log's)
  • harness: an agent whose tab a crash of aterm took is relaunched in the tab the next launch reopens
  • aterm-gui: a restart, a logout or a shutdown keeps the hosted agents for the next launch
  • aterm-gui: a restored leaf boxes its agent, and the crash relaunch is written down
  • aterm-agent: the relaunch-line pin reads the exit relaunch where it now lives
  • gui: the Claude footer resolver declares its QoS role where the census reads it

Source release. SHA256SUMS is a per-file manifest of the released tree, with a detached Ed25519 signature (SHA256SUMS.sig) by a machine key named in the attached master-signed roster (aterm-machines.toml + .sig). Verification chain and key inventory: SIGNING.md in the publication engine; the roster pin is committed in aterm crates/aterm-update-core/src/pins.rs.