Repository navigation
base red: panic ratchet: remove the apps series' 14 indexing and 7 unwrap hits - #28847
Conversation
…c ratchet) The panic ratchet is red on feat-cmux-next again after #28808: the apps series reached the tip at 03:15Z (9d1b1f9, 045f9e0, e62b402, 0012704, 8024f86), after #28808's green run. New hits, found by diffing the CI clippy JSON of #28808's runs before and after: - cmux-tui indexing_slicing 841 > 831: cli/apps_list.rs reads of an owned reply Value (value["id"], ["ok"], ["data"], ["error_code"], ["error"], scope["scope"|"risk"|"optional"|"reason"]) -> get(...) with the same result for every input, and args["query"] = ... -> JsonSet::set - cmux-tui-core indexing_slicing 857 > 853: apps/deploy.rs manifest["deploy"]["server"|"targets"] -> JsonFields::field; store.rs result["instance"] = ... and supervisor.rs row["instance"] = ... -> JsonSet::set - cmux-tui-core unwrap_used 1042 > 1035: apps/deploy.rs seven .lock().unwrap() -> RecoverPoison, as the rest of the crate does The baseline is not raised. Reads give the same values (a missing key was Null before and is None now; both give the same default). The writes are on objects, where set does what IndexMut did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nic-ratchet-apps-deploy
|
Review (Opus 5.5, review subagent): SHIP at 070aa32 I found no correctness defect. I read the diff CI evidence. The Same result for every input (I checked each one against serde_json's semantics):
Compiles in principle (CI also confirms it for Remaining hits from the apps series: none for the deny lints. The series still has |
Reads the App Store from the session daemon's supervisor (apps-store catalog.list / catalog.get) with no Mac app, so a self-hosted Linux host lists its apps too. list joins each listing with its install state (--installed, --query, --json); info shows the scopes with their risk class.
…ud VM
Manifest v2 gains deploy {server: {kind: container, image, port, health},
tenancy, targets} and implements[cmux.pane/1].remote = instance; billing
{model} is free only (Lawrence 2026-10-30). The validator refuses a remote
pane without deploy and a local target for a third-party app; the schema
refuses shell characters in image and health.
cmux.apps.install takes deploy {target}: self-hosted:<ssh host> (the
customer's own machine over SSH or Tailscale SSH, no cmux Cloud call) or
cloud-vm:<machine> (cmux cloud exec). One POSIX runner for both: docker or
podman run bound to the tailnet address (else 127.0.0.1, never every
interface), wait for the health path, print the URL. The install commits and
answers with the instance deploying; a worker records running + URL, or rolls
the install back (container removed) with the reason in the app log. Remove
removes the container. Instances persist in <state>/apps-instances.json and
show in apps-list and installed.list.
|
Fleet results at the head 070aa32 (cmux-ci, |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base db183fa; does not block Shipped in:
|
What
A base red, priority zero. The Rust panic ratchet in
cmux-tui spec / clippy (changed cmux-tui packages)is red again onfeat-cmux-nextafter #28808. The apps series reached the tip at 03:15Z (9d1b1f9, 045f9e0, e62b402, 0012704, 8024f86, all direct pushes), after #28808's green run:Red: #28808's own ratchet run at ddd1753 on a merge ref that held the apps series (job 124426587561). Before the series, the same job passed on 9e0d6b0 (job 124422331085). I diffed the clippy JSON artifacts of the two runs, and these 21 new sites are the whole difference:
cli/apps_list.rs: reads of an owned replyValueandscope, andargs["query"] = ...get(..).and_then(Value::as_str/as_bool), which gives the same result for every input;JsonSet::setfor the writeapps/deploy.rsmanifest["deploy"]["server"|"targets"],apps/store.rsresult["instance"] = ...,apps/supervisor.rsrow["instance"] = ...JsonFields::field,JsonSet::setapps/deploy.rs.lock().unwrap()RecoverPoison, as the rest of the crate doesThe baseline is not raised. Behavior does not change: a missing key was
Nullbefore and isNonenow, and both give the same default. The writes go to objects, wheresetdoes whatIndexMutdid.Pass on the head: this PR's own
clippy (changed cmux-tui packages)run (the result goes in a comment).Changelog
none
Observed / Not run
python3 scripts/cmux-next/prepush-gate.py: no new violations.rustfmt --check(pinned 1.95.0) on the 4 files: clean.cmux-tui-rust-check.sh clippyand the existing testsrows_join_install_state_and_filter_installed,parses_list_and_infoandserver_spec_refuses_shell_characters. The results go in a comment.