Skip to content

fix: resolve BUG-202–214, add profiles, globs, and progressive disclosure - #90

Merged
e6qu merged 3 commits into
mainfrom
fix/issue-md-all-stages
Mar 17, 2026
Merged

fix: resolve BUG-202–214, add profiles, globs, and progressive disclosure#90
e6qu merged 3 commits into
mainfrom
fix/issue-md-all-stages

Conversation

@e6qu

@e6qu e6qu commented Mar 17, 2026

Copy link
Copy Markdown
Owner

Summary

  • Stage 1 (BUG-202–206): Fix 5 veil/unveil correctness bugs — directory recursion for headers mode, header-veiled show display, blacklist cleanup on unveil, HistoryTracker for --unreachable-from, symbol veil no longer blacklists entire file
  • Stage 2 (BUG-207–208): Remove redundant positional arg from fv trace, rewrite --from-entrypoint with per-entrypoint grouping
  • Stage 3 (BUG-214): Progressive disclosure defaults — fv show outline mode, fv parse hides imports/calls, trace depth 1, entrypoints code-only
  • Stage 4 (BUG-210): Language-aware veil annotations — Python uses ... # N lines hidden
  • Stage 5 (BUG-212): fv disclose gets --show, multi-focus, --strict, budget warning
  • Stage 6 (BUG-211): --focus <file> for trace, --reachable-from for veil/unveil, Python builtins in --no-std
  • Stage 7 (BUG-209, 213): fv status prints counts + --verbose, fv context --help examples
  • Stage 8: fv profile save/load/list/delete + glob support in veil/unveil patterns

Test plan

  • All 2143 tests pass (unit, command, CLI, e2e, integration, stress)
  • Clippy clean (zero warnings)
  • All pre-commit hooks pass (fmt, clippy, dead code, markdownlint, badges)
  • Manual smoke test: veil directory with headers mode, show header-veiled file
  • Manual smoke test: fv trace --from fn (no positional arg)
  • Manual smoke test: fv show file.py shows outline by default
  • Manual smoke test: fv profile save/load/list/delete
  • Manual smoke test: fv veil '**/*.test.rs' glob pattern

…sure

Implements all 8 stages of the ISSUE.md plan:

Stage 1 – Veil/unveil correctness (BUG-202–206):
- Directory recursion for --mode headers
- fv show displays [HEADERS VEILED] with on-disk content
- remove_from_blacklist() at all 7 unveil sites
- HistoryTracker for --unreachable-from
- --symbol veil no longer blacklists entire file

Stage 2 – Trace cleanup (BUG-207–208):
- Remove redundant positional [FUNCTION] arg from fv trace
- --from-entrypoint groups by entrypoint, honors --format tree

Stage 3 – Progressive disclosure (BUG-214):
- fv show defaults to outline; --expand, --imports, --docstrings
- fv parse detailed hides imports/calls; --imports/--calls flags
- fv trace depth default 3→1
- fv entrypoints code-only by default; --all for docs/config

Stage 4 – Language-aware annotations (BUG-210):
- Python: ...  # N lines hidden (not C-style braces)

Stage 5 – Disclose enhancements (BUG-212):
- --show flag, multi-focus, --strict, budget truncation warning

Stage 6 – Trace/filter enhancements (BUG-211):
- --focus <file> for trace, --reachable-from for veil
- --unreachable-from/--reachable-from for unveil
- Python builtins in STD_FUNCTIONS

Stage 7 – Status/context usability (BUG-209, 213):
- fv status prints veiled/unveiled counts, --verbose alias
- fv context --help examples

Stage 8 – Profiles + globs:
- fv profile save/load/list/delete
- Glob patterns via glob crate
@github-actions

github-actions Bot commented Mar 17, 2026

Copy link
Copy Markdown

🔒 Security Report

Check Status
cargo audit ✅ Pass
cargo deny ✅ Pass
pip-audit ✅ Pass

@github-actions

github-actions Bot commented Mar 17, 2026

Copy link
Copy Markdown

Coverage Report

