8000 T6 — Addresses and machine output, end to end by minimal-foundry[bot] · Pull Request #3006 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T6 — Addresses and machine output, end to end - #3006

Merged
agent-137 merged 2 commits into
mainfrom
agent/2901-addresses-and-machine-output-end-to-end
Nov 5, 2026
Merged

agent-137 merged 2 commits into
mainfrom
agent/2901-addresses-and-machine-output-end-to-end

Conversation

@minimal-foundry
@minimal-foundry minimal-foundry Bot commented Nov 4, 2026 •
Copy link
Copy Markdown
Contributor

T6 — Addresses and machine output, end to end

slice: S1
kind: integration
covers: none
size: S
est: 20 code, 100 tests
executor: agent
difficulty: routine
model: light
diagnostics: when the end-to-end test fails, it prints each command it ran with that command's stdout, stderr and exit code
observability: the test run's spans show one resolution per command, with the host it reached
layers:
- tests:
- crates/minimal/src/tests.rs: the slice's end-to-end test over a test daemon
test: cargo nextest run -p minimal box_address_and_json_output_end_to_end
produces: none
consumes: none
proof: Address a box by its id, its name or provider/host/name from any command, get exit 4 for a box that does not exist and exit 7 for a host that doe 8000 s not answer, and read every -o json object with its min/v1 schema and every secret as a reference.
depends on:
- blocked by #2895
- blocked by #2891

Proof

The test box_address_and_json_output_end_to_end runs over a harness daemon on the native host's socket. It shows one box by its id, its name and local//web, then stops it by id and removes it by provider/host/name. min box show no-such-box and a show of the removed id end with exit 4. min box show web while the selected VM host does not answer ends with exit 7 and names that host. Each min box list -o json object carries schema min/v1/box. A secret renders only as its reference in text, json and jsonl. When a step fails, the test prints every command with its stdout, stderr and exit code. The log shows one resolution in each step's span, with the host it reached.

Notes from the agent: Gaps in the product that the test cannot close, inside its layers: (1) No command renders a Secret today. Only cmd/output.rs defines it. So the secret check goes through output::write_object with a test-only Rendered object, not through a real command. (2) min box list -o json is the only box command with -o json. min box show has no machine mode. (3) In main.rs, machine_mode_answer has no branch for BoxAddressRefusal. A machine-mode run that ends in exit 4 or 7 writes a min/v1/error object with code unspecified. The exit code is correct. The test cannot reach main.rs from the library, so it does not check the error object. A later task can add not_found and host_unreachable codes there. (4) In tests.rs, box_command_ending now maps a BoxAddressRefusal to its own exit code, as failure_exit_code in main.rs does. The T3 test box_first_slice_list_show_stop_rm_end_to_end still passes. The exit-7 step simulates the down host with a selected local-minvmd host that has no socket. That is the same way as the T4 tests. cargo clippy -p minimal --all-targets and cargo fmt --check are clean.

Tests

