Assert end-to-end metamorphic invariants across source modes, platforms and settings
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
Línea de trabajo
Start with the proposed tests/metamorphic harness and the golden-corpus entries in #75, then review the existing scanner and Git tests, including their Windows skips. Define seeded generated-tree transformations for the listed invariants and make the PR tier reproducible; done means the acceptance checks run across Linux, macOS and Windows with documented exceptions and on-demand full-corpus execution.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Why
Many of dircue's promises are invariants: statements about how output must not change. Today they're spot-tested inside individual packages, e.g. a few determinism tests in environments, focus and registries. They aren't asserted end to end across the whole pipeline or on real repositories. Metamorphic tests need no external oracle, are cheap, and catch whole classes of bugs, including the Git-versus-directory divergences and ordering issues a parallel scanner can hide.
Invariants to assert (whole pipeline, all modules)
- Git ≡ directory. A committed tree and a directory export of the same tree give identical results, modulo explicitly documented differences (eol conversion, symlinks, submodules).
- Git storage variants ≡. Loose, packed, re-packed/aggressively delta-compressed and shallow repositories (and linked worktrees where supported) give identical results for the same tree.
- Worker count. Byte-identical at 1, 2, N and 64 workers.
- Location. The same content at two absolute paths gives identical output once the map is portable (#74). Until then, identical after normalizing
root. - Enumeration order. Byte-identical for files created in shuffled order, and on case-sensitive vs case-insensitive filesystems where names don't collide.
- Locality. Adding an unrelated file under a new directory changes only the facts involving that file.
- Performance-only settings (presets, cache and buffer sizes; #91): byte-identical output. A setting that changes output must be declared coverage-affecting.
- Documentation stripping (#74): removing Markdown, comments and docstrings changes no non-documentation fact.
- Attribute equivalence. Equivalent overrides at root and nested
.gitattributesscopes give identical results. - Saved-report round trip. Save → load → compare with itself reports no changes.
compare(A, B)andcompare(B, A)mirror each other.
Acceptance
- A
tests/metamorphicharness that applies each transformation to the golden-corpus entries (#75) and to generated trees. Generated trees are random but seeded and reproducible, with mixed ecosystems, symlinks, deep nesting, large files, unicode and control-character names. - Runs on Linux, macOS and Windows. Windows path handling currently has explicit skips in scanner and Git tests.
- PR tier on generated trees; the full corpus on demand (
workflow_dispatchor a local make target) and at release. Nothing runs on a schedule (#92). - Every intentional exception is documented, with a test pinning its exact scope.
Part of the 1.0 quality program: #83. Epic: #81.
- Lenguaje dominante
- Go
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 11 h 3 min
- PR fusionados (30 d)
- 5
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de war-and-code/dircue
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
war-and-code/dircue#200 ·
-
enhancement follow-up
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
war-and-code/dircue#201 ·
-
follow-up
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
war-and-code/dircue#179 ·
-
follow-up
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
war-and-code/dircue#178 ·
-
enhancement follow-up
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
war-and-code/dircue#172 ·
Todos los issues de war-and-code/dircue
Issues similares
-
Fix mode unpins a reusable workflow call when the same repository is also used as a step actionAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
github/gh-actions-lock#261 ·
Los mantenedores suelen responder en 1 día
-
bug documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
labmonkeys-space/nl6#974 ·
Los mantenedores suelen responder en 1 día
-
model:sonnet phase-2-optimize runtime:claude security size:S
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
FootprintAI/Containarium#3471 ·
Los mantenedores suelen responder en 1 día
-
[BUG] serviceenvupdater filter does not update KUBERNETES_SERVICE_HOST/PORT in init containersPosiblemente ocupada @RaphaelFakhri la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openyurtio/openyurt#2845 ·
Los mantenedores suelen responder en 7 días
-
fuzz.yml skips three fuzz targets, and the Action's user input describes only ~/.claudePosiblemente ocupada @predictor2718 la tomó hoy. Abiertogithub_actions P3 tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día