Skip to content

fix(contracts): the response echo accepts answered-clarification bases - #73

Merged
pmanko merged 1 commit into
mainfrom
fix/collab-echo-not-applicable
Aug 25, 2026
Merged

fix(contracts): the response echo accepts answered-clarification bases#73
pmanko merged 1 commit into
mainfrom
fix/collab-echo-not-applicable

Conversation

@pmanko

@pmanko pmanko commented Aug 24, 2026

Copy link
Copy Markdown
Member

What broke

During the Phase 1 three-team comparison, cross-family B2 and B3 died with
gateway_persistence schema errors:

  1. 'not_applicable' is not one of ['reused','promoted_human','unresolved']
  2. editorDigest: None is not of type 'string'

The G3c collaboration work taught the request side of
catalyst-query-v1 that an answered clarification has a
not_applicable base with null digests — but the response echo
schema ($defs.modelCollaboration.base) was never updated. The gateway
produced 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.base enum now includes not_applicable.
  • editorDigest accepts null (oneOf [null, ^[a-f0-9]{64}$]), matching
    the request side.
  • New test test_a_rejected_answer_on_an_answered_clarification_base_persists:
    a rejected collaboration echo on a not_applicable base persists as a model
    rejection 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.

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant