NS3 slice: Add panel stack state to the session protocol #18
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
OBJECTIVE: Represent panels as protocol/session state with open/close/switch behavior independent of rendering.
AUTHORITY: Parent #3
NS3: Narrow terminal UI and panel grammar; PRODUCT.md; REQUIREMENTS.md (PRODUCT.md; req: ui/001-002; req: session/003).AGENT AUTHORITY:
PARENT: #3 via explicit issue link and parent checklist.
SCOPE: The smallest source/docs/tests needed to make this behavior real and verified.
BOUNDARIES: No concrete file/git/LSP panels yet.
ACCEPTANCE: Headless tests open/close/switch nested panels and inspect state through
mimctl.VERIFICATION: Run the cheapest command that proves acceptance. Include regular tests for the intended payoff and adversarial tests for realistic failure, boundary, or regression cases. If no implementation test command exists yet, create/record the canonical command in AGENTS.md as part of the slice.
BLOCKERS: none
GOAL: Implement this vertical slice to the ACCEPTANCE above, keep the repo clean, cite relevant
req:anchors in code/tests where applicable, and close only after verification passes.Implemented in commit
230f8f9129(Add generic session panel stack).Verification:
Regular tests: session opens/closes/switches generic panel stack; protocol opens/switches/closes panels and exposes depth/active/path in state; socket request can open a panel and later inspect the same panel state.
Adversarial tests: empty stack close/next/previous fail clearly, invalid panel titles are rejected, protocol invalid title and empty close return explicit errors, and panel state remains inspectable with no buffer open.
Boundary: generic panel stack/session/protocol state only. No concrete file/git/LSP/job/Pi panels, list/filter UI, or terminal rendering changes were added.