Finish KG-WP-0003: stream completeness and live qonto observation

Classify evidence as load-bearing or attributive, draft the emission-cadence
declaration for Taxonomy, treat silence as a stream finding, keep completeness
separate from record richness, forbid immune memory as a state plane, and make
containment proposals reconstructable to their origin. Observe real
qonto-assistant audit events; deny-class completeness stays unknown until the
source publishes a heartbeat.

Assistant: grok
Assistant-Session: 01a05ef1-9e5a-70f2-b0ff-0b05d6b38ae9
This commit is contained in:
tegwick 2026-09-02 00:11:57 +02:00
parent c85646dc3c
commit 9daea96c43
35 changed files with 2023 additions and 138 deletions

View file

@ -1,11 +1,11 @@
from kings_guard.adapters import observation_from_audit_event
from kings_guard.contracts import PostureLevel, SecurityGenome, as_jsonable
from kings_guard.fixtures import load_qonto_assistant_pilot
from kings_guard.posture import PostureEvaluator
from helpers import load_pilot, observation_from_fixture
def test_qonto_fixture_loads_a_normalized_genome() -> None:
fixture = load_qonto_assistant_pilot()
fixture = load_pilot()
assert isinstance(fixture.genome, SecurityGenome)
assert fixture.genome.genome_id == "kg:genome:qonto-assistant"
@ -15,14 +15,7 @@ def test_qonto_fixture_loads_a_normalized_genome() -> None:
def test_qonto_audit_event_normalizes_to_immune_observation() -> None:
fixture = load_qonto_assistant_pilot()
observation = observation_from_audit_event(
fixture.audit_event,
subject_id=fixture.normalization_hints["subject_id"],
capability_scope=fixture.normalization_hints["capability_scope"],
identity_binding=fixture.normalization_hints["identity_binding"],
egress_destination=fixture.normalization_hints["egress_destination"],
)
observation = observation_from_fixture()
assert observation.source_system == "qonto-assistant"
assert observation.capability == "finance.qonto.read"
@ -33,16 +26,11 @@ def test_qonto_audit_event_normalizes_to_immune_observation() -> None:
def test_posture_evaluation_is_jsonable() -> None:
fixture = load_qonto_assistant_pilot()
observation = observation_from_audit_event(
fixture.audit_event,
subject_id=fixture.normalization_hints["subject_id"],
capability_scope=fixture.normalization_hints["capability_scope"],
identity_binding=fixture.normalization_hints["identity_binding"],
egress_destination=fixture.normalization_hints["egress_destination"],
)
fixture = load_pilot()
observation = observation_from_fixture(fixture)
evaluation = PostureEvaluator().evaluate(fixture.genome, observation)
payload = as_jsonable(evaluation)
assert payload["assessment"]["posture"] == PostureLevel.INFLAMED.value
assert payload["signals"][0]["signal_kind"] == "posture_hint"
assert payload["assessment"]["stream_completeness"] == "unknown"