fix(contracts): the response echo accepts answered-clarification bases - #73
Merged
Conversation
The revision-context contract learned `not_applicable` and the null editor when answered clarifications shipped; the response-side collaboration echo in catalyst-query-v1 did not. A reviewed rejection on such a base then failed contract validation at persistence -- the turn died at gateway_persistence with its invocations destroyed, and the comparison's triage gate caught the mischarged infrastructure failure on the cross-family team's B2/B3. The echo's baseClassification now admits not_applicable and its editorDigest may be null, exactly mirroring the request side. The test sends a contract-valid rejected collaboration on an answered-clarification base and asserts the turn persists as the model's rejection with its invocations intact.
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.
What broke
During the Phase 1 three-team comparison, cross-family B2 and B3 died with
gateway_persistenceschema errors:'not_applicable' is not one of ['reused','promoted_human','unresolved']editorDigest: None is not of type 'string'The G3c collaboration work taught the request side of
catalyst-query-v1that an answered clarification has anot_applicablebase with null digests — but the response echoschema (
$defs.modelCollaboration.base) was never updated. The gatewayproduced a perfectly valid turn, then failed to persist its own echo,
destroying the evidence (0 invocations recorded) and mischarging an
infrastructure defect as a model failure.
Fix
$defs.modelCollaboration.baseenum now includesnot_applicable.editorDigestacceptsnull(oneOf [null, ^[a-f0-9]{64}$]), matchingthe request side.
test_a_rejected_answer_on_an_answered_clarification_base_persists:a rejected collaboration echo on a
not_applicablebase persists as a modelrejection with invocations intact.
342 gateway tests pass locally.
Impact on the comparison run
The two red (infrastructure) cells in run
58b74775— cross-family B2/B3 —were killed by this, not by the models. After merge the gateway gets rebuilt
and those two pairs re-graded via
--resume.