0059 · The ledger admits choosing where to be told
Memory namespace · version 59 · source
Nominating where this deployment makes an outbound request is the widest egress in the product being chosen, by a customer, with a credential. The ledger admits those operations here, so the routes that perform them cannot be served unrecorded — a name this constraint does not carry is a write the database refuses, which is a boundary in the substrate rather than a rule every future handler has to remember.
What it runs
ALTER TABLE audit_entry DROP CONSTRAINT audit_operation_chkALTER TABLE audit_entry ADD CONSTRAINT audit_operation_chk CHECK(operation IN
SQL
{schema} is replaced with the validated namespace name when the migration is applied.
23 lines
-- Copyright 2026 The Taisce Authors
-- SPDX-License-Identifier: Apache-2.0
--
-- Nominating where this deployment makes an outbound request is the widest egress in the product
-- being chosen, by a customer, with a credential. The ledger admits those operations here, so
-- the routes that perform them cannot be served unrecorded — a name this constraint does not carry
-- is a write the database refuses, which is a boundary in the substrate rather than a rule every
-- future handler has to remember.
ALTER TABLE {schema}.audit_entry DROP CONSTRAINT audit_operation_chk;
ALTER TABLE {schema}.audit_entry ADD CONSTRAINT audit_operation_chk CHECK(operation IN (
'observe','recall','erase','freshness','export','authenticate',
'project.create','project.suspend','project.resume','credential.issue','credential.revoke',
'formation.unpark','formation.recover','formation.rebuild','formation.rebuild.start','formation.rebuild.cancel',
'citation.resolve','message.get','record.list','record.history','record.retract','record.correct','record.assert',
'artifact.put','artifact.get','artifact.list','artifact.delete','artifact.configure',
'subject.register','subject.get','subject.list','subject.update','entity.list','entity.get','entity.purge',
'notification.register','notification.list','notification.disable','notification.deliveries',
'embedding.start','embedding.build','embedding.activate','embedding.cancel','embedding.prune','embedding.repair','embedding.search',
'entity_embedding.start','entity_embedding.build','entity_embedding.activate','entity_embedding.cancel','entity_embedding.prune','entity_embedding.repair','entity_embedding.search',
'report_embedding.start','report_embedding.build','report_embedding.activate','report_embedding.cancel','report_embedding.prune','report_embedding.repair','report_embedding.search',
'context.assemble',
'project.list','credential.list','refusal.summary','erasure.list','formation.status','formation.parked','audit.seal','audit.verify'));