Skip to content

feat(catalog): break-glass catalog exception handling (#76) - #220

Merged
imran-siddique merged 1 commit into
mainfrom
feat/break-glass-catalog-exception
Jun 7, 2026
Merged

feat(catalog): break-glass catalog exception handling (#76)#220
imran-siddique merged 1 commit into
mainfrom
feat/break-glass-catalog-exception

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

Summary

  • POST /catalog/exception endpoint adds runtime catalog exceptions without modifying catalog_hash (the sealed TEE measurement stays clean)
  • ToolCatalog.add_exception() records rich metadata (reason, authorized_by, timestamp) in catalog.exceptions
  • Every call routed via an exception entry produces a break_glass_used audit entry and logs BREAK_GLASS_ACTIVE at WARNING
  • Exception metadata flows into TRACE Claim under gateway.catalog_exceptions on session close
  • 14 unit tests covering: hash invariant, metadata tracking, endpoint validation, audit trail, warning log

Test plan

  • python -m pytest tests/unit/test_break_glass.py -v — 14 tests pass
  • Full suite: python -m pytest tests/unit/ -q — 363 tests pass

Closes #76

🤖 Generated with Claude Code

POST /catalog/exception adds runtime entries without modifying catalog_hash.
Exceptions appear in TRACE Claim gateway.catalog_exceptions with reason,
authorized_by, and timestamp. Every call via an exception entry produces a
break_glass_used audit entry and logs BREAK_GLASS_ACTIVE at WARNING level.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@imran-siddique
imran-siddique merged commit 6b693e5 into main Jun 7, 2026
0 of 7 checks passed
@imran-siddique
imran-siddique deleted the feat/break-glass-catalog-exception branch July 29, 2026 23:19
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.

[assembly] Break-glass catalog exception handling

1 participant