Architecture ============ Overview -------- ``teksi_hooks`` is composed of several independent layers which transform configuration into executable runtime behaviour. :: Configuration | v Parsers | v Models | v Resolvers | v Evaluators | v Capabilities | v Application Hook execution builds on top of these same components. :: Application | v HookHandler | v Hook | v HookContext | v Capabilities Components ---------- Models ^^^^^^ Models define the framework contracts and value objects. Examples include: * Rights definitions * Validation definitions * Findings * Object identifiers (``Oid``) * Capability contracts Models are intentionally lightweight and independent of application-specific implementations. Parsers ^^^^^^^ Parsers convert external configuration into typed model definitions. Examples include: * RightsParser * ProviderRightsParser * WildcardRightsParser Parsers validate structure but do not resolve inheritance, defaults or cross-references. Resolvers ^^^^^^^^^ Resolvers transform parsed definitions into fully resolved runtime configurations. Typical responsibilities include: * Inheritance resolution * Default application * Rule expansion * Cross-reference resolution Evaluators ^^^^^^^^^^ Evaluators apply runtime logic against resolved definitions. Examples include: * Rights evaluation * Validation evaluation * State transition evaluation Evaluators produce findings rather than directly modifying application state. Capabilities ^^^^^^^^^^^^ Capabilities provide services to framework components and hooks. Examples include: * Metadata lookup * Relationship resolution * Persistence services * Application integrations The framework depends only on capability contracts and never on concrete implementations. HookContext ^^^^^^^^^^^ The hook context provides runtime access to: * Parameters * Logging * Capabilities It forms the boundary between the framework and the hosting application. Hook ^^^^ A hook implements workflow logic and declares its required capabilities. Hooks orchestrate framework functionality but should not construct services or manage infrastructure. HookHandler ^^^^^^^^^^^ The hook handler is responsible for: * Loading hook modules * Validating hook contracts * Verifying capability requirements * Executing hooks * Managing hook lifecycle Application ^^^^^^^^^^^ The hosting application composes the framework by: * Providing capabilities * Loading configuration * Creating hook contexts * Executing hooks * Handling persistence and integration concerns The framework itself does not depend on any specific business domain, application, database or external service.