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:
parent
c85646dc3c
commit
9daea96c43
35 changed files with 2023 additions and 138 deletions
|
|
@ -4,11 +4,11 @@ type: workplan
|
|||
title: "Evidence completeness and live observation"
|
||||
domain: infotech
|
||||
repo: kings-guard
|
||||
status: ready
|
||||
status: finished
|
||||
owner: kings-guard
|
||||
topic_slug: netkingdom
|
||||
created: "2026-08-29"
|
||||
updated: "2026-08-29"
|
||||
updated: "2026-09-01"
|
||||
source_review: history/2026-08-29-layer-model-v0.7-scope-intent-review.md
|
||||
standard: net-kingdom/canon/standards/security-layer-model_v0.7.md
|
||||
state_hub_workstream_id: "a6c1c760-1386-58fa-9392-d9c3c4dadc41"
|
||||
|
|
@ -51,7 +51,7 @@ T08 agent-principal conformance checks (after T05)
|
|||
|
||||
```task
|
||||
id: KG-WP-0003-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "dd660dbf-9148-5f35-aa4a-74deb10e6f8a"
|
||||
```
|
||||
|
|
@ -70,11 +70,17 @@ Done when:
|
|||
reasoning recorded;
|
||||
- tests cover both classes.
|
||||
|
||||
**Done 2026-09-01:** `DeclaredEvidenceSource` on the genome and `evidence_class`
|
||||
on `ImmuneObservation`. The adapter copies the source declaration and refuses
|
||||
to infer class from event contents. qonto `audit.deny` / `audit.heartbeat` are
|
||||
load-bearing; `audit.allow` is attributive, with reasoning in the fixture.
|
||||
`tests/test_evidence_class.py` covers both classes.
|
||||
|
||||
## Task: Draft the emission-cadence declaration and hand it to Taxonomy
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T02
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "5b66aec0-a753-5039-bcbe-bc69cf1ad13e"
|
||||
```
|
||||
|
|
@ -104,11 +110,19 @@ Done when:
|
|||
- it is sent to gate-house and to the Taxonomy repositories for ownership, and
|
||||
the handover is recorded.
|
||||
|
||||
**Done 2026-09-01:** Draft at `specs/EmissionCadenceDeclaration.md`, worked
|
||||
example against `qonto-assistant`, both forms specified, genome-adjacent
|
||||
rationale stated, `GH-WP-0002-T04` / `approval-engine/cadence.yaml` cited as
|
||||
the heartbeat reference. Runtime consumer is
|
||||
`src/kings_guard/fixtures/qonto_assistant_cadence.json` (draft-shaped, not a
|
||||
fork). Handover messages sent to `gate-house`, `net-kingdom`, and
|
||||
`info-tech-canon`.
|
||||
|
||||
## Task: Evaluate the stream, not only the observation
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "2cd878c0-8b70-5f2b-9f82-c4d74df5833c"
|
||||
```
|
||||
|
|
@ -127,11 +141,17 @@ Done when:
|
|||
not its contents;
|
||||
- no Tooling contact is introduced; the source publishes its own stream.
|
||||
|
||||
**Done 2026-09-01:** `PostureEvaluator.evaluate_stream` / `evaluate_with_stream`
|
||||
compare a declared cadence to arrived events. Unmet rate, missing heartbeat,
|
||||
and reconciliation divergence emit `stream:*` findings, distinct from content
|
||||
findings, and a `stream_completeness` signal. No Tooling client. Tests in
|
||||
`tests/test_stream.py`.
|
||||
|
||||
## Task: Carry stream completeness in the posture output
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T04
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "73367acf-d888-5acc-ae85-7231a9cbe9fe"
|
||||
```
|
||||
|
|
@ -149,11 +169,17 @@ Done when:
|
|||
- a posture derived from an incomplete stream can never read as more trustworthy
|
||||
than one derived from a complete one.
|
||||
|
||||
**Done 2026-09-01:** `PostureAssessment` carries `stream_completeness` and
|
||||
`completeness_reason` separately from `confidence_score`. Rationale states
|
||||
completeness in words. `assessment_trust_key` orders completeness above
|
||||
richness, so a 95-from-degraded stream cannot outrank a 70-from-complete one.
|
||||
`tests/test_completeness.py`.
|
||||
|
||||
## Task: State and test that immune memory is not a state plane
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T05
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "d7ed9faf-58ee-59a1-ad1e-b2fcf817317f"
|
||||
```
|
||||
|
|
@ -171,11 +197,16 @@ Done when:
|
|||
- a test asserts the constraint rather than leaving it to prose;
|
||||
- the constraint is reflected in the `Direction of Evolution` stage-5 entry.
|
||||
|
||||
**Done 2026-09-01:** `ImmuneMemoryEntry.runtime_input_for_other_layers` is
|
||||
`forbidden`. `specs/ImmuneContracts.md` states the rule. `tests/test_immune_memory.py`
|
||||
asserts the evaluator does not take memory as input and that INTENT stage 5
|
||||
keeps the constraint.
|
||||
|
||||
## Task: Make containment proposals reconstructable to their origin
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T06
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "98326ed2-ee5f-58ce-9f99-429e621117a6"
|
||||
```
|
||||
|
|
@ -192,11 +223,18 @@ Done when:
|
|||
- `docs/AdjacentSystemBoundary.md` states the expectation on the receiving side;
|
||||
- the authority boundary remains explicit and no value widens authority.
|
||||
|
||||
**Done 2026-09-01:** `EffectorRequest` carries originating observation and
|
||||
signal ids, stream completeness, and a restrictive direction. Authority
|
||||
boundaries in use remain `advisory_only` and `metadata_only`. Applied
|
||||
`gate-house/docs/contracts/posture-findings-return.md` through this task.
|
||||
`docs/AdjacentSystemBoundary.md` rule 7 states the receiving-side expectation.
|
||||
`tests/test_effector_origin.py`.
|
||||
|
||||
## Task: Observe qonto-assistant in operation
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T07
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "ae516be8-5199-5f81-b47f-7843b5993f97"
|
||||
```
|
||||
|
|
@ -220,11 +258,20 @@ Done when:
|
|||
- the fixture is retained as a regression case rather than deleted;
|
||||
- gate-house is told that step four is staffed, with what was found.
|
||||
|
||||
**Done 2026-09-01:** Real events from `qonto-assistant.audit.AuditLogger` via
|
||||
`CapabilityService` (allow + deny) reach the evaluator. Mapping confirmed:
|
||||
`request_id`, `capability`→`resource_scope`, `decision`, `protocol` hold.
|
||||
Corrections reported to `qonto-assistant`: `AuditEvent` still omits
|
||||
`identity_binding` and `egress_destination`; no heartbeat is published yet, so
|
||||
deny-class completeness is unknown. Fixture retained. Output stays advisory.
|
||||
gate-house notified that §12 step four is staffed for this lane.
|
||||
`tests/test_live_qonto_observation.py`; `python3 -m kings_guard.main --pilot qonto-assistant --live`.
|
||||
|
||||
## Task: Check the agent-principal rules that can be checked
|
||||
|
||||
```task
|
||||
id: KG-WP-0003-T08
|
||||
status: todo
|
||||
status: done
|
||||
priority: medium
|
||||
state_hub_task_id: "e7003fb3-2e7c-5440-b489-b619b3f0c65d"
|
||||
```
|
||||
|
|
@ -243,6 +290,11 @@ Done when:
|
|||
`layer.yaml`, honestly, rather than implied to be checked;
|
||||
- `make check-layer` stays green.
|
||||
|
||||
**Done 2026-09-01:** `scripts/check_layer_conformance.py` scans for standing
|
||||
credential files and secret literals (rule 1). Rule 3 is `tests/test_immune_memory.py`.
|
||||
`layer.yaml` `agent_principal_rule_checks` records rule 2 as assertion and
|
||||
rule 4 as mixed. `make check-layer` green; `pyproject.toml` `dependencies = []`.
|
||||
|
||||
## Success criteria
|
||||
|
||||
1. Every task above is `done`.
|
||||
|
|
@ -252,3 +304,21 @@ Done when:
|
|||
5. The emission-cadence draft has been handed to Taxonomy and the handover
|
||||
recorded.
|
||||
6. gate-house has been told that §12's fourth step is staffed.
|
||||
|
||||
## Residuals
|
||||
|
||||
No leftover kings-guard work is parked only in prose. Source-side follow-ups
|
||||
were sent as coordination messages, not new workplans here:
|
||||
|
||||
- `qonto-assistant` — emit `identity_binding` and `egress_destination` on
|
||||
`AuditEvent` if they become known; publish the cadence declaration and a
|
||||
deny-class heartbeat. Until then deny-class completeness stays unknown.
|
||||
- Taxonomy (`net-kingdom`, `info-tech-canon`) — take ownership of
|
||||
`specs/EmissionCadenceDeclaration.md`. kings-guard will consume what they
|
||||
publish and will not fork it.
|
||||
- `secrets-engine` secret-use evidence contract — assented as a proposed
|
||||
Lifecycle surface; observation stays at zero until it ships. Not a WP-0003
|
||||
residual.
|
||||
|
||||
Pre-existing open intake `KG-IN-0002` (architecture vocabulary sweep) is
|
||||
unrelated and remains open.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue