mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 16:45:22 +00:00
60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
---
|
|
issue: 68
|
|
issue_title: "False positive external-directory prompt when bash command contains //"
|
|
---
|
|
|
|
# Retro: #68 — False positive external-directory prompt when bash command contains //
|
|
|
|
## Final Retrospective (2026-05-04T17:30:00Z)
|
|
|
|
### Session summary
|
|
|
|
Planned, implemented, and shipped a one-line fix in `classifyTokenAsPathCandidate` (`src/external-directory.ts`) to skip tokens composed entirely of forward slashes (`/`, `//`, `///`).
|
|
Added 5 regression tests, released as v4.0.1.
|
|
The user also prompted a research detour into `shell-quote` and `tree-sitter-bash` as potential replacements for the regex-based tokenizer, which informed a deferred follow-up.
|
|
|
|
### Observations
|
|
|
|
#### What went well
|
|
|
|
- **Research detour produced lasting value.**
|
|
The user's question "are we confident there's not a parser package?"
|
|
led to a concrete comparison of `shell-quote` (23KB, zero deps) and `tree-sitter-bash` (what OpenCode uses).
|
|
This is documented in the plan's Open Questions and ready to file as a follow-up issue.
|
|
The detour cost ~10 minutes but eliminated a class of future "should we have checked?"
|
|
doubt.
|
|
- **Dog-fooding surfaced the root cause in real time.**
|
|
The `gh issue close` command's `--comment` argument contained `//` and `\"`, triggering the very bug class we just patched — but through the `stripQuotedStrings` escaped-quote vector, not the bare-slash vector.
|
|
This validated the plan's "Broader issue" framing and made the follow-up issue concrete rather than theoretical.
|
|
|
|
#### What caused friction (agent side)
|
|
|
|
- `premature-convergence` — The initial plan committed to the one-line regex fix without investigating parser alternatives.
|
|
The user had to explicitly ask "are we confident there's not a parser?"
|
|
to trigger the research.
|
|
Impact: required a plan amendment and an extra commit, though the final plan was better for it.
|
|
Self-identified after user prompt.
|
|
- `rabbit-hole` — The `tree-sitter-bash` exploration tried to run test scripts via `cat > file << 'SCRIPT'` heredocs, which themselves triggered permission prompts (the extension scanning the heredoc content for paths).
|
|
Three failed `bash` invocations before the user cut it short.
|
|
Impact: ~3 minutes wasted on WASM API exploration that the user didn't need to see.
|
|
- `scope-drift` — The first `gh issue close` comment was 8 lines of markdown with backtick-escaped path tokens (`` \`//\` ``, `` \`///\` ``).
|
|
This verbose comment triggered `stripQuotedStrings` breakage and an external-directory false positive.
|
|
The second attempt with 5 concise lines succeeded immediately.
|
|
Impact: one denied command + user frustration.
|
|
|
|
#### What caused friction (user side)
|
|
|
|
- The user could have mentioned the parser-alternative question during the `/plan-issue` step rather than after the plan was committed.
|
|
This would have avoided the plan amendment commit.
|
|
Minor impact — the amendment was small.
|
|
|
|
### Follow-ups
|
|
|
|
- File a follow-up issue to replace the regex tokenizer (`stripQuotedStrings` + `split(/[|;&><\s]+/)`) with `shell-quote` or `tree-sitter-bash`.
|
|
The `stripQuotedStrings` escaped-quote bug is the root cause of an ongoing class of false-positive external-directory prompts.
|
|
Research notes are in this retro and the plan's Open Questions section.
|
|
|
|
### Changes made
|
|
|
|
1. Created `docs/retro/0068-skip-bare-slash-tokens.md` (this file).
|