Skip to content

Commit 08f3795

Browse files
committed
docs(qa): sweep methodology notes (cwd drift, gh comment quirk, mirror merge)
1 parent ae45457 commit 08f3795

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

QA.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,43 @@ same pass.
330330
`status=$(...)` dies instantly with "read-only variable: status" (exit 1).
331331
Use `run_state=`/`st=` in any Monitor/background snippet.
332332

333+
## Bash Tool cwd Does Not Reliably Persist Across Calls Mid-Session
334+
335+
During the real-world test-repo sweep, `cd test-repos/<repo>` in one Bash call
336+
followed by `gh issue`/`gh pr` commands in later calls silently resolved
337+
against whichever repo's `origin` remote happened to be the last `cd`-ed-into
338+
directory — `gh issue view 65` returned a *closed react-native-navigation*
339+
issue with the same number, not diffctx#65. This self-corrected on a later
340+
call without any explicit `cd` back, so the tool's "cwd persists between
341+
commands" guarantee is not reliable across a long multi-step QA session (some
342+
other cwd-resetting event fires between calls). Mitigation: pass `-R
343+
nikolay-e/diffctx` explicitly on every `gh issue`/`gh pr` call rather than
344+
relying on directory context, especially in any step that also touches
345+
`test-repos/*` clones. Verify with `pwd && git remote -v` before any
346+
repo-context-sensitive command if in doubt.
347+
348+
## `gh issue view <N> --comments` Prints Nothing When There Are Zero Comments
349+
350+
Not a failure — `gh issue view 92 --comments` (an issue with `comments: 0`)
351+
returned empty stdout with rc 0, easy to misread as the command having failed
352+
or hit a transient error. Drop `--comments` (or check `comments:` in the
353+
default view output) to confirm zero-vs-broken before retrying.
354+
355+
## Dependabot Squash-Merges via `gh pr merge` Land on GitHub Only, Not Forgejo
356+
357+
Forgejo (`origin`) is source of truth and push-mirrors to GitHub, but
358+
`gh pr merge` operates against GitHub's API directly — the squash-merge commit
359+
only ever exists on `github/main`, never on `origin/main`. If local `main` also
360+
gained commits in the same session (e.g. QA-pass bug fixes), `git merge
361+
--ff-only origin/main` succeeds (local is already ahead of origin) while
362+
`github/main` has *diverged* (different squash commits on top of the same
363+
base) — needs a real `git merge github/main` (not `--ff-only`), then push the
364+
merge commit to **both** `origin` and `github`. Forgejo's branch-protection
365+
flags the resulting merge commit as a rule violation ("branch must not contain
366+
merge commits") but admin-bypasses it through — expected, not a failure to
367+
chase. Prefer resolving via rebase over merge when the local/dependabot diffs
368+
don't touch the same files, to avoid tripping that rule at all.
369+
333370
---
334371

335372
Generic QA patterns live in the `/qa` skill — do not duplicate here.

0 commit comments

Comments
 (0)