stack_ids/ids.rs
1//! Opaque ID newtypes for cross-crate identity.
2//!
3//! Each newtype wraps a `String` and is intentionally opaque — callers
4//! should not parse the inner value. IDs are assigned by their respective
5//! authority crates; `stack-ids` only provides the type contract.
6
7use schemars::JsonSchema;
8use serde::{Deserialize, Deserializer, Serialize};
9use std::str::FromStr;
10
11/// Validation error for a family-qualified opaque ID.
12#[derive(Debug, Clone, PartialEq, Eq)]
13pub struct IdParseError {
14 family: String,
15 reason: &'static str,
16}
17
18impl std::fmt::Display for IdParseError {
19 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
20 write!(f, "invalid {} ID: {}", self.family, self.reason)
21 }
22}
23
24impl std::error::Error for IdParseError {}
25
26impl IdParseError {
27 /// Canonical ID family that rejected the input.
28 pub fn family(&self) -> &str {
29 &self.family
30 }
31
32 /// Stable validation failure reason.
33 pub fn reason(&self) -> &'static str {
34 self.reason
35 }
36}
37
38fn family_name(type_name: &str) -> String {
39 let stem = type_name.strip_suffix("Id").unwrap_or(type_name);
40 let mut family = String::new();
41 for (index, character) in stem.chars().enumerate() {
42 if character.is_ascii_uppercase() {
43 if index != 0 {
44 family.push('-');
45 }
46 family.push(character.to_ascii_lowercase());
47 } else {
48 family.push(character);
49 }
50 }
51 family
52}
53
54fn valid_payload(payload: &str) -> bool {
55 let mut characters = payload.chars();
56 matches!(characters.next(), Some(first) if first.is_ascii_alphanumeric())
57 && characters.all(|character| {
58 character.is_ascii_alphanumeric() || matches!(character, '-' | '.' | '_' | '~' | ':')
59 })
60}
61
62/// Macro to generate an opaque string-wrapper ID type with standard impls.
63macro_rules! define_id {
64 (
65 $(#[$meta:meta])*
66 $name:ident
67 ) => {
68 $(#[$meta])*
69 #[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, JsonSchema)]
70 #[serde(transparent)]
71 pub struct $name(pub String);
72
73 impl $name {
74 /// Creates an ID from a canonical family-qualified string or a
75 /// validated payload that will be family-qualified.
76 ///
77 /// Panics when the value is empty, non-canonical, or belongs to a
78 /// different ID family. Use try_new for untrusted input.
79 pub fn new(value: impl Into<String>) -> Self {
80 Self::try_new(value).unwrap_or_else(|error| panic!("{error}"))
81 }
82
83 /// Fallible constructor for untrusted ID input or payloads.
84 pub fn try_new(value: impl Into<String>) -> Result<Self, IdParseError> {
85 let value = value.into();
86 let family = family_name(stringify!($name));
87 if let Some((actual_family, payload)) = value.split_once(':') {
88 if actual_family != family {
89 return Err(IdParseError {
90 family,
91 reason: "cross-family substitution",
92 });
93 }
94 if !valid_payload(payload) {
95 return Err(IdParseError {
96 family,
97 reason: "payload is empty or non-canonical",
98 });
99 }
100 return Ok(Self(value));
101 }
102 if !valid_payload(&value) {
103 return Err(IdParseError {
104 family,
105 reason: "payload is empty or non-canonical",
106 });
107 }
108 Ok(Self(format!("{family}:{value}")))
109 }
110
111 /// Generate a new random UUID v4 ID.
112 pub fn generate() -> Self {
113 Self::new(uuid::Uuid::new_v4().to_string())
114 }
115
116 /// Borrow as a string slice.
117 pub fn as_str(&self) -> &str {
118 &self.0
119 }
120
121 /// Returns true if the inner string is empty.
122 ///
123 /// Valid IDs are never empty; retained for source compatibility.
124 pub fn is_empty(&self) -> bool {
125 self.0.is_empty()
126 }
127 }
128
129 impl std::fmt::Display for $name {
130 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
131 f.write_str(&self.0)
132 }
133 }
134
135 impl AsRef<str> for $name {
136 fn as_ref(&self) -> &str {
137 &self.0
138 }
139 }
140
141 impl FromStr for $name {
142 type Err = IdParseError;
143
144 fn from_str(value: &str) -> Result<Self, Self::Err> {
145 let family = family_name(stringify!($name));
146 // Accept family-prefixed values directly
147 if let Some((actual_family, payload)) = value.split_once(':') {
148 if actual_family != family {
149 return Err(IdParseError {
150 family: family.clone(),
151 reason: "cross-family substitution",
152 });
153 }
154 if !valid_payload(payload) {
155 return Err(IdParseError {
156 family,
157 reason: "payload is empty or non-canonical",
158 });
159 }
160 return Ok(Self(value.to_string()));
161 }
162 // Accept unprefixed values and prepend the family (backward compat)
163 if !valid_payload(value) {
164 return Err(IdParseError {
165 family,
166 reason: "payload is empty or non-canonical",
167 });
168 }
169 Ok(Self(format!("{family}:{value}")))
170 }
171 }
172
173 impl<'de> Deserialize<'de> for $name {
174 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
175 where
176 D: Deserializer<'de>,
177 {
178 let value = String::deserialize(deserializer)?;
179 value.parse().map_err(serde::de::Error::custom)
180 }
181 }
182 };
183}
184
185define_id!(
186 /// Opaque identifier for an import/export envelope.
187 ///
188 /// Assigned by the exporting authority (e.g. Forge). Stable across
189 /// re-exports of the same logical unit.
190 EnvelopeId
191);
192
193define_id!(
194 /// Opaque identifier for a claim (knowledge assertion).
195 ///
196 /// Assigned by the projection importer. Stable within a claim lineage.
197 ClaimId
198);
199
200define_id!(
201 /// Opaque identifier for a specific version of a claim.
202 ///
203 /// Each mutation to a claim's validity, status, or content produces
204 /// a new version with a new `ClaimVersionId`. The `ClaimId` remains
205 /// stable across versions.
206 ClaimVersionId
207);
208
209define_id!(
210 /// Opaque identifier for an entity (person, concept, code unit, etc.).
211 ///
212 /// The inner string is intentionally unstructured. Use domain-specific
213 /// constructors to create these (e.g. code_entity_id).
214 EntityId
215);
216
217define_id!(
218 /// Opaque identifier for an episode (causal record).
219 ///
220 /// Assigned by the episode creator. Stable within the episode's lifecycle.
221 EpisodeId
222);
223
224define_id!(
225 /// Opaque identifier for a logical retry family within one retry-owner boundary.
226 ///
227 /// One `AttemptId` exists per logical retry family. Retries inside that
228 /// boundary produce new `TrialId`s, NOT new `AttemptId`s. A new `AttemptId`
229 /// is created only when the retry owner changes (e.g. node-level retry
230 /// after transport retries are exhausted) or on explicit replay/re-enqueue.
231 AttemptId
232);
233
234define_id!(
235 /// Opaque identifier for a concrete execution within a logical retry family.
236 ///
237 /// Every retry within one owner boundary creates a new `TrialId` under
238 /// the same `AttemptId`. Each `TrialId` is globally unique (UUID v4).
239 TrialId
240);
241
242define_id!(
243 /// Opaque identifier for a stored artifact (patch, snapshot, file).
244 ///
245 /// Assigned by the artifact store. Stable across reads.
246 ArtifactId
247);
248
249define_id!(
250 /// Opaque identifier for a projection instance.
251 ///
252 /// Identifies a specific derived view (entity registry entry, temporal
253 /// claim set, etc.) within a scope.
254 ProjectionId
255);
256
257define_id!(
258 /// Opaque identifier for a relation (edge between entities).
259 ///
260 /// Assigned by the projection importer. Stable within a relation lineage.
261 /// Each mutation produces a new `RelationVersionId` under the same `RelationId`.
262 RelationId
263);
264
265define_id!(
266 /// Opaque identifier for a relation version.
267 ///
268 /// Each mutation to a relation produces a new version with a new
269 /// `RelationVersionId`. The `RelationId` remains stable across versions.
270 RelationVersionId
271);
272
273define_id!(
274 /// Opaque identifier for an import batch produced by the bridge.
275 ///
276 /// Assigned by the bridge transformation pipeline. Unique per batch.
277 ImportBatchId
278);
279
280define_id!(
281 /// Opaque identifier for a claim family spanning multiple claim versions.
282 ///
283 /// Assigned by the authoritative exporter when version lineage is known.
284 ClaimFamilyId
285);
286
287define_id!(
288 /// Opaque identifier for a higher-order assertion group.
289 ///
290 /// Used to preserve joint assertion meaning across export, bridge, and
291 /// deterministic compilation. The bridge preserves it; it does not invent it.
292 AssertionGroupId
293);
294
295define_id!(
296 /// Opaque identifier for a relation group exported by the authority.
297 ///
298 /// Relation groups allow the compiler to recover hyperedge structure without
299 /// flattening upstream semantics into pairwise folklore.
300 RelationGroupId
301);
302
303define_id!(
304 /// Opaque identifier for a joint evidence group.
305 ///
306 /// Used to tie multiple observations or assertions to a shared evidence basis.
307 JointEvidenceGroupId
308);
309
310define_id!(
311 /// Opaque identifier for a contradiction candidate group.
312 ///
313 /// Assigned upstream when the exporting authority exposes contradiction seed
314 /// structure. Kernel/runtime layers must not synthesize it from absence.
315 ContradictionGroupId
316);
317
318define_id!(
319 /// Opaque identifier for a mutual exclusion or constraint seed group.
320 ConstraintGroupId
321);
322
323define_id!(
324 /// Opaque identifier for a recursive kernel run.
325 ///
326 /// Assigned by the kernel execution layer for one bounded, rebuildable run.
327 KernelRunId
328);
329
330define_id!(
331 /// Opaque identifier for a compiled constraint unit.
332 ConstraintId
333);
334
335define_id!(
336 /// Opaque identifier for a compiled hyperedge recovered from upstream grouping semantics.
337 HyperedgeId
338);
339
340define_id!(
341 /// Opaque identifier for a residual artifact emitted by bounded execution.
342 ResidualId
343);
344
345define_id!(
346 /// Opaque identifier for a stable syndrome signature emitted by the kernel.
347 SyndromeId
348);
349
350define_id!(
351 /// Opaque identifier for a witness artifact produced by execution or oracles.
352 WitnessId
353);
354
355define_id!(
356 /// Opaque identifier for a certificate artifact produced by execution or oracles.
357 CertificateId
358);
359
360define_id!(
361 /// Opaque identifier for a bounded oracle slice definition.
362 OracleSliceId
363);
364
365define_id!(
366 /// Opaque identifier for a bounded execution region.
367 RegionId
368);
369
370define_id!(
371 /// Opaque identifier for a stable digest of one bounded execution region.
372 RegionDigestId
373);
374
375define_id!(
376 /// Opaque identifier for a typed artifact transport crossing region boundaries.
377 ArtifactTransportId
378);
379
380define_id!(
381 /// Opaque identifier for syndrome-first repair routing.
382 RepairRouteId
383);
384
385define_id!(
386 /// Opaque identifier for one ranked local repair candidate.
387 RepairCandidateId
388);
389
390define_id!(
391 /// Opaque identifier for a nuisance-state artifact.
392 NuisanceStateId
393);
394
395define_id!(
396 /// Opaque identifier for a convergence-governance artifact.
397 ConvergenceReportId
398);
399
400define_id!(
401 /// Opaque identifier for a registered recursive operator contract.
402 OperatorId
403);
404
405define_id!(
406 /// Opaque identifier for a specific version of a registered operator contract.
407 ///
408 /// `OperatorId` stays stable across versions; `OperatorVersionId` changes when
409 /// the executable contract or policy-relevant operator surface changes.
410 OperatorVersionId
411);
412
413define_id!(
414 /// Opaque identifier for a structured refutation result artifact.
415 RefutationResultId
416);
417
418define_id!(
419 /// Opaque identifier for a structured calibration report artifact.
420 CalibrationReportId
421);
422
423define_id!(
424 /// Opaque identifier for a verification-control case.
425 VerificationCaseId
426);
427
428define_id!(
429 /// Opaque identifier for a canonical verification check plan.
430 CheckPlanId
431);
432
433define_id!(
434 /// Opaque identifier for a canonical control-plane receipt.
435 ControlReceiptId
436);
437
438define_id!(
439 /// Opaque identifier for an append-only verification ledger entry.
440 LedgerEntryId
441);
442
443define_id!(
444 /// Opaque identifier for a policy decision artifact.
445 PolicyDecisionId
446);
447
448define_id!(
449 /// Opaque identifier for a runtime execution permit.
450 ///
451 /// Minted only after policy, approval, and plan checks succeed for one
452 /// concrete execution surface.
453 ExecutionPermitId
454);
455
456define_id!(
457 /// Opaque identifier for an approval record artifact.
458 ApprovalRecordId
459);
460
461define_id!(
462 /// Opaque identifier for a typed constitutional approval grant.
463 ///
464 /// Grants carry scoped approval lineage for effectful tool dispatch.
465 ApprovalGrantId
466);
467
468define_id!(
469 /// Opaque identifier for a promotion decision artifact.
470 PromotionDecisionId
471);
472
473define_id!(
474 /// Opaque identifier for a refutation decision artifact.
475 RefutationDecisionId
476);
477
478define_id!(
479 /// Opaque identifier for a rollback plan artifact.
480 RollbackPlanId
481);
482
483define_id!(
484 /// Opaque identifier for a calibration snapshot artifact.
485 CalibrationSnapshotId
486);
487
488define_id!(
489 /// Opaque identifier for a versioned learning update artifact.
490 LearningUpdateId
491);
492
493define_id!(
494 /// Opaque identifier for a deterministic boundary repair record artifact.
495 BoundaryRepairRecordId
496);
497
498define_id!(
499 /// Opaque identifier for a semantics profile artifact.
500 SemanticsProfileId
501);
502
503define_id!(
504 /// Opaque identifier for a claim-state artifact.
505 ClaimStateId
506);
507
508define_id!(
509 /// Opaque identifier for a semantic diff artifact.
510 SemanticDiffId
511);
512
513define_id!(
514 /// Opaque identifier for a causal-attribution bundle artifact.
515 CausalAttributionBundleId
516);
517
518define_id!(
519 /// Opaque identifier for an explicit degradation record artifact.
520 DegradationRecordId
521);
522
523define_id!(
524 /// Opaque identifier for an exactness-budget artifact.
525 ExactnessBudgetId
526);
527
528define_id!(
529 /// Opaque identifier for one exported or imported support-set artifact.
530 ///
531 /// Stable for one snapshot of the support expression attached to a claim.
532 SupportSetId
533);
534
535define_id!(
536 /// Opaque identifier for one contradiction-witness artifact.
537 ///
538 /// Used to point at a stored explanation of why a claim is simultaneously
539 /// supported and refuted within one semantics profile.
540 ContradictionWitnessId
541);
542
543define_id!(
544 /// Opaque identifier for one retraction / supersession artifact.
545 ///
546 /// This identifies the transaction-time event that closes currentness for
547 /// a claim version without erasing historical visibility.
548 RetractionRecordId
549);
550
551define_id!(
552 /// Opaque identifier for an intervention bundle artifact.
553 InterventionId
554);
555
556define_id!(
557 /// Opaque identifier for an outcome-schema artifact.
558 OutcomeSchemaId
559);
560
561define_id!(
562 /// Opaque identifier for an experiment case artifact.
563 ExperimentCaseId
564);
565
566define_id!(
567 /// Opaque identifier for a cohort-contract artifact.
568 CohortContractId
569);
570
571define_id!(
572 /// Opaque identifier for a comparability-matrix artifact.
573 ComparabilityMatrixId
574);
575
576define_id!(
577 /// Opaque identifier for a counterfactual-slice artifact.
578 CounterfactualSliceId
579);
580
581define_id!(
582 /// Opaque identifier for a decision-trace artifact.
583 DecisionTraceId
584);
585
586define_id!(
587 /// Opaque identifier for a refuter-suite artifact.
588 RefuterSuiteId
589);
590
591define_id!(
592 /// Opaque identifier for a refuter-result artifact.
593 RefuterResultId
594);
595
596define_id!(
597 /// Opaque identifier for a rollout-decision artifact.
598 RolloutDecisionId
599);
600
601define_id!(
602 /// Opaque identifier for a rollback-decision artifact.
603 RollbackDecisionId
604);
605
606define_id!(
607 /// Opaque identifier for an experiment-budget artifact.
608 ExperimentBudgetId
609);
610
611define_id!(
612 /// Opaque identifier for an attestation-envelope artifact.
613 AttestationEnvelopeId
614);
615
616define_id!(
617 /// Opaque identifier for a trust-root-set artifact.
618 TrustRootSetId
619);
620
621define_id!(
622 /// Opaque identifier for an artifact-admission-policy artifact.
623 ArtifactAdmissionPolicyId
624);
625
626define_id!(
627 /// Opaque identifier for a transparency-receipt artifact.
628 TransparencyReceiptId
629);
630
631define_id!(
632 /// Opaque identifier for an attestation-revocation artifact.
633 AttestationRevocationId
634);
635
636define_id!(
637 /// Opaque identifier for an attestation-supersession artifact.
638 AttestationSupersessionId
639);
640
641define_id!(
642 /// Opaque identifier for a remote-oracle lease artifact.
643 RemoteOracleLeaseId
644);
645
646define_id!(
647 /// Opaque identifier for a remote-slice request artifact.
648 RemoteSliceRequestId
649);
650
651define_id!(
652 /// Opaque identifier for a remote-slice result artifact.
653 RemoteSliceResultId
654);
655
656define_id!(
657 /// Opaque identifier for a cross-runtime replay-ticket artifact.
658 CrossRuntimeReplayTicketId
659);
660
661define_id!(
662 /// Opaque identifier for a dispute-bundle artifact.
663 DisputeBundleId
664);
665
666define_id!(
667 /// Opaque identifier for a disclosure-policy artifact.
668 DisclosurePolicyId
669);
670
671define_id!(
672 /// Opaque identifier for a disclosure-budget artifact.
673 DisclosureBudgetId
674);
675
676define_id!(
677 /// Opaque identifier for a treaty bundle artifact.
678 TreatyBundleId
679);
680
681define_id!(
682 /// Opaque identifier for a runtime identity set artifact.
683 RuntimeIdentitySetId
684);
685
686define_id!(
687 /// Opaque identifier for a cross-runtime equivalence bundle artifact.
688 CrossRuntimeEquivalenceBundleId
689);
690
691define_id!(
692 /// Opaque identifier for a settlement case artifact.
693 SettlementCaseId
694);
695
696define_id!(
697 /// Opaque identifier for a shared disposition artifact.
698 SharedDispositionId
699);
700
701define_id!(
702 /// Opaque identifier for a local dissent record artifact.
703 LocalDissentId
704);
705
706define_id!(
707 /// Opaque identifier for a shared-view downgrade artifact.
708 SharedViewDowngradeId
709);
710
711define_id!(
712 /// Opaque identifier for a settlement receipt artifact.
713 SettlementReceiptId
714);
715
716define_id!(
717 /// Opaque identifier for a shared replay slice artifact.
718 SharedReplaySliceId
719);
720
721define_id!(
722 /// Opaque identifier for a shared divergence report artifact.
723 SharedDivergenceReportId
724);
725
726define_id!(
727 /// Opaque identifier for a treaty suspension artifact.
728 TreatySuspensionId
729);
730
731define_id!(
732 /// Opaque identifier for a mechanism bundle artifact.
733 MechanismBundleId
734);
735
736define_id!(
737 /// Opaque identifier for a theory version artifact.
738 TheoryVersionId
739);
740
741define_id!(
742 /// Opaque identifier for a theory library artifact.
743 TheoryLibraryId
744);
745
746define_id!(
747 /// Opaque identifier for a hypothesis library artifact.
748 HypothesisLibraryId
749);
750
751define_id!(
752 /// Opaque identifier for a simulation contract artifact.
753 SimulationContractId
754);
755
756define_id!(
757 /// Opaque identifier for a fit-run artifact.
758 FitRunId
759);
760
761define_id!(
762 /// Opaque identifier for a theory refuter suite artifact.
763 TheoryRefuterSuiteId
764);
765
766define_id!(
767 /// Opaque identifier for a rollout stability report artifact.
768 RolloutStabilityReportId
769);
770
771define_id!(
772 /// Opaque identifier for a discovery program artifact.
773 DiscoveryProgramId
774);
775
776define_id!(
777 /// Opaque identifier for a portfolio plan artifact.
778 PortfolioPlanId
779);
780
781define_id!(
782 /// Opaque identifier for an experiment campaign artifact.
783 ExperimentCampaignId
784);
785
786define_id!(
787 /// Opaque identifier for a campaign decision trace artifact.
788 CampaignDecisionTraceId
789);
790
791define_id!(
792 /// Opaque identifier for an information-value estimate artifact.
793 InformationValueEstimateId
794);
795
796define_id!(
797 /// Opaque identifier for a verification-load budget artifact.
798 VerificationLoadBudgetId
799);
800
801define_id!(
802 /// Opaque identifier for a charter bundle artifact.
803 CharterBundleId
804);
805
806define_id!(
807 /// Opaque identifier for a doctrine snapshot artifact.
808 DoctrineSnapshotId
809);
810
811define_id!(
812 /// Opaque identifier for an amendment proposal artifact.
813 AmendmentProposalId
814);
815
816define_id!(
817 /// Opaque identifier for an amendment decision artifact.
818 AmendmentDecisionId
819);
820
821define_id!(
822 /// Opaque identifier for an archive manifest artifact.
823 ArchiveManifestId
824);
825
826define_id!(
827 /// Opaque identifier for a compaction receipt artifact.
828 CompactionReceiptId
829);
830
831define_id!(
832 /// Opaque identifier for a historical query guarantee artifact.
833 HistoricalQueryGuaranteeId
834);
835
836define_id!(
837 /// Opaque identifier for a deprecation bundle artifact.
838 DeprecationBundleId
839);
840
841define_id!(
842 /// Opaque identifier for a retirement bundle artifact.
843 RetirementBundleId
844);
845
846define_id!(
847 /// Opaque identifier for a spec bundle artifact.
848 SpecBundleId
849);
850
851define_id!(
852 /// Opaque identifier for a normative AST artifact.
853 NormativeAstId
854);
855
856define_id!(
857 /// Opaque identifier for a generated schema bundle artifact.
858 GeneratedSchemaBundleId
859);
860
861define_id!(
862 /// Opaque identifier for a generated interpreter bundle artifact.
863 GeneratedInterpreterBundleId
864);
865
866define_id!(
867 /// Opaque identifier for a generated conformance corpus artifact.
868 GeneratedConformanceCorpusId
869);
870
871define_id!(
872 /// Opaque identifier for a generated migration plan artifact.
873 GeneratedMigrationPlanId
874);
875
876define_id!(
877 /// Opaque identifier for a proof-obligation set artifact.
878 ProofObligationSetId
879);
880
881define_id!(
882 /// Opaque identifier for a proof evaluation receipt artifact.
883 ProofEvaluationReceiptId
884);
885
886define_id!(
887 /// Opaque identifier for a human-veto bundle artifact.
888 HumanVetoBundleId
889);
890
891define_id!(
892 /// Opaque identifier for a meta-challenge bundle artifact.
893 MetaChallengeBundleId
894);
895
896define_id!(
897 /// Opaque identifier for a self-hosting build receipt artifact.
898 SelfHostingBuildReceiptId
899);
900
901define_id!(
902 /// Opaque identifier for an effect intent artifact.
903 EffectIntentId
904);
905
906define_id!(
907 /// Opaque identifier for an effect preflight report artifact.
908 EffectPreflightReportId
909);
910
911define_id!(
912 /// Opaque identifier for an effect execution window artifact.
913 EffectWindowId
914);
915
916define_id!(
917 /// Opaque identifier for an effect commit decision artifact.
918 EffectCommitDecisionId
919);
920
921define_id!(
922 /// Opaque identifier for an effect execution receipt artifact.
923 EffectExecutionReceiptId
924);
925
926define_id!(
927 /// Opaque identifier for an effect observation bundle artifact.
928 EffectObservationBundleId
929);
930
931define_id!(
932 /// Opaque identifier for a compensation plan artifact.
933 CompensationPlanId
934);
935
936define_id!(
937 /// Opaque identifier for a compensation execution receipt artifact.
938 CompensationExecutionReceiptId
939);
940
941define_id!(
942 /// Opaque identifier for an external effect ledger entry artifact.
943 ExternalEffectLedgerEntryId
944);
945
946define_id!(
947 /// Opaque identifier for a capability class artifact.
948 CapabilityClassId
949);
950
951define_id!(
952 /// Opaque identifier for an authority lease artifact.
953 AuthorityLeaseId
954);
955
956define_id!(
957 /// Opaque identifier for a delegation bundle artifact.
958 DelegationBundleId
959);
960
961define_id!(
962 /// Opaque identifier for an authority chain artifact.
963 AuthorityChainId
964);
965
966define_id!(
967 /// Opaque identifier for a separation-of-duties policy artifact.
968 SeparationOfDutiesPolicyId
969);
970
971define_id!(
972 /// Opaque identifier for a dual-control approval artifact.
973 DualControlApprovalId
974);
975
976define_id!(
977 /// Opaque identifier for a break-glass grant artifact.
978 BreakGlassGrantId
979);
980
981define_id!(
982 /// Opaque identifier for a delegation revocation artifact.
983 DelegationRevocationId
984);
985
986define_id!(
987 /// Opaque identifier for an acting-on-behalf receipt artifact.
988 ActingOnBehalfReceiptId
989);
990
991define_id!(
992 /// Opaque identifier for a conflict disclosure artifact.
993 ConflictDisclosureId
994);
995
996define_id!(
997 /// Opaque identifier for a deployment profile artifact.
998 DeploymentProfileId
999);
1000
1001define_id!(
1002 /// Opaque identifier for an operating envelope artifact.
1003 OperatingEnvelopeId
1004);
1005
1006define_id!(
1007 /// Opaque identifier for an assurance case artifact.
1008 AssuranceCaseId
1009);
1010
1011define_id!(
1012 /// Opaque identifier for a hazard register artifact.
1013 HazardRegisterId
1014);
1015
1016define_id!(
1017 /// Opaque identifier for a control mapping artifact.
1018 ControlMappingId
1019);
1020
1021define_id!(
1022 /// Opaque identifier for a residual-risk acceptance artifact.
1023 ResidualRiskAcceptanceId
1024);
1025
1026define_id!(
1027 /// Opaque identifier for a release-readiness decision artifact.
1028 ReleaseReadinessDecisionId
1029);
1030
1031define_id!(
1032 /// Opaque identifier for a field monitoring plan artifact.
1033 FieldMonitoringPlanId
1034);
1035
1036define_id!(
1037 /// Opaque identifier for a certification bundle artifact.
1038 CertificationBundleId
1039);
1040
1041define_id!(
1042 /// Opaque identifier for a recertification trigger artifact.
1043 RecertificationTriggerId
1044);
1045
1046define_id!(
1047 /// Opaque identifier for a service-level profile artifact.
1048 ServiceLevelProfileId
1049);
1050
1051define_id!(
1052 /// Opaque identifier for an error-budget ledger artifact.
1053 ErrorBudgetLedgerId
1054);
1055
1056define_id!(
1057 /// Opaque identifier for an incident case artifact.
1058 IncidentCaseId
1059);
1060
1061define_id!(
1062 /// Opaque identifier for a containment decision artifact.
1063 ContainmentDecisionId
1064);
1065
1066define_id!(
1067 /// Opaque identifier for a forensic freeze artifact.
1068 ForensicFreezeId
1069);
1070
1071define_id!(
1072 /// Opaque identifier for a recovery plan artifact.
1073 RecoveryPlanId
1074);
1075
1076define_id!(
1077 /// Opaque identifier for a recovery replay slice artifact.
1078 RecoveryReplaySliceId
1079);
1080
1081define_id!(
1082 /// Opaque identifier for a bounded continuity exception artifact.
1083 ContinuityExceptionId
1084);
1085
1086define_id!(
1087 /// Opaque identifier for a postmortem bundle artifact.
1088 PostmortemBundleId
1089);
1090
1091define_id!(
1092 /// Opaque identifier for a resilience exercise artifact.
1093 ResilienceExerciseId
1094);
1095
1096define_id!(
1097 /// Opaque identifier for an effect review case artifact.
1098 EffectReviewCaseId
1099);
1100
1101define_id!(
1102 /// Opaque identifier for an effect block receipt artifact.
1103 EffectBlockReceiptId
1104);
1105
1106define_id!(
1107 /// Opaque identifier for a delegation review case artifact.
1108 DelegationReviewCaseId
1109);
1110
1111define_id!(
1112 /// Opaque identifier for a release gate case artifact.
1113 ReleaseGateCaseId
1114);
1115
1116define_id!(
1117 /// Opaque identifier for a continuity review case artifact.
1118 ContinuityReviewCaseId
1119);
1120
1121define_id!(
1122 /// Opaque identifier for an effect policy profile artifact.
1123 EffectPolicyProfileId
1124);
1125
1126define_id!(
1127 /// Opaque identifier for a delegation policy profile artifact.
1128 DelegationPolicyProfileId
1129);
1130
1131define_id!(
1132 /// Opaque identifier for a release policy profile artifact.
1133 ReleasePolicyProfileId
1134);
1135
1136define_id!(
1137 /// Opaque identifier for a continuity policy profile artifact.
1138 ContinuityPolicyProfileId
1139);
1140
1141define_id!(
1142 /// Opaque identifier for an effect adjudication receipt artifact.
1143 EffectAdjudicationReceiptId
1144);
1145
1146define_id!(
1147 /// Opaque identifier for a release rollback decision artifact.
1148 ReleaseRollbackDecisionId
1149);
1150
1151define_id!(
1152 /// Opaque identifier for a tool effect dispatch receipt artifact.
1153 ToolEffectDispatchReceiptId
1154);
1155
1156define_id!(
1157 /// Opaque identifier for a privacy/retention profile artifact.
1158 PrivacyRetentionProfileId
1159);
1160
1161define_id!(
1162 /// Opaque identifier for a redaction rule-set artifact.
1163 RedactionRuleSetId
1164);
1165
1166define_id!(
1167 /// Opaque identifier for an access-purpose matrix artifact.
1168 AccessPurposeMatrixId
1169);
1170
1171define_id!(
1172 /// Opaque identifier for an audit extraction policy artifact.
1173 AuditExtractionPolicyId
1174);
1175
1176define_id!(
1177 /// Opaque identifier for a residency policy profile artifact.
1178 ResidencyPolicyProfileId
1179);
1180
1181define_id!(
1182 /// Opaque identifier for a tenant-boundary profile artifact.
1183 TenantBoundaryProfileId
1184);
1185
1186define_id!(
1187 /// Opaque identifier for a cross-boundary transfer class artifact.
1188 CrossBoundaryTransferClassId
1189);
1190
1191define_id!(
1192 /// Opaque identifier for a locality exception artifact.
1193 LocalityExceptionId
1194);
1195
1196define_id!(
1197 /// Opaque identifier for a role catalog artifact.
1198 RoleCatalogId
1199);
1200
1201define_id!(
1202 /// Opaque identifier for a delegation matrix artifact.
1203 DelegationMatrixId
1204);
1205
1206define_id!(
1207 /// Opaque identifier for an approval matrix artifact.
1208 ApprovalMatrixId
1209);
1210
1211define_id!(
1212 /// Opaque identifier for a conflict-class catalog artifact.
1213 ConflictClassCatalogId
1214);
1215
1216define_id!(
1217 /// Opaque identifier for a regulatory-regime profile artifact.
1218 RegulatoryRegimeProfileId
1219);
1220
1221define_id!(
1222 /// Opaque identifier for a requirement-to-control map artifact.
1223 RequirementControlMapId
1224);
1225
1226define_id!(
1227 /// Opaque identifier for an evidence collection plan artifact.
1228 EvidenceCollectionPlanId
1229);
1230
1231define_id!(
1232 /// Opaque identifier for a recertification schedule artifact.
1233 RecertificationScheduleId
1234);
1235
1236define_id!(
1237 /// Opaque identifier for a hazard library artifact.
1238 HazardLibraryId
1239);
1240
1241define_id!(
1242 /// Opaque identifier for a hazard scenario artifact.
1243 HazardScenarioId
1244);
1245
1246define_id!(
1247 /// Opaque identifier for a monitor catalog artifact.
1248 MonitorCatalogId
1249);
1250
1251define_id!(
1252 /// Opaque identifier for a mitigation playbook artifact.
1253 MitigationPlaybookId
1254);
1255
1256define_id!(
1257 /// Opaque identifier for a vendor certification adapter artifact.
1258 VendorCertificationAdapterId
1259);
1260
1261define_id!(
1262 /// Opaque identifier for a vendor evidence translation artifact.
1263 VendorEvidenceTranslationId
1264);
1265
1266define_id!(
1267 /// Opaque identifier for a vendor trust-root binding artifact.
1268 VendorTrustRootBindingId
1269);
1270
1271define_id!(
1272 /// Opaque identifier for a vendor revocation handling artifact.
1273 VendorRevocationHandlingId
1274);
1275
1276define_id!(
1277 /// Opaque identifier for an incident taxonomy artifact.
1278 IncidentTaxonomyId
1279);
1280
1281define_id!(
1282 /// Opaque identifier for a severity matrix artifact.
1283 SeverityMatrixId
1284);
1285
1286define_id!(
1287 /// Opaque identifier for a pager-route profile artifact.
1288 PagerRouteProfileId
1289);
1290
1291define_id!(
1292 /// Opaque identifier for an escalation-clock policy artifact.
1293 EscalationClockPolicyId
1294);
1295
1296define_id!(
1297 /// Opaque identifier for an applicability-context artifact.
1298 ApplicabilityContextId
1299);
1300
1301define_id!(
1302 /// Opaque identifier for a normalized profile-set artifact.
1303 ProfileSetId
1304);
1305
1306define_id!(
1307 /// Opaque identifier for a composition rule-set artifact.
1308 CompositionRuleSetId
1309);
1310
1311define_id!(
1312 /// Opaque identifier for a composition receipt artifact.
1313 CompositionReceiptId
1314);
1315
1316define_id!(
1317 /// Opaque identifier for an effective constitution artifact.
1318 EffectiveConstitutionId
1319);
1320
1321define_id!(
1322 /// Opaque identifier for a compiled obligation-set artifact.
1323 CompiledObligationSetId
1324);
1325
1326define_id!(
1327 /// Opaque identifier for a composition conflict-set artifact.
1328 CompositionConflictSetId
1329);
1330
1331define_id!(
1332 /// Opaque identifier for a profile exception bundle artifact.
1333 ProfileExceptionBundleId
1334);
1335
1336define_id!(
1337 /// Opaque identifier for a policy impact diff artifact.
1338 PolicyImpactDiffId
1339);
1340
1341#[cfg(test)]
1342#[path = "ids_tests.rs"]
1343mod tests;