Metric PR Base Delta
Line 97.19% 97.59% -0.40% (regression)
Branch 88.91% 89.56% -0.66% (regression)
Per-file coverage (32 files)
File Line Branch Lines
/home/runner/work/funveil/funveil/src/budget.rs 91.7% 75.0% 111/121
/home/runner/work/funveil/funveil/src/metadata.rs 93.5% 81.3% 460/492
/home/runner/work/funveil/funveil/src/commands.rs 94.2% 83.7% 2032/2157
/home/runner/work/funveil/funveil/src/output.rs 94.7% 100.0% 54/57
/home/runner/work/funveil/funveil/src/parser/languages/typescript.rs 95.0% 78.8% 403/424
/home/runner/work/funveil/funveil/src/logging.rs 95.2% 75.0% 60/63
/home/runner/work/funveil/funveil/src/veil.rs 96.6% 89.3% 701/726
/home/runner/work/funveil/funveil/src/strategies/level.rs 96.9% 90.0% 62/64
/home/runner/work/funveil/funveil/src/strategies/header.rs 97.1% 88.1% 170/175
/home/runner/work/funveil/funveil/src/history.rs 97.3% 84.1% 214/220
/home/runner/work/funveil/funveil/src/checkpoint.rs 97.9% 93.5% 235/240
/home/runner/work/funveil/funveil/src/parser/languages/xml.rs 98.0% 87.5% 49/50
/home/runner/work/funveil/funveil/src/parser/languages/css.rs 98.1% 92.9% 102/104
/home/runner/work/funveil/funveil/src/update.rs 98.2% 83.3% 107/109
/home/runner/work/funveil/funveil/src/cas.rs 98.5% 93.1% 135/137
/home/runner/work/funveil/funveil/src/parser/languages/go.rs 98.8% 90.0% 331/335
/home/runner/work/funveil/funveil/src/patch/manager.rs 98.9% 82.5% 360/364
/home/runner/work/funveil/funveil/src/analysis/call_graph.rs 99.0% 82.5% 283/286
/home/runner/work/funveil/funveil/src/parser/languages/markdown.rs 99.0% 90.0% 95/96
/home/runner/work/funveil/funveil/src/patch/parser.rs 99.3% 93.6% 268/270
/home/runner/work/funveil/funveil/src/parser/languages/zig.rs 99.3% 87.5% 289/291
/home/runner/work/funveil/funveil/src/analysis/cache.rs 99.4% 94.4% 163/164
/home/runner/work/funveil/funveil/src/types.rs 99.7% 97.4% 310/311
/home/runner/work/funveil/funveil/src/parser/tree_sitter_parser.rs 99.7% 93.9% 630/632
/home/runner/work/funveil/funveil/src/analysis/entrypoints.rs 100.0% 97.3% 754/754
/home/runner/work/funveil/funveil/src/config.rs 100.0% 100.0% 297/297
/home/runner/work/funveil/funveil/src/doctor.rs 100.0% 91.7% 34/34
/home/runner/work/funveil/funveil/src/error.rs 100.0% 0.0% 38/38
/home/runner/work/funveil/funveil/src/parser/languages/html.rs 100.0% 80.0% 102/102
/home/runner/work/funveil/funveil/src/parser/mod.rs 100.0% 90.0% 219/219
/home/runner/work/funveil/funveil/src/perms.rs 100.0% 100.0% 35/35
/home/runner/work/funveil/funveil/src/strategies/mod.rs 100.0% 0.0% 17/17

Adrian Mârza added 2 commits March 17, 2026 21:34
- 40 new tests covering profiles, show outline, parse flags, trace focus,
  veil/unveil graph flags, disclose enhancements, entrypoints filter,
  header strategy language formatting, glob patterns, budget dropped_tokens
- Remove dead read_file_content_public wrapper (make read_file_content pub)
- Export ProfileCmd from lib.rs
- Add coverage review guidance to AGENTS.md: uncoverable lines are a smell
  for dead code or latent bugs
- Remove always-true conditions in Show outline expand/docstring loops
  (LineRange guarantees start >= 1, .min(lines.len()) bounds the upper)
- Fix Python class method formatting to use `:` syntax instead of `{}`
- Deduplicate 11 entries in STD_FUNCTIONS array (map, push, pop, clone,
  as_ref, write, join, enumerate, zip, filter, next were listed twice)
@e6qu
e6qu merged commit 237a868 into main Mar 17, 2026
14 checks passed
@e6qu
e6qu deleted the fix/issue-md-all-stages branch March 17, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant