Repository navigation
[docs] - Sync README with current CLI, tests, and CI - #39
Conversation
Align README, SECURITY.md, and CLAUDE.md with v4.1.0 on main: four analyzers, real flags, 260 tests, seven workflows, extras, and CSV/JSON input. No code or feature changes. Co-authored-by: Chris Grady <cgfixit@users.noreply.github.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5f76893727
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | Malware | `localhostmalware_events.csv` | `localhostmalware_events.json` | | ||
|
|
||
| All files are optional — missing files are logged and skipped without aborting. | ||
| All files are optional — missing files are logged and skipped without aborting. Exact `localhost_*` names are the VHC defaults; hostname-prefixed variants (for example `VBR01_Jobs.csv`) are also discovered. |
There was a problem hiding this comment.
Label the filenames as parser expectations, not VHC defaults
EXPECTED_BASENAMES proves only which names this parser expects; the repository provides simulated fixtures and no authentic export or authoritative Veeam source establishing that these are the actual VHC defaults. Present these as parser-supported names, or provide product evidence before making the default-filename claim.
AGENTS.md reference: AGENTS.md:L35-L36
Useful? React with 👍 / 👎.
| - **Slack webhook validation** — only `https://hooks.slack.com/services/...` and `https://hooks.slack-gov.com/services/...` are accepted. | ||
| - **Analyzer signatures** — analyzers take DataFrames directly: `analyze_jobs(jobs_df, sessions_df)`, `analyze_security(sec_df)`, `analyze_repositories(repo_df)`, `analyze_malware(malware_df)`. They do NOT take a `result` parameter. | ||
| - **Encoding robustness** — always use `encoding_errors="replace"` for CSV loading. Strip UTF-8 BOM from JSON with `.lstrip("")`. | ||
| - **Encoding robustness** — CSV loading tries `_candidate_encodings` with `encoding_errors="strict"` and rejects NUL-decoded files. `_read_text()` strips a UTF-8 BOM (`\ufeff`) before JSON parse. |
There was a problem hiding this comment.
Narrow the CSV NUL-rejection claim
For a CSV containing NUL bytes in data cells, _safe_load_csv() does not reject the decoded file: _clean_columns() checks only column names, and the loader never scans cell values or the complete decoded text for NULs. This guidance can therefore make maintainers rely on a guard that does not exist; either describe the column-name-only check or add full-file rejection.
Useful? React with 👍 / 👎.
Documentation-only sync against
mainat8bec90d(local checkout fast-forwarded from a stale snapshot). No feature or code changes.Why
README.mdlast meaningful edit was 2026-07-09 (629e20b) while the package and CLI kept shipping (pyproject.toml4.1.0, later analyzer/CI/Docker work). Several project-facing claims no longer match the code.What changed
--verboseCLI flagargparseinvhc_simplifier.py(--helplists no--verbose)--quietanalyze_sessions()/ “5 domains” / “schedule gaps”analyze_jobs(jobs_df, sessions_df)plus three other analyzers; foursectionsinrun_healthcheck()python -m pytest tests/ --collect-only→ 260 (55 + 91 + 57 + 33 + 24)conftest.py.github/workflows/;dependency-review.ymlis PR-onlyci.ymlpyproject.toml4.1.0and[project.optional-dependencies]vhc-simplifierscript_validate_slack_webhook()requires/services/Dockerfileinstallspandasonly_resolve_input_file()PATTERN_MAPcomments for encryption/retention/immutabilitySECURITY.md“HTML/JSON reports”CLAUDE.md219 / ~770 / six workflows /encoding_errors="replace"encoding_errors="strict"Verification
Checked against current
main(8bec90d), not the July README:Also compared
EXPECTED_BASENAMES,_resolve_input_file(),_validate_slack_webhook(),PATTERN_MAP,Dockerfile(pandasonly +CRON_SCHEDULE),docker-compose.ymlcommand, andpyproject.tomlextras.Not verified without live credentials or an authentic VHC export: Salesforce Task creation, Slack webhook post, and real VBR v12/v13 product support (fixtures remain simulations).
Draft only — do not merge from this agent.