-
Notifications
You must be signed in to change notification settings - Fork 0
Add generated filesystem round-trip and mutation property tests #56
Copy link
Copy link
Open
Labels
P0Critical, urgent issuesCritical, urgent issuescomponent: test-infraFixtures, property tests, fuzzing, coverage, and benchmarksFixtures, property tests, fuzzing, coverage, and benchmarksdiscovered-by-codexIssues discovered via review by codex.Issues discovered via review by codex.domain: correctnessBehavioral correctness and accurate validation resultsBehavioral correctness and accurate validation resultsdomain: reliabilityFail-closed, deterministic, and robust operational behaviorFail-closed, deterministic, and robust operational behaviorproduction-readinessPart of the audited path from prototype to production-ready usePart of the audited path from prototype to production-ready userelease-blockerMust close before the production-readiness release gate can passMust close before the production-readiness release gate can passrisk: cross-platformBehavior depends on operating-system or filesystem semanticsBehavior depends on operating-system or filesystem semanticsrisk: false-successCan report success without validating the intended stateCan report success without validating the intended statetarget: v0.2.0Must be resolved or explicitly waived before the v0.2 production auditMust be resolved or explicitly waived before the v0.2 production audittestingAdds or strengthens test infrastructure and assuranceAdds or strengthens test infrastructure and assuranceworkflow:production-readinessIncluded in automatic production-readiness work selectionIncluded in automatic production-readiness work selectionworkflow:production-readiness-leafIndependently actionable work item in the production-readiness sequenceIndependently actionable work item in the production-readiness sequence
Description
Metadata
Metadata
Assignees
Labels
P0Critical, urgent issuesCritical, urgent issuescomponent: test-infraFixtures, property tests, fuzzing, coverage, and benchmarksFixtures, property tests, fuzzing, coverage, and benchmarksdiscovered-by-codexIssues discovered via review by codex.Issues discovered via review by codex.domain: correctnessBehavioral correctness and accurate validation resultsBehavioral correctness and accurate validation resultsdomain: reliabilityFail-closed, deterministic, and robust operational behaviorFail-closed, deterministic, and robust operational behaviorproduction-readinessPart of the audited path from prototype to production-ready usePart of the audited path from prototype to production-ready userelease-blockerMust close before the production-readiness release gate can passMust close before the production-readiness release gate can passrisk: cross-platformBehavior depends on operating-system or filesystem semanticsBehavior depends on operating-system or filesystem semanticsrisk: false-successCan report success without validating the intended stateCan report success without validating the intended statetarget: v0.2.0Must be resolved or explicitly waived before the v0.2 production auditMust be resolved or explicitly waived before the v0.2 production audittestingAdds or strengthens test infrastructure and assuranceAdds or strengthens test infrastructure and assuranceworkflow:production-readinessIncluded in automatic production-readiness work selectionIncluded in automatic production-readiness work selectionworkflow:production-readiness-leafIndependently actionable work item in the production-readiness sequenceIndependently actionable work item in the production-readiness sequence
Parent epic
#31
Problem and impact
The existing suite has no model-level assertion that a generated guide can be parsed and verifies the filesystem it came from. That missing invariant allowed raw syntax-sensitive filenames, directory symlinks, empty roots, and zero indentation to ship despite all 127 tests passing.
Required properties
Build bounded generated temporary filesystem trees and assert, for every supported case:
Then mutate the tree and assert expected failure unless the guide explicitly permits omission:
The generator corpus must include ordinary nesting, wide/deep trees, grammar metacharacters, choices/escapes, Unicode, whitespace, empty directories, exclusions, and every approved/rejected symlink/special-entry class. Unsupported names/types must generate a precise rejection property rather than be excluded from generation.
Required red-before-fix evidence
Seed deterministic regressions for:
reportplusreport#draft;...;--indent 0; andShow those seeds fail against audited revision
bf40806before relying on randomized cases.Implementation guidance
dumpstdout andinitfile paths.Acceptance criteria
Validation commands
Run a larger iteration count in scheduled/manual CI and record seed/case counts.
Relationships
Non-goals
Property tests supplement but do not replace each defect ticket's focused regression.
Approved #35 filesystem trust handoff
The maintainer-approved filesystem trust decision is recorded in PR #85 and the normative
docs/v0.2-contract.md. It is a binding input to this issue, but it does not make the current runtime conformant.Generated round-trip and mutation properties must wait for the relevant #43, #45, #49, and #51 behavior; the native blocker graph records the newly required #45/#49/#51 edges. Cover supported regular trees and the relevant generated/input/delivery rejection classes, explicit exclusions, root aliases, unresolved-parent spellings, sentinel non-disclosure, and create-new failure behavior without duplicating the focused owners' row suites.
Model a stable tree and observed mutation failures. Do not describe randomized mutation coverage as proof of hostile-concurrent-replacement safety or a sandbox.
Preserve the exact normative outcomes and focused ownership. If this issue changes runtime behavior, capture its own red-before-change evidence; coordinating work must not claim another issue's trust rows. Never claim sandbox or hostile-concurrent-replacement safety.