monad-developers / monad-developers/ultrafuzz
Report bundle does not record oversized-file omissions inside the ZIP
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 85
- Forks
- 18
- Avg merge
- 11h 10m
- Merged PRs (30d)
- 194
Description
ultrafuzz report bundle can return success while skipping an oversized engine log. The omission appears in the CLI diagnostic but is not recorded in bundle-manifest.json, so someone who receives only the ZIP cannot determine which evidence was omitted or why.
Observed behavior: a valid ZIP and report were produced with REPORT_BUNDLE_FILE_SKIPPED for smithers/logs/stream.ndjson because it exceeded the 64 MiB per-file limit. The source log remained on disk. The archive manifest lists engine-logs among included roots but contains no per-file omission inventory. This concerns bundle completeness, not corruption of included reports.
Current implementation: packages/cli/src/commands/report/bundle.ts defines MAX_BUNDLE_FILE_BYTES, emits a warning when readRegularFileSnapshot refuses a file, and constructs a manifest with included/excluded roots, one excluded filename pattern, path mappings, and entry count. It does not persist these skip diagnostics in the archive.
Minimal synthetic reproduction:
- Start with a small valid sealed run and its verified report.
- Add an engine log larger than 64 MiB using generated dummy data.
- Run the native bundle command and retain only the resulting ZIP.
- Inspect
bundle-manifest.json: the oversized log is absent and the reason cannot be recovered from the archive.
Acceptance criteria:
- Include a structured omission list using run-relative paths, reason codes, and known source sizes in a versioned manifest or another bundled manifest file.
- Distinguish intentional exclusions from files skipped because of size, file type, or read failure.
- Validate this information with the bundle schema and test it with synthetic inputs.
- Consider bounded log chunks or a separately requested logs archive, while preserving resource limits and the source files.
Related: #530 addressed filename filtering; this is the distinct oversized-file and self-contained omission-accounting case.
Sanitized: no target identity, run identifiers, host paths, raw logs, or findings are included.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at packages/cli/src/commands/report/bundle.ts and the native report bundle entry point, tracing readRegularFileSnapshot, MAX_BUNDLE_FILE_BYTES, warning emission, and manifest construction. Use a synthetic sealed run with an oversized engine log, then validate that bundle-manifest.json records run-relative omissions, reason codes, and source sizes while distinguishing intentional exclusions and checking the bundle schema.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100