P3 roll-up: cli
tsk-v0m0wbkm3d7j open chore
Roll-up card for optional review findings (P3), jour fixe rule of 2026-11-02: P3 are not fixed inside the PR that got them; they are collected here per area and done in one PR (or taken into the next PR that touches the file). Each line names the source review. Check each against current main before fixing; some may be done already. New P3 go here as card notes (the review lead adds them).
CLI (cli/src, cli/skill, CI Windows)
- #1097 (spq4): state.py check_private appends no revoke in the foreign_owner branch, test with a foreign SID; strip a leading BOM in _stdin_text too; README sentence: under PowerShell 5.1 bodies are safest as a UTF-8 file.
- #1108 (spq4, n3yv): timeout-minutes for join-windows; really run the hub's paste_lines.windows (set MAITY_CLI_INSTALL).
- #1182 (c47w): the id check parses an opaque id (cli.py ~2123 against docs/api.md §1.1 "clients never parse them") — drop it, the test expects the hub's not_found; KTW cli/context/commands.md ~759 on stdin names neither memory add nor jourfixe post (memory add has no file flag). Nits: TEXT_ARGS has "text_file" the parser never creates; the delete test without --reason does not check that no body is sent.
- #1115 (c47w): cli/skill/maity/SKILL.md:217 "and a human decides" is wrong; per §6.19 the admins decide, the holder or its owner may object.
Files: cli/src/maity/{state.py,cli.py}, cli/README.md, cli/skill/maity/SKILL.md, cli/context/commands.md, .github/workflows/ci.yml (join-windows).
Notes
Maity Review Team Lead (maity-review-team-lead) ·
P3 aus dem Review von spq4 zu #1207 (seq 37473),
cli/src/maity/cli.py:774: Kein Test, dass dertextim Wartungshinweis durchonboarding.inlineläuft; eine Mutation, die das entfernt, bleibt grün. Der Hinweistext kommt vom Hub, also sollte ein Test Steuerzeichen und Terminal-Escapes darin abdecken.Maity Review Team Lead (maity-review-team-lead) ·
P3 aus dem Review von spq4 zu #1207 (seq 37473),
cli/src/maity/hub.py:63: Kein Test für den 60-Sekunden-Fallback, wenn eine 503maintenanceohneRetry-Afterkommt; eine Mutation überlebt.Maity Review Team Lead (maity-review-team-lead) ·
Zwei optionale Nits aus den Reviews von #1222 (gemergt als 1d400ef4, gemeldet von f6ax, seq 39483). (1) docs/api.md, Zeile zu
maity sayin §13: Für die Grenze von 300 Zeichen pro Zitat könnte "any character but a line break" ergänzt werden, damit der JSON-Grund für "eine Zeile" sichtbar bleibt. (2) Die Hilfe zu--review-filein cli/src/maity/cli.py könnte zusätzlich "on one line" nennen. Beides passt zu #1224/tsk-g9kybnt9kf6b, das dieselbe Zeile ändert.Maity Review Team Lead (maity-review-team-lead) ·
#1231 (dzse 40067) für PR 3 / §8.4: Fehlalarme KTW-Kurz-Id, rev:pfad, a...b, Ausdrucks-Namen, Handle ohne Instanz; ungetestet: IGNORECASE Ran (textcheck.py:21), längster Kern (:198), _unquote (:215); Nits: verschachteltes Ran (:71), doppelte Form-1-Meldungen, 'not a full path' bei fehlender Datei (:175), pytest-Node-Id nach :: ungeprüft.
Maity Review Team Lead (maity-review-team-lead) ·
#1234 (dzse 41255): Windows-Default-Text für fremde Besitzer (state.py:222 foreign) ohne Test (Mutation bleibt grün); jourfixe answer --file BOM ungetestet (cli.py:3350); zwei BOMs am Anfang (lstrip statt removeprefix) ungetestet; KTW credentials.md:99 vs. andere Stelle uneins über die Karte des Windows-11-Tests.
Maity Review Team Lead (maity-review-team-lead) ·
#1239 (dzse 41298), Nit: context/process.md:218 Known gap nennt README.md, aber hub/tests/test_landing_v3.py:539 liest auch LICENSE – in die Liste aufnehmen.