Repository navigation
fix(profile): name the rejected vocabulary token and keep compiling valid candidates (T-1741) - #304
Merged
Merged
Conversation
…candidates Only vocabulary mismatches are recoverable; malformed values and supports, instruction-shaped content and sensitive material still fail closed. Keep transactional rejection summaries in the existing run diagnostic column and preserve them across resumes. Verified 51 profile, 14 surface and 2 public demo cases, Ruff and independent read-only review.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
T-1741: the compiled-profile run failed with an opaque
ProfileValidationError("unknown profile category" / "unknown or mismatched profile predicate"), so the installed profile has been stuck since run 8 failed on 2026-10-22 and nobody could see which token the provider proposed.Change: vocabulary mismatches (category / predicate / volatility) raise
ProfileVocabularyErrorcarrying the token and the candidate ids (values never included; the diagnostic fields are scanned for sensitive material first). The engine isolates them per candidate, persists the rejections on the run row and keeps compiling the valid candidates; the run endscompleted_with_rejections. Instruction-shaped, sensitive-material and malformed-value checks keep failing closed exactly as before (covered bytest_...fail_closed...cases).Evidence (lane-run outside the worker sandbox): tests/test_compiled_profile.py + _surfaces + _claim_supports + tests/test_public_demo.py = 117 passed. Worker: ruff, release-truth --check, contract-witness passed. Not live-verified: a real compile against the authoritative database is a mutating run and is left to the next scheduled Dreaming slot after merge.
🤖 Generated with Claude Code