run: --phases does not suppress the UI-label test phase (determinePhasesForIssue adds it to an explicit list)

Aperta Adatta ai principianti
#1,631 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@admarble ci sta già lavorando.

Dal 8/11/2026.

  • #1659 di @admarble — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
cli

Direzione di ricerca

Il bug si trova in determinePhasesForIssue in src/lib/workflow/phase-mapper.ts, il cui ultimo blocco aggiunge test ogni volta che hasUILabels(labels) è vero, anche con una lista esplicita --phases. Segui la chiamata dal ramo esplicito di runIssueWithLogging in batch-executor.ts e controlla in config-resolver.ts come viene impostato autoDetectPhases. È completato quando --phases spec su una issue con etichetta frontend non esegue alcuna fase di test, mentre --testgen e --security-review continuano ad aggiungere le rispettive fasi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

What happens

sequant run 930 --phases spec ran a test phase after spec. The cause is not the spec marker (first guess, corrected after reading the code): determinePhasesForIssue in src/lib/workflow/phase-mapper.ts appends test whenever hasUILabels(labels) is true, and it runs on the explicit --phases list too. #930 carries the frontend label; the other three issues in the batch do not and ran spec only.

Evidence (sequant 2.20.0, admarble/matcha-maps)

Run header:

Phases         spec
Mode           parallel (concurrency: 1)
Issues         #1101, #1019, #929, #930

For #930 only (labels: frontend, planned, performance):

[23:34:14] ✔ #930 spec 55s
[23:34:14] ▸ #930 test
...
**Summary:** 0/1 tests passed. AC-7, the only browser test, is BLOCKED because the feature isn't implemented on this branch.
[23:34:47] ✔ #930 test 33s
  #930    ✔ passed   spec → test

Code path (dist 2.20.0): config-resolver.ts sets autoDetectPhases = !cliOptions.phases && settings.run.autoDetectPhases, so label detection is correctly off. But batch-executor.ts runIssueWithLogging then takes the explicit branch, "Use explicit phases with adjustments", and calls determinePhasesForIssue(config.phases, labels, options), whose last block is:

// Auto-detect UI issues and add test phase
if (hasUILabels(labels) && !phases.includes("test")) { ... phases.push("test"); }

That block ignores whether the phase list was explicit. The same function also honours --testgen and --security-review, which are flags the user passed, so those two adjustments are expected; the label one is not.

Why it matters

A coordinator that runs spec batches to compare file lists before picking a wave expects spec-only cost and no implementation-side phases. Here the extra phase was cheap (33 s, a blocked result) but it posted test output against an unimplemented branch and would have run a browser test had one been possible. The earlier label case (an unrequested test phase on #857 in a spec-only batch) was the same block; passing --phases explicitly was adopted as the workaround and does not work for this path.

Ask

In determinePhasesForIssue, skip the UI-label test insertion when the phase list came from --phases (for example, pass options.autoDetectPhases or an explicit flag and gate the block on it), or move that block into detectPhasesFromLabels where the other label logic lives. A Phases adjusted: log line is printed today, so the behaviour is visible, but a user who wrote --phases spec did not ask for test.

Lingua principale
TypeScript
Stelle
1
Fork
1
Merge medio
11h 3m
PR unite (30g)
84

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di sequant-io/sequant

Tutte le issue di sequant-io/sequant

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.