Skip to content

feat(native): add interactive exec with scoped session recovery - #774

Merged
roodboi merged 22 commits into
nextfrom
codex/hack-2065-interactive-exec
Nov 14, 2026
Merged

roodboi merged 22 commits into
nextfrom
codex/hack-2065-interactive-exec

Conversation

@roodboi

@roodboi roodboi commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Native hack exec SERVICE -- /bin/sh opens a live terminal when stdin and stdout are terminals and Hack is in the foreground. It sets the initial size before startup, forwards resize and terminal control bytes, and preserves the command's exit status. Background jobs, redirected output and HACK_NO_INTERACTIVE=1 keep the existing finite path.

Authored projects admit through their authenticated owner and transfer the Engine socket so down and restart remain responsive. Adopted services deliver fresh managed environment values through the pinned HKEE2 no-echo handshake before forwarding input. Handshake writes temporarily set nonblocking mode on the exclusively owned socket and restore its exact flags. Both frontend and native child preserve terminal settings, including restoration after the shell reclaims the foreground.

Normal stream closure plus a validated Engine exit silently retires the exact receipt. Surviving background processes are the user's responsibility, as with Docker. Unknown outcomes, including an interrupted authored-owner handoff, retain a value-free write-ahead receipt and report only the attempted session ID; no create or start is replayed. The terminal is restored before receipt retirement can wait on the store. A retirement failure preserves the known exit code and remains silent; the retained receipt can be reconciled later. down names only the current run’s remaining receipts and reports other runs as a count. hack exec-sessions lists current names and IDs without taking a mutation lock or writing state. --reconcile clears only validated exec exits, exact same-boot container absence or proven stopped boots, and reports the count and IDs remaining. Old managed-env launchers name finite exec and restart as remedies.

Interactive session lifecycle

Diagram source · Acceptance checklist · HACK-2065

Integration revision: 2e80101cebb6fcb15649a45f5df25e59f3f8dff7, a normal merge of next b1e123bb7f73b6dcea468498f0f2b3d46e195d71 including #796/HACK-2206. The same persistent reviewer cleared this exact head as a faithful automatic merge. Existing product fixes are unchanged.

The incoming five-file delta is being checked with its focused regressions, typecheck and lint. Earlier integrated local gates passed: full default/all-feature Rust tests and Clippy, focused TypeScript, typecheck/check/privacy, compiled CLI/compiler gates and docs checks, plus model controls, cross-Darwin Clippy and pinned Rust 1.97.1 guest/static-ELF verification. These remain prior-head evidence; unchanged Rust/model inputs are carried explicitly, not claimed as reruns. Full TypeScript and exact-head hosted/bot qualification remain pending. No Ready claim.

Triage correction: #796 fixes the open --json hint test failure seen on hosted macOS shards 1–3, not Linux. Standard PR Linux shards do not qualify deferred macOS-sensitive files; opt-in macOS jobs or the integration run provide that evidence.

Lead-owned acceptance remains: sized PTY, resize, Ctrl-C foreground job, 2000-line burst, exit 7, noninteractive exec, second and third sessions, down, then up -d, plus authored/adopted handoff, environment and VM-loss cases. General smoke and webdb runs do not qualify interactive exec. Release intent: feat.

@vercel

vercel Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hack-docs Ready Ready Preview Nov 14, 2026 12:34am UTC

Request Review

@linear-code

linear-code Bot commented Nov 13, 2026

Copy link
Copy Markdown

HACK-2065

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

Please review head 7396b61 against next. The approved receipt contract deliberately retains evidence even after an exact exit status; only exact container absence or proof the bound VM boot stopped permits retirement. Real-Mac qualification and the final frozen CLI suite remain pending.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 13, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-14T00:36:59.328664Z 641871e Manual request
🔒 Security Review ✅ Completed 2026-11-14T00:39:55.442804Z 641871e Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

Head is now 28d7847. The follow-up only aligns three macOS cfg gates with their callers; both default and all-feature macOS cross-Clippy now pass. No function bodies or authority checks changed. Persistent review is clean. The frozen 737-file CLI suite is running.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7396b6133c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 28d784720a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 28d784720a

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

Head fdc717c fixes the initial-PTY-size finding; its thread has the implementation and validation details. Persistent review, default/all-feature Linux Rust tests/Clippy, and both macOS cross-Clippy configurations are clean. Final frozen CLI selection and real-Mac qualification remain pending.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🎉

Reviewed commit: fdc717caad

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: fdc717caad

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

Final integrated head 180fd51 merges next at 021b16b and adds source/compiled PTY key-containment coverage. The initial-size finding remains fixed. Persistent review is clean; root typecheck/check/build, targeted PTY matrix, workflow lint and privacy scan pass. The full frozen CLI selection is running. Real-Mac acceptance remains a separate lead-owned gate.

@roodboi
roodboi marked this pull request as ready for review November 13, 2026 11:12

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 180fd51589

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 180fd51589

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

