WIP: issue-300: use Closes keyword in MR description so merges auto-close the issue #301
Closed
yousuf
wants to merge 0 commits from
yousuf/issue-300-closes-keyword into main
AGit
pull from: yousuf/issue-300-closes-keyword
merge into: david:main
david:main
david:feature/issue-311/doc-updates-and-validation-for-the-no-code-change
david:feature/issue-307/surface-the-posted-comment-in-the-run-summary-and
david:feature/issue-306/post-the-comment-at-runpipeline-s-no-code-change-s
david:feature/issue-305/postnocodechangecomment-deterministic-post-and-mar
david:feature/issue-304/no-code-change-comment-json-marker-artifact-module
david:feature/issue-303/deterministic-no-code-change-comment-body-builder
david:feature/issue-300/mr-description-closes-keyword-auto-close
david:feature/issue-246/batch-scan-support-for-gitlab-gitlabissueclient-li
david:feature/issue-286/docs-stage-fails-every-run-when-docs-scope-is-cove
david:feature/issue-284/gitlab-auto-merge-fails-glab-mr-merge-uses-nonexis
david:feature/issue-282/fix-config-precedence-piloop-config-yaml-should-ou
david:feature/issue-274/gitlab-mr-auto-merge-check-uses-invalid-glab-mr-vi
david:feature/issue-267/network-level-fetch-failures-produce-opaque-fetch
david:feature/issue-257/recognize-mr-skipped-json-in-resume-completeness-d
david:feature/issue-256/wire-mr-skip-outcome-into-runpipeline
david:feature/issue-255/wire-nothing-to-ship-skip-into-runmrstage
david:feature/issue-254/add-mr-skipped-json-artifact-type-validator
david:feature/issue-253/add-git-native-nothing-to-ship-helper
david:feature/issue-230/friction-docs-design-md-adr-016-implementation-pla
david:feature/issue-229/friction-aggregate-recompute-at-end-of-run-pi-loop
david:feature/issue-228/friction-wire-remediate-stage-parse-friction-first
david:feature/issue-226/friction-foundation-entry-schema-parsefriction-par
david:feature/issue-223/docs-stage-adr-015-design-doc-updates-agents-desig
david:feature/issue-222/docs-stage-tests-unit-seams-commit-model-resume-e2
david:feature/issue-221/docs-stage-stage-module-src-docs-skill-body-docssk
david:feature/issue-220/docs-stage-mr-description-documentation-section-ru
david:feature/issue-219/docs-stage-resume-integration-type-unions-plumbing
david:feature/issue-218/docs-stage-git-add-and-discard-guard-docs-diff-art
david:feature/issue-217/docs-stage-config-surface-docs-section-no-docs-doc
david:feature/issue-207/feature-piloop-config-yaml-per-repo-config-file-su
david:feature/issue-201/console-stage-in-prefix-format-hh-mm-stage-remove
david:feature/issue-193/m5-renderer-sink-test-updates-docs-and-visual-e2e
david:feature/issue-192/m4-tty-gated-color-styling-layer-for-console-chann
david:feature/issue-191/m3-stateful-batch-prefixing-prefix-new-lines-only
david:feature/issue-190/m2-chunk-aware-eventsink-wiring-in-runstage
david:feature/issue-189/m1-chunk-model-event-renderer-with-full-thinking-l
david:feature/issue-23/switch-gitlab-mr-creation-from-cli-to-rest-api
david:feature/issue-180/feat-add-list-models-cli-flag-to-list-available-pi
david:feature/issue-175/enforce-pi-loop-in-target-repo-gitignore-at-startu
david:feature/issue-174/add-per-stage-model-banner-showing-the-resolved-mo
david:feature/issue-179/docs-adr-updates-for-per-run-model-override
david:feature/issue-178/effective-model-override-dual-source-preflight-in
david:feature/issue-177/source-aware-model-error-messages-in-resolvestagem
david:feature/issue-176/add-model-id-cli-flag-parsing-help-text
david:feature/issue-172/make-piloop-model-required-fail-fast-model-pinning
david:feature/issue-170/enforce-bash-timeouts-for-stage-sessions-default-1
david:feature/issue-160/m8-update-cli-reporting-for-no-code-change-outcome
david:feature/issue-159/m7-integrate-no-code-change-into-batch-runner
david:feature/issue-158/m6-add-no-code-change-outcome-to-batch-manifest
david:feature/issue-157/m5-add-defensive-skip-in-mr-stage-for-empty-workin
david:feature/issue-156/m4-handle-no-code-change-in-pipeline-orchestrator
david:feature/issue-155/m3-add-no-code-change-detection-to-implement-stage
david:feature/issue-154/m2-update-implement-skill-prompt-with-no-code-chan
david:feature/issue-153/m1-add-no-code-change-artifact-schema-and-i-o
david:feature/issue-44/git-worktree-support-for-bare-repos
david:feature/issue-140/batch-stream-agent-output-with-per-issue-i-n-key-p
david:feature/issue-139/console-stage-header-separators-from-runpipeline-v
david:feature/issue-138/logging-switch-logger-timestamps-from-iso-to-hh-mm
david:feature/issue-134/console-indent-multi-line-tool-result-continuation
david:feature/issue-132/timing-batch-level-started-completed-total-lines
david:feature/issue-131/timing-time-to-mr-generated-in-in-pr-description
david:feature/issue-130/timing-start-finish-total-lines-with-per-attempt-a
david:feature/issue-129/timing-per-stage-duration-lines-in-runpipeline-fin
david:feature/issue-128/timing-add-formatduration-humanization-helper
david:feature/issue-107/commit-model-m8-git-aware-resume-d6-d8
david:feature/issue-106/commit-model-m7-deterministic-mr-stage-on-all-plat
david:feature/issue-105/commit-model-m6-remediate-stage-commit-d1-d5
david:feature/issue-104/commit-model-m5-review-stage-no-commit-audit
david:feature/issue-103/commit-model-m4-implement-stage-commit-d1-d5
david:feature/issue-102/commit-model-m3-fetch-branch-creation-d4
david:feature/issue-101/commit-model-m2-fresh-run-clean-tree-gate-d3
david:feature/issue-80/auto-merge-m5-orchestrator-wiring-issue-close
david:feature/issue-76/auto-merge-m1-config-cli-flag-auto-merge-piloop-au
david:feature/issue-77/auto-merge-m2-issue-close-clients-forgejo-github-g
No reviewers
Labels
No labels
batch
bug
chore
documentation
enhancement
pi-loop
ready
resume
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
david/pi-loop!301
Loading…
Reference in a new issue
No description provided.
Delete branch "yousuf/issue-300-closes-keyword"
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?
What & why
The deterministic MR-description builder opened every MR/PR body with:
Implementsis not a closing keyword on GitLab, GitHub, or Forgejo, so merging a pi-loop MR left the source issue open — operators had to close every issue by hand.closeIssueAfterAutoMerge(src/orchestrator/services/runPipeline.ts) only fires on the--auto-mergepath, so the default Draft-MR flow — the documented human checkpoint — had no issue-closing mechanism at all.Git-platform issues now get a real closing reference; Jira keeps the descriptive wording because it has no MR-body closing mechanism and its keys are not
#-references (Jira is handled by write-back).Before / after
Jira is unchanged:
Implements [ABC-1](…).Cross-repo issues get the qualified form all three platforms require:
Closes acme/tracker#42.Per-file breakdown
Modified
src/mr/helpers/buildMrDescription.ts— newbuildIssueReference()helper picks the wording by provider; new optionalmrRepoinput onBuildMrDescriptionInputso the builder can tell same-repo from cross-repo and emit the qualified reference only when needed.src/mr/services/runMrStage.ts— passesoriginRepothrough asmrRepo.src/mr/helpers/buildMrDescription.test.ts— 7 new cases: closing keyword for each of gitlab/github/forgejo, Jira keeps non-closing wording, issue URL still present, cross-repo qualification, and the two unknown-repo fallbacks.DESIGN.md— §Stage 4 documents the closing-keyword rule and the Jira exception.Verification
npm test— 2083 passed / 144 filesnpm run lint— cleannpm run build— cleanRemaining
tsc --noEmiterrors are pre-existing in unrelated test files (gitState.test.ts,authenticatedFetch.test.ts,runStage.test.ts) and untouched here.Note on scope
This fixes the description text. Worth a separate look:
closeIssueAfterAutoMergeremains auto-merge-only, so on platforms/repos where closing keywords are disabled the Draft flow still relies on a human.Closes #300
Superseded by #302, which uses a real branch (
feature/issue-300/mr-description-closes-keyword-auto-close) instead of an AGitrefs/pull/ref. Same commit, same content.Pull request closed