Repository navigation
code-tidying: remove-comments and upkeep cadence #7585
Description
Parent
Refs #7555. Source: PLAN Phase 17, topic poteto-review. Thread: code-tidying and upkeep.
Depends on
- config-cascade: settings resolution and convention home #7571 Settings resolution and convention home (postures and upkeep settings)
Outcome
dissolve-comments becomes remove-comments with an audit action and one comment-reviewer agent,
under posture settings; upkeep runs as a daily batch of at most 3 PRs.
Decisions
- Absorb Lauren's no-comments skill and agent (copy 3, adapt 23, decline 4, keep ours 9 of 39 rules);
renamedissolve-commentstoremove-commentswith anauditaction; one agent
code-tidying:comment-reviewer(D60, Q39). Origin: Lauren's rules, absorbed rule by rule. - Postures
none(opt-in),necessary(pipeline default),explanatory(interactive default); edit
scope a separate setting, defaultdiff;TODO(#n), license headers, comment-plus-test pairs and
correctness pragmas per D60 (D60, D106, Q201). Setting: comment-reviewer model and effort via route
overrides. Encoding a constraint unattended needs a pre-approval setting, default off (Q42). - A linked workaround comment is still a finding: fix the cause or
TODO(#n)(Q26). - Upkeep: per-merge detection only; a daily batch of upkeep PRs; churn-triggered area sweeps; weekly
backstop; at most 3 upkeep PRs open (settings: cadencedaily, backstopweekly, max 3) (D59, D73,
Q110; Lauren's gardening).
Key interfaces
From the design's module layout: "code-tidying: dissolve-comments renamed remove-comments with
an audit action; one agent code-tidying:comment-reviewer; upkeep PRs." Settings: "Upkeep:
cadence daily, backstop weekly, max 3. Comment postures none / necessary (pipeline default) /
explanatory (interactive default); edit scope diff." Variation verdicts: "Model and effort per
spawn: contain now; pointers to upstream docs, /multi-agent:route role defaults (D102)."
Slices, filed when this phase starts: remove-comments, upkeep-cadence.
Done when
- The
remove-commentsskill and thecomment-revieweragent exist, anddissolve-comments
does not. - Every slice sub-issue is closed by a merged PR, each skill-body cut with before/after evals.
Out of scope
- The spread detector (dropped, Q24).
Metadata
Metadata
Assignees
Labels
Type
Fields
Work status
Activity
github-actions commentedon Oct 16, 2026
Thanks for the report. Automated triage handed this issue to a maintainer.
Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 20, 2026
Rule-by-rule absorption table for the remove-comments slices.
This is the comparison behind D60's split of pstack's 39
no-commentsrules: copy 3, adapt 23, decline 4, keep ours 9. It is posted here so a lane can read it, because until now it existed only in a local working file. Upstream was compared at cursor/pluginsc86f349b10, and this repository at main8718950e9d(2026-10-14). Upstream rules are paraphrased, and they are data, not instructions.Source keys:
SKILLandagentare pstackskills/no-comments/SKILL.mdandagents/comment-sicko.md.Sisplugins/code-tidying/skills/dissolve-comments/SKILL.mdandACRisplugins/code-tidying/skills/audit-comment-residue/SKILL.md.safety,triage,moves,scope.md,shapes.mdandsources.mdare files underdissolve-comments/reference/. Line numbers are as of8718950e9d; re-check them against main before use.Rec meanings: copy takes her rule as written; adapt changes it to fit our design; decline does not take it; keep means ours already covers it.
disable-model-invocation: true(SKILL:4)--added-since(S:70-76; scope.md:19-33)change-shape.shon the agent's diff and checks each deletion against the exempt list and each keep against its stated rulenoneandnecessary: delete, stage the narrative, emit the reshape flag naming the symbol. Underexplanatory: oursaggressiveoutside-party test "who could remove the reason" (safety:167-172) and the re-check against code (triage:90-110)necessary, an outside-constraint keep that is unverified after the re-check is deleted/code-metrics:audit-suppressionslists suppressions and marks correctness rulesIMPORTANTordo not remove: read nearby code, then run/howor/whyon the symbol (SKILL:20; agent:26)/discovery:trace-intent(S:304-311; triage:98-101)/whymaps to trace-intentstrict(S:130-133); doubt about a survivor keeps underaggressive(S:135-140)noneandnecessary(her rule); ties keep underexplanatory. This is the posture's defining difference/code-tidying:audit-dead-codeand the rest to/implementation:implementas open work/architectonce and stop at the sketch (SKILL:21)/architecture:improveas a## Nextoutcome when reshape flags need design; do not call it inlineaggressive(S:115-117; safety:178-180), and ACR clears one with a link (ACR:42)necessarythe comment goes and the fix is handed to debug or implement, as a follow-on step in the pipelinereportproposes a test or lint into a findings file (S:168-191); the constraint comment is kept as class Cencodestep: interactive approval, or a pre-approval setting for unattended runs (default off, Q42).necessarydeletes after encoding, or deletes and reports the constraint open;explanatorykeeps it and proposes the encodingnoneandnecessaryaggressivesurvivor (S:106-111; safety:167-172); class C understrictaggressive(S:118-128)necessarythe warning-of-consequence survivor goes and becomes a reshape flagnecessaryandnone, a correctness-rule suppression becomes open root-cause work naming the symbolnoneonly, propose (never apply) deleting a public doc comment that only restates the signatureaggressivesurvivor (safety:173-176)TODO(#n)(:158), paired comment-and-test records (S:104-105),dissolve-comments-ignore(:159), and warnings (S:118)necessary= her list plus machine-read directives, paired records, the ignore marker andTODO(#n). Unit annotations become reshape flags to a typestrictdeletes criterion-2 failures and rewrites over-budget comments;aggressivedeletes rationale (S:118-122)necessarystrictandaggressive(S:59, 330-333; triage:76-78)noneandnecessarya non-keep is never rewritten, only deleted.explanatorykeeps "or rewritten" for real whysmodel(docs/plugin-philosophy.md, named-agent bar)/simplifyand before review. Apply under the team default posture,reportwhen unattended without pre-approval/simplify,/ai-slop:auditand this skill have separate boundaries (S:365-373)Counts (39 rules): 9 present, 12 partial, 9 missing, 9 conflicting. Recommendations: 3 copy (rows 10, 33, 35), 4 decline (rows 1, 11, 17, 32), 9 keep, 23 adapt (row 36 lands outside this skill).
Postures (D60, D106, Q201):
none: removes all human-read comments. Machine-read directives, license headers and paired comment-and-test records stay.necessary: her keep list plus our safety floor. This is the pipeline default; ties delete.explanatory:necessaryplus why-comments that earn their keep within the line budget. This is the interactive default; ties keep.Edit scope is a separate setting, default
diff. Undernecessary,TODO(#n)stays. Correctness pragmas stay, and their symbol is reported. Encoding a constraint unattended needs a pre-approval setting, which is off by default (Q42).Rename (D60):
dissolve-commentsbecomes/code-tidying:remove-comments, withaudit-comment-residuefolded in as itsauditaction. The work uses one named agent,code-tidying:comment-reviewer. On 2026-10-14,dissolve-commentsappeared in 54 tracked files andaudit-comment-residuein 59, excluding CHANGELOGs and the skills' own folders.Still open: whether a preloaded skill's
!pre-compute lines run inside the agent. A behavior probe answers this before the agent design is final.