8821da5 fixes the selected-service fresh-environment finding. Its thread records the regression and preserved refusal boundaries. Persistent review is CLEAN. Please review this final head; full exact-head CI and lead-owned real-Mac acceptance remain required.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: 8821da581e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

Head 66a8edd merges next at 8564ec4 to satisfy the overlap-freshness gate. Persistent merge review is CLEAN: automatic merge, both sides preserved; feature behavior unchanged. Integrated typecheck/check/build and 54 focused preflight/exec/frontend tests pass. Integrated Rust gates are running. Full hosted evidence and real-Mac acceptance remain pending.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: 66a8edd88d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 66a8edd88d

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 678001696f

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

Ready for lead: #774 at 6780016, targeting next.

All jobs in CI run 43488975966 now pass: all eight TS shards and aggregate, both Candidate core platforms, all three config compilers, runtime models, all four Docker shards and aggregate, docs, secret scan and process-lifetime checks. The first attempt's model/shard-1 cancellations and failed aggregate are superseded by successful retries at the same SHA; no assertion or workflow was weakened.

The successful macOS Candidate core logs explicitly pass the four engine::exec_io deadline/flag tests, large-envelope cancellation, marker wait/coalesced output, process_terminal_contract, resize, descriptor handoff/truncation and interactive_handoff_failures_keep_only_the_attempted_session. This supplies the required hosted Darwin B1/B2 evidence.

Lead finding Delivered behavior / evidence
B1 Handshake writes use genuinely nonblocking I/O with exact descriptor flags restored; Darwin send/read deadline regressions pass.
B2 PTY master drains during waits; Darwin terminal contract passes.
B3 Normal EOF plus validated Engine exit silently retires the exact receipt. Unknown outcomes retain scoped evidence without replay. A retirement failure preserves the known exit code.
B4 Shared error code is host-independent. Actual pre-push sh scripts/check-native-guest.sh passed at this SHA: ARM64 musl release build and static ELF verification; also included in Candidate core CI.
S1 SIGTTOU/SIGTTIN handling, masked restore and holder foreground reclamation are covered by terminal regressions.
S2, L1 Late failures, including authored owner handoff, retain only the attempted session ID. No dump of unrelated receipts.
L2, L4 Refusals give a sentence and remedy; older launchers name HACK_NO_INTERACTIVE=1 and restart.
L3, L9 Reconciliation reports current remaining counts and IDs when clearing is incomplete.
L5, L7, L8 Background/nonterminal selection keeps finite behavior; tests are hermetic and the guide includes the selection table.
L6 Read-only session listing and explicit proof-based reconciliation are implemented.

Same persistent second-family reviewer: round 45 CLEAN at this full SHA. Current-head Codex review reports no findings; all bot threads are resolved. Fresh computer pr review-status hack-dance/hack 774: CLEAR at 6780016. Its formal-review count misses the no-finding conversation receipt, which explicitly names this head. Base freshness reports only unrelated changes on newer next, with no touched-path overlap.

Local exact-head integration passed 158 tests, typecheck/check, build, CLI-reference parity, docs validation and the actual guest gate. Earlier local Rust/cross-check results are carried only as source-identical; current-head hosted Rust is now green. The older mixed-revision local full TS run failed and is not counted.

Remaining lead acceptance: real Mac terminal/VM execution with sized PTY, resize, foreground Ctrl-C, a 2000-line burst, exit 7, finite exec, second and third sessions, then down and up -d. Hosted tests do not replace that matrix. No merge performed.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

The earlier Ready note is superseded by the lead's required delta. Pushed 11b6ae7d425fe27181f9bb9c178accaa3aa1b7c0:

  • Terminal restoration now precedes receipt retirement and its store-lock wait. A confirmed Engine exit plus normal stream close keeps its exit code silently if bookkeeping fails; unknown outcomes and restore failures retain scoped evidence.
  • Project cleanup names only the selected run's remaining receipts. Other runs appear only as a count with hack exec-sessions guidance.

Regressions hold the real receipt-store lock for exits 0 and 7, check restore-first ordering and retained evidence, preserve scoped restore/unknown failures, exclude unrelated receipt names/IDs, and exercise silent completed-but-retained reports through source and compiled PTY frontends. These passed locally, as did root typecheck, check/privacy and changed-file lint. Persistent reviewer round 46 is CLEAN at this exact head. Full Rust, cross-Darwin compile checks and pinned Rust 1.97.1 guest/ELF verification are still running; hosted and real-Mac evidence are pending.

All allowed follow-ups are tracked on HACK-2065 (comment 7364e391-0416-4acf-b4b5-8b7a1e5a5300). Integration with next waits for the lead's explicit batch-merge confirmation. No readiness or real-VM claim; lead owns acceptance and merge.

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 11b6ae7d42

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 11b6ae7d42

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

