8000 T12 — Attach to a box's terminal, with or without an address · Issue #2904 · gominimal/minimal · GitHub
[go: up one dir, main page]

Skip to content

T12 — Attach to a box's terminal, with or without an address #2904

Closed

Description

@mitodrummer

Task

slice size difficulty model who estimated lines
Start, attach and resume L needs care strongest an agent 780 (140 code, 640 tests)

min box attach reattaches a terminal box, finds the project's box with no address, and exits with a code a script can read.

Covers:

  • BCLI-068

Layers:

  • daemon:
    • crates/minimald-rpc/src/lib.rs: BoxListingEntry and ShowBoxResponse carry the stored spec's pty_enabled (serde default false, so an older daemon reads as no terminal)
    • crates/minimald/src/box_manager.rs: box_listing_entry and the show reply fill pty_enabled from the box's stored spec
    • crates/minimald/src/box_manager/tests.rs: the listing and show tests for the field
    • cargo nextest run -p minimald box_listing_and_show_carry_pty_enabled
  • client:
    • crates/minimal/src/cli.rs: the verb's arguments and help in the one command model
    • crates/minimal/src/cmd/boxes/attach.rs: min box attach [<box>]: the bare form, and the 0, 2, 4, 7 and 254 endings
    • crates/minimal/src/attach.rs: the terminal attach reports why the daemon ended it
    • crates/minimal/src/main.rs: failure_exit_code maps this verb's refusals to their exit codes
    • crates/minimal/src/tests.rs: the in-pr 8000 ocess minimald test harness gains this layer's tests
    • cargo nextest run -p minimal box_attach_reattaches_pty_box
    • cargo nextest run -p minimal box_attach_without_tty_exit2
    • cargo nextest run -p minimal box_attach_running_non_pty_box_exit2_names_logs
    • cargo nextest run -p minimal box_attach_without_address_picks_running_else_sole_retained
    • cargo nextest run -p minimal box_attach_without_address_ambiguous_exit2_lists
    • cargo nextest run -p minimal box_attach_without_address_none_exit4_hints_start
    • cargo nextest run -p minimal box_attach_without_address_unreachable_host_exit7
    • cargo nextest run -p minimal attach_detach_or_entrypoint_exit_returns_0
    • cargo nextest run -p minimal attach_ended_from_other_side_notice_exit254
    • cargo nextest run -p minimal attach_connection_failure_exit7

Waits on:

Plan block
### T12 — Attach to a box's terminal, with or without an address
  slice: S3
  kind: task
  covers: BCLI-068
  size: L
  est: 140 code, 640 tests
  executor: agent
  difficulty: needs care
  model: strongest
  diagnostics: when the daemon ends an attach, the terminal shows one line such as "Detached: <box> was stopped." and the command exits 254; with no candidate box it prints "No box with a terminal in this project. Start one with min box start." and exits 4, pinned by attach_ended_from_other_side_notice_exit254 and box_attach_without_address_none_exit4_hints_start
  observability: the command's existing tracing span records the verb, the box id it resolved and the outcome
  layers:
    - daemon:
      - crates/minimald-rpc/src/lib.rs: `BoxListingEntry` and `ShowBoxResponse` carry the stored spec's `pty_enabled` (serde default false, so an older daemon reads as no terminal)
      - crates/minimald/src/box_manager.rs: `box_listing_entry` and the show reply fill `pty_enabled` from the box's stored spec
      - crates/minimald/src/box_manager/tests.rs: the listing and show tests for the field
      test: cargo nextest run -p minimald box_listing_and_show_carry_pty_enabled
    - client:
      - crates/minimal/src/cli.rs: the verb's arguments and help in the one command model
      - crates/minimal/src/cmd/boxes/attach.rs: `min box attach [<box>]`: the bare form, and the 0, 2, 4, 7 and 254 endings
      - crates/minimal/src/attach.rs: the terminal attach reports why the daemon ended it
      - crates/minimal/src/main.rs: `failure_exit_code` maps this verb's refusals to their exit codes
      - crates/minimal/src/tests.rs: the in-process minimald test harness gains this layer's tests
      test: cargo nextest run -p minimal box_attach_reattaches_pty_box
      test: cargo nextest run -p minimal box_attach_without_tty_exit2
      test: cargo nextest run -p minimal box_attach_running_non_pty_box_exit2_names_logs
      test: cargo nextest run -p minimal box_attach_without_address_picks_running_else_sole_retained
      test: cargo nextest run -p minimal box_attach_without_address_ambiguous_exit2_lists
      test: cargo nextest run -p minimal box_attach_without_address_none_exit4_hints_start
      test: cargo nextest run -p minimal box_attach_without_address_unreachable_host_exit7
      test: cargo nextest run -p minimal attach_detach_or_entrypoint_exit_returns_0
      test: cargo nextest run -p minimal attach_ended_from_other_side_notice_exit254
      test: cargo nextest run -p minimal attach_connection_failure_exit7
  produces: none
  consumes:
    - crates/minimal/src/cmd/boxes/address.rs
  proof: `min box attach` reattaches a terminal box, finds the project's box with no address, and exits with a code a script can read.
  depends on:
    - blocked by #2895

Activity

  1. added
    kind:taskA task the plan skill rendered; the body carries ## Task
    size:L500 to 900 net lines; one PR, and the ceiling
    model:strongestThe strongest model available: unknown ground, or large work that needs care
    on Nov 3, 2026
  2. minimal-foundry commented on Nov 4, 2026

    @minimal-foundry
    Contributor

    Done. #3018 merged.

    branch agent/2904-attach-to-a-box-s-terminal-with-or-without-an-ad · epic #2879 · PR #3018

    round outcome job
    1 pushed 9bdb0799
    1 pushed b1ebbd03
    2 pushed de3bc7a7
    2 pushed 3ab53983
    2 pushed 7bb8da04
    3 pushed 19ad7344
    4 pushed 903d79b0
    5 pushed 2acd0532
    6 pushed 00468d5e

    Updated 2026-11-05T08:19:37.533Z.

  3. added
    needs-humanAn agent handed off; a human must act, then clear this label. Set by defer and handoffs.
    on Nov 4, 2026
  4. removed
    needs-humanAn agent handed off; a human must act, then clear this label. Set by defer and handoffs.
    on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:taskA task the plan skill rendered; the body carries ## Taskmodel:strongestThe strongest model available: unknown ground, or large work that needs caresize:L500 to 900 net lines; one PR, and the ceiling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0