Repository navigation
feat(warm-pool): simlock warm forget forgets a learned kind - #1040
Merged
V3RON merged 18 commits intoOct 29, 2026
Merged
Conversation
…ets one A kind the warm pool learned from a lease is now forgotten once no lease has used it for warmPool.learnedTtlMs (7 days by default), so its idle device is left to the idle rules. warm.forget (simlock warm forget, forgetWarmKind) forgets the kinds of one model at once. ADR 0050, proposed, narrows ADR 0038 §4. Protocol 65.
warmPool.learnedTtlMs and the pass that expired kinds go: ADR 0038 rejected a fixed-time expiry, and leasing's eviction already keeps a stray kind from blocking anything. ADR 0050 now covers warm.forget only.
… that keep devices
alcpereira
marked this pull request as ready for review
October 28, 2026 19:11
…et of the kind's spec
…by the pool's rule
…50 names ADR 0051
… the pool through the daemon wiring
Contributor
Review ledgerRound 1: fea9513 {"findings":[{"id":"R1","role":"code","class":"testing 10: pass request unasserted","outcome":"fixed","path":"src/core/warm-pool/converger.test.ts","round":"1","fix":"fd415a704"},{"id":"R2","role":"code","class":"testing 3: daemon wiring untested","outcome":"fixed","path":"src/daemon/server.ts","round":"1","fix":"3991a20e0"}]}Written by an agent. |
Contributor
HandoffDone: merged Not done: the gate. CI on Findings: none open. See the review ledger. Blocked on: ADR 0050 is still Proposed. Merging would ship a decision the maintainer has not accepted. To merge: set ADR 0050 to Accepted (its status line and its row in the index), then run Written by an agent. |
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A lab worker has 2 Android slots. A quoting mistake leased
--device Pixel(avdmanager's generic profile) instead ofPixel 9. Both leases were released, yet the stray "Pixel" emulator stays booted:managed 2/2, running 2, andsimlock cleanup --dry-runreturns[].That is ADR 0038 as written:
targetedDevices()keeps one ready device of each learned kind, soidle-shutdownspares it. Leasing still evicts it for another model, so nothing is blocked, but the slot and RAM sit wasted. There is no supported way to undo one mistaken lease:device removeis physical-only, andnukeresets everything.Change
warm.forget:simlock warm forget <ios|android> <model> [<os>] [--mode] [--image-tag] [--json], andforgetWarmKindon the admin client. It forgets the matching learned kinds; the reaper's idle rules then shut the device down and delete it through the lifecycle. A gateway refuses it.Status
Implement: done Review: passed; ADR 0050 flip verified by coordinator (adr-flip-check ok) Hardware: n/a Gate: running
Assumptions
Review
Spec review: skipped. Code review: 2 blocking, 2 fixed, 0 notes. Claims review: 0 blocking, 0 fixed, 0 notes.
Rounds: 2. Tokens: 2.2M.
Runs: 8. Cost USD: 2.9568. Agent seconds: 1305.
Assessment: complete
Written by an agent.