Current design
You: Add a Show password button. Preserve the login API and keyboard behavior, and add the relevant tests.
-
Record the request
Agent: I’ll carry that request through one sprint-bound Task and land the verified result locally.
docs/sprints/password_visibility.md # Password Visibility [plan-ref: login/password-visibility/root] - [ ] Add the accessible control and focused tests. [ref: login/password-visibility/implement] -
Start the Task
Agent: The sprint item is ready. I’m starting its Task and moving into the isolated worktree.
$ ait task start --from docs/sprints/password_visibility.md#login/password-visibility/implement --intent "Add accessible password visibility control" task: RWT-0042 change: RWT-0042/C-01 next: cd .ait-worktree-links/rwt-0042 $ cd .ait-worktree-links/rwt-0042 working tree: RWT-0042/C-01 -
Change and verify
Agent: I’m changing only the login form and its focused tests inside the Task worktree.
src/LoginForm.tsx + <button type="button" aria-pressed={visible}> + {visible ? "Hide password" : "Show password"} + </button> tests/LoginForm.test.tsx + toggles password visibility with keyboard and pointer input $ npm test -- LoginForm 3 tests passedAgent: The focused checks passed. I’m recording this exact revision before land.
$ ait snapshot create --message "Add accessible password visibility control" Snapshot: SNP-7E21A4C8 -
Complete the Task
Agent: The verified Snapshot is ready. I’m landing the Task onto the local target line.
$ ait task land RWT-0042/C-01 --local Status: landed Target: main (local) Task: completed Sprint item: completed Worktree: cleanedAgent: Done. The password control and focused tests landed locally; the Task and exact sprint item are complete.
Result: Change complete → Task closed → sprint item closed → worktree cleaned
Confirm regression
You: Password visibility stopped working from the keyboard after the last login-form change. Confirm the regression and fix it without changing login submission.
-
Reproduce the failure
Agent: I’ll reproduce the reported behavior and trace the responsible Snapshot before choosing the repair.
$ npm test -- LoginForm 1 failed: activates password visibility with Space -
Trace the responsible Snapshot
Agent: The focused test fails on the keyboard path. I’m checking the changed source line now.
$ ait blame src/LoginForm.tsx --line 84 resolved snapshot: SNP-5C91D2B4 path: src/LoginForm.tsx 84 SNP-5C91D2B4 · Refactor login form actions -
Bind and repair
Agent: Regression confirmed at SNP-5C91D2B4. I’ll bind the repair and its regression test to one exact sprint item.
docs/sprints/password_keyboard_regression.md # Password Keyboard Regression [plan-ref: login/password-keyboard-regression/root] - [ ] Restore native keyboard activation and lock it with a regression test. [ref: login/password-keyboard-regression/repair] $ ait task start --from docs/sprints/password_keyboard_regression.md#login/password-keyboard-regression/repair --intent "Restore password-control keyboard activation" task: RWT-0043 change: RWT-0043/C-01 next: cd .ait-worktree-links/rwt-0043 $ cd .ait-worktree-links/rwt-0043 working tree: RWT-0043/C-01Agent: I’m restoring native button semantics and keeping the failing keyboard case as the regression test.
src/LoginForm.tsx - <span role="button" onClick={toggleVisibility}> + <button type="button" onClick={toggleVisibility}> tests/LoginForm.test.tsx + activates password visibility with Space $ npm test -- LoginForm 4 tests passedAgent: The original failure now passes with the existing login behavior intact. I’m recording the repaired revision.
$ ait snapshot create --message "Restore password-control keyboard activation" Snapshot: SNP-9B42C1E6 -
Complete the repair
Agent: The regression repair is verified. I’m landing the Task onto the local target line.
$ ait task land RWT-0043/C-01 --local Status: landed Target: main (local) Task: completed Sprint item: completed Worktree: cleanedAgent: Confirmed and fixed. Keyboard activation is covered by the regression test, and the repair landed locally.
Result: Regression repair complete → Task closed → sprint item closed → worktree cleaned