line exit tail
cargo nextest run -p minimal box_address_and_json_output_end_to_end 0 Applying loadouts: default Running task runtime-implement-test-0 in session task-runtime-implement-test-0-98ed... Compiling paths v0.0.1 (/workbench/crates/paths) Compiling ot v0.0.1 (/workbench/crates/ot) Compiling args v0.0.1 (/workbench/crates/args) Compiling client-config v0.0.1 (/wo

Verify

min task run agent-verify exited 100 under rustc 1.99.0, which the repository does not pin (1.99.1 in rust-toolchain.toml); the PR is not a draft on that alone — CI, which honours the pin, is the gate.

dSpan {
            name: "session.message",
            fields: {
                "kind": "GetNetSwitch",
                "parent_span_id": "10e8897b9b5fb3d4",
                "span_id": "d87582383f4ad3fa",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "session.message",
            fields: {
                "kind": "GetDenyAllOptOut",
                "parent_span_id": "10e8897b9b5fb3d4",
                "span_id": "0d91cd8e273d01cc",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "session.message",
            fields: {
                "kind": "GetPaths",
                "parent_span_id": "10e8897b9b5fb3d4",
                "span_id": "2e5cad4addbea3e6",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "sessions.manager.message",
            fields: {
                "kind": "GetRecord",
                "parent_span_id": "10e8897b9b5fb3d4",
                "queued_behind": "0",
                "span_id": "22f43b5f771c90be",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "sessions.manager.message",
            fields: {
                "kind": "DeleteSession",
                "parent_span_id": "10e8897b9b5fb3d4",
                "queued_behind": "0",
                "span_id": "54098018dc35a09b",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "session.message",
            fields: {
                "kind": "Destroy",
                "parent_span_id": "54098018dc35a09b",
                "span_id": "fc6290ea13771bf6",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
        LoggedSpan {
            name: "sessions.manager.message",
            fields: {
                "kind": "HandOverName",
                "parent_span_id": "54098018dc35a09b",
                "queued_behind": "0",
                "span_id": "e4c65e401a2cad71",
                "trace_id": "0af7651916cd43dd8448eb211c803111",
            },
            parent: None,
            closed: true,
        },
    ]
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

  Cancelling due to test failure: 
────────────
     Summary [  47.907s] 877 tests run: 876 passed, 1 failed, 1 skipped
        FAIL [   3.194s] (877/877) minimal::otel_cli exec_run_attach_and_task_run_share_the_commands_trace
error: test run failed

Residuals

Closes #2901

Address one box over a harness daemon by its id, its name and
provider/host/name from min box show, stop and rm. An address that
names no box ends with exit 4. An unqualified name while the selected
host does not answer ends with exit 7. Each -o json box object carries
min/v1/box, and a secret renders only as its reference. Each step logs
one resolution in its own span, with the host it reached.
@coderabbitai
coderabbitai Bot commented Nov 4, 2026 •
Copy link
Copy Markdown
Contributor

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cf32e28e-6872-4700-9999-dbc8a4507eb8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@minimal-foundry
minimal-foundry Bot commented Nov 4, 2026 •
Copy link
Copy Markdown
Contributor Author

Reviewed: no findings; approval withheld, 3 threads unresolved at 61243d6dd015.

APPROVE withheld: 3 unresolved threads — minimal-arch[bot] crates/minimal/src/tests.rs:7379, minimal-arch[bot] crates/minimal/src/tests.rs:7415, minimal-arch[bot] crates/minimal/src/tests.rs:7465. Resolving the last thread releases the approval on this head.

Resolve the open threads. Resolving the last one releases the approval on this head; no new review is required.

Clobber: none seen.

@minimal-foundry minimal-foundry Bot left a comment
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minimal-review — approved

Verdict APPROVE — No findings.

Panel: 3 of 3 personas ran (correctness, security, supply-chain).

@minimal-foundry minimal-foundry Bot added the review:approved minimal-review approved the current head label Nov 4, 2026
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arch-review: PASS_WITH_CONDITIONS · 3 conditions · the full ruling

The test conforms to the addressing, exit-code and output lines of the design, and it stays in the one layer that T6 names. The PR body lists three product gaps but names no issue for them. Rule 6 does not accept a residual without an issue. Gap (3) is a real deviation from line 383: a refused address in a machine mode writes code unspecified. File one issue for each gap and link it in the PR body (C1, C2, C3). Then the change can merge.

Ruled at 9a9a3e0 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.

Comment thread crates/minimal/src/tests.rs Resolved
Comment thread crates/minimal/src/tests.rs Resolved
Comment thread crates/minimal/src/tests.rs Resolved
Comment thread crates/minimal/src/tests.rs Resolved
@agent-137 agent-137 left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 9a9a3e0 against #2901 (T6). Tests-only (crates/minimal/src/tests.rs): box_address_and_json_output_end_to_end shows a box by id, name and local//web, stops it by id and removes it by provider/host/name, pins exit 4 for an unknown and a removed box, exit 7 naming the unreachable host, the min/v1/box schema on every list -o json object, and a secret rendered only as its reference in every output mode. box_command_ending now maps BoxAddressRefusal to its own code, as failure_exit_code does. Arch's three conditions are filed residuals: #3010 (machine-mode error kinds) and #2980 (box show -o json, the secret check on a real command).

@agent-137
agent-137 added this pull request to the merge queue Nov 4, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Nov 4, 2026
@agent-137
Copy link
Copy Markdown
Member

/revise Round 1 (job 1036aa0e) was killed by SIGTERM before it did anything. Run it again: merge main into this branch and resolve the conflict in crates/minimal/src/tests.rs by keeping both blocks (this PR's box_address_and_json_output_end_to_end and helpers, and the tests that #2969 and #2987 appended). Change nothing else.

…and-machine-output-end-to-end

# Conflicts:
#	crates/minimal/src/tests.rs
@minimal-arch minimal-arch Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arch-review: PASS_WITH_CONDITIONS · 3 conditions · the full ruling

The merge from main is clean. The test hunk does not change from 9a9a3e03, so the ruling on that head stands. The test proves addressing by id, name and provider/host/name, exit 4, exit 7, min/v1/box, and secret redaction (architecture.md lines 365, 368, 381, 384, 389). Three gaps stay in the product. They are filed as residuals: C1 is #3010, and C2 and C3 are #2980. The change can merge with them open.

Ruled at 61243d6 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.

Comment thread crates/minimal/src/tests.rs Resolved
Comment thread crates/minimal/src/tests.rs Resolved
Comment thread crates/minimal/src/tests.rs Resolved
@minimal-foundry minimal-foundry Bot removed the review:approved minimal-review approved the current head label Nov 4, 2026
@agent-137
Copy link
Copy Markdown
Member

/revise The last two rounds died in the container before they did anything: a SIGTERM, then "container stopped: exit -1 Error: Shutdown container connection". Run it again: merge main into this branch and resolve the crates/minimal/src/tests.rs conflict by keeping both blocks (this PR's box_address_and_json_output_end_to_end and its helpers, plus the tests already on main). Change nothing else.

@minimal-foundry
Copy link
Copy Markdown
Contributor Author

Round 2 of 10 on a /revise note: the coder changed nothing. noop: the merge of main that the /revise note asks for is already on the branch. Head 61243d6 is a merge of origin/main at 090a624, which is also the local main tip. crates/minimal/src/tests.rs has no conflict markers. git diff main HEAD changes only crates/minimal/src/tests.rs: it adds this PR's test and its helpers and keeps every test that main has. The only lines it removes are this PR's own edit to the box_command_ending helper. The test line passes on the merged tree. I changed nothing, as the note asks. The three review threads name gaps that need code outside this task's layers, in issues that have not landed.

Review threads the coder judged:

@agent-137 agent-137 left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approved at 61243d6: a merge of main only; the net diff against main is line-for-line the one I approved at 9a9a3e0.

@agent-137
agent-137 added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit 46d9e53 Nov 5, 2026
36 checks passed
@agent-137
agent-137 deleted the agent/2901-addresses-and-machine-output-end-to-end branch November 5, 2026 00:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

T6 — Addresses and machine output, end to end

1 participant

0