Native PR-workflow tools (merge/status/rerun) gated by ward's embedded permission system #1075
No reviewers
Labels
No labels
burndown-2026-06
pressure-test
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/ward!1075
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-1067"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
closes #1067
ward.workflow: pull-requests-and-merge
PR-workflow management (merge, per-PR combined CI status, Actions run status, rerun) now lives as compiled ward code with zero runtime KDL-specgen dependency, so a stripped or rolled-back
.ward/bundle cannot disable a director's merge lane again (infrastructure#538).What landed
ward agent pr status|merge|runs|rerun- native verbs on ward's core Forgejo client. On a read-only director surface they forward through the host dispatch broker (newpr-status/pr-merge/ci-runs/ci-rerunactions); the host re-checks the permission gate before touching the forge. Elsewhere they run in-process.merge-authoritygrant in the shipped role presets KDL (mirrored intoroleassets/), keyed to the workflow-mode model: director merges underpull-requestsandpull-requests-and-merge, engineer self-merges underpull-requests-and-mergeonly,patch-only/direct-mainwithhold merge from everyone. Status/runs needread; rerun needsengineeringorproject-management; unknown roles are denied fail-closed.GET /pulls/{index}/merge).ward agentsmart-defaults guard exempts theprmeta verb, so these tools work withWARD_CONFIG_REFunset (verified live in a container with no bundle).status(notstate), which made the day-olddirectorMergeStatusGaterefuse every merge on the live forge -effectiveState()now reads either field; and/actions/runsignoreslimitunlesspagerides along.Acceptance
ward exec test(TestPRWorkflowMergeAuthorityMatrix,TestPRWorkflowReadAndRerunGates, fake-forge merge round-trips including the brokered path).Docs:
docs/agent-pr-workflow.md, FEATURES entry, surface operating-context note.PR-workflow management (merge, per-PR combined CI status, Actions run status, rerun) is a foundational ward-scale capability, so it now lives as compiled ward code with zero runtime KDL-specgen dependency (ward#1067, infrastructure#538): - ward agent pr status|merge|runs|rerun run on ward's core Forgejo client; on a read-only director surface they forward through the host dispatch broker (new pr-status/pr-merge/ci-runs/ci-rerun actions) and the host re-checks the permission gate before touching the forge. - Merge authority is embedded product data: a merge-authority grant in the shipped role presets KDL, keyed to the workflow-mode model - the director merges under pull-requests and pull-requests-and-merge, the engineer self-merges under pull-requests-and-merge only, patch-only and direct-main withhold merge from everyone. Status/runs need read; rerun needs engineering or project-management. Unknown roles are denied fail-closed. - The merge tool pins the checked head commit, re-runs the live required-status gate, and confirms with the merged-state check (GET /pulls/{index}/merge). - rerun degrades loudly on the agentic-os#434 forge gap (no rerun API leaf on current Forgejo) instead of pretending a specgen leaf could have served it; the compiled client starts working the day the forge ships the endpoint. - The ward agent smart-defaults guard exempts the pr meta verb so the tools stay reachable with the coilyco .ward/ bundle absent or rolled back - the exact coupling the 2026-07-10 permissions rollback exposed. - Fix a live-API mismatch in the day-old director merge status gate: Forgejo marshals per-context commit status under 'status', not 'state', so the gate refused every merge on the live forge; effectiveState() now reads whichever field the forge populated. - Fix the Actions run list paging quirk: the forge ignores limit unless page rides along. Verified live against forgejo.coilysiren.me with WARD_CONFIG_REF unset: runs/status reads, role denials for advisor/qa, owner-scope refusals, and the loud rerun gap error. Merge paths are pinned by fake-forge tests covering the role x mode matrix per the acceptance criteria.