# automation

> Every algorithm contract in this domain is listed with its position on the derivation loop, its intent and invariant, the flow it walks, its productions as a…

Page: Ontology · Algorithms
Canonical: https://banes-lab.com/ontology/algorithms#algo-domain-automation

Every algorithm contract in this domain is listed with its position on the derivation loop, its intent and invariant, the flow it walks, its productions as a grammar, what it composes and is composed by, which forces and principles it answers to, what grounds it and what it grounds, and an exemplar where the record carries one. The diagram shows what composes what inside the domain.

Relations diagram

What composes what inside this domain.

```mermaid
flowchart LR
n_static_to_dynamic_readiness["Static-to-Dynamic Readiness"]
n_runtime_neutral_automation_boundary["Runtime-Neutral Automation Boundary"]
n_automation_operation_mode["Automation Operation Mode"]
n_capability_degradation["Capability Degradation"]
n_automation_opportunity_detection["Automation Opportunity Detection"]
n_intentional_static_separation["Intentional Static Separation"]
n_breaking_point_calculation["Breaking Point Calculation"]
n_automation_priority_ordering["Automation Priority Ordering"]
n_convention_strength_analysis["Convention Strength Analysis"]
n_extension_interface_discovery["Extension Interface Discovery"]
n_scalability_projection["Scalability Projection"]
n_performance_aware_discovery_design["Performance-Aware Discovery Design"]
n_dynamic_extension_architecture["Dynamic Extension Architecture"]
n_centralized_reference_resolver["Centralized Reference Resolver"]
n_cache_invalidation_strategy["Cache Invalidation Strategy"]
n_manual_fallback_preservation["Manual Fallback Preservation"]
n_dynamic_failure_isolation["Dynamic Failure Isolation"]
n_entry_point_migration["Entry Point Migration"]
n_measured_vs_estimated_validation["Measured-vs-Estimated Validation"]
n_architecture_validation_before_persistence["Architecture Validation Before Persistence"]
n_knowledge_capture["Knowledge Capture"]
n_automation_session_report["Automation Session Report"]
n_automation_completion_status["Automation Completion Status"]
n_automation_kernel["Automation Kernel"]
n_automation_concern["<Automation Concern>"]
n_automation_kernel --> n_capability_degradation
n_automation_kernel --> n_scalability_projection
n_automation_kernel --> n_dynamic_extension_architecture
n_automation_kernel --> n_knowledge_capture
n_automation_kernel --> n_entry_point_migration
n_automation_kernel --> n_automation_completion_status
n_automation_kernel --> n_automation_opportunity_detection
n_automation_kernel --> n_convention_strength_analysis
n_automation_kernel --> n_intentional_static_separation
n_automation_kernel --> n_automation_priority_ordering
n_automation_kernel --> n_automation_operation_mode
n_automation_kernel --> n_architecture_validation_before_persistence
n_automation_kernel --> n_automation_session_report
```

### Static-to-Dynamic Readiness

