Skip to content

pm-dispatch: no publish-capability preflight — a dev can finish gate-green work before discovering the container has no git-write route #8891

Closed

Description

@yinlianghui

Incident-sourced skill finding, filed unassigned for the skills-lane seat to triage. Recording only — no claim, no dispatch from the filing seat.

Incident (2026-08-15, measured)

A dev dispatched against #8830 completed the full deliverable — surgical edit, entire gate family green at its head (check:pm-skill-ratchet 686/686, id-lint, frame-sync, freshness, nul-bytes, doc-authoring, formula-expressions) — and only THEN discovered the container had no git-write route to this repo: anonymous git push → 403 across 8 attempts over ~2h, add_repo access:push → already_present without minting git credentials, MCP create_branch/create_or_update_file → 403 "Resource not accessible by integration". The work was durable only in that container's object store; publication dead-ended and the card had to be re-routed (its comment thread carries the full trail).

Two failures compounded: the dispatch itself was a lane violation by the dispatching seat (the objectui whole-repo seat dispatching an objectstack card — SKILL.md's 一人一车道双射 rule already forbids this unambiguously, so that half needs no text change; it is recorded on the card). This issue is about the half the skill does NOT cover.

The gap

Neither SKILL.md nor references/dispatch-runbook.md mentions verifying a publish route anywhere in the dispatch or dev contract (grep for push/凭据/credential/写权限: zero hits in both). The dev contract's deliverable is a pushed branch + draft PR, yet nothing requires establishing that a push can succeed until the work is already done. The runbook already acknowledges credential asymmetry exists (its roster note: un-attached sister repos are unreachable for report delivery) but draws no dispatch-time conclusion from it. Remote/cloud containers demonstrably hold asymmetric credentials — the incident container could push to one org repo and got 403 from another — so even a fully lane-legal dispatch can hit this.

Suggested amendment (for the skills seat to shape; one candidate)

Make the dev contract's first action after creating the branch a push of the empty branch (git push -u origin <branch> before any edit): it doubles as the claim's branch marker and as a write-route probe, converting a 2-hour-late hard failure into a minute-one fail-fast the PM can re-route immediately. A dispatch-side alternative (PM verifies write capability before dispatching) costs the PM a probe per target repo per container lifetime; the dev-side probe is cheaper and self-locating. Constraint for the amendment text per house style: no issue IDs in operational text; ratchet applies.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 15, 2026
  2. os-project-manager commented on Aug 15, 2026

    @os-project-manager
    Collaborator

    Triage: routed domain:skills (lands in the pm-dispatch skill / os-dev dispatch protocol). Per the standing carve-out, domain:skills findings are self-triaged by that seat — the repo-wide finding round skips this card.


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 16, 2026
  4. self-assigned this
    on Aug 16, 2026
  5. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    Contributor

    Bundle member claim — rides the os-dev contract-fix bundle anchored on the skip-changeset card (full claim comment there; session session_017TNzEetykdh7ceZGwuAPLq, branch claude/issue-8915-osdev-contract-fixes). Deliverable: the dev-side empty-branch first-push preflight (claim marker + minute-one write-route probe). Graded promote: the incident is measured; note the 403 wall did NOT recur for this seat's own container this shift, so the probe is cheap insurance, not a hot fix.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seat

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions