Repository navigation
Carry feat/dry-run-json in integration - #5
Conversation
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Delightful! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
There was a problem hiding this comment.
🔵 Needs a closer look
The recipe activates a security-sensitive 12-file feature whose review is still running and whose macOS path was not tested.
0 open findings
What changed in this PR
Adds feat/dry-run-json to the integration rebuild recipe after all existing topics.
Changes:
- Carries
nono run --dry-run --jsonin daily integration builds. - Places the topic last in merge order.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or rungh pr ready --undo.
Click "Ready for review" or rungh pr readyto reengage.
| File | Description |
|---|---|
.github/integration/topics |
Adds the dry-run JSON topic to the integration recipe. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
c0fce1f to
5b1448f
Compare
Adds the topic branch feat/dry-run-json (nono run --dry-run --json) to the recipe, last in the merge order.
f72e832 to
4e664af
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Adds
feat/dry-run-json(321a5f69) to the recipe, so the daily rebuild carries it. It goes last in the merge order. The topic line describes the branch as it now stands (launch-plan report, planned without reading credential sources). The code is reviewed in #4, a review-only PR of the topic against upstreammain(9edf3ea). This PR is the merge vehicle and changes one line of.github/integration/topics.What the branch does
nono run --dry-runprints the resolved capability set for a person. agent-sandbox-nono's launcher needs the same answer as data: before every launch it checks that the box's grants never reach the other tier's storage. Today it has to parse the text summary, and that broke three ways in review:resourcesrow that--memoryadds.The summary also never shows brokered commands' sandboxes.
nono run --dry-run --jsonprints, as one JSON document on stdout, the capability set the run would apply, read from the launch's own plan rather than from a resolver of its own:prepare_run_launch_plan(the plannono runbuilds);select_effective_policyadmits, each intercept that launches something), built by the command-mediation runtime the launch prepares (build_child_launch_spec) and read back from the launch spec the child applies. No proxy is started: each command-scoped proxy the run would start gets a stand-in loopback address. The runtime's directory is removed afterwards.The contract is that set. What else a run does is named in
out_of_scope: brokered commands' network policy, external enforcement, PATH resolution, host session hooks, environment credentials,open_urls, signal, process-info and IPC scope, nono's own per-launch files. What would widen filesystem access beyond the list setsincompletewith a named reason: capability elevation, raw or generated Seatbelt allow rules, and a brokered launch the runtime wouldn't build.declaredandcwd_dependentkeep each brokered policy's declared paths as the launch expands them, for a consumer judging a later run. The format and itsversionare documented indocs/cli/usage/flags.mdx.Execute allowlist: a JSON dry run doesn't build the session's execute gate (an ELF closure over every executable on PATH, nearly all of its cost; about 1.7 s on this host, now 0); the report doesn't read it, a test shows the report is the same when it is built, and
out_of_scopenames it.Plan-only: a JSON dry run reads no credential source (no keystore, password manager or credential command), pulls no profile, and prompts for nothing; each credential is listed as declared, and anything only a source or a person would decide is named in
incomplete. A test proves a command-backed credential's command doesn't run. Open for the operator: the profile's own setup (a credential store's parent directory, nono's profile directories) still happens in a dry run as in a run, and a brokered interpreter's script-argument read stays unmarked (bounded byfilesystem).Upstream: no issue or draft filed. A draft description is ready on our side; it would need a NEP or discussion, DCO and disclosure if offered.
Checked
integrationas rebuilt after Stop carrying fix/claude-securestorage-config-dir: superseded by nolabs-ai/nono#2085 #6 (5b1448fa, upstreamf7fb72fb+ five topics)..github/integration/rebuild --layer integration-dry-run-json(no--push) merges all six topics onto upstreamf7fb72fbwithout conflicts, giving8decec7b.eb98ec24, where it was checked):cargo clippy --workspace --all-targets --all-features -D warnings -D clippy::unwrap_usedis clean, anddry_run_json(20),config_flag,profile_cliandschema_shapepass.-D warnings -D clippy::unwrap_used) are clean onnono-cliandnono-test-support.cargo test -p nono-cli --no-fail-faston321a5f69: 2420 pass, exceptproxy_credential_capture_backend_exposes_browser_helper_for_open_urls. That test fails the same way on upstreammainon this host, as noted in Carry feat/proxy-resolved-address-classes in integration #3.tests/dry_run_json.rs(14) runs the same profile (a glob, a variable, a symlink, a brokered command) as a dry run and for real, and checks the report's filesystem against the capability state the run writes for itself; the rest cover session grants, brokered selection (callers, denies, intercepts, catch-alls, shadowed rules, refused policies, scoped proxies), network and port exceptions,/procand process-relative grants, capability elevation, raw Seatbelt rules, the start directory, and flag pairing. Unit tests cover the hex encoding and the Seatbelt allow accounting.After merging
integration, which starts the rebuild and then a build.bin/nono-bump(attested build). Its tier check (asn_check_tier_grants) switches from parsing the text summary to this report, and its rows 70.95 and 70.96 depend on it.