Repository navigation
aterm v0.95.0
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 … trailflag - 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_inputnames 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 leasenames <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:30is 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
idleonly at its composer, soawait agent idlewaits for the REPL - phase: Claude Code's shell-mode prompt box reads
idleagain, 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
unknownverdict 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/…/continueduntil 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
restartingwhile its model is waited for, thendonefrom 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
/exittoo — and the signal isquiet=the grace - harness(codex): the
/exitrestart'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 lintis 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 -Oandgit <cmd> --helpare 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 statussays checked_at and next_check - claude footer:
requestisrequest_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.