Integrated the explicitly confirmed next batch 292d31279d541e88d8a74449bd8606a1585c7725 by normal merge at a3ddfdda3fd27036379280e5396bf21acb038dc4. Same persistent reviewer CLEAN on this exact head (static integration review only). 59 passing focused TypeScript tests, 31 platform-dependent skips; current CLI typecheck passes. Full local gates and hosted checks remain pending; no Ready or real-Mac claim.

The model-map resolution retains both interactive rows plus the incoming status/start row. Restore-before-retirement, silent validated exits despite a busy store, and run-scoped down evidence are preserved. Lead-owned terminal/Engine matrix and HACK-2185 Mac200/200 remain open.

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: a3ddfdda3f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

Current head is f507a5b9535612530ed2df798dd3f14bfa250bc8. It adds only rustfmt’s ordering of the merged Engine module declarations to a3ddfdda; all cfg attributes retain their targets. Same persistent reviewer round 48 CLEAN at the new head; cargo fmt --check passes.

Full default/all-feature Rust tests and Clippy pass at integrated parent a3ddfdda. Those results are carried only for this semantically identical declaration move, not claimed as reruns. Cross-Darwin Clippy also completed successfully at that parent (compile evidence only); the guest gate remains in progress. Focused TS, typecheck and lint/privacy pass on the unchanged TS tree. Exact-head hosted checks and bot review remain pending, as does the lead's real-Mac matrix. No Ready claim.

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Swish!

Reviewed commit: f507a5b953

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: f507a5b953

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 13, 2026

Copy link
Copy Markdown
Contributor Author

Merged confirmed next b1e123bb7f73b6dcea468498f0f2b3d46e195d71 normally at 2e80101, including #796/HACK-2206. Same persistent reviewer round 49: CLEAN, static automatic-merge review. No conflicts or changes to the previously reviewed unit behavior.

Current-head Linux checks: 52 incoming regression tests pass, 430 assertions, plus typecheck and check/privacy. Earlier Rust/model results apply only to unchanged inputs; full TypeScript and exact-head hosted qualification remain pending.

Correction to the earlier triage: the local-network-hint.test.ts “open --json keeps the hint out of the JSON payload” failure was on hosted macOS shards 1–3, not Linux. This head carries the fix. Standard PR Linux passes do not demonstrate execution of deferred macOS-sensitive files. The remaining Docker signal flake and Darwin descriptor-inheritance issue remain separately tracked; any failure still needs its logs classified.

No Ready or real-Mac claim. Lead owns acceptance and merge.

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: 2e80101ceb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 2e80101ceb

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

roodboi commented Nov 14, 2026

Copy link
Copy Markdown
Contributor Author

Ready for lead: #774 at 2e80101, targeting next.

Both required lead deltas are preserved: terminal restoration happens before receipt retirement/store-lock waits; validated clean exits (including 0 and 7) remain silent if retirement fails, preserve their exit code and retain the receipt for reconciliation. down names only the selected run's remaining receipts; unrelated runs contribute only a count. Unknown exits and restore failures remain scoped and do not gain clean-exit treatment.

Integration: the lead explicitly confirmed #782 in 292d3127; the normal merge retained the interactive-session, interactive-envelope and incoming native-status-start model-map rows. A second normal merge includes b1e123bb/#796. No rebase or force push. The hint-test failure addressed by #796 was on hosted macOS shards, not Linux.

Exact-head hosted evidence: all 26 jobs in CI run 43524831034 succeeded: all eight TypeScript shards plus aggregate, Candidate core on Linux/macOS, three config-compiler hosts, four Docker shards plus aggregate, models, process lifetime, docs and secret scan. This run actually executed the macOS shards; Linux passes are not substituted for them. Full all-file TypeScript qualification is supplied by these exact-head CI shards; no monolithic local full-suite pass is claimed.

The macOS Candidate core log explicitly passes all four exec_io deadline/flag tests, large-envelope cancellation, process_terminal_contract, descriptor handoff/truncation, interactive_handoff_failures_keep_only_the_attempted_session, terminal_restores_before_busy_retirement_and_preserves_known_exit, and cleanup_names_only_the_selected_run_and_counts_unrelated_receipts. Guest static ARM64 ELF verification also passes.

Review: same persistent second-family reviewer round 49 CLEAN at this exact SHA. Codex code review receipt 6867256886 names this head and has no findings; summaries/security receipt read. Fresh computer pr review-status: CLEAR at 2e80101, zero unresolved bot threads or change requests. Its formal-review count omits the no-finding conversation receipt.

Local evidence and limits: current-head 52 incoming regression tests, typecheck and lint/privacy pass. Earlier integrated focused interactive/source-and-compiled PTY tests, full default/all-feature Rust tests/Clippy, cross-Darwin Clippy, pinned Rust 1.97.1 guest/ELF gate, model controls, compiled CLI gates and docs passed; these are explicitly carried only where inputs remained unchanged, not relabeled as reruns. Hosted tests are not live Engine/TTY/VM acceptance.

Allowed follow-ups remain on HACK-2065, comment 7364e391-0416-4acf-b4b5-8b7a1e5a5300 (busy wording, safe malformed-store recovery, old-boot recording recovery, concurrent snapshot retry, honest reconcile budgets and remaining dispatch/limit/restore mapping tests).

