v0.8.68 batch: Android updater, Termux docs, perf consts, sub-agent tool sandbox#4263
Conversation
The generic format!("{prefix}-{os}-{arch}") path in
release_asset_stem_for_prefix already produces correct Android asset
stems (codewhale-android-arm64, codewhale-tui-android-arm64) because
std::env::consts::OS returns "android" on Termux. The glibc preflight
in preflight_downloaded_binary is already Linux-only via
cfg!(target_os = "linux") — Rust treats android as distinct from
linux, so Termux builds skip the GNU libc check (Android uses Bionic).
This commit adds explicit test coverage and a documentation comment:
- android_arm64_maps_to_android_release_assets: verifies stem formation
for codewhale, codewhale-tui, and codew on android/aarch64.
- ensure_supported_release_target_accepts_android: Android is a
supported release target (not rejected like linux/riscv64).
- android_release_assets_never_select_linux_arm64: sanity guard.
- Clarifying comment on preflight_downloaded_binary documenting the
Linux-only rationale.
No production behavior changes — the logic was already correct; this
closes the verification gap.
Refs #4241
Signed-off-by: Hunter B <hmbown@gmail.com>
…ior (#4238) Add docs/TERMUX.md covering the Android platform posture: - Sandbox: unavailable (type=none). get_platform_sandbox() returns None on Android; no Linux-only sandbox modules are compiled (cfg-gated). - Approvals/gates: full, application-level, platform-independent. - Secret storage: falls back to file-backed JSON (~/.codewhale/secrets/) since Android has no OS keyring. - Self-update: selects android-arm64 assets; glibc preflight is Linux-only. - Known limitations table for the first Termux release. Verified against code: sandbox mod.rs cfg guards, secrets crate FileKeyringStore fallback, update.rs preflight_downloaded_binary guard. Refs #4238 Signed-off-by: Hunter B <hmbown@gmail.com>
Centralize the 'auto' sentinel string into named constants where the semantic meaning is shared: - config/src/route/ids.rs: pub const AUTO_SENTINEL = 'auto' for the LogicalModelRef router sentinel (used in is_auto()). - tui/src/core/engine/turn_loop.rs: const REASONING_EFFORT_AUTO = 'auto' for the reasoning-effort tier that means 'let auto-reasoning decide' (used in resolve_auto_effort match guard). Other 'auto' literals (tool_choice JSON value at turn_loop.rs:608, config parsing in lib.rs) have different semantic contexts and are intentionally left as literals. DEEPSEEK_* env var names are unchanged. Refs #4158 Signed-off-by: Hunter B <hmbown@gmail.com>
|
Claude finished @Hmbown's task in 4m 39s —— View job Claude finished @hunter Bown's taskTodo list
SummaryReviewed all four lanes (#4241, #4238, #4158, #4042). #4241, #4238, and #4158 are clean — small, well-tested, no behavior change (#4241) or a pure rename-to-const (#4158). #4042 (sub-agent tool restriction inheritance) is the substantive change and has one bypass that undermines the feature's stated invariant. 🔴 Correctness/security —
|
Implement parent --disallowed-tools inheritance into sub-agents: - SpawnRequest carries disallowed_tools + inherit_disallowed_tools (default true) - WorkerRuntimeProfile gains denied_tools with derive_child() union semantics - SubAgentToolRegistry applies deny filtering in is_tool_allowed(), tools_for_model(), and execute() — restricted tools never reach the model - Wildcard matching: exact, prefix *, case-insensitive - Fleet worker_runtime threads disallowed_tools into WorkerRuntimeProfile 22 new tests: inheritance flows down, opt-out works, two-generation inheritance, wildcards, case-insensitive, deny-wins-over-allow, catalog filtering, execution gates, background runtime propagation. Harvested from PR #4096 by @JayBeest (rebased onto current main; the original PR was dirty against main after #4262 landed). Refs #4042 Signed-off-by: Hunter B <hmbown@gmail.com> Co-authored-by: JayBeest <67948678+JayBeest@users.noreply.github.com>
a8cfb40 to
f1d13a4
Compare
|
Claude finished @Hmbown's task in 1m 53s —— View job Claude finished @hunter Bown's taskTodo list
SummaryThis is the same commit set ( 🔴 Correctness/security — still open:
|
Summary
Coherent v0.8.68 milestone batch across four lanes:
#4241 — Teach updater to select Android assets on Termux
The generic
format!("{prefix}-{os}-{arch}")path already produces correct Android asset stems (codewhale-android-arm64). The glibc preflight is already Linux-only viacfg!(target_os = "linux"). This adds explicit test coverage and a documentation comment — no production behavior changes.#4238 — Make Android sandbox and secret-store behavior explicit
New
docs/TERMUX.mddocumenting the Android platform posture: sandbox type=none (no Landlock/bwrap), file-backed secret storage fallback, approvals still apply, self-update selects Android assets. Verified againstsandbox/mod.rscfg guards,secretscrateFileKeyringStore, andupdate.rspreflight guard.#4158 — Define consts for repeated string literals
Centralizes the
"auto"sentinel into named constants where semantic meaning is shared:AUTO_SENTINELinconfig/src/route/ids.rs(router sentinel),REASONING_EFFORT_AUTOinturn_loop.rs(reasoning tier). DEEPSEEK_* env var names unchanged.#4042 — Sub-agent tool restriction inheritance (Phase 1)
Parent
--disallowed-toolsflows down to child agents by default.SpawnRequestcarriesdisallowed_tools+inherit_disallowed_tools(default true).WorkerRuntimeProfilegainsdenied_toolswithderive_child()union.SubAgentToolRegistryapplies deny filtering inis_tool_allowed(),tools_for_model(),execute()— restricted tools never reach the model. Wildcard matching (exact, prefix*, case-insensitive). Fleet worker_runtime threadsdisallowed_tools.22 new tests — all passing.
Harvested from PR #4096 by @JayBeest (rebased onto current main; original was dirty after #4262).
Verification
cargo fmt --all --check✅cargo check -p codewhale-tui --locked✅cargo test -p codewhale-tui --bin codewhale-tui --locked disallowed_tools→ 22 passed ✅cargo test -p codewhale-cli --locked android→ 3 passed ✅cargo test -p codewhale-tui --bin codewhale-tui --locked resolve_auto_effort→ 1 passed ✅Refs #4241 Refs #4238 Refs #4158 Refs #4042