Proof Portal
jsonparser
ProbeLabs36 findings · 123 requirementsA ReaderParser shall provide path-based access to JSON data from an io.Reader stream, supporting Get, GetString, and ArrayEach without requiring the entire document to be loaded into memory.
Specification
The requirement exactly as authored — its complete prose text and, where present, the formal FRETish sentence it compiles to.
A ReaderParser shall provide path-based access to JSON data from an io.Reader stream, supporting Get, GetString, and ArrayEach without requiring the entire document to be loaded into memory. The parser shall buffer data incrementally and yield values as they are found.
the parser shall always satisfy reader_parser_provides_incremental_stream_access
Rationale & tags
Why this requirement exists, and how it is categorised.
Rationale & tags
Why this requirement exists, and how it is categorised.
Large JSON documents can exceed available memory even when callers need only one path or need to process array elements sequentially. ReaderParser preserves jsonparser's path-based access model while bounding retained stream data to the current window or value.
Verification & provenance
How this requirement was checked: the review trail, edit history, and the machine-analysis status terms (each ⓘ explains what it means).
Review
- Status
- approved
- Reviewer
- human:buger · lead_engineer
- Reviewed
- Jul 28, 2026, 13:58 UTC
History
- Created
- Jul 28, 2026, 00:00 UTC · agent:codex
- Modified
- Jul 28, 2026, 13:58 UTC · human:buger
Obligations
What this requirement must witness to be considered satisfied — the required evidence, and the tests that discharge each one.
4 obligations · 3 discharged · 1 not yet witnessed
Browse the catalogueHappy-path behavior with valid inputs.
ReaderParser returns a different value or ValueType than the byte-slice parser for the same path because incremental matching loses nesting or quote state at a read boundary.
- nominalrequiredpresentCovered by 4 tests
Behavior at limits, thresholds, and edge-of-range values.
A key, escape sequence, scalar, string, or composite value crossing the sliding-window boundary is truncated, duplicated, or skipped, returning corrupt value bytes or retaining the whole stream.
- nominalrequiredpresentCovered by 2 tests
Behavior when inputs are absent, nil, zero-length, or blank.
An empty or nil reader causes a panic or an unbounded read loop instead of returning the defined not-found or malformed-input result.
- nominalrequiredpresentCovered by 1 test
Behavior when inputs are syntactically or structurally invalid.
A truncated string, array, or object is treated as complete and yielded to the caller, or the parser loops forever waiting for a delimiter after stream EOF.
- negativerequirednot yet witnessedRequired evidence not yet witnessed — no covering test recorded.
- nominalrequiredpresentCovered by 1 test
Formula evidence
The formal formula behind this requirement, the variables it is written over, and the tests that exercise it (each term is explained inline).
Formula evidence
The formal formula behind this requirement, the variables it is written over, and the tests that exercise it (each term is explained inline).
FRETish formula
the parser shall always satisfy reader_parser_provides_incremental_stream_access
Variables
| Name | Type | Direction | Description |
|---|---|---|---|
| reader_parser_provides_incremental_stream_access | — | True when ReaderParser resolves paths and iterates root arrays from an io.Reader while retaining only the active sliding window or value and reporting empty or malformed streams without panicking or looping. |
Witnesses· 2 scenarios total
- TestReaderParserGetreader_parser_test.go:12
- TestReaderParserLargeFilereader_parser_test.go:135
- TestReaderParserMalformedreader_parser_test.go:164
- TestReaderParserChunkBoundaryreader_parser_test.go:179
- TestReaderParserConfigreader_parser_test.go:197
- TestReaderParserEmptyreader_parser_test.go:219
- TestReaderParserGetStringreader_parser_test.go:74
- TestReaderParserArrayEachreader_parser_test.go:93
- TestMCDC_SYS_REQ_116_Row2_ReaderParserGetsFromStreamv150_mcdc_witness_test.go:37exercises 1 condition scenario
- TestMCDC_SYS_REQ_116_Row1_PackageGetRequiresByteSliceNotReaderv150_mcdc_witness_test.go:52exercises 1 condition scenario
Its place
This requirement shown inside its trace neighbourhood — the parents it satisfies, the code and tests attached to it, and its findings.
Loading graph…
Trace evidence
The concrete artifacts linked to this requirement — implementing code, verifying tests, documents, and the findings raised against it.
Impact
Blast radius — if you change this requirement, what else may need re-checking, and what it in turn depends on.
Impact
Blast radius — if you change this requirement, what else may need re-checking, and what it in turn depends on.
If you change this
Files to re-check (1)
- reader_parser.goreader_parser.go
Tests to re-run (2)
- reader_parser_test.goreader_parser_test.go
- v150_mcdc_witness_test.gov150_mcdc_witness_test.go
What this rests on
Discussions
Discuss this with the proof team. Nothing changes in your audit automatically — you open a request and a staff member records any outcome inside the thread.