Remaining lead-owned Mac gate: full Rust; three runs each of blocked-write deadline and process-terminal contracts alone and in parallel, plus related handoff tests at default thread count. Real terminal/Engine: silent clean/exit-7 with no receipt after successful retirement; resize; foreground Ctrl-C; 2000-line burst; detach retains running exec; frontend SIGKILL plus foreground reclamation restores terminal/no stopped child; background finite behavior; scoped down during a session; concurrent down/exit without a raw-terminal lock wait. Verify Engine ExitCode null before exit and exited-record lifetime. HACK-2185 Mac200/200 remains open until lead accepts causal resolution. Existing stopped-container/GC unknown-outcome limitations remain unchanged. Lead owns acceptance and merge; no PR merge performed.

roodboi commented Nov 14, 2026

Copy link
Copy Markdown
Contributor Author

Merged current next bb6a7d17716140a738a97fc2863a7a678caf17eb normally, including #789 and #788. Current head: 641871e. Same persistent reviewer round 50: CLEAN, faithful automatic merge, no conflict resolution edits. All previously required unit fixes are preserved.

Current-head local evidence: 87 focused lifecycle/host-process/readiness/hint tests pass (538 assertions), docs prepare/check pass. Typecheck/lint are finishing. Rust and model inputs are unchanged; prior results remain identified by their tested revisions. Fresh hosted and bot qualification is pending.

The Ready note at 2e80101c is superseded by this new batch. Its all-26-job CI pass remains parent evidence only. This PR retains macOS coverage because interactive exec touches macOS-sensitive code and the lead explicitly requires the Darwin deadline/terminal/handoff gate. The real-Mac/Engine matrix remains separate.

No Ready claim at this head and no PR merge performed.

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: 641871e7e9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

@chatgpt-codex-connector

Copy link
Copy Markdown

🛡️ Codex Security Review · Automatically triggered

Security review completed. No security issues were found in this pull request.

Reviewed commit: 641871e7e9

View security finding report

Only the user who started this review can view the report in Codex.

ℹ️ About Codex security reviews in GitHub

This is an experimental Codex feature. Security reviews are triggered when:

  • You comment "@codex security review"
  • A regular code review gets triggered (for example, "@codex review" or when a PR is opened), and you’re opted in so security review runs alongside code review

Once complete, Codex will leave suggestions, or a comment if no findings are found.

