Parent doctrine: #64
System program: #66
Final hostile gate: #67
Edge differentiation: 01rabbit/Azazel-Edge#391
Implementation baseline: 01rabbit/Azazel-Edge#400
Purpose
Insert the missing Architecture Stabilization / Detailed Design gate between the already-implemented M.I.O. Cognitive Plane and the much broader series-wide Active Cyber Defense research program.
The next-generation program is intentionally ambitious. It must not be implemented by directly coding #392–#399 in sequence while interfaces, state ownership, migration, and failure semantics are still only conceptual.
This gate answers one question first:
Can the current working Azazel/M.I.O. architecture be evolved into the target architecture through small reversible vertical slices without replacing the existing deterministic decision/execution path?
Terminology correction
For new design and implementation work, use Deception / Azazel-Deception as the component name. Do not use AZ-06 as the primary architecture term in new contracts/docs/issues. Historical issues/docs may retain the old designation as provenance until explicitly migrated.
Current implementation anchors
M.I.O. foundation
Current Edge code already has bounded contracts/runtime for:
MioSituationFrame;
MioHypothesis;
MioEvidenceGap;
- typed Capability Broker;
- deterministic Grounding Validator;
- bounded
ReasoningState / BoundedReasoningLoop;
- Reasoning Playbooks/context compiler;
- reasoning trace/replay/evaluation helpers.
Deterministic authority/runtime reality
Current repository contains both:
py/azazel_edge/arbiter/action.py::ActionArbiter, a deterministic decision implementation; and
- executable Rust
decide_defense() -> maybe_enforce() -> EnforcementOutcome logic in rust/azazel-edge-core/src/main.rs.
Therefore no design may call the Python ActionArbiter the sole live execution truth until wiring/unification is proven. #400 consumes existing Rust execution facts without introducing a second executor or authority.
Existing execution/evidence substrates
- current Rust throttle/redirect/isolate enforcement plans and
EnforcementOutcome;
- redirect/OpenCanary/Deception integration work;
- Edge decision/audit/provenance;
- Edge -> Knowledge reaction/outcome export work;
- Knowledge Behavioral CTI/reaction history;
- Deception package/lifecycle/isolation/reset foundation.
Non-negotiable migration rule
Do not replace the existing hot decision loop. Wrap and observe it first.
Canonical observational chain is now locked by Edge #400:
ActionDecision / DefensiveDecision
-> ActionExecutionReceipt
-> AppliedMechanism
-> OutcomeRecord
-> TacticalEffectAssessment
These are different facts. Action != Mechanism != Outcome != Tactical Effect.
Target migration pattern:
CURRENT
Evidence -> current decision path -> concrete execution -> audit/log
STEP 1: shadow execution/mechanism evidence
same current path
-> normalize provider execution facts into ActionExecutionReceipt
-> independently represent AppliedMechanism
-> no live authority change
STEP 2: outcome evidence
same current path
-> bounded before/after observations
-> OutcomeRecord with telemetry coverage/confounders/causal support
-> optional Knowledge export outside hot path
STEP 3: tactical effect assessment
verified mechanism + policy-owned objective + outcome evidence
-> deterministic TacticalEffectAssessment
-> no `throttle=DELAY` or `redirect=DIVERSION` shortcut
STEP 4: shadow strategy
proven facts / deterministic eligible candidates
-> M.I.O. comparison/counterfactual in shadow
-> no live influence
STEP 5: bounded advisory influence only after gates
M.I.O. recommendation
-> deterministic validation/policy
-> existing authoritative decision path
At every step, feature-off behavior must remain decision-equivalent to the pre-migration baseline.
Detailed-design packages
DD0 — Current-to-target traceability
Owner: Edge #400
Produce an exact matrix:
- current module/type/API;
- current authority;
- target concept;
- reuse/extend/replace decision;
- migration adapter;
- compatibility lifetime;
- rollback behavior;
- owning repo.
No concept may proceed if its current implementation anchor is unknown.
DD1 — Identity, authority, and lifecycle model
Define canonical non-confusable identities/relationships for:
- incident/trace;
- M.I.O. reasoning cycle/frame/hypothesis;
- authoritative/local decision;
- action/execution receipt;
- applied mechanism;
- policy-owned effect objective;
- reaction/outcome observation;
- tactical effect assessment;
- Deception presentation/lifecycle;
- Knowledge trajectory;
- replay/experiment run.
For each type define:
- who creates it;
- who may mutate it;
- whether it is fact/advisory/authority;
- freshness/expiry;
- persistence/retention;
- invalid/stale behavior.
DD2 — Vertical Slice A: prove DELAY without AI
First executable proof. Do not require Belief, Council, Terrain adaptation, or multi-model reasoning.
recorded/live test evidence
-> current deterministic Edge decision (`throttle` where current policy selects it)
-> existing execution provider
-> ActionExecutionReceipt
-> independently verified TRAFFIC_SHAPING AppliedMechanism
-> bounded pre/post OutcomeRecord
-> TacticalEffectAssessment(DELAY) only if objective, mechanism, correlation, causal evidence and guardrails support it
-> optional Knowledge fact export
-> replay identical evidence bundle
throttle itself is not DELAY evidence. Current Rust throttle is an interface-root qdisc and must be represented truthfully as TRAFFIC_SHAPING with interface scope. If an independently verified postcondition and outcome do not support DELAY, the result remains inconclusive/unsupported.
Success criteria:
- same existing action behavior;
- no new authority;
- complete provenance chain;
- measurable outcome/confounders;
- uncalibrated confidence remains null rather than invented;
- M.I.O. completely removable;
- Knowledge completely removable from hot path.
If this cannot be made robust, stop the larger architecture.
DD3 — Vertical Slice B: REDIRECTION + Deception Presented Terrain
Only after Slice A works.
existing deterministic redirect decision
-> current execution provider
-> REDIRECTION AppliedMechanism only when postcondition is independently verified
-> valid Deception materialization / PresentedTerrainRef
-> interaction/reaction facts
-> termination/reset proof
-> OutcomeRecord
-> tactical DIVERSION assessment only when effect-specific evidence rules exist
-> Knowledge fact export
-> replay
No adaptive terrain transition in the first slice. Static coherent Deception is the baseline. A redirect command or decoy interaction alone is not proof that the adversary believed the deception or that diversion succeeded.
DD4 — M.I.O. strategic overlay
Only after DD2/DD3 data contracts are proven.
M.I.O. consumes:
- SituationFrame;
- current deterministic eligible effect candidates;
- Tempo/Outcome history;
- Real/Presented Terrain facts;
- Belief hypotheses.
M.I.O. outputs only:
- comparative assessment;
- assumptions/uncertainty;
- expected observations;
- preferred eligible effect ref(s);
- dissent/limitations.
It does not create target scope, provider commands, Deception transitions, canonical execution/outcome facts, or authority tokens.
DD5 — Council/co-adaptation
Council and Asurada-style team memory are deliberately last. They cannot be required to prove the core Active Defense loop.
Required sequence diagrams
Detailed design must include at least:
- current deterministic action/execution path;
- Slice A execution/mechanism/outcome/DELAY assessment path;
- Slice B REDIRECTION/Deception outcome path;
- M.I.O. shadow comparison path;
- Knowledge unavailable path;
- Deception unavailable path;
- M.I.O./model unavailable path;
- stale/superseded trace path;
- rollback/release/termination path;
- replay/evaluation path.
Failure semantics
Every cross-series call must define:
- timeout;
- retry/no-retry;
- idempotency key;
- queue bound;
- stale cutoff;
- cancellation/supersession;
- partial-write behavior;
- reboot recovery;
- clock uncertainty;
- duplicate/replay handling;
- feature-disabled behavior.
Unknown/missing optional data is never a reason to strengthen a live action or promote an outcome/effect claim.
Data ownership rules
- Edge/Gadget: authoritative local decisions and actual local execution observations.
- Deception: actual materialization/lifecycle/reset/isolation facts.
- Knowledge: durable fact/derived/advisory storage and retrieval, never live authority.
- Fabric: shared type language only where at least two products exchange the type.
- M.I.O.: advisory cognition state; no authoritative environment/execution/outcome truth.
Architecture review / hostile review
Before code for new adaptive features:
Normal review
- current modules really support the proposed adapter points;
- no duplicate state machine;
- no unnecessary shared contract;
- bounded hardware/resource behavior;
- schema/version migration plan exists.
Hostile review
Try to prove:
- this is unnecessary complexity around the current decision path;
- raw Outcome Memory/RAG is enough;
- static Deception is enough;
DELAY metric can be gamed;
- IDs can be confused across advisory/authority;
- optional dependency outage changes the hot path;
- command success is mistaken for mechanism postcondition;
- old action and tactical effect semantics diverge;
- M.I.O. recommendation accidentally becomes authority;
- Deception presentation state is mistaken for attacker belief;
- policy guardrails can be bypassed by missing evidence;
- uncalibrated numeric confidence creates false precision;
- a better external model makes the new layer irrelevant.
Correct all high/medium findings before progressing to the next vertical slice.
Current locked implementation status
Edge #400 / PR #401 implement the first shadow layer on feat/outcome-as-evidence-v1:
- canonical execution/mechanism/outcome/effect contracts;
- Rust
EnforcementOutcome adapter;
- truthful current throttle scope;
- passive bounded observer;
- fail-closed replay execution boundary;
- conservative DELAY rule requiring explicit evidence;
- strict correlation joins;
- fail-closed policy guardrails;
- no invented numeric tactical confidence.
The PR must pass current CI/review before merge. Automatic release lifecycle observation, independently verified live mechanism postconditions, real pre/post metric collectors, end-to-end replay golden, and Pi/HIL remain gates.
Exit criteria
Parent doctrine: #64
System program: #66
Final hostile gate: #67
Edge differentiation: 01rabbit/Azazel-Edge#391
Implementation baseline: 01rabbit/Azazel-Edge#400
Purpose
Insert the missing Architecture Stabilization / Detailed Design gate between the already-implemented M.I.O. Cognitive Plane and the much broader series-wide Active Cyber Defense research program.
The next-generation program is intentionally ambitious. It must not be implemented by directly coding #392–#399 in sequence while interfaces, state ownership, migration, and failure semantics are still only conceptual.
This gate answers one question first:
Terminology correction
For new design and implementation work, use Deception / Azazel-Deception as the component name. Do not use
AZ-06as the primary architecture term in new contracts/docs/issues. Historical issues/docs may retain the old designation as provenance until explicitly migrated.Current implementation anchors
M.I.O. foundation
Current Edge code already has bounded contracts/runtime for:
MioSituationFrame;MioHypothesis;MioEvidenceGap;ReasoningState/BoundedReasoningLoop;Deterministic authority/runtime reality
Current repository contains both:
py/azazel_edge/arbiter/action.py::ActionArbiter, a deterministic decision implementation; anddecide_defense() -> maybe_enforce() -> EnforcementOutcomelogic inrust/azazel-edge-core/src/main.rs.Therefore no design may call the Python ActionArbiter the sole live execution truth until wiring/unification is proven. #400 consumes existing Rust execution facts without introducing a second executor or authority.
Existing execution/evidence substrates
EnforcementOutcome;Non-negotiable migration rule
Do not replace the existing hot decision loop. Wrap and observe it first.
Canonical observational chain is now locked by Edge #400:
These are different facts.
Action != Mechanism != Outcome != Tactical Effect.Target migration pattern:
At every step, feature-off behavior must remain decision-equivalent to the pre-migration baseline.
Detailed-design packages
DD0 — Current-to-target traceability
Owner: Edge #400
Produce an exact matrix:
No concept may proceed if its current implementation anchor is unknown.
DD1 — Identity, authority, and lifecycle model
Define canonical non-confusable identities/relationships for:
For each type define:
DD2 — Vertical Slice A: prove DELAY without AI
First executable proof. Do not require Belief, Council, Terrain adaptation, or multi-model reasoning.
throttleitself is not DELAY evidence. Current Rust throttle is an interface-root qdisc and must be represented truthfully asTRAFFIC_SHAPINGwith interface scope. If an independently verified postcondition and outcome do not support DELAY, the result remainsinconclusive/unsupported.Success criteria:
If this cannot be made robust, stop the larger architecture.
DD3 — Vertical Slice B: REDIRECTION + Deception Presented Terrain
Only after Slice A works.
No adaptive terrain transition in the first slice. Static coherent Deception is the baseline. A redirect command or decoy interaction alone is not proof that the adversary believed the deception or that diversion succeeded.
DD4 — M.I.O. strategic overlay
Only after DD2/DD3 data contracts are proven.
M.I.O. consumes:
M.I.O. outputs only:
It does not create target scope, provider commands, Deception transitions, canonical execution/outcome facts, or authority tokens.
DD5 — Council/co-adaptation
Council and Asurada-style team memory are deliberately last. They cannot be required to prove the core Active Defense loop.
Required sequence diagrams
Detailed design must include at least:
Failure semantics
Every cross-series call must define:
Unknown/missing optional data is never a reason to strengthen a live action or promote an outcome/effect claim.
Data ownership rules
Architecture review / hostile review
Before code for new adaptive features:
Normal review
Hostile review
Try to prove:
DELAYmetric can be gamed;Correct all high/medium findings before progressing to the next vertical slice.
Current locked implementation status
Edge #400 / PR #401 implement the first shadow layer on
feat/outcome-as-evidence-v1:EnforcementOutcomeadapter;The PR must pass current CI/review before merge. Automatic release lifecycle observation, independently verified live mechanism postconditions, real pre/post metric collectors, end-to-end replay golden, and Pi/HIL remain gates.
Exit criteria
AZ-06naming is not propagated into new contracts.