Files
stack/docs/scratchpads/703-wrapper-interactive-auth.md
Jarvis d1b43f8fb4
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
docs: record wrapper deployment verification
2026-07-12 09:51:29 -05:00

2.9 KiB

#703 Git Wrapper Interactive and Auth Resilience

Objective

Restore the deployed Git wrapper contract: issue-create supports interactive invocation and Gitea mutation behavior tolerates a stale Tea authenticated user by validating current identity and using the existing host-scoped API fallback.

Scope

  • packages/mosaic/framework/tools/git/issue-create.sh
  • packages/mosaic/framework/tools/git/detect-platform.sh
  • Git wrapper regression harnesses
  • This scratchpad

Requirements / acceptance evidence

  1. issue-create -i and --interactive prompt for missing issue fields without exposing credentials.
  2. Explicit command-line fields retain precedence and do not trigger prompt input.
  3. Gitea wrapper resolves the current user dynamically from the target host and does not rely on the saved Tea user identity.
  4. A Tea GetUserByName failure falls back to authenticated API creation.
  5. Existing body-safety, login-resolution, issue-create, and pr-create paths remain green.
  6. Source framework is re-seeded to deployed ~/.config/mosaic, then deployed wrappers are verified end to end.

Plan

  1. Add failing shell regression harness for interactive input and stale Tea user fallback.
  2. Implement minimal helper and parser changes.
  3. Run wrapper harnesses, syntax checks, and repository baseline checks.
  4. Re-seed deployed framework and run live wrapper verification.
  5. Commit, queue guard, push, open PR, and stop for independent review.

Progress

  • Issue #703 filed before code; issue comment records #536 root cause and stale-login trigger.
  • Deployed wrapper issue-create.sh -i reproduced: Unknown option: -i (exit 1).
  • Live Tea mutation did not reproduce GetUserByName on this host because the current mosaicstack Tea login is valid. The test harness models the reported stale authenticated-user condition.
  • Implemented -i / --interactive prompt collection and a dynamic Tea /user validation. A stale Tea identity now selects the existing host-scoped Gitea API fallback before mutation for both issue and PR creation.
  • Re-seeded the framework with MOSAIC_INSTALL_MODE=keep MOSAIC_SYNC_ONLY=1 bash packages/mosaic/framework/install.sh. Installed and source wrapper SHA-256 values matched.
  • Live deployed verification: interactive issue-create opened then closed #704; installed dynamic identity resolved jason.woltje.

Verification

  • PASS: packages/mosaic/framework/tools/git/test-issue-create-interactive-auth.sh
  • PASS: packages/mosaic/framework/tools/git/test-issue-create-body-safety.sh
  • PASS: packages/mosaic/framework/tools/git/test-gitea-login-resolution.sh
  • PASS: packages/mosaic/framework/tools/git/test-pr-metadata-gitea.sh
  • PASS: packages/mosaic/framework/tools/git/test-pr-merge-gitea-empty-uid.sh
  • PASS: bash packages/mosaic/framework/tools/git/test-lane-brief-pr-linkage.sh
  • PASS: bash -n packages/mosaic/framework/tools/git/*.sh
  • PASS: Prettier check for this scratchpad