Phase 0: Event taxonomy v0 #49
No reviewers
Labels
No labels
bug
cli
core
docs
event
experiment
figure
invariant
metrics
oracle
phase-0
phase-1
phase-2
phase-3
phase-4
phase-5
phase-6
provenance
revocation
tests
workload
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erikinkinen/AES!49
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "0-event-taxonomy-v0"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #7
Summary
This PR introduces the Phase 0 Event Taxonomy for the AES. It establishes a foundational type system for representing all authority-graph-modifying operations, providing a formal specification for how the authority graph evolves through discrete events.
The taxonomy defines 9 event types across 5 conceptual categories: subject lifecycle, object lifecycle, capability edge lifecycle, capability derivation, and rights attenuation. Each event type has an associated payload structure with explicitly documented preconditions and postconditions, ensuring clear operational semantics for graph transformations.
This work is essential for Phase 0 as it provides the vocabulary needed to describe, validate, and reason about authority graph operations throughout the simulation, metrics collection, and eventual I/O subsystems.
Scope
Included
EventTypeenum with 9 Phase 0 event categoriesCreateSubjectPayload/DestroySubjectPayload(subject lifecycle)CreateObjectPayload/DestroyObjectPayload(object lifecycle)CreateCapPayload/DeleteCapPayload(capability edge management)DelegateCapPayload(capability derivation with optional attenuation)ReduceRightsPayload(rights attenuation on existing edges)UseCapPayload(capability usage tracking, reserved for future phases)Explicitly excluded
std::variant-based unified Event type (reserved for future PR)Design intent
The event taxonomy serves as the interface contract between different subsystems of AES:
Separation of concerns: Events describe what should happen, not how to make it happen. The actual graph mutation logic remains in separate application/validation layers.
Explicit invariant documentation: Each payload structure documents its preconditions and postconditions directly in code comments, making the operational semantics self-documenting and serving as executable specifications for future validation logic.
Type safety: Using distinct payload structures (rather than a generalized event structure) ensures compile-time correctness and makes impossible states unrepresentable.
Trivial copyability: All payload structures are trivially copyable, enabling efficient serialization, transmission, and storage without complex memory management.
Rights algebra foundation: The taxonomy explicitly encodes subset relationships for delegation and attenuation, establishing the formal basis for rights reasoning that will be validated in future PRs.
Phase discipline
Phase 0 Baseline
This PR belongs entirely to Phase 0 and establishes the foundational event vocabulary. Key phase discipline considerations:
Reserved for future phases:
UseCapPayloadhas no graph effect in Phase 0 but is included to reserve the event type for future provenance/audit functionality. This allows Phase 0 code to generateUseCapevents without requiring implementation of the tracking infrastructure.No backward compatibility burden: As a Phase 0 introduction, this taxonomy can establish conventions without legacy constraints. Future phases may extend the taxonomy with additional event types but should not modify these foundational definitions.
Delegation semantics:
DelegateCapis included in Phase 0 even though full delegation semantics may be refined in later phases, because it's essential for basic capability derivation scenarios.Extensibility: The enum-based design allows future phases to add new
EventTypevalues without breaking existing event handling code.Verification
Notes
Review focus areas:
Precondition/postcondition accuracy: Verify that the documented invariants correctly capture the intended semantics of each event type.
Rights subset semantics: Confirm that
DelegateCapPayloadandReduceRightsPayloadcorrectly encode the subset relationship constraints.Naming consistency: Ensure event type names and payload field names align with the existing AES terminology (subject, object, capability edge).
Reserved fields: Note that
UseCapPayloadis intentionally minimal; future phases will extend this with provenance tracking fields.Known limitations:
This PR defines the event types but does not implement event application logic. That will come in a follow-up PR that adds event validation and graph mutation methods.
There is no unified
Eventvariant type yet. A future PR will addusing Event = std::variant<CreateSubjectPayload, ...>to enable polymorphic event handling.Follow-up work planned:
Eventvariant type with type-safe visitation support