Skip to content

Pre-flight checks #4

Closed
Closed

Description

@JacobStephens2

Parent

#2

What to build

Every pre-flight check from the spec, all run before any worktree, temp directory, or session is created, each failing with a clear message and non-zero exit:

  • Missing argument or not a GitHub issue URL → usage error.
  • Origin match on the raw configured origin URL (not the insteadOf-expanded one): HTTPS and SSH, optional .git, any casing all match; a different repo is a mismatch error; non-github.com hosts and non-/issues/<n> URLs are rejected.
  • The issue is closed → error.
  • Detached HEAD → error.
  • The Base branch doesn't exist on origin → error.
  • The local Base branch is ahead of origin → error.
  • Uncommitted changes in the launch directory are allowed and left out of the run.

Acceptance criteria

  • Usage error for a missing or malformed argument
  • Origin match accepts https://github.com/O/R.git, https://github.com/o/r, and git@github.com:o/r.git for issue https://github.com/o/r/issues/1; rejects a different owner or repo with a mismatch error
  • Non-github.com and non-issue URLs rejected
  • Closed issue rejected
  • Detached HEAD, Base branch missing on origin, and local Base branch ahead of origin each rejected
  • Uncommitted changes in the launch directory don't block a run and don't appear in the Issue branch
  • For every rejection: no worktree, no temp directory, fake claude never invoked

Blocked by

Activity

  1. JacobStephens2 commented on Sep 25, 2026

    @JacobStephens2
    OwnerAuthor

    Finding from the first real run of the walking skeleton (vacation#3 → JacobStephens2/vacation#13):

    The runner's Linux user had no global user.name or user.email. The agent's first git commit in the worktree failed with Author identity unknown. It worked around this by copying the author of the last commit in git log and committing with git -c user.name=… -c user.email=…. That happened to be the right person here, but in a shared repo the agent would have committed as whoever pushed last.

    The spec lists a git identity as a prerequisite ("git with user.name and user.email"), but nothing checks it.

    Suggested addition to this ticket: a pre-flight check that git config user.name and git config user.email both resolve in the launch repo (so global or repo config both count). If either is missing, fail with a clear message before any worktree, temp directory or session is created.

    • Missing user.name or user.email → error naming the missing key; no worktree, no temp directory, fake claude never invoked
  2. added a commit that references this issue on Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions