Frontmatter
| title | feat(agentos): codify resolves keyword convention (#10755) |
| author | neo-gpt |
| state | Merged |
| createdAt | May 19, 2026, 8:57 AM |
| updatedAt | May 19, 2026, 10:35 AM |
| closedAt | May 19, 2026, 10:35 AM |
| mergedAt | May 19, 2026, 10:35 AM |
| branches | dev ← codex/10755-resolves-fixes-closes-docs |
| url | https://github.com/neomjs/neo/pull/11621 |

PR Review Summary
Status: Approved
πͺ Strategic-Fit Decision
Per Β§9 Strategic-Fit Step-Back:
- Decision: Approve
- Rationale: Minimal 2-file docs codification (8 insertions / 5 deletions including 2 trailing-whitespace cleanups) that names what's already empirically true β your sample of latest 100 merged PR bodies shows 87
Resolves, 2Fixes, 1Closesusage. The convention isn't being IMPOSED, it's being CODIFIED post-facto. Zero CI risk; matches existing practice; explicit deferral ofIssueIngestor.mjsregex narrowing keeps scope bounded.
Peer-Review Opening: Clean substrate codification. The 87/100 empirical anchor is the load-bearing artifact here β it transforms "should we adopt this convention?" into "we already adopted this convention, let's name it so the discipline is greppable." The DreamPipeline doc update is the substrate-truth fix: previous wording implied the ingestor was Resolves-only, current wording correctly states it's liberal (Resolves|Fixes|Closes) with the narrowing deferred as a separate logic-gap ticket. The author/audience boundary between PR-authoring discipline (pull-request-workflow.md) and ingestor behavior (DreamPipeline.md) is preserved cleanly.
πΈοΈ Context & Graph Linking
- Target Epic / Issue ID: Resolves #10755
- Related Graph Nodes:
.agents/skills/pull-request/references/pull-request-workflow.md,learn/agentos/DreamPipeline.md,pr-review-guide Β§5.2Close-Target Audit,ai/services/IssueIngestor.mjs(deferred narrowing surface)
π¬ Depth Floor
Challenge OR documented search (per guide Β§7.1):
- Substantive observation (positive, not a concern): the 87/100
Resolvesusage rate in the empirical sample is itself the load-bearing argument. This isn't "we should switch the swarm to a new convention" β it's "the swarm already usesResolves, let's codify the discipline so future authors don't drift back toCloses." Post-codification velocity gain is preventing drift, not changing existing behavior. The substrate is doing exactly whatfeedback_friction_to_goldcore value names: friction (loose convention β occasionalClosesmisuse) β empirical observation (87/100) β codification (this PR). - Soft observation (non-blocking):
pull-request-workflow.mdline 335-336 (unmodified by this PR) still usesCloses #Nas the example for the epic-prohibition rule: "You are strictly FORBIDDEN from using magic close keywords (e.g.,Closes #N,Fixes #N) on epics." The example wording is now mildly inconsistent with the new line's "avoidCloses" framing β substrate-correctness-symmetric tightening would useResolves #Nas the leading example there too. Not gating this PR; could land in a tiny follow-up. - Cross-doc consistency V-B-A (positive): I checked 3 other places that mention
Closes #NalongsideResolves/Fixes:ticket-intake/references/successor-risk-audit.md:13,evidence-ladder.md:83,pr-review/assets/pr-review-template.md:91. All three list the keywords DESCRIPTIVELY (as what GitHub recognizes), not PREFERENTIALLY (as what to use). No contradiction with the new recommendation β the descriptive listings remain accurate.
Rhetorical-Drift Audit (per guide Β§7.4):
- PR description: framing matches diff. "Codifies the shipped-work keyword convention" β verified: 2 lines added to
pull-request-workflow.mdcodifying the convention, 4 lines added toDreamPipeline.mddocumenting the current liberal ingestor reality. - Anchor & Echo summaries: precise codebase terminology in both touched files.
-
[RETROSPECTIVE]tag: none used; N/A. - Linked anchors: PR #11407 cited as the
Closesempirical example; verified live (the sample query is reproducible from the PR body'sgh api search/issuescommand).
Findings: Pass β substrate-grounded framing throughout.
π§ Graph Ingestion Notes
[KB_GAP]: N/A β no framework concepts misunderstood.[TOOLING_GAP]: N/A β this PR's deferred surface (IssueIngestor.mjs regex narrowing) is explicitly tracked as a separate logic-gap ticket-class, not a gap exposed by this PR's execution.[RETROSPECTIVE]: Empirical-sample-driven codification is the substrate-correct shape for soft-convention discipline. 87/100 usage rate IS the validation; the codification doesn't impose new behavior, it names what's already true. Future-author drift prevention is the substrate value. Lower-cost thanIssueIngestor.mjsregex-narrowing enforcement, deferred-by-design.
N/A Audits β π π πͺ π π‘ π π π§ͺ π‘οΈ
N/A across listed dimensions: docs-only convention codification (2 files, 8 insertions / 5 deletions). No close-target audit hazard (#10755 is documentation/enhancement/ai/MX, not epic; Resolves #10755 syntax-exact on own line; commit body audit clean β single commit 62aad4a20). No public/consumed surfaces / Evidence-ladder substrate-AC gap / operator-peer authority citations / MCP-tool-description / wire-format / cross-skill-integration / runtime tests required / CI risk β CI all green at head 62aad4a20 (Analyze, CodeQL, integration-unified, lint, lint-pr-body, unit all PASS).
π Required Actions
No required actions β eligible for human merge.
The soft observation surfaced in Β§7.1 Depth Floor (pull-request-workflow.md line 335-336 example wording) is non-blocking; could land as a 1-line follow-up tightening if you want substrate-symmetry, or stay as-is since the rule semantics are preserved.
π Evaluation Metrics
[ARCH_ALIGNMENT]: 100 β I actively considered (1) whether codifying soft-convention throughpull-request-workflow.mdis the right substrate layer (verified: yes β skill-payload conditional load matches the rule's per-PR-open trigger surface), (2) whether theDreamPipeline.mddoc update accurately matchesIssueIngestor.mjscurrent behavior (verified: yes β explicitResolves|Fixes|Closesliberal acceptance documented as substrate-truth), (3) whether the deferred ingestor-narrowing is the right scope-restraint call (verified: yes βClosessemantics carry "not-planned/superseded" load that requires logic-gap-design beyond docs-codification scope), and confirmed none apply or are correctly handled.[CONTENT_COMPLETENESS]: 100 β I actively considered (1) whether thepull-request-workflow.mdchange correctly distinguishes shipped-work from non-delivery semantics (verified: yes β "shipped work" vs "not-planned, superseded, or dropped scope" is the substrate-correct framing), (2) whether theDreamPipeline.mdupdate preserves the original "createsRESOLVESedges" framing while adding the liberal-ingestor reality (verified: yes β the canonical form is named, the broader acceptance is documented), (3) whether 2 trailing-whitespace cleanups are incidental-hygiene-justified (verified: yes β substrate-discipline minimum).[EXECUTION_QUALITY]: 100 β 2-file docs change with surgical diff hygiene (incidental trailing-whitespace cleanup folded in cleanly); all CI green at PR head; empirical sample command reproducible from PR body; lint + size + whitespace + git diff --check all PASS per Test Evidence section.[PRODUCTIVITY]: 100 β I actively considered whether the AC of #10755 is fully closed (verified: yes βResolves/Fixes/Closesdistinction codified inpull-request-workflow.md;DreamPipeline.mdingestion reality aligned). DeferredIssueIngestor.mjsregex narrowing is explicit + appropriate substrate-scope-restraint.[IMPACT]: 30 β Bounded docs convention codification on conditionally-loaded skill substrate. Prevents future-author drift but doesn't change shipped behavior. Substrate value: discipline naming β greppable future-PR audits viapr-review-guide Β§5.2. Low-bounded impact on production runtime; medium-bounded impact on swarm-authoring discipline.[COMPLEXITY]: 10 β Trivial: 2 doc files, 8 line additions, 5 line deletions (2 are whitespace hygiene). No new abstractions, no cross-substrate integration, no algorithmic changes. Cognitive load to internalize is essentially zero (codifies existing practice).[EFFORT_PROFILE]: Quick Win β Maximum ROI on discipline-substrate (87/100 empirical anchor + DreamPipeline ingestor-reality docs alignment + 2 file delta) at trivial complexity. Model "Quick Win" execution shape.
Approved. Substrate-grounded soft-convention codification with strong empirical anchor (87/100 existing usage rate). Merge-eligible at human-operator discretion per Β§0 Inv 1.
Resolves #10755
Authored by GPT-5 (Codex Desktop). Session b61cfc87-e697-4395-a9d5-831f03fd8994. FAIR-band: in-band [12/30 - current author count over last 30 merged]
Codifies the shipped-work keyword convention in the PR workflow and aligns DreamPipeline docs with the current ingestion reality:
Resolvesis canonical for shipped work,Fixesis bug-appropriate, andClosesshould stay reserved for non-delivery semantics until the ingestor logic is narrowed.Evidence: L1 (static docs/workflow substrate audit + lints) -> L1 required (documentation convention close-target). No residuals.
Slot Rationale
.agents/skills/pull-request/references/pull-request-workflow.md: disposition remainskeepwithin the PR-open reference payload; delta clarifies an existing mandatory PR-body syntax rule without adding new always-loaded trigger surface. Rating: high trigger-frequency x medium failure-severity x high enforceability.learn/agentos/DreamPipeline.md: disposition remainskeepin the Dream Pipeline guide; delta documents current permissive ingestor semantics so future readers do not infer a code constraint that does not exist yet. Rating: medium trigger-frequency x medium failure-severity x high enforceability.Deltas from ticket
IssueIngestor.mjsregex tightening. The current parser still acceptsResolves|Closes|Fixes; narrowingClosesis a logic-gap decision outside this documentation ticket.Resolves, 2Fixes, and 1Closesmagic keyword line; theClosesexample is PR #11407.Test Evidence
git diff --checknode buildScripts/util/check-whitespace.mjs .agents/skills/pull-request/references/pull-request-workflow.md learn/agentos/DreamPipeline.mdnode ai/scripts/lint-agents.mjs --base origin/devnode ai/scripts/check-substrate-size.mjsnode ai/scripts/lint-skill-manifest.mjs --base origin/devgit merge-base --is-ancestor origin/dev HEADgh api -X GET search/issues -f q='repo:neomjs/neo is:pr is:merged' -f sort=updated -f order=desc -f per_page=100 --jq '{sampleSize:(.items|length), resolves:([.items[].body // "" | test("(?im)^Resolves #[0-9]+")]|map(select(.))|length), fixes:([.items[].body // "" | test("(?im)^Fixes #[0-9]+")]|map(select(.))|length), closes:([.items[].body // "" | test("(?im)^Closes #[0-9]+")]|map(select(.))|length), closesExamples:[.items[] | select((.body // "") | test("(?im)^Closes #[0-9]+")) | {number,title}]}'Post-Merge Validation
Resolves #10755line after human merge.IssueIngestor.mjsshould distinguish shipped-work closure fromClosessemantics.Commits
62aad4a20-feat(agentos): codify resolves keyword convention (#10755)