configuration/lexicon/data/metadata.data.json
configuration/lexicon/data/metadata.data.json is a file in GovLab Context. 161 lines of code and 0 definitions.
{
"category": "metadata-self-description-declarative-systems",
"records": [
{
"name": "Excessive Configuration",
"kind": "anti-pattern",
"definition": "Requiring explicit configuration for everything instead of relying on sensible conventions."
},
{
"name": "Hardcoded Behavior",
"kind": "anti-pattern",
"definition": "Hardcoding behavior in code instead of driving it from declarative metadata."
},
{
"name": "Hardcoded Registration",
"kind": "anti-pattern",
"definition": "Registering components with hardcoded wiring instead of declaring them in a manifest."
},
{
"name": "Hidden Runtime Behavior",
"kind": "anti-pattern",
"definition": "Behavior that is opaque at runtime because the system does not describe its own structure."
},
{
"name": "Implicit Capability",
"kind": "anti-pattern",
"definition": "Leaving what a component can do implicit and undiscoverable instead of declaring it."
},
{
"name": "Opaque API",
"kind": "anti-pattern",
"definition": "An API that does not describe itself, so clients must rely on external, out-of-band documentation."
},
{
"name": "Opaque Binary/Untyped Structures",
"kind": "anti-pattern",
"definition": "Using opaque binary or untyped data that carries no description of its own structure."
},
{
"name": "Client Generation",
"distinctFrom": [
{
"id": "lexicon:hateoas-style-navigation",
"reason": "Client generation builds client code from an API's self-description ahead of time, while hypermedia navigation follows the links each response returns."
}
],
"kind": "capability",
"definition": "The ability to generate client code automatically from an API's self-description."
},
{
"name": "Dynamic Processing",
"kind": "capability",
"definition": "The ability to process data generically by reading its self-describing structure."
},
{
"name": "HATEOAS-style Navigation",
"kind": "capability",
"definition": "The ability for clients to navigate an API by following links it returns in its responses."
},
{
"name": "Plugin Loading",
"kind": "capability",
"definition": "The ability to discover and load plugins declared in manifests at runtime."
},
{
"name": "Reduced Boilerplate",
"kind": "capability",
"definition": "The ability to avoid repetitive boilerplate by relying on conventions."
},
{
"name": "Runtime Configuration without Code Change",
"kind": "capability",
"definition": "The ability to change a system's behavior by editing configuration rather than code."
},
{
"name": "Manifest",
"kind": "artifact",
"definition": "A declarative document listing a component's capabilities and metadata."
},
{
"name": "Manifest Schema",
"kind": "artifact",
"definition": "A formal definition of the structure a manifest must follow."
},
{
"name": "Metadata Schema",
"kind": "artifact",
"definition": "A formal definition of the metadata fields that drive a system's behavior."
},
{
"name": "Explicit Semantics",
"kind": "constraint",
"definition": "The requirement that declarative configuration carry an explicit, defined meaning."
},
{
"name": "Stable Conventions",
"kind": "constraint",
"definition": "The requirement that the conventions a system relies on stay stable and well-known."
},
{
"name": "Declaration Drift",
"kind": "quality-attribute",
"definition": "The degree to which a declared capability set drifts out of sync with the actual behavior."
},
{
"name": "Dynamic Complexity",
"kind": "quality-attribute",
"definition": "The degree to which interpreting declarative configuration at runtime adds hidden dynamic complexity."
},
{
"name": "Explicitness",
"kind": "quality-attribute",
"definition": "The degree to which relying on conventions reduces the explicitness of how a system is configured."
},
{
"name": "Manifest Drift",
"kind": "quality-attribute",
"definition": "The degree to which a manifest drifts out of sync with the components it declares."
},
{
"name": "Metadata Drift",
"kind": "quality-attribute",
"definition": "The degree to which self-describing metadata drifts out of sync with the actual system."
},
{
"name": "Payload Verbosity",
"kind": "quality-attribute",
"definition": "The degree to which embedding self-description in responses enlarges their payloads."
},
{
"name": "Self-Description",
"kind": "quality-attribute",
"definition": "The degree to which a component exposes its own capabilities and structure for inspection."
},
{
"name": "Size Overhead",
"kind": "quality-attribute",
"definition": "The degree to which embedding structural descriptions in data increases its size."
},
{
"name": "Runtime Topology Report",
"kind": "technique",
"definition": "A technique for having a system report its loaded components and their bindings at startup."
},
{
"name": "Binding Decision Log",
"kind": "technique",
"definition": "A technique for logging which implementation was bound to each extension point and why."
},
{
"name": "Declare Capability",
"kind": "technique",
"definition": "A technique for having each component state in metadata what it provides and what it requires."
},
{
"name": "Unvalidated Metadata",
"kind": "anti-pattern",
"definition": "A defect in which metadata that drives behavior is read without being validated against a schema."
}
]
}