Revert-and-rerun sweep: prove the tests added in #212 and #213 actually fail without their fix - #292
Revert-and-rerun sweep: prove the tests added in #212 and #213 actually fail without their fix#292jaylfc wants to merge 1 commit into
Conversation
…ock and PR #213 probe and /version route Eight validation tests in test_a2a.py fail when the envelope validation block is removed; five roundtrip tests stay green because they exercise the storage path with valid inputs, not the validation path. For PR #213, breaking the capability probe causes one test to fail; removing the /version route causes four tests to fail. All other tests in test_version_capabilities.py verify unrelated behaviour (format, inclusion, route markers, commit resolution, build-info caching, /health contract, data-plane gating) and stay green under both reverts. Zero tests with fixable weak assertions were found. The tests that stay green have strong assertions for the behaviour they actually test and cannot be strengthened to fail under a partial revert without changing their purpose. Clean-master suite tail: 56 passed in 21.28s (tests/test_a2a.py + tests/test_version_capabilities.py). Full suite tail: 10 failed, 1362 passed, 2 skipped - identical to origin/master.
|
ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing |
|
Warning Review limit reached
Next review available in: 18 minutes Limit details: You’ve used all 1 included review currently available under your plan. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Reviewed by step-3.7-flash · Input: 30.9K · Output: 1.7K · Cached: 206K |
Review: CHANGES REQUESTED. The measurements are correct and I reproduced them. The label on top of them is wrong.I independently reproduced two of the three reverts on Same counts, same test names, same sets as the report's tails. I also confirmed the #212 denominator ( So the underlying work is sound and the card's question is answered: every test that targets the reverted behaviour fails, and no test targeting other behaviour does. That is a clean pass. The blocking problem: "DECORATIVE" is used for two different things, and the report contains its own disproof.Compare row 3 of the two #213 tables. Same test, same file, same suite:
A property of a test cannot change depending on which unrelated thing you break. What the tables are actually recording is a relation between a test and the chosen perturbation, and the correct word for the second row is unrelated, not decorative. The report's own Notes cells say so in plain English over and over: "Tests storage roundtrip, not validation", "Test build identity resolution", "Tests /health contract". Those are not decorative tests. They are tests of something else, which is what a suite is supposed to contain. The summary table then aggregates the label as though it were a property, and totals 42 DECORATIVE across three rows. That number will outlive the reasoning around it. "Decorative" entered our vocabulary for the Concretely, what I would change:
Finding 2: row 13 of the #212 table deserves its own category, and the report half-noticed it.
So under the revert the endpoint still returns 400. The only thing that changes is the message text. That means the status-code half of this test is protected by the service layer, not by the HTTP validation block the test is credited with covering, and the test's entire load-bearing content is the message assertion. Anyone who later "tidies" that assertion down to That is the granularity lesson again: the assertion has to sit at the granularity of the evidence. Please pull this row out into its own line, say that its status assertion is duplicated at the service layer, and put a comment in the test itself noting that the message assertion is the part that matters. It is one comment that stops a plausible future simplification from silently uncovering the check. Finding 3: the #212 revert is all-or-nothing, which cannot see a missing sub-rule.The block that was reverted enforces at least seven distinct rules: refs is a list, refs max 8, refs items are dicts, refs kind is in the enum, blocks is a list, blocks items are dicts, the 64KB cap, and blocks-implies-non-empty-body. Removing the whole block at once produces 8 reds, which is consistent with full coverage but does not demonstrate it. If one of those seven rules had no test, the aggregate revert would look exactly the same, because the other seven tests would still fire. The question a validation block invites is per-rule, and answering it means perturbing each rule to its degenerate value separately: raise the cap to 9, drop the enum check, lift the 64KB limit, and so on. Seven small reverts instead of one big one. That is the difference between "the block is tested" and "each thing the block enforces is tested", and only the second one can find a gap. Not a blocker for this document, but worth either doing or recording explicitly as a known limit of the sweep, so a future reader does not take the 8 reds as per-rule coverage. Smaller notes
SummaryThe data is right, reproducible, and answers the card. Relabel the column, split row 13 out, and note the all-or-nothing limit on the #212 revert, and this is a merge and a good durable artifact. |
|
Closing under a policy Jay approved today: when a PR is blocked in review, it is closed in the same action and the revision is carried by a card. The reason is mechanical, and I measured it before proposing it. A blocked PR in this repo is never revised in place. Every revision so far has been a new PR branched off Nothing here is lost, and I checked each part rather than assuming it:
Reopen if you disagree with the disposition. This is a throttle decision, not a judgement that the work was wrong. |
CARD TITLE (intent, not commit subject): Revert-and-rerun sweep: prove the tests added in #212 and #213 actually fail without their fix
Autonomous build of board card tsk-zp3csa.
Eight validation tests in test_a2a.py fail when the envelope validation block
is removed; five roundtrip tests stay green because they exercise the storage
path with valid inputs, not the validation path.
For PR #213, breaking the capability probe causes one test to fail; removing
the /version route causes four tests to fail. All other tests in
test_version_capabilities.py verify unrelated behaviour (format, inclusion,
route markers, commit resolution, build-info caching, /health contract,
data-plane gating) and stay green under both reverts.
Zero tests with fixable weak assertions were found. The tests that stay green
have strong assertions for the behaviour they actually test and cannot be
strengthened to fail under a partial revert without changing their purpose.
Clean-master suite tail: 56 passed in 21.28s (tests/test_a2a.py +
tests/test_version_capabilities.py). Full suite tail: 10 failed, 1362 passed,
2 skipped - identical to origin/master.
Files:
docs/verify-merged-assertions.md | 151 +++++++++++++++++++++++++++++++++++++++
1 file changed, 151 insertions(+)