Skip to content

Add a pre-submit semantic cleanup checkpoint before verify/archive #1073

Closed as not planned

Description

@streaker303

Problem

OpenSpec is effective at structuring changes through proposal, design, tasks, implementation, verification, and archive. However, AI-assisted implementation often leaves behind artifacts from earlier planning stages that are no longer part of the real implementation.

Examples include:

  • unused API functions created from early assumptions
  • type fields that never reach UI, validation, submission, or persistence
  • store state, refs, computed values, watchers, or helpers that no longer serve the final data flow
  • placeholder URLs, mock branches, temporary serialization logic, or debug code
  • duplicated field mappings caused by earlier uncertainty
  • planned extension points that were never connected to any remaining task

These artifacts can still pass lint, type checking, tests, and even OpenSpec verification, because they are syntactically valid and may not violate the written spec. The problem is semantic: the final implementation and the earlier planning residue have drifted apart.

Proposal

Introduce an optional pre-submit semantic cleanup checkpoint in the OpenSpec workflow, placed after the core implementation is complete and before verify / archive.

This checkpoint should audit the actual implementation against the active OpenSpec artifacts and identify code that no longer serves the real change.

Suggested lifecycle:

proposal/design/tasks
-> implementation
-> pre-submit cleanup audit
-> remaining implementation / integration
-> optional cleanup of confirmed redundant items
-> lint / typecheck / manual regression
-> openspec verify
-> archive

Activity

  1. clay-good commented on Aug 6, 2026

    @clay-good
    Collaborator

    Thanks for raising this, @streaker303 🙏

    This is about Add an optional workflow checkpoint that audits implementation for planning-residue/dead code before verify/archive. — an open-ended feature/design idea rather than a discrete, PR-actionable bug or task. To honor it properly we've moved it to Discussions, where it can keep evolving with community input and you can re-engage anytime:

    👉 #1586

    The original issue (and any comments) stays here for the record, so nothing is lost — please continue the conversation in the discussion above. Closing the issue in favor of that thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions