Repository navigation
Conversation
Before refusing a probed collection read with an open collateral_unaudited miss, probe the sibling collections the app read and the prefix root. The root is promoted only when it holds the written record and every record the collection and siblings returned, in one unpaged response, with every captured write under the prefix. Otherwise the refusal stands and says what was probed. Probes stay GET-only and local, with no credentials, proxy or redirects. Adds a dated PROTOCOL.md deviation before the fourth benchmark run.
… non-REST root lists
Review found a false CONFIRMED: an empty root list (or a collection the root left out while empty) got no read, so a stray row written there passed. The check now reads every top-level list, empty ones included, plus every list under a key the probe did not see (records_other_lists), where the save may add no row; a reviewed list that disappears is unreadable (records_list_keys). Regression tests for both cases; dated PROTOCOL.md note before the fourth run.
Promote a prefix root only when every top-level value is a list of objects or a scalar; an object (a nested collection, an id-keyed map) refuses it with the key named. At check time an object value in the root is unreadable. On an object root the stray row in the saved record's own list is reported as unrelated_row, not collateral_unaudited. Regression tests for both shapes, empty and seeded; dated PROTOCOL.md note before the fourth run.
Z-net-probed stays refused on MockLoan with the reason recorded (GET /api and /api/ return 404; the app reads no sibling) and unavailable on MockMed. Every other arm matches the third run; the as-committed hand-written baseline now matches +complete since #1784. Third run kept as results-run3.json.
This branch has not been deployed
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.
Closes #2131.
scaffold-verifier --probe-readsused to refuse a probed collection read whenever a write outside it would pass (an opencollateral_unauditedmiss). Now it first looks for a read that covers the whole save.GET <prefix>andGET <prefix>/).records_other_lists). The save may add exactly one row to the saved record's list and none anywhere else. A reviewed list that disappears, or an object value that appears, makes the read unreadable (records_list_keys).read_discovery.json(now also written when a probed read is used) and in the proof.check_engine_generality.pypasses, and the generator guesses no route names.Benchmark (fourth run, at ae4ecc7, 69 trials). The dated
PROTOCOL.mdnotes were committed before the run, and the third run is kept asresults-run3.json.Z-net-probedstays refused, with the reason recorded:GET /apiandGET /api/return 404, and the app reads no sibling collection.Z-net-probedstays unavailable, because the app has no JSON read route.+complete, because RL environments: TRL, SkyRL and verl adapters #1784 addedrecords_complete: trueto them.Tests.
tests/test_read_discovery_cover.pyhas 24 cases. They cover:The record-check suites pass (2269 passed, 2 skipped), and ruff and mypy are clean.