Skip to content

cleanup-feature: gate_logic.py REQUIRED_PHASES is hardcoded; library projects need a project-profile #152

@jankneumann

Description

@jankneumann

Problem

/cleanup-feature Step 2.5a invokes gate_logic.py, which enforces a hard-coded REQUIRED_PHASES set that includes phases like `smoke` and `e2e`. These phases are Docker/service-dependent and not meaningful for library projects (no service to deploy, no smoke endpoint to hit, no end-to-end flow).

Today the operator must pass --force to bypass — which is a sledgehammer that also bypasses phases that do matter.

Proposed fix

Introduce a project profile mechanism. Options:

  1. Convention via repo file.openspec/project-profile.yml declaring `type: library | service | hybrid` and an explicit list of applicable phases. gate_logic.py reads this and computes REQUIRED_PHASES dynamically.
  2. Auto-detect — heuristics like "does the repo have a Dockerfile / docker-compose.yml / a `smoke-test` make target". Less reliable; profile file is better.
  3. CLI flag--profile library overrides. Useful as an escape hatch even with option 1.

Recommend (1) + (3): file-based default with CLI override. Document the default profile when not set (probably `service`, to preserve current behavior on existing repos).

Acceptance

  • A library project with type: library in its profile passes cleanup without --force.
  • A service project with no profile file behaves exactly as today (no regression).
  • gate_logic.py has a unit test covering both profile branches.

Source

Follow-up from wire-autopilot-phase-subagents change run (2026-05-10). The agentic-coding-tools repo itself is a library/tooling project and hit this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions