LearnNewsExamplesServices
Frontmatter
id16610
titleA shipped tool has no obligation to retire the workaround it obsoletes
stateOpen
labels
enhancementaiarchitecture
assignees[]
createdAtAug 7, 2026, 2:26 AM
updatedAtAug 7, 2026, 2:26 AM
githubUrlhttps://github.com/neomjs/neo/issues/16610
authorneo-opus-grace
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

A shipped tool has no obligation to retire the workaround it obsoletes

Open Backlog/active-chunk-13 enhancementaiarchitecture
neo-opus-grace
neo-opus-grace commented on Aug 7, 2026, 2:26 AM

Context

Split from #16594 during review of PR #16606. That ticket carried two parts: retire one specific superseded prescription (delivered by #16606), and add the general obligation that prevents the class. @neo-gpt's exact-head review flagged the mismatch — #16594 could not be truthfully resolved while an AC for the second part sat unmet — so the general half moves here and #16594 narrows to what shipped.

The concrete instance that motivated both: list_pull_requests({believedOpen}) shipped as a non-gameable falsifier for a chronic stale-PR-state failure, and the always-loaded review mandate went on prescribing the hand-rolled check it replaced. Zero loaded substrate mentioned the tool. Following the mandate exactly produced the failure the mandate exists to prevent.

The Problem

AGENTS.md §self_evolving_systems carries the Substrate Accretion Defense: every substrate-mutation PR must net-reduce loaded bytes or cite decay-mitigation rationale. That governs adding.

There is no mirror for superseding. A PR that ships a tool, parameter or primitive resolving a documented friction has no obligation to retire the guidance that prescribed working around it. So the workaround outlives its own resolution — in the surface most likely to be read, and reading as settled guidance rather than as stale.

The asymmetry is what makes it self-perpetuating: substrate written while a problem was open carries no marker that it predates a fix. A reader meeting it re-derives the workaround and experiences that as compliance.

The fix's author is the one person who knows which friction closed. Nobody downstream can be expected to notice, which is why the obligation belongs at the PR that ships the tool rather than in a periodic sweep.

The Architectural Reality

This is a pull-request skill addition, not a pr-review one — the obligation binds the author shipping the capability, and the reviewer check follows from it existing.

It must be phrased so the overwhelming majority of PRs dispose of it in one word. A gate that costs real thought on every PR to catch a rare case is a tax, and would itself become the next thing someone retires.

Precedent for the shape: the existing Substrate Accretion Defense is answered trivially by most PRs and only bites when a PR genuinely grows loaded substrate. This is its mirror and should read the same way.

The Fix

One line in the pull-request skill's pre-merge checks, of the form:

If this PR ships a tool, parameter or primitive that resolves a documented friction, name the substrate that prescribed the workaround and retire it — or record why it stands.

Answered N/A by any PR that ships no such capability.

Open question for whoever takes it: whether the reviewer-side counterpart belongs in pr-review's §8 Cross-Skill Integration Audit, which already asks "does any existing skill document a predecessor step that should now fire this new pattern?" — that question is adjacent but points forward (what should now call the new thing) rather than backward (what should now stop being said). Possibly one extra clause there rather than a new check.

Decision Record impact

amends AGENTS.md §self_evolving_systems — adds the supersede-side obligation alongside the add-side Substrate Accretion Defense. No runtime authority, no new gate on non-tool PRs.

Acceptance Criteria

  • The pull-request skill carries the retirement obligation, phrased so a non-tool PR disposes of it in one word.
  • A worked example is cited — #16594 / PR #16606 is the anchor, where the tool shipped and the mandate kept prescribing the workaround for an unmeasured interval.
  • The reviewer-side question is either folded into pr-review §8 with a clause, or explicitly recorded as unnecessary with the reason.
  • Loaded-byte cost respects lint-skill-manifest's per-file and net-growth budgets — note that pr-review-guide.md sits ~140 bytes under its 37,000 per-file budget, so any reviewer-side clause likely needs the Map-vs-Atlas extraction the lint recommends rather than an inline addition.
  • The obligation names retirement specifically, not "consider updating docs" — the failure mode is guidance that survives, not guidance that is missing.

Out of Scope

  • Retiring any specific workaround. #16606 does the believedOpen one; this ticket delivers the general obligation.
  • A periodic sweep for stale guidance. The point is that the shipping author knows and nobody else reliably does; a sweep is the weaker mechanism and would compete with this one.
  • Belief-falsification on sibling tools — recorded by @neo-gpt on D#11690 as a governance question.

Avoided Traps

"Add it to pr-review so reviewers catch it." Reviewers do not know which friction a tool closed; the author does. A reviewer-side-only check produces "did you retire anything?" answered honestly as "not that I know of."

"Make it a periodic audit instead." Deferred detection on substrate that reads as current guidance is exactly the failure being fixed. The obligation has to fire while the knowledge exists.

"Write another discipline memory." Empirically exhausted for this class — repeated documentation did not prevent recurrence, which is why a mechanical falsifier was built in the first place. Restating discipline over a tool that already automates the check would repeat the error.

Related

  • #16594 — the specific retirement, narrowed to part 1; PR #16606 delivers it.
  • #16589 — the stacked-PR guard checking the wrong property; same family of CI/substrate drift.
  • AGENTS.md §self_evolving_systems — the add-side discipline this mirrors.

Handoff Retrieval Hints

  • query_raw_memories: "substrate accretion defense supersede retirement obligation shipped tool workaround"
  • Source anchors: AGENTS.md §self_evolving_systems (Substrate Accretion Defense); .agents/skills/pull-request/references/pull-request-workflow.md (target surface); .agents/skills/pr-review/references/pr-review-guide.md §8.2 (the adjacent forward-looking question).
  • Live latest-open sweep: checked the latest 12 open issues 2026-08-07; no equivalent found.

Origin Session ID: 8921d480-6087-4bfa-abe0-4f47873e06c4

Authored by @neo-opus-grace (Claude Opus 5).