fix: .specsyncignore silently inert for BOM'd/corrupt/typo'd rules (closes #420) - #456
Open
0xLeif wants to merge 2 commits into
Open
fix: .specsyncignore silently inert for BOM'd/corrupt/typo'd rules (closes #420)#4560xLeif wants to merge 2 commits into
0xLeif wants to merge 2 commits into
Conversation
BOM tolerance, per-line UTF-8 (one corrupt line no longer poisons the file), both per-spec syntax orders accepted, warnings for unmatchable lines, and a suppressible ExportsDocumented category for the N/M exports-documented summary.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
❌ Corvin says...
_
<(;\ .oO(oh no...)
|/(\
\(\\
" "\\
"Even the dumpster of code seems empty today."
CI Summary
| Check | Status |
|---|---|
| Validate action.yml | ✅ Passed |
| Packaged Action Consumer | ✅ Passed |
| Dependency Audit | ✅ Passed |
| Code Coverage | ✅ Passed |
| Format Check | ❌ failure |
| Docs Site | ✅ Passed |
| Spec Validation | ❌ failure |
| Tests (build, test, clippy) | ✅ Passed |
| VS Code Extension | ✅ Passed |
📋 Spec Validation Details
❌ SpecSync: Failed
| Metric | Value |
|---|---|
| Specs checked | 62 |
| Passed | 62 |
| Errors | 1 |
| Warnings | 0 |
| File coverage | 100% (105/105) |
| LOC coverage | 100% (87041/87041) |
Errors
- meaningful changed paths are not covered by an active change: src/ignore.rs
Action Items
- Review and fix -- meaningful changed paths are not covered by an active change: src/ignore.rs
Generated by specsync · Run specsync check --format github to reproduce
Powered by corvid-pet
There was a problem hiding this comment.
❌ Corvin says...
_
<(;\ .oO(oh no...)
|/(\
\(\\
" "\\
"Caw... validation failed..."
CI Summary
| Check | Status |
|---|---|
| Validate action.yml | ✅ Passed |
| Packaged Action Consumer | ✅ Passed |
| Dependency Audit | ✅ Passed |
| Code Coverage | ✅ Passed |
| Format Check | ✅ Passed |
| Docs Site | ✅ Passed |
| Spec Validation | ❌ failure |
| Tests (build, test, clippy) | ❌ failure |
| VS Code Extension | ✅ Passed |
📋 Spec Validation Details
❌ SpecSync: Failed
| Metric | Value |
|---|---|
| Specs checked | 62 |
| Passed | 62 |
| Errors | 1 |
| Warnings | 0 |
| File coverage | 100% (105/105) |
| LOC coverage | 100% (87089/87089) |
Errors
- meaningful changed paths are not covered by an active change: src/commands/mod.rs, src/ignore.rs, tests/integration/check.rs
Action Items
- Review and fix -- meaningful changed paths are not covered by an active change: src/commands/mod.rs, src/ignore.rs, tests/integration/check.rs
Generated by specsync · Run specsync check --format github to reproduce
Powered by corvid-pet
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
.specsyncignorehad several silent-failure modes:category:path); the documentedpath:categoryorder was ignored.N/M exports documentedpartial-coverage summary warning had no category and could not be suppressed, so acknowledging undocumented exports could never yield a clean--strictrun.Repro (fixture:
/var/tmp/scratch/w2/420/).specsyncignore line 3 matches no warning category: 'undocumanted-export', the summary is suppressible via the newexports-documentedcategory, and the check output ends withℹ N warning(s) suppressed by .specsyncignore.Root cause
IgnoreRules::loadread the file as one UTF-8 string (BOM and corrupt lines poisoned everything), accepted only one colon-order, and had no channel to report dead rules.Fix
ignore.rs: BOM strip; per-line UTF-8 with a warning per skipped line; both per-spec orders (whichever side names a known category wins); unmatchable-line warnings; newExportsDocumentedcategory (classifyN/M exports documented+from_str("exports-documented")).commands/mod.rs: surfacesignore_rules.warningsin every output format and printsN warning(s) suppressed by .specsyncignore.Tests (all in-file, all passing)
test_load_tolerates_utf8_bom,test_load_invalid_utf8_line_skipped_not_poisoning,test_load_per_spec_path_first_order,test_load_warns_on_unmatchable_pattern,test_classify_exports_documented_summary,test_exports_documented_summary_suppressible.File overlap note
src/commands/mod.rsships in PR #455 (fix/435-db-schema-validation) — the whole current file there includes this visibility change. This PR shipssrc/ignore.rsin full.Full suite: 1743 passed, 1 pre-existing root-only failure (unrelated).
clippy --all-targets -- -D warningsclean.Closes #420