Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions spec/non-functional/local/NFR-001-output-via-ix-ui-cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,16 @@ ix-ui-cli is the design system. Centralizing visual decisions there means a sing

## Acceptance Criteria

- **NFR-001-AC-1**: A static grep for `console\.log\|console\.error\|console\.warn\|process\.stderr\.write` across `packages/*/src/` and `apps/*/src/` returns zero matches.
- **NFR-001-AC-2**: Every command handler that opens a frame uses `startListing` imported from `@agent-ix/ix-ui-cli`. No command handler defines its own `intro`/`outro` style helpers.
- **NFR-001-AC-3**: Multi-service progress uses `PhaseTable` imported from `@agent-ix/ix-ui-cli`, not a locally defined display class.
- **NFR-001-AC-4**: A static grep for the deprecated framing API (`introCommand|outroSuccess|outroError|outroWarning|outroInfo|runTaskList`) across `packages/*/src/` and `apps/*/src/` returns zero matches.
- **NFR-001-AC-5**: A static grep for inline ANSI escape sequences (`\\x1b\[`, `\\u001b\[`) and inline box-drawing connectors (`└──┐`, `└──•`, `└──`) across `packages/*/src/` and `apps/*/src/` returns zero matches outside test files. (All such tokens come from `@agent-ix/ix-ui-cli`.)
- **NFR-001-AC-6**: Live Ink command wrappers delegate Helm, Kubernetes, and long-running process orchestration to controller modules; React components own rendering state only.
- **NFR-001-AC-7**: Shared phase-row state is modeled outside command wrappers and emits immutable snapshots for live Ink renderers.

| ID | Criteria | Verification |
|----|----------|--------------|
| NFR-001-AC-1 | A static grep for `console\.log\\|console\.error\\|console\.warn\\|process\.stderr\.write` across `packages/*/src/` and `apps/*/src/` returns zero matches. | Inspection |
| NFR-001-AC-2 | Every command handler that opens a frame uses `startListing` imported from `@agent-ix/ix-ui-cli`. No command handler defines its own `intro`/`outro` style helpers. | Demonstration |
| NFR-001-AC-3 | Multi-service progress uses `PhaseTable` imported from `@agent-ix/ix-ui-cli`, not a locally defined display class. | Demonstration |
| NFR-001-AC-4 | A static grep for the deprecated framing API (`introCommand\|outroSuccess\|outroError\|outroWarning\|outroInfo\|runTaskList`) across `packages/*/src/` and `apps/*/src/` returns zero matches. | Inspection |
| NFR-001-AC-5 | A static grep for inline ANSI escape sequences (`\\x1b\[`, `\\u001b\[`) and inline box-drawing connectors (`└──┐`, `└──•`, `└──`) across `packages/*/src/` and `apps/*/src/` returns zero matches outside test files. (All such tokens come from `@agent-ix/ix-ui-cli`.) | Test |
| NFR-001-AC-6 | Live Ink command wrappers delegate Helm, Kubernetes, and long-running process orchestration to controller modules; React components own rendering state only. | Demonstration |
| NFR-001-AC-7 | Shared phase-row state is modeled outside command wrappers and emits immutable snapshots for live Ink renderers. | Demonstration |

## Measurement and Evaluation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ regression.

## Acceptance Criteria

- **NFR-002-AC-1**: The confirmation prompt MUST include the literal cluster name (e.g. `'ix'`) in its message text.
- **NFR-002-AC-2**: Declined or cancelled confirmation MUST exit 0 with no destructive action taken.
- **NFR-002-AC-3**: `--yes` flag bypasses the prompt; the destructive action proceeds immediately.
- **NFR-002-AC-4**: No other cluster teardown command (future additions) may skip this constraint without an explicit NFR exemption.

| ID | Criteria | Verification |
|----|----------|--------------|
| NFR-002-AC-1 | The confirmation prompt MUST include the literal cluster name (e.g. `'ix'`) in its message text. | Demonstration |
| NFR-002-AC-2 | Declined or cancelled confirmation MUST exit 0 with no destructive action taken. | Demonstration |
| NFR-002-AC-3 | `--yes` flag bypasses the prompt; the destructive action proceeds immediately. | Demonstration |
| NFR-002-AC-4 | No other cluster teardown command (future additions) may skip this constraint without an explicit NFR exemption. | Demonstration |