configuration/lexicon/data/event.data.json
configuration/lexicon/data/event.data.json is a file in GovLab Context. 440 lines of code and 0 definitions.
{
"category": "event-messaging-async",
"records": [
{
"name": "CRUD-Only State Persistence",
"kind": "anti-pattern",
"definition": "Persisting only current state via create-read-update-delete, discarding the history that event sourcing preserves."
},
{
"name": "Direct Event Handler Calls",
"kind": "anti-pattern",
"definition": "Invoking event handlers by direct method call, coupling emitter to handler and defeating the event bus."
},
{
"name": "Direct Point-to-Point Calls",
"kind": "anti-pattern",
"definition": "Wiring services together with direct point-to-point calls, coupling each sender to specific receivers."
},
{
"name": "Duplicate Side Effects",
"kind": "anti-pattern",
"definition": "Reprocessing a message so its side effects run more than once, corrupting state when not idempotent."
},
{
"name": "Global ACID Transaction",
"kind": "anti-pattern",
"definition": "Attempting a single ACID transaction spanning multiple distributed services, creating tight coupling and availability loss."
},
{
"name": "Hidden Temporal Coupling",
"kind": "anti-pattern",
"definition": "An undocumented ordering requirement between operations that must run in a specific sequence to work correctly."
},
{
"name": "In-Memory Direct Invocation",
"kind": "anti-pattern",
"definition": "Calling a component directly in-process where a durable queue is needed, losing buffering and delivery guarantees."
},
{
"name": "In-Place Mutation",
"kind": "anti-pattern",
"definition": "Overwriting existing records in place where an append-only log is required, destroying history."
},
{
"name": "Infinite Redelivery Loop",
"kind": "anti-pattern",
"definition": "Endlessly redelivering a failing message with no dead-letter path, blocking the queue indefinitely."
},
{
"name": "Infrastructure Events in Domain",
"kind": "anti-pattern",
"definition": "Leaking infrastructure or technical events into the domain model, polluting it with concerns it should not hold."
},
{
"name": "Internal Domain Event Leakage",
"kind": "anti-pattern",
"definition": "Exposing internal domain events to external consumers, coupling them to private model details."
},
{
"name": "Irreversible Side Effects",
"kind": "anti-pattern",
"definition": "Performing side effects that cannot be undone within a workflow that may need to roll back."
},
{
"name": "Mutable State Only",
"kind": "anti-pattern",
"definition": "Keeping only mutable current state with no event record, so past states and changes cannot be recovered."
},
{
"name": "Point-to-Point Coupling",
"kind": "anti-pattern",
"definition": "Coupling a sender directly to a specific receiver, so adding a consumer requires changing the sender."
},
{
"name": "Shared Database",
"distinctFrom": [
{
"id": "architecture:cyclic-deployment-dependency",
"reason": "A shared database couples services through their data, while a cyclic deployment dependency couples them through their release order."
}
],
"kind": "anti-pattern",
"definition": "Multiple services reading and writing one shared database, coupling them and destroying service autonomy."
},
{
"name": "Single Serial Consumer",
"kind": "anti-pattern",
"definition": "Processing a queue with one consumer in series, so throughput cannot scale with load."
},
{
"name": "Unified CRUD Model",
"kind": "anti-pattern",
"definition": "Using one shared model for both reads and writes, preventing each from being optimized for its purpose."
},
{
"name": "Broker/Event Bus",
"kind": "mechanism",
"definition": "A runtime intermediary that routes messages between publishers and subscribers."
},
{
"name": "Command/Query Separation",
"kind": "principle",
"definition": "Separating operations that change state from those that return data, so each method has a single purpose."
},
{
"name": "Consumer",
"kind": "mechanism",
"definition": "A component that receives and processes messages from a queue or topic."
},
{
"name": "Deduplication Key",
"kind": "artifact",
"definition": "A stable identifier attached to a message that lets a consumer detect and drop duplicates."
},
{
"name": "Event Contract",
"kind": "constraint",
"definition": "The agreed schema and semantics of an event that publishers and subscribers both honor."
},
{
"name": "Event Schema",
"kind": "artifact",
"definition": "A formal definition of the structure and fields of an event's payload."
},
{
"name": "Event Semantics",
"kind": "constraint",
"definition": "The agreed meaning of what an event represents and the conditions under which it is emitted."
},
{
"name": "Events",
"kind": "artifact",
"definition": "Records of things that have happened in a system, emitted for other components to react to."
},
{
"name": "Immutable Events",
"kind": "constraint",
"definition": "The requirement that recorded events never change once written, only be appended to."
},
{
"name": "Local Transaction",
"kind": "model",
"definition": "A transaction confined to a single service's own datastore, the atomic unit a saga or outbox composes."
},
{
"name": "Message Relay",
"kind": "mechanism",
"definition": "A component that reads pending messages from an outbox and publishes them to the broker."
},
{
"name": "Ordered Log",
"distinctFrom": [
{
"id": "lexicon:event-schema",
"reason": "An ordered log keeps records in write order, while an event schema defines what each record holds."
}
],
"kind": "artifact",
"definition": "An append-only sequence of records that preserves the order in which they were written."
},
{
"name": "Own Data",
"kind": "constraint",
"definition": "The requirement that each service alone own and control its data store."
},
{
"name": "Publisher",
"distinctFrom": [
{
"id": "lexicon:broker-event-bus",
"reason": "A publisher emits messages, while the broker routes them between publishers and subscribers."
},
{
"id": "lexicon:subscriber",
"reason": "A publisher sends to a topic, while a subscriber receives from it."
}
],
"kind": "mechanism",
"definition": "A component that emits messages to a topic or bus for subscribers to receive."
},
{
"name": "Reconciliation",
"kind": "activity",
"definition": "The activity of detecting and resolving divergence between replicas so they converge to a consistent state."
},
{
"name": "Reversible/Compensable Step",
"kind": "constraint",
"definition": "The requirement that each step in a distributed workflow can be undone by a compensating action."
},
{
"name": "Routing",
"kind": "capability",
"definition": "The ability to direct each message to its correct destination based on topic, key, or rule."
},
{
"name": "Subscriber",
"distinctFrom": [
{
"id": "lexicon:broker-event-bus",
"reason": "A subscriber receives a topic's messages, while the broker routes them to it."
}
],
"kind": "mechanism",
"definition": "A component that registers interest in a topic and receives its messages."
},
{
"name": "Subscriber Model",
"kind": "model",
"definition": "A representation of which consumers subscribe to which topics and how they receive messages."
},
{
"name": "User Expectations",
"kind": "constraint",
"definition": "The behavior users assume a system will exhibit, such as seeing their own writes immediately."
},
{
"name": "Asynchronous Processing",
"kind": "capability",
"definition": "The ability to handle work without blocking the caller, decoupling request from completion."
},
{
"name": "Atomic State Change + Message Publish",
"kind": "capability",
"definition": "The ability to commit a state change and publish its corresponding message as one atomic unit."
},
{
"name": "Consumer Elasticity",
"kind": "capability",
"definition": "The ability to add or remove consumers dynamically to match message volume."
},
{
"name": "Cross-Service Communication",
"kind": "capability",
"definition": "The ability for independent services to exchange information without direct coupling."
},
{
"name": "Decoupled Domain Reactions",
"kind": "capability",
"definition": "The ability for domain logic to react to events without the emitter knowing its consumers."
},
{
"name": "Decoupled Event Distribution",
"kind": "capability",
"definition": "The ability to distribute events to many consumers without the source depending on any of them."
},
{
"name": "Distributed Autonomy",
"kind": "capability",
"definition": "The ability for distributed nodes to operate and decide independently without central coordination."
},
{
"name": "Failure Recovery",
"kind": "capability",
"definition": "The ability to restore correct operation after a failure through compensation or retry."
},
{
"name": "Fan-Out Notification",
"kind": "capability",
"definition": "The ability to deliver one event to many interested subscribers at once."
},
{
"name": "Long-Running Transactions",
"kind": "capability",
"definition": "The ability to carry a business transaction across many steps and a long duration via compensation."
},
{
"name": "Parallel Message Processing",
"distinctFrom": [
{
"id": "lexicon:consumer-elasticity",
"reason": "Parallel message processing is several consumers working at once, while consumer elasticity is changing how many there are to match volume."
}
],
"kind": "capability",
"definition": "The ability for multiple consumers to process messages from the same source at once."
},
{
"name": "Poison-Message Quarantine",
"distinctFrom": [
{
"id": "lexicon:reprocessing-after-fix",
"reason": "Quarantine moves a failing message aside, while reprocessing after the fix sends it through again."
}
],
"kind": "capability",
"definition": "The ability to divert a repeatedly-failing message to a separate queue so it stops blocking others."
},
{
"name": "Read/Write Model Optimization",
"kind": "capability",
"definition": "The ability to shape read and write models independently for their differing access patterns."
},
{
"name": "Reprocessing After Fix",
"kind": "capability",
"definition": "The ability to reprocess quarantined messages once the underlying defect is fixed."
},
{
"name": "Safe Message Redelivery",
"kind": "capability",
"definition": "The ability to redeliver a message without causing duplicate effects, given idempotent handling."
},
{
"name": "Temporal Modeling",
"kind": "capability",
"definition": "The ability to model how state evolved over time by preserving each change as an event."
},
{
"name": "Temporal Queries",
"kind": "capability",
"definition": "The ability to ask what a system's state was at any past point in time."
},
{
"name": "Work Distribution",
"kind": "capability",
"definition": "The ability to spread units of work across many workers via a broker."
},
{
"name": "At-Least-Once Delivery Safety",
"kind": "quality-attribute",
"definition": "The degree to which a message is guaranteed to be delivered at least once, tolerating duplicates."
},
{
"name": "Event Reliability",
"kind": "quality-attribute",
"definition": "The degree to which events are guaranteed to be delivered despite failures."
},
{
"name": "Business Complexity",
"kind": "quality-attribute",
"definition": "The degree of domain intricacy that a coordination mechanism must accommodate."
},
{
"name": "Delivery Ordering",
"kind": "quality-attribute",
"definition": "The degree to which messages are delivered in a defined order, which broad fan-out can weaken."
},
{
"name": "Duplication with Domain Events",
"kind": "quality-attribute",
"definition": "The degree of overlap between integration events and domain events that must be kept in sync."
},
{
"name": "Event Granularity",
"kind": "quality-attribute",
"definition": "The degree of coarseness or fineness at which events are defined, trading detail against volume."
},
{
"name": "Event Storm / Traceability",
"kind": "quality-attribute",
"definition": "The degree to which a high volume of events makes end-to-end flows hard to trace."
},
{
"name": "Global Consistency",
"kind": "quality-attribute",
"definition": "The degree to which all nodes reflect the same state at once, which service autonomy gives up."
},
{
"name": "Immediate Consistency",
"kind": "quality-attribute",
"definition": "The degree to which a read reflects the latest write instantly, which asynchronous processing defers."
},
{
"name": "Operational Dependency",
"kind": "quality-attribute",
"definition": "The degree to which a system's operation depends on a message broker remaining available."
},
{
"name": "Query Complexity",
"kind": "quality-attribute",
"definition": "The degree of difficulty of answering queries when state is stored as an event history rather than current rows."
},
{
"name": "Relay Complexity",
"kind": "quality-attribute",
"definition": "The degree of added complexity of running a relay process that forwards messages from an outbox."
},
{
"name": "State Overhead",
"kind": "quality-attribute",
"definition": "The degree of extra state a consumer must retain to deduplicate or order messages."
},
{
"name": "Storage Growth",
"kind": "quality-attribute",
"definition": "The degree to which an append-only log's storage footprint grows unbounded over time."
},
{
"name": "Storage Volume",
"kind": "quality-attribute",
"definition": "The degree to which retaining a full event stream consumes large amounts of storage."
},
{
"name": "Strong Consistency",
"kind": "quality-attribute",
"definition": "The degree to which all reads see the latest write, which event-driven asynchrony relaxes."
},
{
"name": "Strong Immediate Consistency",
"kind": "quality-attribute",
"definition": "The degree to which every read reflects the most recent write without delay, which eventual consistency relaxes."
},
{
"name": "Workflow Complexity",
"kind": "quality-attribute",
"definition": "The degree of intricacy of coordinating a multi-step distributed workflow."
},
{
"name": "Query Projection",
"kind": "technique",
"definition": "A technique for maintaining a read model shaped for one query, updated from the writes it depends on."
},
{
"name": "Introduce Async Event",
"kind": "technique",
"definition": "A technique for replacing a synchronous call that need not complete in the request with an event a consumer handles later."
},
{
"name": "Own Data per Service",
"kind": "technique",
"definition": "A technique for giving each service its own store and letting others reach the data only through its contract."
},
{
"name": "Offset Tracking",
"kind": "technique",
"definition": "A technique for recording how far each consumer has read in a stream, so it resumes there and can replay from earlier."
},
{
"name": "Snapshot Compaction",
"kind": "technique",
"definition": "A technique for periodically storing a snapshot of state derived from a log, so readers replay only the events after it."
},
{
"name": "Non-Replayable Processing",
"kind": "anti-pattern",
"definition": "A defect in which consumed events cannot be read again, so a consumer cannot rebuild its state or recover from a fault."
}
]
}