[Bug]: create-new-feature.sh reserves feature numbers non-atomically — concurrent invocations can share/overwrite a spec directory

Abierto
#4,270 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
bash
Área
tooling

Línea de trabajo

Comienza con .specify/scripts/bash/create-new-feature.sh y sigue cómo analiza specs/, selecciona un número, crea el directorio y escribe spec.md. Compara el flujo con la sección “Create the directory and spec file” de .claude/skills/speckit-specify/SKILL.md. Se considera terminado cuando las invocaciones concurrentes reservan directorios diferentes y ninguna sobrescribe la spec.md de otra invocación.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Version

spec-kit v1.0.1 (.specify/scripts/bash/create-new-feature.sh; the flow is also described in .claude/skills/speckit-specify/SKILL.md, "Create the directory and spec file")

Description

Sequential numbering scans existing specs/ directories, picks max+1, checks for existence, then uses mkdir -p and writes spec.md. Nothing in that sequence is atomic: two concurrent invocations (parallel agents on worktrees sharing a specs dir, or two terminals) can both scan, both select the same number, both pass the existence check (mkdir -p succeeds either way), and both write spec.md into the same directory — the second silently overwrites the first's starting specification.

This matters more now that multi-agent setups routinely run more than one spec-kit session against the same repository.

Expected behavior

Reserve the directory with plain mkdir (no -p) so creation is exclusive; on EEXIST, discard the selected number, rescan, and retry before writing spec.md. A lock file would also work.

Related

Prior sequential-numbering issues (#935, #975, #1332) covered scan-logic bugs in single-invocation scenarios; this one is specifically about the missing atomicity under concurrency.

Lenguaje dominante
Python
Estrellas
138k
Forks
12.4k
Merge medio
3 d 6 h
PR fusionados (30 d)
145

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github/spec-kit

Todos los issues de github/spec-kit

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.