- Stage: [intent](https://banes-lab.com/records/stage/intent.md)
- Axis: [teleology](https://banes-lab.com/records/reason/axis-teleology.md)
- Math type: [optimisation](https://banes-lab.com/records/reason/math-type-optimisation.md)
- Yields: boolean | ranking

Details

Intent
Detect static implementation patterns, classify whether they are intentional or problematic, measure maintainability pressure, verify convention strength, and automate only when stability or fallback exists.

Invariant
Static code is not debt by default; automation requires evidence that dynamism reduces maintenance risk without increasing fragility.

Flow

```text
StaticPattern → Classification → PressureMetric → ConventionStrength → Automate|RetainStatic|DesignFallback
```

Productions

```bnf
AutomationReadiness ::= <StaticPattern> "->" <OpportunityClassification> "->" <MaintainabilityAssessment> "->" <ConventionAssessment> "->" <AutomationDecision>
AutomationDecision ::= "automate" | "retain_static" | "formalize_convention_first" | "manual_fallback_required"
```

Composes
none

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md)

Grounds
none

Before

```text
A static list rewritten as dynamic discovery on sight, adding fragility for no gain.
```

After

```text
static pattern → classify intentional vs problematic → maintainability pressure + convention strength → {automate | retain static | formalize convention first}
```

### Runtime-Neutral Automation Boundary

- Stage: [orient](https://banes-lab.com/records/stage/orient.md)
- Axis: [ontology](https://banes-lab.com/records/reason/axis-ontology.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Express discovery, reading, searching, validation, persistence, and reporting as semantic operations, then delegate concrete mechanics to runtime adapters.

Invariant
Dynamic architecture must be portable across runtimes by separating automation intent from platform execution.

Flow

```text
SemanticVerb → AdapterCapability → RuntimeAction → Evidence
```

Productions

```bnf
RuntimeNeutralBoundary ::= <SemanticOperation> "->" <AdapterMapping> "->" <RuntimeExecution> "->" <EvidenceResult>
SemanticOperation ::= "DISCOVER_RESOURCES" | "READ_RESOURCE" | "SEARCH_CONTENT" | "ANALYZE_CONTENT" | "VALIDATE_ARTIFACT" | "PERSIST_ARTIFACT" | "REPORT_RESULT"
AdapterMapping ::= <CapabilityStatus> "," <RuntimeConstraint> "," <FallbackPolicy>
```

Composes
none

Forces
[modularity](https://banes-lab.com/records/force/modularity.md), [semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md)

Grounds
none

Before

```text
Automation logic hardcodes a runtime's glob and path, so it runs on one platform only.
```

After

```text
semantic op{DISCOVER/READ/SEARCH/VALIDATE/PERSIST} → adapter maps to the runtime → portable core, no platform mechanics inside
```

### Automation Operation Mode

- Stage: [constrain](https://banes-lab.com/records/stage/constrain.md)
- Axis: [teleology](https://banes-lab.com/records/reason/axis-teleology.md)
- Math type: [optimisation](https://banes-lab.com/records/reason/math-type-optimisation.md)
- Yields: boolean | ranking

Details

Intent
Detect operation mode, bind allowed actions, prohibit source mutation outside implementation mode, and emit analysis, design, implementation, or validation artifacts accordingly.

Invariant
Automation design and automation execution are separate contracts.

Flow

```text
DetectMode → BindPermissions → EnforceMutationGate → ExecuteAllowedScope → EmitArtifact
```

Productions

```bnf
AutomationMode ::= "analysis_only" | "analysis_and_design" | "implementation" | "validation_only"
ModeExecution ::= <AutomationMode> "->" <PermissionSet> "->" <AllowedArtifact>
PermissionSet ::= "read_only" | "design_only" | "write_authorized" | "validate_only"
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [state_transaction](https://banes-lab.com/records/force/state-transaction.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md)

Grounds
none

Before

```text
Analysis silently mutates source; a design run also implements.
```

After

```text
detect mode{analysis | design | implementation | validation} → bind permissions → mutation only in implementation mode → mode-legal artifact
```

### Capability Degradation

- Stage: [orient](https://banes-lab.com/records/stage/orient.md)
- Axis: [ontology](https://banes-lab.com/records/reason/axis-ontology.md)
- Math type: [set-theory](https://banes-lab.com/records/reason/math-type-set-theory.md)
- Yields: set | boolean

Details

Intent
Declare required capabilities, probe availability, emulate missing behavior where safe, disclose unavailable capability, and downgrade confidence or block dependent operations.

Invariant
Automation systems must not silently assume filesystem, execution, persistence, validation, or search capabilities.

Flow

```text
CapabilityRequirement → Probe → Available|Emulated|Unavailable → ConfidencePolicy
```

Productions

```bnf
CapabilityDegradation ::= <RequiredCapabilitySet> "->" <CapabilityProbeSet> "->" <CapabilityVerdict> "->" <ExecutionPolicy>
CapabilityVerdict ::= "full" | "degraded" | "blocked"
ExecutionPolicy ::= "execute" | "emulate" | "skip_with_disclosure" | "block"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md)

Grounds
none

Before

```text
Automation assumes it can execute and persist, then fails silently when it can't.
```

After

```text
required capabilities → probe → {full | degraded | blocked} → execute | emulate | skip-with-disclosure | block
```

### Automation Opportunity Detection

- Stage: [orient](https://banes-lab.com/records/stage/orient.md)
- Axis: [ontology](https://banes-lab.com/records/reason/axis-ontology.md)
- Math type: [set-theory](https://banes-lab.com/records/reason/math-type-set-theory.md)
- Yields: set | boolean

Details

Intent
Search target scope for manual registries, hardcoded references, static lists, and duplicated discovery logic; then classify each finding with count, location, role, and maintenance signal.

Invariant
Automation candidates emerge from repeated manual coordination points.

Flow

```text
TargetScope → DetectionProcedures → PatternGroups → ClassificationRegistry
```

Productions

```bnf
OpportunityDetection ::= <TargetScope> "->" <DetectionProcedureSet> "->" <PatternClassificationSet>
DetectionProcedureSet ::= "manual_registration" "," "hardcoded_reference" "," "static_list" "," "duplicated_discovery"
OpportunityClassification ::= <Location> "," <PatternType> "," <Count> "," <MaintenanceEvidence>
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [control_coordination](https://banes-lab.com/records/force/control-coordination.md)

Grounds
none

Before

```text
Automation targets guessed instead of found from repeated manual coordination points.
```

After

```text
scope → detect{manual registration, hardcoded reference, static list, duplicated discovery} → classify{location, type, count, maintenance signal}
```

### Intentional Static Separation

- Stage: [derive](https://banes-lab.com/records/stage/derive.md)
- Axis: [reasoning](https://banes-lab.com/records/reason/axis-reasoning.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
For each static pattern, compare size, frequency, stability, and risk; classify small or stable patterns as intentionally static candidates instead of automation debt.

Invariant
Keeping a static list may be correct when the domain is bounded and explicitness improves safety.

Flow

```text
StaticFinding → ScaleCheck → ChangeFrequencyCheck → RiskCheck → IntentionalStatic|AutomationCandidate
```

Productions

```bnf
StaticSeparation ::= <StaticFinding> "->" <ScaleMetric> "->" <MutationEvidence> "->" <RiskAssessment> "->" <StaticVerdict>
StaticVerdict ::= "intentionally_static_candidate" | "automation_candidate" | "needs_more_evidence"
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[modularity](https://banes-lab.com/records/force/modularity.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [domain_boundary](https://banes-lab.com/records/force/domain-boundary.md)

Grounds
none

Before

```text
A small, stable, bounded static list flagged as debt and automated away.
```

After

```text
static finding → scale + change-frequency + risk → {intentionally-static candidate | automation candidate | needs more evidence}
```

### Breaking Point Calculation

- Stage: [see](https://banes-lab.com/records/stage/see.md)
- Axis: [analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- Math type: [analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- Yields: operation

Details

Intent
Measure current item count, estimate growth rate, compare against cognitive and maintenance limits, compute time or units until threshold breach, and assign severity.

Invariant
Automation priority should be driven by scale pressure, not aesthetic preference.

Flow

```text
CurrentScale + GrowthRate + Limits → BreakingPoint → Severity
```

Productions

```bnf
BreakingPoint ::= <CurrentCount> "," <GrowthRate> "," <LimitSet> "->" <ThresholdProjection> "->" <PriorityRank>
LimitSet ::= "cognitive_limit" "," "maintenance_limit" "," "duplication_limit"
PriorityRank ::= "critical" | "high" | "medium" | "low"
```

Composes
none

Forces
[performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)

Grounds
none

Before

```text
Automation prioritized by aesthetic preference, not scale pressure.
```

After

```text
current count + growth rate + limits{cognitive, maintenance, duplication} → time until breach → severity
```

### Automation Priority Ordering

- Stage: [intent](https://banes-lab.com/records/stage/intent.md)
- Axis: [teleology](https://banes-lab.com/records/reason/axis-teleology.md)
- Math type: [optimisation](https://banes-lab.com/records/reason/math-type-optimisation.md)
- Yields: boolean | ranking

Details

Intent
Convert breaking points into urgency scores using severity, projected time-to-break, affected scope, and expected maintenance cost, then sort candidate migrations.

Invariant
Automation work should be sequenced by operational impact.

Flow

```text
BreakingPoints → UrgencyMetric → ImpactMetric → PriorityOrder
```

Productions

```bnf
PriorityOrdering ::= <BreakingPointSet> "->" <PriorityScoreSet> "->" <SortedAutomationBacklog>
PriorityScore ::= <PriorityRank> "+" <TimeToBreak> "+" <AffectedScope> "+" <MaintenanceCost>
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[causality_ordering](https://banes-lab.com/records/force/causality-ordering.md)

Grounds
[tel-priority](https://banes-lab.com/records/reason/node-tel-priority.md)

Before

```text
Migrations tackled in arbitrary order, low-impact first.
```

After

```text
breaking points → urgency{severity + time-to-break + scope + maintenance cost} → sorted backlog
```

### Convention Strength Analysis

- Stage: [see](https://banes-lab.com/records/stage/see.md)
- Axis: [analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- Math type: [probability](https://banes-lab.com/records/reason/math-type-probability.md)
- Yields: number[0,1]

Details

Intent
Discover related resources, extract naming tokens and organization patterns, calculate consistency percentages, and mark auto-discovery readiness only when convention strength passes threshold.

Invariant
Convention-based discovery is safe only when conventions are measurable.

Flow

```text
RelatedResources → TokenExtraction → ConsistencyMetric → Strength → Readiness
```

Productions

```bnf
ConventionStrength ::= <ResourceSet> "->" <ConventionSignalSet> "->" <ConsistencyScore> "->" <StrengthVerdict>
StrengthVerdict ::= "strong" | "moderate" | "weak"
ReadinessRule ::= "strong → auto_discovery_ready" | "moderate → formalize_first" | "weak → establish_convention_first"
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md)

Grounds
none

Before

```text
Auto-discovery built on a naming convention only 60% of files follow.
```

After

```text
related resources → naming tokens + organization → consistency % → {strong → auto-ready | moderate → formalize | weak → establish convention first}
```

### Extension Interface Discovery

- Stage: [derive](https://banes-lab.com/records/stage/derive.md)
- Axis: [reasoning](https://banes-lab.com/records/reason/axis-reasoning.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Search for inheritance, composition, shared method contracts, and shared schema contracts; group similar implementations; infer interface candidates when implementation count exceeds threshold.

Invariant
Dynamic discovery requires an explicit or inferable contract boundary.

Flow

```text
ImplementationSet → ContractSignals → InterfaceCandidate → ExtensionContract
```

Productions

```bnf
ExtensionInterfaceDiscovery ::= <ImplementationPatternSet> "->" <ContractEvidence> "->" <InterfaceCandidateSet>
ContractEvidence ::= "inheritance" | "composition" | "common_methods" | "common_schema"
InterfaceCandidate ::= <InterfaceName> "," <ImplementationCount> "," <RequiredContractEvidence>
```

Composes
none

Forces
[modularity](https://banes-lab.com/records/force/modularity.md), [contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md)

Grounds
none

Before

```text
Dynamic discovery attempted with no contract boundary to validate against.
```

After

```text
implementations → contract signals{inheritance, composition, common methods, common schema} → interface candidate when count exceeds threshold
```

### Scalability Projection

- Stage: [see](https://banes-lab.com/records/stage/see.md)
- Axis: [analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- Math type: [analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- Yields: operation

Details

Intent
Measure current resource counts, project tenfold and hundredfold growth, assess manual maintenance feasibility, and identify where dynamic discovery becomes necessary.

Invariant
Automation architecture should be evaluated against future scale, not only current scale.

Flow

```text
CurrentScale → 10xProjection → 100xProjection → ManualFeasibility → DiscoveryNeed
```

Productions

```bnf
ScalabilityProjection ::= <CurrentScale> "->" <GrowthScenarioSet> "->" <MaintenanceFeasibilitySet> "->" <AutomationNeed>
GrowthScenarioSet ::= "10x" | "100x"
AutomationNeed ::= "manual_ok" | "dynamic_recommended" | "dynamic_required"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)

Grounds
none

Before

```text
Automation judged against today's 5 items, not tomorrow's 500.
```

After

```text
current scale → 10x + 100x projection → manual feasibility → {manual ok | dynamic recommended | dynamic required}
```

### Performance-Aware Discovery Design

- Stage: [project](https://banes-lab.com/records/stage/project.md)
- Axis: [reasoning](https://banes-lab.com/records/reason/axis-reasoning.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Estimate discovery and loading cost, compare large-scale cost against performance targets, introduce caching only when justified, and record failure modes.

Invariant
Dynamic discovery must not hide runtime performance debt.

Flow

```text
ItemCount → DiscoveryCost → LoadingCost → CacheNeed → PerformanceVerdict
```

Productions

```bnf
DiscoveryPerformanceDesign ::= <ScaleMetric> "->" <CostEstimateSet> "->" <CacheDecision> "->" <FailureModeSet>
CostEstimateSet ::= "discovery_cost" "," "loading_cost" "," "memory_overhead"
CacheDecision ::= "cache_required" | "cache_not_required"
```

Composes
none

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)

Grounds
none

Before

```text
Dynamic discovery ships, hiding a per-startup scan cost that grows with scale.
```

After

```text
item count → {discovery cost, loading cost, memory} vs targets → cache only when justified → failure modes recorded
```

### Dynamic Extension Architecture

- Stage: [project](https://banes-lab.com/records/stage/project.md)
- Axis: [reasoning](https://banes-lab.com/records/reason/axis-reasoning.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Infer extension contracts, define discovery conventions, validate discovered implementations against the contract, preserve manual registration fallback, and report discovered, skipped, failed, and manual items.

Invariant
Dynamic loading must be contract-validated and observable.

Flow

```text
Contract → Discovery → Filter → Validate → Load|Skip → Report
```

Productions

```bnf
DynamicExtensionArchitecture ::= <ExtensionContract> "->" <DiscoveryMechanism> "->" <ContractValidation> "->" <LoadingPolicy> "->" <ObservabilityReport>
LoadingPolicy ::= "load_valid" | "skip_invalid" | "manual_override" | "isolate_failure"
ObservabilityReport ::= "discovered_count" "," "manual_count" "," "skipped_count" "," "failed_count"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md), [observability_traceability](https://banes-lab.com/records/force/observability-traceability.md)

Grounds
none

Before

```text
Implementations loaded dynamically with no contract validation, unobservable.
```

After

```text
contract → discovery → contract-validate → {load valid | skip invalid | manual override | isolate failure} → report{discovered, manual, skipped, failed}
```

### Centralized Reference Resolver

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [computation](https://banes-lab.com/records/reason/math-type-computation.md)
- Yields: procedure

Details

Intent
Group duplicated hardcoded references, derive resolver names, define scope-safe resolution rules, provide configuration override fallback, and map each old reference to a resolver migration.

Invariant
Hardcoded resource access should be centralized only through validated resolution boundaries.

Flow

```text
HardcodedReferenceGroup → Resolver → ScopeValidation → OverrideFallback → MigrationMap
```

Productions

```bnf
ReferenceResolver ::= <ReferenceGroup> "->" <ResolverDefinition> "->" <ScopePolicy> "->" <FallbackOverride> "->" <ReplacementMap>
ScopePolicy ::= "reject_outside_allowed_scope" | "require_explicit_approval_for_escape"
FallbackOverride ::= "configuration_override"
```

Composes
none

Forces
[modularity](https://banes-lab.com/records/force/modularity.md), [semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md), [architecture_evolution](https://banes-lab.com/records/force/architecture-evolution.md)

Grounds
none

Before

```text
The same hardcoded path duplicated at a dozen call sites.
```

After

```text
reference group → resolver → scope-safe rule → config override fallback → map each old reference to the resolver
```

### Cache Invalidation Strategy

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Define cache keys by scope, convention, adapter version, and implementation identity; invalidate by resource change, explicit request, time expiry, or implementation version change.

Invariant
Caching dynamic discovery is safe only when invalidation semantics are explicit.

Flow

```text
CacheSubject → CacheKey → Duration → InvalidationTrigger → Refresh
```

Productions

```bnf
CacheStrategy ::= <CacheSubject> "->" <CacheKey> "->" <CacheDuration> "->" <InvalidationPolicy>
CacheSubject ::= "discovery_results" | "loaded_extensions" | "reference_resolution"
InvalidationPolicy ::= "resource_change" | "explicit_invalidation" | "time_expiry" | "implementation_change"
```

Composes
none

Forces
[semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md)

Grounds
none

Before

```text
Discovery results cached with no invalidation, serving stale data forever.
```

After

```text
cache subject → key{scope, convention, adapter version, identity} → invalidate on{resource change, explicit, time, implementation change}
```

### Manual Fallback Preservation

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [computation](https://banes-lab.com/records/reason/math-type-computation.md)
- Yields: procedure

Details

Intent
Keep explicit registration paths for non-conforming or exceptional implementations, order manual entries deterministically, and report manual items separately from auto-discovered items.

Invariant
Automation should reduce manual maintenance, not remove escape hatches.

Flow

```text
AutoDiscovery → NonConformingItem → ManualRegistration → DeterministicMerge → Observability
```

Productions

```bnf
ManualFallback ::= <DiscoveredSet> "," <ManualSet> "->" <Validation> "->" <DeterministicMerge> "->" <FallbackReport>
ManualSet ::= <ExplicitRegistration> | <ExplicitRegistration> "," <ManualSet>
FallbackReport ::= "manual_items_listed_separately"
```

Composes
none

Forces
[resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md)

Grounds
none

Before

```text
Auto-discovery removes the escape hatch — a non-conforming item can't be registered.
```

After

```text
auto-discovery + manual registration for exceptions → deterministic merge → manual items reported separately
```

### Dynamic Failure Isolation

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
On individual discovery, loading, or validation failure, isolate the failing item, continue with valid items where safe, and report the failed item with reason.

Invariant
One bad extension must not collapse the whole dynamic system unless marked critical.

Flow

```text
ItemFailure → Isolate → ContinueSafeSubset → ReportFailure
```

Productions

```bnf
FailureIsolation ::= <ExtensionItem> "->" <FailureType> "->" <IsolationPolicy> "->" <ContinuationPolicy> "->" <FailureReport>
FailureType ::= "discovery_failure" | "loading_failure" | "validation_failure" | "execution_failure"
ContinuationPolicy ::= "continue" | "continue_with_warning" | "halt_if_systemic_or_critical"
```

Composes
none

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md)

Grounds
none

Before

```text
One bad extension crashes the whole dynamic system.
```

After

```text
item failure{discovery | loading | validation} → isolate the item → continue with valid ones → report the failure; halt only if systemic or critical
```

### Entry Point Migration

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [computation](https://banes-lab.com/records/reason/math-type-computation.md)
- Yields: procedure

Details

Intent
Locate composition roots, identify manual registrations and hardcoded references, compose updates that use discovery registries and centralized resolvers, and apply only in implementation mode.

Invariant
Dynamic architecture takes effect at composition boundaries.

Flow

```text
CompositionRoot → StaticPatternScan → UpdatePlan → Validate → ApplyOrPlan
```

Productions

```bnf
EntryPointMigration ::= <CompositionRootSet> "->" <StaticPatternSet> "->" <EntryPointUpdate> "->" <Validation> "->" <PersistencePolicy>
PersistencePolicy ::= "persist_only_in_implementation_mode" | "emit_plan_only"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[modularity](https://banes-lab.com/records/force/modularity.md), [semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [architecture_evolution](https://banes-lab.com/records/force/architecture-evolution.md)

Grounds
none

Before

```text
Discovery registries built but the composition root still hardcodes registrations.
```

After

```text
composition roots → scan static patterns → update to discovery + resolver → validate → persist only in implementation mode
```

### Measured-vs-Estimated Validation

- Stage: [verify](https://banes-lab.com/records/stage/verify.md)
- Axis: [verification](https://banes-lab.com/records/reason/axis-verification.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Run validation when execution is available; otherwise estimate from static evidence, label the result as estimated, and never report estimated performance as measured.

Invariant
Validation truthfulness requires provenance on every metric.

Flow

```text
ValidationNeed → CanMeasure? → MeasuredResult|EstimatedResult → ProvenanceLabel
```

Productions

```bnf
ValidationProvenance ::= <ValidationCheck> "->" <CapabilityCheck> "->" <ValidationResult> "->" <Provenance>
Provenance ::= "measured" | "estimated" | "unavailable"
Rule ::= "estimated != measured"
```

Composes
none

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)

Grounds
none

Before

```text
An estimated performance number reported as if it were measured.
```

After

```text
validation need → can measure? → {measured | estimated (labeled)} → estimated is never reported as measured
```

### Architecture Validation Before Persistence

- Stage: [verify](https://banes-lab.com/records/stage/verify.md)
- Axis: [verification](https://banes-lab.com/records/reason/axis-verification.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Validate generated contracts, registries, resolvers, plans, and entry point updates against schemas and architectural rules before saving or modifying any artifact.

Invariant
Generated architecture must satisfy structure before it becomes state.

Flow

```text
GeneratedArtifact → SchemaValidation → ArchitectureValidation → Persist|Reject
```

Productions

```bnf
PrePersistenceValidation ::= <GeneratedArtifact> "->" <SchemaCheck> "->" <ArchitectureCheck> "->" <PersistenceDecision>
PersistenceDecision ::= "persist" | "reject" | "emit_unpersisted_artifact"
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md)

Grounds
none

Before

```text
A generated resolver saved before it is checked against the architecture rules.
```

After

```text
generated artifact → schema check → architecture check → {persist | reject | emit unpersisted}
```

### Knowledge Capture

- Stage: [act](https://banes-lab.com/records/stage/act.md)
- Axis: [formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- Math type: [computation](https://banes-lab.com/records/reason/math-type-computation.md)
- Yields: procedure

Details

Intent
Load or initialize the automation knowledge base, merge new detections, conventions, scalability concerns, architecture designs, migration history, and validation outcomes, then persist when capability exists.

Invariant
Automation systems improve when each session updates durable architectural memory.

Flow

```text
SessionFindings → KnowledgeMerge → PersistenceCheck → Store|ReportPreparedUpdate
```

Productions

```bnf
KnowledgeCapture ::= <KnowledgeBase> "," <SessionFindings> "->" <MergedKnowledge> "->" <KnowledgePersistenceStatus>
SessionFindings ::= <PatternClassifications> "," <ConventionReport> "," <ScalabilityReport> "," <ArchitectureDesign> "," <MigrationStatus>
KnowledgePersistenceStatus ::= "persisted" | "prepared_not_persisted"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md), [architecture_evolution](https://banes-lab.com/records/force/architecture-evolution.md)

Grounds
none

Before

```text
Each automation session forgets the last — the same analysis re-run.
```

After

```text
knowledge base + session findings → merge{detections, conventions, scale, designs, migration, validation} → persist when capability exists
```

### Automation Session Report

- Stage: [commit](https://banes-lab.com/records/stage/commit.md)
- Axis: [representation](https://banes-lab.com/records/reason/axis-representation.md)
- Math type: [information-theory](https://banes-lab.com/records/reason/math-type-information-theory.md)
- Yields: hash | novelty-score

Details

Intent
Summarize detected patterns, convention readiness, scalability pressure, dynamic architecture, generated artifacts, implementation status, measured versus estimated validation, and limitations.

Invariant
Automation reports must separate design intent from applied implementation and disclose degraded capability.

Flow

```text
SessionArtifacts → Metrics → ValidationProvenance → Limitations → UserReport
```

Productions

```bnf
AutomationReport ::= <DetectionSummary> "," <ConventionSummary> "," <ScalabilitySummary> "," <ArchitectureSummary> "," <ImplementationSummary> "," <PerformanceValidationSummary> "," <KnowledgeUpdateSummary> "," <Limitations>
```

Composes
none

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)

Grounds
none

Before

```text
A report that conflates the design intent with what was applied.
```

After

```text
session → {detection, convention, scale, architecture, implementation, measured-vs-estimated validation, limitations} → report separating design from applied
```

### Automation Completion Status

- Stage: [terminate](https://banes-lab.com/records/stage/terminate.md)
- Axis: [termination](https://banes-lab.com/records/reason/axis-termination.md)
- Math type: [logic](https://banes-lab.com/records/reason/math-type-logic.md)
- Yields: boolean

Details

Intent
Mark the static-to-dynamic automation complete only when convention strength passed, a manual fallback is preserved, performance and architecture validation passed with measured provenance, and any degraded capability is disclosed; otherwise report planned-only or blocked.

Invariant
Automation completion is a verified terminal state — never a claim while convention, fallback, validation, or capability evidence is absent.

Flow

```text
CompletionCriteria → EvidenceCheck → CapabilityDisclosure → Complete|PlannedOnly|Blocked
```

Productions

```bnf
AutomationCompletionStatus ::= <CompletionCriteriaSet> "->" <EvidenceSet> "->" <CompletionVerdict>
CompletionVerdict ::= "automation_complete" | "planned_only" | "blocked"
```

Composes
none

Composed by
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Named in the derivation of
[Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)

Forces
[correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [control_coordination](https://banes-lab.com/records/force/control-coordination.md)

Grounds
[ter-stop](https://banes-lab.com/records/reason/node-ter-stop.md)

Before

```text
'Automated' declared while the convention was never formalized, no fallback was preserved, and the validation was estimated not measured.
```

After

```text
convention strong + fallback preserved + performance validated + architecture validated + capability disclosed → complete; else planned_only | blocked
```

### Automation Kernel

- Math type: [computation](https://banes-lab.com/records/reason/math-type-computation.md)
- Yields: procedure

Details

Intent
Load configuration, verify capabilities, initialize knowledge, detect static patterns, classify automation opportunity, analyze conventions, assess scale and performance, design dynamic architecture, optionally implement, validate, update knowledge, and report.

Invariant
Static-to-dynamic refactoring is a gated evidence pipeline that only automates when convention, fallback, performance, and validation contracts are satisfied.

Flow

```text
Init → Capabilities → Detect → Classify → Conventions → Scale → Design → Implement? → Validate → Knowledge → Report
```

Productions

```bnf
AutomationKernel ::= <Initialization> "->" <CapabilityDegradation> "->" <OpportunityDetection> "->" <StaticSeparation> "->" <BreakingPoint> "->" <ConventionStrength> "->" <ScalabilityProjection> "->" <DynamicExtensionArchitecture> "->" <ReferenceResolver> "->" <OptionalImplementation> "->" <ValidationProvenance> "->" <KnowledgeCapture> "->" <AutomationReport>
OptionalImplementation ::= "skip_unless_implementation_mode" | <EntryPointMigration>
```

Composes
[Capability Degradation](https://banes-lab.com/records/algo/capability-degradation.md), [Scalability Projection](https://banes-lab.com/records/algo/scalability-projection.md), [Dynamic Extension Architecture](https://banes-lab.com/records/algo/dynamic-extension-architecture.md), [Knowledge Capture](https://banes-lab.com/records/algo/knowledge-capture.md), [Entry Point Migration](https://banes-lab.com/records/algo/entry-point-migration.md), [Automation Completion Status](https://banes-lab.com/records/algo/automation-completion-status.md)

Forces
[contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md), [streaming_dataflow](https://banes-lab.com/records/force/streaming-dataflow.md)

Grounds
[derivation-loop](https://banes-lab.com/ontology/reasoning/reason-loop-derivation-loop.md)

Derivation map

orient
[Automation Opportunity Detection](https://banes-lab.com/records/algo/automation-opportunity-detection.md)

see
[Convention Strength Analysis](https://banes-lab.com/records/algo/convention-strength-analysis.md)

derive
[Intentional Static Separation](https://banes-lab.com/records/algo/intentional-static-separation.md)

intent
[Automation Priority Ordering](https://banes-lab.com/records/algo/automation-priority-ordering.md)

constrain
[Automation Operation Mode](https://banes-lab.com/records/algo/automation-operation-mode.md)

project
[Dynamic Extension Architecture](https://banes-lab.com/records/algo/dynamic-extension-architecture.md)

act
[Entry Point Migration](https://banes-lab.com/records/algo/entry-point-migration.md)

verify
[Architecture Validation Before Persistence](https://banes-lab.com/records/algo/architecture-validation-before-persistence.md)

commit
[Automation Session Report](https://banes-lab.com/records/algo/automation-session-report.md)

terminate
[Automation Completion Status](https://banes-lab.com/records/algo/automation-completion-status.md)

Before

```text
A static pattern rewritten dynamic by intuition, with no convention, fallback, or validation.
```

After

```text
init → capabilities → detect → classify → conventions → scale → design → optional implement → validate → knowledge → report
```

### <Automation Concern>

- Meta record

Details

Intent
<Detect static coordination point> → <Classify intentional vs problematic> → <Measure scale pressure> → <Verify convention strength> → <Design dynamic contract> → <Preserve fallback> → <Validate performance and architecture> → <Capture knowledge>

Invariant
Any static implementation should become dynamic only when the domain has stable conventions, bounded failure modes, observable discovery, and safe manual fallback.

Flow

```text
Static → Evidence → Convention → Contract → Discovery → Fallback → Validation → Memory
```

Productions

```bnf
AutomationConcern ::= <StaticPattern> "->" <EvidenceClassification> "->" <ConventionReadiness> "->" <DynamicArchitecture> "->" <FallbackPolicy> "->" <PerformanceValidation> "->" <KnowledgeUpdate> "->" <Report>
DynamicArchitecture ::= <ExtensionContract> "," <DiscoveryMechanism> "," <CentralizedResolver> "," <CachingPolicy> "," <FailureIsolation>
```

Composes
none

Forces
[contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md), [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md), [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md), [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md), [observability_traceability](https://banes-lab.com/records/force/observability-traceability.md), [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md), [domain_boundary](https://banes-lab.com/records/force/domain-boundary.md), [control_coordination](https://banes-lab.com/records/force/control-coordination.md)

Grounds
none

## Links to

- [Intent](https://banes-lab.com/records/stage/intent.md)
- [Teleology](https://banes-lab.com/records/reason/axis-teleology.md)
- [Optimisation](https://banes-lab.com/records/reason/math-type-optimisation.md)
- [runtime_extensibility](https://banes-lab.com/records/force/runtime-extensibility.md)
- [correctness_verification](https://banes-lab.com/records/force/correctness-verification.md)
- [resilience_recovery](https://banes-lab.com/records/force/resilience-recovery.md)
- [Orient](https://banes-lab.com/records/stage/orient.md)
- [Ontology](https://banes-lab.com/records/reason/axis-ontology.md)
- [Logic](https://banes-lab.com/records/reason/math-type-logic.md)
- [modularity](https://banes-lab.com/records/force/modularity.md)
- [semantic_consistency](https://banes-lab.com/records/force/semantic-consistency.md)
- [Constrain](https://banes-lab.com/records/stage/constrain.md)
- [Automation Kernel](https://banes-lab.com/records/algo/automation-kernel.md)
- [contract_compatibility](https://banes-lab.com/records/force/contract-compatibility.md)
- [state_transaction](https://banes-lab.com/records/force/state-transaction.md)
- [Set Theory](https://banes-lab.com/records/reason/math-type-set-theory.md)
- [control_coordination](https://banes-lab.com/records/force/control-coordination.md)
- [Derive](https://banes-lab.com/records/stage/derive.md)
- [Reasoning](https://banes-lab.com/records/reason/axis-reasoning.md)
- [domain_boundary](https://banes-lab.com/records/force/domain-boundary.md)
- [See](https://banes-lab.com/records/stage/see.md)
- [Analysis](https://banes-lab.com/records/reason/axis-analysis.md)
- [performance_scaling](https://banes-lab.com/records/force/performance-scaling.md)
- [causality_ordering](https://banes-lab.com/records/force/causality-ordering.md)
- [Tel Priority](https://banes-lab.com/records/reason/node-tel-priority.md)
- [Probability](https://banes-lab.com/records/reason/math-type-probability.md)
- [Project](https://banes-lab.com/records/stage/project.md)
- [observability_traceability](https://banes-lab.com/records/force/observability-traceability.md)
- [Act](https://banes-lab.com/records/stage/act.md)
- [Formalisation](https://banes-lab.com/records/reason/axis-formalisation.md)
- [Computation](https://banes-lab.com/records/reason/math-type-computation.md)
- [architecture_evolution](https://banes-lab.com/records/force/architecture-evolution.md)
- [Verify](https://banes-lab.com/records/stage/verify.md)
- [Verification](https://banes-lab.com/records/reason/axis-verification.md)
- [Commit](https://banes-lab.com/records/stage/commit.md)
- [Representation](https://banes-lab.com/records/reason/axis-representation.md)
- [Information Theory](https://banes-lab.com/records/reason/math-type-information-theory.md)
- [Terminate](https://banes-lab.com/records/stage/terminate.md)
- [Termination](https://banes-lab.com/records/reason/axis-termination.md)
- [Ter Stop](https://banes-lab.com/records/reason/node-ter-stop.md)
- [Capability Degradation](https://banes-lab.com/records/algo/capability-degradation.md)
- [Scalability Projection](https://banes-lab.com/records/algo/scalability-projection.md)
- [Dynamic Extension Architecture](https://banes-lab.com/records/algo/dynamic-extension-architecture.md)
- [Knowledge Capture](https://banes-lab.com/records/algo/knowledge-capture.md)
- [Entry Point Migration](https://banes-lab.com/records/algo/entry-point-migration.md)
- [Automation Completion Status](https://banes-lab.com/records/algo/automation-completion-status.md)
- [streaming_dataflow](https://banes-lab.com/records/force/streaming-dataflow.md)
- [The derivation loop](https://banes-lab.com/ontology/reasoning/reason-loop-derivation-loop.md)
- [Automation Opportunity Detection](https://banes-lab.com/records/algo/automation-opportunity-detection.md)
- [Convention Strength Analysis](https://banes-lab.com/records/algo/convention-strength-analysis.md)
- [Intentional Static Separation](https://banes-lab.com/records/algo/intentional-static-separation.md)
- [Automation Priority Ordering](https://banes-lab.com/records/algo/automation-priority-ordering.md)
- [Automation Operation Mode](https://banes-lab.com/records/algo/automation-operation-mode.md)
- [Architecture Validation Before Persistence](https://banes-lab.com/records/algo/architecture-validation-before-persistence.md)
- [Automation Session Report](https://banes-lab.com/records/algo/automation-session-report.md)
