spec: gate list has three states; the tty prompt echoes on purpose
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 file changed,
+12
−8
docs/superpowers/specs/2026-09-07-password-gate-design.md+12 −8
CI passed — run details
diff --git a/docs/superpowers/specs/2026-09-07-password-gate-design.md b/docs/superpowers/specs/2026-09-07-password-gate-design.md| index 3b62df343..515d391ba 100644 |
| --- a/docs/superpowers/specs/2026-09-07-password-gate-design.md |
| +++ b/docs/superpowers/specs/2026-09-07-password-gate-design.md |
| @@ -305,14 +305,18 @@ only, sub-verbs as positional words that never reach `fs.Parse`. |
| `set` without `-password` reads one line from stdin, so a password can be |
| piped or typed without landing in the shell's history or `ps` output; an |
| -empty line is refused. There is no no-echo terminal prompt: that needs |
| -`golang.org/x/term`, which the module does not depend on, and a |
| -platform-specific termios call is exactly what the cross-compile gate |
| -exists to keep out. Without `-host`, `set` and `clear` apply to **every** instance of the app, |
| -one PATCH each, and print each host as it goes; a failure part way is |
| -reported per host and the verb exits non-zero, with nothing rolled back — |
| -the record is per host and the operator re-runs. `list` prints host and |
| -`open`/`password set`. |
| +empty line is refused. When stdin is a terminal the verb prints `Password:` |
| +to stderr first; what is typed echoes, deliberately, because a no-echo |
| +prompt needs `golang.org/x/term`, which the module does not depend on, and |
| +a platform-specific termios call is exactly what the cross-compile gate |
| +exists to keep out. The session is resolved before the read, so a |
| +logged-out user is told before typing a secret. Without `-host`, `set` and |
| +`clear` apply to **every** instance of the app, one PATCH each, and print |
| +each host as it goes; a failure part way is reported per host and the verb |
| +exits non-zero, with nothing rolled back — the record is per host and the |
| +operator re-runs. `list` prints host and one of three states: |
| +`open`, `password set`, or `unknown — console predates gates` when the |
| +reply carries no `gated` key at all (§9). |
| `-account`, `-account-id`, `-console` as every other API verb. |