Skip to content

Prove App Builder CLI failure and interruption cleanup #148

Description

@kattsushi

Part of #131. Follows #146 and PR #147 as Unit 6B of the App Builder feature-branch chain.

Problem

Unit 6A completes the successful installed public CLI proof, but failure and interruption process-tree cleanup remain intentionally unproven. A direct child may close while a TERM-resistant descendant survives if the delayed process-group SIGKILL is canceled.

Scope

  • Prove a real generated Nx verification failure through the installed public CLI boundary.
  • Prove real generated Nx/Vitest interruption after explicit readiness evidence.
  • Run a descendant that ignores SIGTERM in the same POSIX process group.
  • Retain the process-group identity (PGID) independently of the direct-child lifecycle.
  • Send SIGTERM to the process group, poll for group disappearance within a bounded interval, escalate to group SIGKILL, and await confirmed disappearance.
  • Assert observable escalation and stopped-process evidence.
  • Clean up the isolated workspace, package store, and all spawned processes while preserving repository-root Nx isolation on macOS and Linux.

Acceptance criteria

  • The behavior-first test generated Nx verification failure cleans the complete process group passes against a real generated Nx verification failure.
  • The behavior-first test generated Nx/Vitest interruption escalates and removes a TERM-resistant descendant after readiness passes against a real generated interruption after readiness evidence.
  • macOS and Linux CI provide the failure, interruption, escalation, stopped-process, cleanup, and root-isolation evidence.
  • No test substitutes a synthetic process.exit(1) failure or timer-based interruption proxy for the generated Nx/Vitest behavior.
  • The delivery stays within 400 changed lines (additions + deletions).
  • Rollback removes only Unit 6B and leaves Unit 6A intact.

Non-goals

Chain context

  • Delivery base: feat/app-builder-public-cli-success-proof at dc97f7a09effc1159cc3bcdc92801723a2b78112.
  • Chain: #143 (+ #145) → #147 Unit 6A → 📍 Unit 6B → Unit 7 → frozen #130.

Part of #131. This issue does not close #131 or #146.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions