Skip to content

chore(contracts): CHAOS-5926 Sync the subject-identity refusal basis - #88

Merged
chrisgeo merged 1 commit into
mainfrom
chore/5926-sync-subject-identity-unconfirmed
Sep 19, 2026
Merged

chrisgeo merged 1 commit into
mainfrom
chore/5926-sync-subject-identity-unconfirmed

Conversation

@chrisgeo

Copy link
Copy Markdown
Contributor

TEST-EVIDENCE

Bumps the acr contract pin to a618ca15, which adds subject_identity_unconfirmed to the refusal-basis vocabulary. This repo strict-validates every served result against its vendored schemas, so an answer carrying the new basis would fail closed with acr_contract_violation until the pin moves.

  • node scripts/sync-acr-contracts.mjs generate --allow-write --source <acr checkout at a618ca15>; check --source reports "ACR contracts are current". Vendored delta is exactly one enum member, at both places the field is carried (context_fabric_investigation_result.v1 and context_fabric_common.v1 AnswerCompleteness), plus the generated types and manifest digests.
  • Three new tests in src/lib/acr/validate.test.ts: the refusal validates as-is; an unrecognized basis still rejects (the enum stays closed); an executed repro strips the member from every refusal_basis enum and shows the same document rejected, so the tests prove the bump is what made it acceptable. The existing vocabulary-size pin moves 6 → 7 and names the new member.
  • Load-bearing check: reverting only the two schema copies turns the validating test and the vocabulary test red; restoring turns them green.
  • pnpm format:check, eslint ., tsc --noEmit, pnpm build rc0; vitest run 62 files / 1045 tests pass, from a real pnpm install.

RISK-NOTES

  • Additive enum member in a pin bump; no field removed or redefined. Deploy order: this pin first, acr serving the new basis second (acr must not emit it before this lands).
  • No rendering change: refusal_basis is a machine field the panels do not render; the refusal's own fixed sentence reaches the reader through the limitations list, as for the other refusal bases.

Pin a618ca15. The refusal-basis vocabulary gains subject_identity_unconfirmed:
a follow-up that resolved to a different subject than the answer it
continues, refused for a caller that cannot be asked to choose. Exactly one
member is added, at both places the field is carried (the result's own
refusal_basis and completeness.refusal_basis), in the vendored schemas and
the generated types.

Regenerated through the sync script, the only author of these artifacts;
check --source is green against a clean acr checkout parked on the squash.

Three tests accompany it: the refusal validates as-is, an unrecognized basis
still rejects so the enum stays closed, and an executed repro shows the same
document rejected by the prior pin's own schemas. Reverting only the two
schema copies turns the validating test and the enum-vocabulary test red.

Without this bump an answer carrying the new basis fails closed here with
acr_contract_violation and reads as a rig failure rather than a pin gap.
@linear-code

linear-code Bot commented Sep 19, 2026

Copy link
Copy Markdown

CHAOS-5926

@chrisgeo
chrisgeo merged commit 01ccf2d into main Sep 19, 2026
13 checks passed
@chrisgeo
chrisgeo deleted the chore/5926-sync-subject-identity-unconfirmed branch September 19, 2026 11:02
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