@roodboi
roodboi merged commit 6b161ba into next Nov 14, 2026
29 checks passed
@roodboi
roodboi deleted the codex/hack-2065-interactive-exec branch November 14, 2026 01:22
roodboi added a commit that referenced this pull request Nov 14, 2026
No conflicts; brings #774.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
roodboi added a commit that referenced this pull request Nov 14, 2026
…203) (#798)

macOS Rust libtest threads can spawn a child while another test's socket
is briefly inheritable, retaining descriptors across exec and delaying
EOF. Candidate core runs each runtime-core test in its own process with
**cargo-nextest 0.9.151** on Linux and macOS. CI downloads exact
official release archives and checks their pinned SHA-256 before
extraction. There are zero retries; the first failure stops
qualification.

Contributors keep `bun run test:local`. It probes `cargo nextest
--version`, matching Cargo's execution lookup. An absent or different
version prints one fallback line and uses stock Cargo, leaving the
installed version alone; the Mac fallback has one libtest thread. CI,
report generation and repeated qualification require the exact pin and
cannot fall back. Full suites retain separate doctests; focused Cargo
targets preserve their own scope. The admission-pool host-disk probes
stay serialized across processes.

### Current integration

Head `7fee2a406770a4c07e3ffaf83d64443f93d71259` normally merges `next`
at `6b161bae` (#774). The sole conflict was adjacent package scripts:
retain the nextest-backed `test:local` and the incoming
`check:native-guest`. Both new guest verification/PTY workflow steps are
preserved. Persistent review is clean on exact tree
`099d658c5e83ddd6a3c157dc451c12b19cecdd50`. The net PR diff remains
eight intended paths; incoming product code is unchanged.

Local merged checks pass: 77 tests / 772 assertions, root
typecheck/check, privacy and actionlint 1.7.12. Regression coverage
includes missing/foreign local nextest versions on both hosts, both
Cargo-versus-PATH mismatch directions, strict qualification refusal,
zero retries, doctests/target selection, first-failure stop, 20
iterations, report paths, stale-result refusal and checksum refusal
before extraction.

### Qualification: distinguish the tested trees

- Historical normal run
[43521017225](https://github.com/hack-dance/hack/actions/runs/43521017225),
before #774, passed both Candidate hosts. Mac default library: 1,564 run
/ 113 ignored; all binaries: 1,757 / 118. All features: library 1,835 /
153; all binaries: 2,142 / 159. Both full and ignored name multisets
exactly matched stock Cargo. Whole Mac job: 8m12s; nextest test times:
48.256s / 77.608s. The supplied 1,557 / 113 baseline is the older
default library summary.
- Existing 20-pass dispatch
[43525512993](https://github.com/hack-dance/hack/actions/runs/43525512993)
tests `d20be2ba9ecc08fd70005049af0f3c85f1109ec5`. It is still running
all-features suites and will be retained as **older-tree evidence
only**.
- **#774 changes Rust sources, guest code and the Candidate workflow.
The old unchanged-inputs argument is no longer valid.** `git diff
d20be2b 7fee2a4 --
packages/runtime-core/src .config .github/workflows/ci.yml
scripts/test-runtime-core.sh scripts/install-cargo-nextest.sh` shows
these differences. The whole wrapper also differs by the requested
version-probe/local-fallback block.
- Before Ready, obtain a normal current-head Mac Candidate pass, compare
its exact discovery/ignored inventory with stock Cargo and the
historical baseline, and measure the new guest steps and suite times.
#774 adds tests and one ignored child fixture, so count changes must be
explained by names rather than forced to the old count.
- Then dispatch a new bounded 20-pass qualification at the new Rust head
under the lead's existing HACK-2203 Mac authorisation. No new dispatch
has been started yet. Keep the old soak intact; do not retry or reset
failing streaks.

**Not Ready:** current-head hosted checks/review, Mac Candidate and the
new-tree 20-pass evidence remain required. The final note will cite each
tested SHA/run and the exact input diff. Any waiver must come explicitly
from the lead.

The qualification runs 20 default and 20 all-feature Mac suites, each
with separate doctests, and Linux once. Per-pass JUnit counts/timings,
discovery, ignored stock lists and serial-group mapping are retained.
Normal jobs retain 45 minutes; the repeated Mac job allows 300 minutes,
with a 600-second per-test hang bound. The full dispatch uses existing
heavy tiers and is branch qualification, not release evidence for
`next`. Required-check names and branch rules are unchanged.

The lead explicitly requested Mac qualification for this unit. The
production close/liveness audit is separate. HACK-2203 part 1.

---------

Co-authored-by: Kit <344842+roodboi@users.noreply.github.com>
roodboi added a commit that referenced this pull request Nov 14, 2026
The next.17 section omitted the tmux breaking-change warning that
already existed at the page tail. Move it into the release section and
put its v4 stop procedure before the v5 trial. The env breaking entry
was already correct; keep its scoped single-key/terminal/stdin migration
guidance.

Audit all **71 commits** from `v5.0.0-next.16` (`b21c3b1898`) through
candidate **`5002cf87bb50686b17ceae8a4c835f524ee1b3a5`** against merged
code and PR text. Add missing upgrade-assistant, activity,
observe/plan/version, interactive exec, recovery, background-command and
host/secret-custody notes. Preserve the complete native env-file
behavior table and mark the four new JSON contracts **shape may change
before 5.0.0**, with the planned HACK-2238 envelope migration.

Correct stale native interactive-exec/network/metadata/Ctrl-C claims and
the short upgrade assistant wording. Credit the publisher-shutdown fix
to #719, already in next.16; keep next.17 lifecycle-command retirement
separate. Retake a private stopped-state backup after v4 stops zellij,
keeping the first copy too. Keep next.16 warnings scoped to that bundle.
Keep original-key backups before older Doctor migrations and distinguish
file rollback from runtime/data recovery.

Only eight Markdown files change. Runtime, tests, workflows, generated
CLI reference, diagrams, immutable snapshots and the site pin are
unchanged. No diagram changed, so a new visual would add nothing. The
site re-pin remains a separate release follow-up.

Merge timing: respect the lead's candidate freeze; intended for the
batch immediately after next.17 publication and the site re-pin. The
moved tmux breaking-change notice is called out for the lead's pre-cut
decision. This PR does not merge or publish anything.

Validation at **`d95cfc554fabc4a0d70e3ba6caeb6746f63a198c`**:
- Bun 1.4.4, frozen dependencies. Docs prepare/check/typecheck/build and
site tests (2 passed, 25 assertions) pass. Production-mode HTTP smoke:
97 docs, 82 SVGs, 217 local links/anchors; task server stopped.
- All 50 Hack commands named anywhere in the notes exist in the current
generated CLI reference; 19 option contracts checked. CLI-reference
regeneration has no diff.
- All 71 commits have one row below, including the test commit and merge
for #786. All 70 source evidence paths exist at the fixed candidate.
Source release-note local links/anchors pass.
- Privacy and complete reachable-history Gitleaks pass (1,330 commits,
no findings). Persistent Claude Opus second-family review is CLEAN at
this exact head. Hosted run 43585059152 passed docs site, secret scan
and every planned Linux unit shard (4–8), plus the required test fan-in.
Typecheck/privacy/quality ran on shard 8. Focus had no selected tests.
Compiler, native core, runtime images/models, process-lifetime and
Docker execution were out of scope; a green Docker fan-in is not Docker
execution evidence. All bot comments were read; CLEAR at d95cfc5,
zero unresolved threads/change requests. Codex code/security reviews
found no issues.
- No real install, migration, daemon/DNS/trust change, Docker or native
VM run was performed for this documentation audit. Native acceptance and
the candidate's hosted release qualification remain separate.

## Candidate commit coverage

`entry present` means the behavior already had an entry within the
next.17 section (some now have fuller detail). `added` means missing
behavior or migration guidance was added there; #824 moves the existing
warning into that section. `not user-visible` means no shipped
CLI/runtime change: documentation, test/CI/repository housekeeping or
the internal desktop preview. Source links pin the candidate, rather
than a moving branch.

| Commit / PR | Coverage | Entry or reason | Audited source |
| --- | --- | --- | --- |
|
[70d328e](70d328e)
[#743](#743) | added | Host
setup: privileged/NSS safeguards |
[src/lib/linux-trust-setup.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/linux-trust-setup.ts)
|
|
[51f15c8](51f15c8)
[#746](#746) | not user-visible |
Docs-only upgrade checklist and site generation; no installed behavior |
[scripts/docs/prepare.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/docs/prepare.ts)
|
|
[c14f3f5](c14f3f5)
[#744](#744) | added | Native
setup JSON accounting |
[packages/runtime-core/src/provider/setup.rs](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/packages/runtime-core/src/provider/setup.rs)
|
|
[b0c6bcd](b0c6bcd)
[#705](#705) | added | Retained
background exec/run and cursor tools |
[src/commands/background-command-start.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/background-command-start.ts)
|
|
[c89f4fd](c89f4fd)
[#745](#745) | added | Linux
daemon query/home refusals |
[src/commands/daemon-systemd.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/daemon-systemd.ts)
|
|
[cce4b59](cce4b59)
[#752](#752) | not user-visible |
Site pin/snapshots and editorial pages only |
[scripts/docs/versions.json](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/docs/versions.json)
|
|
[56676fc](56676fc)
[#754](#754) | added | Setup
reuse/offline accounting; pin-watch changes are internal |
[packages/runtime-core/src/provider/setup.rs](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/packages/runtime-core/src/provider/setup.rs)
|
|
[7a496f1](7a496f1)
[#755](#755) | added | MCP
registered selectors and background tool guidance |
[src/mcp/server.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/mcp/server.ts)
|
|
[e7a7039](e7a7039)
[#747](#747) | entry present |
Native follow text shape; added session ends/restart recovery |
[src/backends/native-log-follow.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/backends/native-log-follow.ts)
|
|
[87a6df5](87a6df5)
[#758](#758) | added | Compose
short one-shot startup |
[src/lib/compose-startup-state.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/compose-startup-state.ts)
|
|
[2afb5c4](2afb5c4)
[#761](#761) | added | Native
Hack networks and inert generated labels |
[src/lib/native-hack-compose-conventions.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/native-hack-compose-conventions.ts)
|
|
[342a585](342a585)
[#771](#771) | not user-visible |
Docs-only next.16 trial record |
[docs/versions/v5/guides/upgrade-from-v4.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/versions/v5/guides/upgrade-from-v4.md)
|
|
[6f0acf1](6f0acf1)
[#769](#769) | entry present |
Migration live-key/alias preservation |
[src/lib/project-env-config.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/project-env-config.ts)
|
|
[c96c444](c96c444)
[#756](#756) | added | Child key
filtering, fixed diagnostics, legacy ignore/YAML API refusals |
[src/lib/child-environment.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/child-environment.ts)
|
|
[e2c73c6](e2c73c6)
[#748](#748) | not user-visible |
Contributor CI selection/coalescing, outside product release notes |
[scripts/ci-change-scope.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/ci-change-scope.ts)
|
|
[ebf794e](ebf794e)
[#760](#760) | added |
Agent/output custody warning; runtime unchanged |
[src/agents/instruction-source.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/agents/instruction-source.ts)
|
|
[021b16b](021b16b)
[#763](#763) | added | One-pass
background redaction scan; no public benchmark claim |
[src/lib/background-command/output-scanner.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/background-command/output-scanner.ts)
|
|
[8564ec4](8564ec4)
[#765](#765) | added | Shared
preflight/start admission and detached failure reporting |
[src/backends/native-project-review.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/backends/native-project-review.ts)
|
|
[0c0fba2](0c0fba2)
[#767](#767) | entry present |
Breaking env exposure/protect/stdin/scope/API guidance |
[src/commands/env.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/env.ts)
|
|
[9435da9](9435da9)
[#762](#762) | added | Local
Git/link refusals and no-follow dotenv |
[src/lib/project-env-config.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/project-env-config.ts)
|
|
[edf23ae](edf23ae)
[#753](#753) | added | Daemon
stop proves the live Hack home |
[src/commands/daemon-systemd.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/daemon-systemd.ts)
|
|
[573ceec](573ceec)
[#766](#766) | entry present |
Doctor layer/integrity error; added store/key write refusals |
[src/lib/secret-store.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/secret-store.ts)
|
|
[a0e9760](a0e9760)
[#757](#757) | added | Orphan
output truncation and final-sync evidence |
[src/lib/background-command/recovery.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/background-command/recovery.ts)
|
|
[10e1958](10e1958)
[#759](#759) | added | Private
lifecycle logs/FIFO and expiring mux payloads |
[src/lib/private-file.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/private-file.ts)
|
|
[bd899ee](bd899ee)
[#775](#775) | not user-visible |
Portable test fixtures only |
[tests/single-file-tar.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/single-file-tar.test.ts)
|
|
[80dae3d](80dae3d)
[#776](#776) | added | Candidate
missing-daemon diagnosis is optional/healthy |
[src/commands/doctor.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/doctor.ts)
|
|
[5b2a2d0](5b2a2d0)
[#772](#772) | added | Bounded
attaching-network retry; strict saved reads remain |
[src/lib/native-compose-ownership.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/native-compose-ownership.ts)
|
|
[ab29d49](ab29d49)
[#777](#777) | not user-visible |
CI scheduling only |
[docs/reference/ci-test-selection.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/reference/ci-test-selection.md)
|
|
[31339c7](31339c7)
[#770](#770) | entry present |
Native inferred readiness, 240 s, HTTP/service_healthy limits |
[packages/runtime-core/src/project/compose/service.rs](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/packages/runtime-core/src/project/compose/service.rs)
|
|
[156ee7f](156ee7f)
[#773](#773) | entry present |
Loopback proxy port/Doctor/open checks |
[src/lib/proxy-loopback.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/proxy-loopback.ts)
|
|
[a7ec3c7](a7ec3c7)
[#768](#768) | entry present |
Cleanup receipts/partial outcomes and tracked-file wording |
[src/lib/project-env-config.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/project-env-config.ts)
|
|
[ceb3e23](ceb3e23)
[#778](#778) | entry present |
Native bridge socket readiness |
[packages/runtime-core/src/provider/bridge.rs](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/packages/runtime-core/src/provider/bridge.rs)
|
|
[af91049](af91049)
[#783](#783) | entry present |
Pointer reconciliation after partial cleanup |
[src/commands/doctor.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/doctor.ts)
|
|
[0a0bfdb](0a0bfdb)
[#780](#780) | not user-visible |
Site-only Linux guide publication; no CLI behavior |
[scripts/docs/versions.json](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/docs/versions.json)
|
|
[d0cf767](d0cf767)
[#786](#786) | not user-visible |
Consent test wording only (both commits) |
[tests/env-migration-tracked-consent.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/env-migration-tracked-consent.test.ts)
|
|
[7e2e630](7e2e630)
[#786](#786) | not user-visible |
Consent test wording only (both commits) |
[tests/env-migration-tracked-consent.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/env-migration-tracked-consent.test.ts)
|
|
[91c311e](91c311e)
[#779](#779) | entry present |
Restore or reversible retire; missing store keys scoped to readers |
[src/lib/secret-store-retire.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/secret-store-retire.ts)
|
|
[6ab1ace](6ab1ace)
[#785](#785) | not user-visible |
Docs-only release/upgrade/env notes |
[docs/guides/v5-release-notes.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/guides/v5-release-notes.md)
|
|
[25bd63c](25bd63c)
[#764](#764) | entry present |
Doctor hygiene, local modes, ignored staging and live-input protection |
[src/lib/secrets-hygiene.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/secrets-hygiene.ts)
|
|
[d9df57c](d9df57c)
[#784](#784) | not user-visible |
Resolver/proxy and consent test corrections only |
[tests/project-open-loopback.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/project-open-loopback.test.ts)
|
|
[2c1f665](2c1f665)
[#791](#791) | added | Detached
failure names, open DNS hint, init placeholder; prune guidance |
[src/commands/project.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/project.ts)
|
|
[f6fe55f](f6fe55f)
[#787](#787) | not user-visible |
Docs-only retirement/hygiene follow-up |
[docs/guides/v5-release-notes.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/guides/v5-release-notes.md)
|
|
[7f9548c](7f9548c)
[#792](#792) | not user-visible |
Start-here docs, navigation and contributor rule only |
[docs/versions/v5/install.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/versions/v5/install.md)
|
|
[a0cfc73](a0cfc73)
[#793](#793) | added | Verified
updater publication, backups and reversible candidate removal |
[src/lib/self-update.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/self-update.ts)
|
|
[292d312](292d312)
[#782](#782) | added | Lock-free
native ps and proved failed-start down |
[src/backends/native-project-observe.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/backends/native-project-observe.ts)
|
|
[b1e123b](b1e123b)
[#796](#796) | added | Doctor
reader count/worktree grouping in store recovery |
[src/lib/doctor-secret-integrity.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/doctor-secret-integrity.ts)
|
|
[286d00f](286d00f)
[#789](#789) | added | Foreground
command-before-wrapper retirement |
[src/lib/project-lifecycle-processes.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/project-lifecycle-processes.ts)
|
|
[bb6a7d1](bb6a7d1)
[#788](#788) | not user-visible |
Linux qualification runbook only |
[docs/guides/linux-host-qualification.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/docs/guides/linux-host-qualification.md)
|
|
[a262d42](a262d42)
[#800](#800) | not user-visible |
Internal desktop design; outside supported CLI release scope |
[apps/desktop/DESIGN.md](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/apps/desktop/DESIGN.md)
|
|
[6b161ba](6b161ba)
[#774](#774) | added | Native
interactive exec, finite fallback and receipt recovery |
[src/backends/native-project-exec.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/backends/native-project-exec.ts)
|
|
[1249272](1249272)
[#799](#799) | not user-visible |
Portable output-contract CI selection only |
[scripts/test-shard-plan.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/test-shard-plan.ts)
|
|
[fa3f03d](fa3f03d)
[#790](#790) | added | Read-only
upgrade check, snapshot and rollback |
[src/commands/upgrade.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/upgrade.ts)
|
|
[c3b79bc](c3b79bc)
[#807](#807) | added |
Observe-only global status and unknown evidence |
[src/commands/global-status-observe.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/global-status-observe.ts)
|
|
[29be043](29be043)
[#812](#812) | added | Read-only
local CA trust diagnosis |
[src/lib/ca-trust-status.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/ca-trust-status.ts)
|
|
[f0102fd](f0102fd)
[#814](#814) | not user-visible |
Prepared-base verifier test fixture only |
[tests/qualify-provider-pin.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/qualify-provider-pin.test.ts)
|
|
[b4ebfec](b4ebfec)
[#815](#815) | added | Compact
upgrade plan, snapshot-backed apply/resume |
[src/lib/upgrade-apply.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/upgrade-apply.ts)
|
|
[c44b266](c44b266)
[#801](#801) | not user-visible |
Internal optional desktop preview; not shipped CLI behavior |
[apps/desktop/Cargo.toml](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/apps/desktop/Cargo.toml)
|
|
[56d1d0f](56d1d0f)
[#804](#804) | added | Automatic
mux sweep preserves live/retired config inputs |
[src/lib/live-inputs.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/live-inputs.ts)
|
|
[1958363](1958363)
[#805](#805) | added | MCP
timedOut result and Codex installer timeout |
[src/mcp/server.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/mcp/server.ts)
|
|
[e6207e8](e6207e8)
[#810](#810) | added | Lifecycle
activity writes including handler refusals; activity JSON |
[src/commands/lifecycle-activity.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/lifecycle-activity.ts)
|
|
[23fe08f](23fe08f)
[#825](#825) | added | Read-only
batch review and permission-only key repair |
[src/lib/upgrade-review.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/upgrade-review.ts)
|
|
[cab596c](cab596c)
[#781](#781) | entry present |
Full native env-file behavior table; added support/precedence summary |
[src/backends/native-compose-environment.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/backends/native-compose-environment.ts)
|
|
[1e84684](1e84684)
[#798](#798) | not user-visible |
Rust test process isolation/nextest; internal qualification only |
[scripts/test-runtime-core.sh](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/scripts/test-runtime-core.sh)
|
|
[518af29](518af29)
[#817](#817) | not user-visible |
Remove accidental empty checkout files; no installed CLI change |
[.gitignore](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/.gitignore)
|
|
[07192f7](07192f7)
[#824](#824) | added | BREAKING
warning moved from page tail into next.17; v4 stop procedure retained |
[src/mux/mux-config.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/mux/mux-config.ts)
|
|
[fe09a5b](fe09a5b)
[#816](#816) | added | Read-only
install/trust admin plans and exits |
[src/commands/global.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/global.ts)
|
|
[8977676](8977676)
[#827](#827) | added |
Registry-preserving project observe, runtime opt-in |
[src/commands/projects.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/commands/projects.ts)
|
|
[5965b23](5965b23)
[#828](#828) | added | Running
CLI version identity JSON |
[src/lib/version-report.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/version-report.ts)
|
|
[2922210](2922210)
[#830](#830) | added | Upgrade
safe/admin/manual action kinds |
[src/lib/upgrade-action-kind.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/upgrade-action-kind.ts)
|
|
[51b55c0](51b55c0)
[#820](#820) | not user-visible |
Archive/plan/shared-helper verification fixtures only |
[tests/python-free-download.test.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/tests/python-free-download.test.ts)
|
|
[5002cf8](5002cf8)
[#809](#809) | added | Retirement
read retry, second Ctrl-C and native cancellation cleanup |
[src/lib/project-lifecycle-processes.ts](https://github.com/hack-dance/hack/blob/5002cf87bb50686b17ceae8a4c835f524ee1b3a5/src/lib/project-lifecycle-processes.ts)
|

---------

Co-authored-by: Kit <344842+roodboi@users.noreply.github.com>
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.

1 participant