Repository navigation
aterm v0.147.0
aterm v0.147.0
2026-10-30 · 320 changes since v0.146.0
Fixes
- gui: no hwkey key answers a confirmation, whatever window it names
- keeper: harden socket/log symlink and ownership checks and fence companion refusals per request
- accounts: exclude renewal bookkeeping from login enrollment
- accounts: fence explicit renewal against vanished login files
- search, sixel, bootstrap-verify: guard empty column spans, sixel param slots, and nsswitch/group checks
- secrets, uds: a vault holder ends its registrations before the Mac sleeps
- secrets: rounds while the Mac sleeps never take alab-secrets unprobed at the wake
- secrets: a server that cannot hear this Mac's sleep says so
- secrets: a sleep thread that failed is not logged as a timeout
- wayland: guard OwnedFd fds, serial wraparound, v1 output done, late offers, and bind versions
- grapheme, pty, update-core: harden line_break marks, child env upsert, and private-dir/lock bounds
- toolchain, control, session: harden deadlines, pipe bounds, RFC 8259 strings, and reply landing hooks
- gui: a confirmation fences the key queue as it opens, so no queued hwkey key answers it
- gui: the key fence holds the Windowed proof before it asks AppKit for the app
- db: move a directory at the claims ring state aside, so claims go on (F19)
- db: a rebuilt claims ring state keeps its floor and finds every old table (F19)
- db: a clock back from running ahead reads its peers again at once (F19)
- db: the catalog's tables leave the claims ring its storage slots (F19)
- db: a clock behind its claims floor records no claim (F19 review)
- secrets: a Mac left in to carry on and then removed never strands the Undo
- secrets: Macs let in through the remover's entrants never acknowledge its acts
- secrets: removing the remover contests its acts instead of acknowledging them
- secrets: a bare m<N> that is also a host name names every Mac it matches
- secrets: an Undo names the incarnation of the remover that has removals to undo
- secrets: revoke sends a Mac the log does not seat to the admin's revoke
- secrets: a Mac the log lets back in loses the deny rows its removal wrote
- agent: survey_facts names deny rows' labels without aterm-secrets off unix
Tests
- accounts: reject checkpoint-only login enrollment and recovery
- accounts: give the completed-init fixture a provider profile
- agent: this crate's tests read no host names
- two live turns wait the hang detector for their submit, not the verb's 2 s window
- fabric: three bus reads wait the harness's IO bound, not the product's 3 s
- worker_spawn: wait for the roster's placement columns before judging them
- secrets: a POST after a torn tail, and one that makes a full store drop a record, write the file whole
- secrets: a will-sleep through the server's own listener wiring ends its registration until the wake
- census: the denied node_key census test names this Mac m1 from a scratch aterm.toml
- date initial account input before wrong-account holds
- prepare lab worlds under short scratch roots
- handoff: v0.146.0's producer fixtures, written by its own cut
- census: main's node-key deny test names this Mac m1 from a scratch aterm.toml, not the host's name
- lift must-answer waits off product budgets in link, atpkg, http, release, update
- lift must-answer waits off product budgets in aterm-db and aterm-secrets
- lift must-answer waits off product budgets in aterm-gui and aterm-pty
- format the hang-detector lifts in aterm-db, aterm-secrets, aterm-gui and aterm-pty
- close the hang-detector gaps a hostile review of the lifts found
- aterm-secrets' own envelope reads wait the hang detector
Docs
- secrets: say when a refused member resends its store, and every case a records file is written whole
- vitals: clarify macOS free memory excludes speculative pages
- db: say only what the claims-ring fixes back (F19 review)
Other
- Add preserved two-host Commons startup fixtures
- Record physical ordinary-startup Commons convergence
- secrets: bound publish_local_node_key locks and enforce log recipient exclusions in observe_commons
- db: use read-only Journal::read_existing in runtime pending poll and observe_contacts
- fleet: a test of the binary sets a join's wait for its issuer through a dev seam
- ctl: a test sets a discovery probe's wait through a dev seam
- ctl: redial tests lift the probe cap for a server that serves
- fleet: init tests whose listener serves wait the hang detector for its proof
- net: fleet test listeners give an in-process dialer the hang detector
- style: format …'s after_host_gone and …'s serves_new_key look
- ctl: a test sets a connect's accept patience, on its thread or through a dev seam
- upgrade: the roster-aside tests read their fakes under the hang detector
- fleet: a leave whose every peer serves in process reads them under the hang detector
- ctl: with_accept_within is a unix tests' setter
- net: the descriptor-scan test's drain control reuses one pair until it drains
- ctl: the dev-seams feature's comment names both seams it turns on
- Format with trustfmt
- secrets: read settled control journal lock-free in writer_here
- ctl: the last two redial tests lift the probe cap for a server that serves
- secrets: a server's store with no genesis takes records only with the genesis that roots them
- secrets: a join flood takes the newest fresh row, never one that asked again
- secrets: a publish lets the state lock go before its PUTs
- secrets: a records POST copies no record's bytes and appends what it adds
- style: trustfmt server.rs
- secrets: a full desk takes a row of the most crowded sources, never a newcomer's first
- Preserve ordinary host run output and identify instance followers
- agent: detect_machine_id reads no host name and no real home in its crate's tests
- agent,docs: a test reaches the pool's host-name fallback again; census and R8 text say what is true
- Remove redundant inner unsafe block around safe offer destroy wrappers
- secrets: preserve log audience exclusions across overlay/publish and accept followed signers in prepare_account_decision
- style(secrets): the wiring test names its handler type for tippy's type_complexity
- secrets: overlay log Commons membership on unstamped envelopes and filter Commons hosts
- secrets: include unproved founders and [everyone] exclusions in roster labels and revoke repair
- secrets: filter denied 64-hex node_keys and merge branch node_keys in reconcile_merged_metadata
- db: enforce log audience exclusions in check_log_witness and verify_peer_against_local_log
- lab: make the prepared-world tests' parent under /tmp, not $TMPDIR
- Add expiry boundary regressions for account wall advice
- Use supported ordering in the planning model
- Resume retained quota walls after their recorded expiry
- harness: the quiet upgrade tells an agent whose own work holds its move
- harness: the window's old break door forwards to the guarded one
- harness: the quiet tell promises only a move aterm can make
- harness: the shared move plan names its result and goes by value
- supervise: a break tells its host a task landed under Land, tested
- harness: the quiet tell's plan gate goes before the build probe
- supervise: a tape from before the guarded break door replays the old one
- harness: two of main's relaunch tests name the upgrade's tell
- secrets,agent: enforce deny-lists in swarm label, pool identity, mail relay, and census
- agent: tests pin the machine choices and the Muse goal store that this crate's test arms skip
- Correct remote-hold recovery advice for merged fleet membership
- accounts: harden the automation on main's design (round 2 of the review)
- Ignore future mailbox timestamps before selecting renewal input changes
- Keep account admission controls within their clock and platform
- agent: bind node_keys in roster_identities and census, enforce deny-lists in names_this_machine
- agent: resolve age1 recipients in census server_heard and enforce deny-lists in survey_facts
- Keep mapped Unix build outputs while their processes still use them
- Exercise complete-but-cut and oversized mapping observations
- Name the mapping witness as an explicit pointer read
- Keep every possible owner of an ambiguous Linux mapping
- Keep mappings visible beside the removers own lock descriptors
- secrets: enforce roster deny-lists and log exclusions across steward lease, standby server, and admin checks
- Finish merged-book diagnostics and measure sweep progress
- Compose sink Landing arg and Watch::enter onto merged origin/main
- Use usize::clamp in Sink::drain_loop
- Update trust floor ratchets
- Gate Unix-only aterm_secrets call in survey_facts::resolve_machine_label
- secrets,agent,cli: expire denied lease holders and filter stale denied account claims
- agent,primer,cli,docs: Cruise and Land answer a park on a go-ahead for the agent's own work (go-ahead@v1)
- prism-glass 1 fix: trail-diff fails a light arm on a dark ground
- prism-glass 1 fix: the yield's state goes with the light
- prism-glass 1 fix: every route that lays the glass again yields it
- prism-glass 1 fix: a composed frame's yield reads its own pane
- prism-glass 1 fix: the yield keeps the spec's bar, measured on the shipped glass
- prism-glass 1 fix: the Settings preview keeps the page law
- prism-glass 1 fix: the dark pin's glass reads are wired through the app
- prism-glass 1 fix: the dump honours page wallpaper and pane themes
- prism-glass 1 fix: the light corpus compares the live level with main's paper arm
- aterm-release: the proved (calculus) counter reads Trust's VF5 calculus authority
- aterm-release: the proved (calculus) counter refuses every line Trust would not write
- aterm-release: trust_credit formatted (verify fmt --fix)
- secrets,db,net,gui,agent: enforce deny-lists across toolset peers, Commons enrollment, lease expiry, and copy_again
- secrets,agent: enforce roster deny-lists and node_key exclusions across log entries, admit, drive grants, and standby stewards
- Fix agent lint failures found by the wide networking check
- Specify account identity credit for alternate login completion
- Distinguish alternate account publication from requested renewal
- Collapse the denied-member admission condition
- Trail review9 fixes (work in progress): Comet air rows, mono ring latch, cat's wide steps, bolt girth, bar latch, Sparkle pin, combining marks
- Trail review9 fixes (work in progress): the companion keeps off a lettered row above, trail-companion reads
- settings_preview: the head-law test builds
- settings_preview: the companion's row bound reads the head law, and the shipped specimen is held to it
- kitty_pet: a bound under a lettered row keeps its head under it, and the sink reads a bound's whole way
- cursor_glow: a pinned colour is Sparkle's paper star too
- aterm-effects: a chosen colour lands as itself on paper
- aterm-effects, aterm-gui, aterm-render: fit the companion to its row between lettered rows; a chosen colour charges in its own hue
- aterm-effects: the console judges the box the head law draws
- aterm-gui: the preview reads the head law's fit without a test seam it cannot reach
- aterm-effects: the typing-momentum glow wears a chosen colour in its own hue and chroma
- aterm-effects: the momentum chosen-colour test judges the glow's own quads, beside Classic too
- aterm-effects: Classic's paper wake wears a chosen colour in its own hue and chroma
- aterm-effects: a stance's stretch never carries the pet onto the caret's cell
- aterm-effects: a departing ghost keeps the edge its body's stretch kept
- aterm-effects: the stretch-off-caret test names its row type
- aterm-effects: a run off a held landing sets out from the pose on glass
- aterm-effects: the head law reads the last row, holds across gaps and looks ahead; a strike's narrow control reverts its girth alone
- Themes keeping: a reused list keeps its frame, a press's reveal parts from main no more
- Themes keeping: a press that moved the keyboard away holds no place for a status
- Themes keeping: R2's chosen-anew rule has a control and a line among the rules
- Themes keeping: a list is reused for another room only where its stops lay out alike
- Themes: fold the press-reveal and row-likeness comments to one line
- Themes keeping tests: hold each known walk to every rule it breaks
- Themes: tell the least bar's keyboard span on the least room's own rows
- Themes: read a footer control's reach only where a least's span asks it
- Themes: ask the render's Between before rows_apart where a least's span is told
- Themes keeping tests: fold five test comments to one line
- Bound disposable package caches through guarded whole-generation retirement
- Preserve package host entry and settled cache status across compiler changes
- Preserve registrar fixture process groups under the bounded wait
- secrets,db,agent: enforce lock-safe roster reads, node standing, and host deny-lists
- secrets: cascade node-denied members in revoke repair and enforce roster/node checks in handover and log overlay
- agent: two lints main's tippy -D warnings flags (a Copy recipient cloned, a collapsible if)
- release: pin which wrong .cer the certificate wait names
- cli: pin how help permissions reads its consent probes
- release: build the arrival test's paths instead of cloning them
- release: the arrival test pins that a .cer which left the folder leaves the wait's report
- Keep Cargo queries out of build-cache ownership
- secrets: enforce node standing in recipient_is_removed and roster deny-lists in entry/fleet reads
- secrets,db: fix lock self-deadlocks in enrollment/log/roster/fleet reads and check log roster in peer verify
- membership_log: the Undo's cutoff and progress, and the coverage rule alone (F16)
- secrets: any member removes, and the vault pass covers concurrent removals (F16)
- members: a removed Mac that asks again shows as removed; Allow again restores it (F16)
- members: remove, undo and Allow again from the CLI and the band; the admin revoke is the no-log fallback (F16)
- lab: the F8 lane's removals plane runs F16's quorum Undo after the heal
- style: trustfmt the F16 files
- lint: the F16 code passes tippy -D warnings
- secrets(F16 review R1-4): host lists the remover cannot open are named and rotated by their members
- secrets(F16 review R1-2): revoke takes the admin path for an envelope admin; a log removal says its key stays
- members(F16 review R2-6):
aterm members undolists the Undo rows and signs nothing - style: trustfmt the F16 review fixes
- style(secrets): two tippy findings in the merged tests
- Bump all harness versions for the 0.147 release window
- secrets,agent,cli: enforce local recipient/roster denials in materialization, commons, and LocalLog
- Add direct session mail over authenticated fleet drives
- Read reserved entries without recursively asking for unused admin status
- Complete the two lint corrections missed by the abbreviated report
- agent,primer,cli,docs: the go-ahead answers only an agent's own reversible park (go-ahead@v1 review)
- agent,primer,cli,docs: the go-ahead answers only an agent's own reversible park (go-ahead@v1 review 2)
- secrets: say the denied standby check's error with is_err
- agent: trim a go-ahead word's edges with a char array
- Advance automatic disk cleanup through bounded target pages
- secrets,agent: track applied.vault stamps in LocalLog/Commons and enforce canonical roster denials
- Fix harness-bump baseline before the release version changes
- gui: pin what a notice route posts and the balloon's title-only text
- gui: pin that a refused secure-input change is not recorded
- gui: pin the jobs pass's root-only pid version and coalition match
- gui: pin the exact thermal state's precedence and the why seam's scenes
- gui: pin Tab Control's host naming, machines.toml and Bonjour readers
- gui: pin that an unconfigured roster reads without the harness state
- gui: pin that a disk search cut short makes a cut survey
- gui: read kern.boottime's sec past the space after its
= - gui: name every None case in configured_hosts_in's and roster_at's docs
- gui: the host-name test pins a [names] match by the name; the thermal test has no 10 s budget
- Collapse the denied-local-log guard without changing its predicate
- Admit LAN requests automatically to the pinned open ALab vault
- Collapse the steward recipient denial check for tippy
- Request the current notary credential and bind its wire entry
- secrets: lift node, label, and recipient denials across new-incarnation log restores
- Release Commons test journals before checking revocation
- Advance managed ALab vault jobs to the installed release
- secrets: lift log-restored deny rows in entry, steward, and admin roster checks
- Refresh managed ALab subscribers from headless converge passes
- Keep admission and refresh regression tests precise
- db: keep recovered schema-successor credential requests in standing
- release: invoke ensure_notary on mutable notary_acquire when credential raises need
- Initialize pending subscriber fixture state before mend checks
- Create pending refresh fixture through the real join path
- Prepare and prove shared release signing automatically
- Group membership node record masks for lint
- Remove obsolete helpers after shared keychain extraction
- Show shared Commons account proposals in account lists
- Compose the node mask argument grouping with account lists
- Keep fleet mail usable across concurrent reads and departed senders
- Keep the mailbox lock error on Unix targets
- Accept direct-mail metadata in fabric proof waits
- secrets: deny node_key and expire steward lease on member removal
- Report safe local stages for refused network observations
- Reproduce contact expiry between a live publication and its reader
- Age expired peer contacts without discarding a fresh observer snapshot
- Pair membership eligibility masks and record corrected observer evidence
- Keep the shared Git credential helper active across token rotation
- Harden file safety, signal state, and deadlines in aterm-agent
- Fix main tippy warnings in node_service and go_ahead
- Fix module paths for read_bounded and write_atomic in upgrade_drive submodules
- Keep SecretRule::Under scoped inside repository root unless rel traverses outside
- secrets: let unproved founders wrapped in Commons open control from log
- secrets: preserve Everyone members in reconcile_commons_log and filter removed seats in member_list
- Publish direct fleet mail arrivals through normal discovery
- Retry direct mailbox observations until refresh succeeds
- Exercise retryable mailbox refresh under contention and damage
- Refuse owner forwarding when a fleet-driven session moves
- Retry pre-dispatch fleet busy replies within the original deadline
- Check late handoff writes wake a real mail subscriber
- Mark the response formatter context as intentionally unused
- Read the last cached direct arrival without reverse iteration
- Preserve direct identifiers in the timeline view
- Use the fabric module binding for the mailbox worker
- Describe approval-free ALab LAN joins in setup help
- Compile durable mailbox notifications only on supported Unix hosts
- Read mail frames after the subscription roster handshake
- Reproduce retained retry activity after alternate login publication
- Retire attributed retry holds after verified login publication
- Fence publication cleanup by captured claim identity
- Test expired retry attribution with a deterministic clock
- secrets: reserve admin validation for reads that need it
- style(secrets): format the log-backed read regression
- secrets: exercise denied admins and avoid unused policy privilege checks
- secrets: preserve roster denials across node key replacement
- Show shared imported account candidates without inventing login details
- capacity: lift verify's memory book into aterm_capacity::book
- capacity: a covering claim covers the builds its holder's tree starts
- atpkg: build_admit, a plain build's memory claim around its targo
- lab: claim each heavy nested build's memory before it starts
- atpkg: a rerouted cargo build claims its memory before it runs
- models: the build claim's lock order, bound to build_admit
- atpkg: a debug build's front claims in the ledger its test names
- capacity,verify,release,atpkg: say what runs the front now the hop is out
- atpkg: a rerouted cargo execs again, so its tab still names cargo
- atpkg: verify's own test compile and lint read verify's records
- capacity: a plain build claims the most of every record of its work
- capacity,atpkg: a fresh rerun never pushes a build's heavy peak out
- atpkg: a failed build keeps a peak that raises its key's claim
- atpkg: one signal forwarding at a time in a process
- atpkg: a front dies of the signal its build died of
- atpkg: a front passes on every signal a direct build would have taken
- capacity,atpkg: a claim outlasts what its signalled build left running
- atpkg,lab,models: bind the claim-before-spawn order where calls take it
- lab: a heavy build's test names the failed-build rule it checks
- atpkg: a debug front on a scratch ledger admits at once
- capacity,atpkg: test the live lineage and a front's reaped-child floor
- capacity: test that the cover marker reads its holder's claims alone
- capacity,verify,release,atpkg,lab: a cover marker names one claim
- atpkg: format build_cache.rs
- capacity,atpkg: read the build's tree with no lock of the same name held
- atpkg: name the verify stage rule's function type
- agent: clear main's four tippy errors
- verify: a stage new to its checkout claims what another checkout kept
- secrets: name why the node index takes eight arguments (main's tippy error)
- Complete bounded disk observation cycles before worker handoff
- secrets,db: harden log witness wraps, roster projection, and deny checks
- Validate actual service destinations before automatic migration
- Preserve stopped service choices during automatic restart
- Validate only new server candidates while restarting retained programs
- Keep standby test seam platform and lint attributes on its function
- Harden file staging, non-blocking reads, pid-zero guard, and Mach-O bounds (Batch 107)
- Allow pipe replay in agh and fix main tippy warnings in aterm-agent
- Keep aterm-agent tippy fixes in fix/batch-106
- Fix identity-op lint in macho_order test and update fleet allow --all assertion
- Align fleet_live_headless hold refusal check with merged-book advice
- db,secrets: harden ring adoption bounds, custodian writer checks, and log enrollment
- Preserve newer node services across fallback app selection
- Scope the node admin lock name to Unix
- Verify fresh node destinations before starting the service
- Observe node lock contention at its actual wait hook
- Scope the node lock test observer to Unix
- Inspect retained credential requests without advancing their state
- Use explicit JSON types and actor references in request inspection
- Report retained request operations separately from interpreted records
- Keep the ring storage bound as a direct comparison
- secrets: harden lock files, handover audience checks, and multi-seat log denials
- Expose RecordsAuthorLock file types to lock-order census
- Avoid redundant rewind recording work per parsed slice
- Share immutable rewind queue routing per message
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.