Repository navigation
Add --strict option and exit code 6 for partial reads - #194
Merged
Merged
Conversation
This was referenced Nov 12, 2026
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
ExportReportmarks a read as"status": "partial"when stream gzip members fail to decode, are rebuilt by structural recovery, or decode without a matching checksum, or whenGlobal/ElemTabledecodes no row — yet the CLI process still exits with code0unless a reader limit cut a stream (3). Scripts that require hard failures on partial reads had to parse the JSON report themselves.Closes #54
Changes
RvtExitCodes.PartialRead = 6(codes0..4anddowngrade --check's5were already assigned) and strict overloads onRvtExitCodes.ForRead,ExportReport.ForRead, andExportReport.Failedwhile preserving existing method signatures.--stricttorvtio(Program.cs,ExportCommand.cs):6without writing an incomplete export whenstatus == "partial"without an unaccepted limit hit (LimitExceeded3still takes precedence on unaccepted limits;--allow-partialand--strictexclude each other with usage exit code1).limits.strictinExportReportand populatesissues[]with stream-level findings (failed-members,recovered-members,unverified-members) alongsideno-rowsandstreams[].--strict, exit code6,limits.strict,issues[]codes, and thecase $?scripting example indocs/export-report.md,README.md,docs/public-api.md, andCHANGELOG.md.ExportReportTestsand end-to-end process tests inCliExitCodeTestson synthetic.rvtfiles with intact and damaged partition members.Export comparison
--strictand complete exports with--strictproduce identical IFC and JSON outputs.Verification
dotnet build RvtIO.slnx -c Release— 0 errors, 0 warnings insrc/.dotnet test tests/RvtIO.Tests/RvtIO.Tests.csproj -c Release --no-build --filter "FullyQualifiedName~ExportReportTests|FullyQualifiedName~ChunkDecompressorTests|FullyQualifiedName~Cli"— all non-fixture tests passed onnet8.0andnet10.0(private-fixture[SkippableFact]tests skipped whenRVTIO_TEST_FILESis unset).dotnet docfx docfx.json --warningsAsErrors— 0 warnings, 0 errors.