Gate House routed a King's Guard observation that qonto-assistant's audit.deny stream has no completeness evidence. Filed and graded medium, public, open. Clean-checked F-0010, F-0008, and REG-0001 after confirming nothing moved. Raised the inbox timeout so question-zero does not false-fail on the tunneled hub. Assistant: grok Assistant-Session: 01a060e9-e363-7521-bf11-df5fa31b7156
146 lines
6.3 KiB
Markdown
146 lines
6.3 KiB
Markdown
---
|
||
id: RISK-F-0011
|
||
type: finding
|
||
title: "qonto-assistant audit.deny stream completeness is not established"
|
||
status: open
|
||
owner: risk-nexus
|
||
reported_by: kings-guard
|
||
reported_via: gate-house
|
||
routed_by: gate-house
|
||
date_reported: "2026-09-01"
|
||
date_filed: "2026-09-02"
|
||
system: qonto-assistant
|
||
environment: production
|
||
fix_owner: qonto-assistant
|
||
fix_tracking: unset
|
||
# Graded by risk-nexus 2026-09-02 — docs/rulings/2026-09-02-qonto-deny-stream.md
|
||
severity: medium
|
||
severity_at_production: medium
|
||
impact: I2
|
||
likelihood: L3
|
||
fidelity_modifier: false
|
||
production_rescore: false
|
||
disclosure: public
|
||
publication: pending-handover
|
||
publication_id: risk-f-0011-qonto-audit-deny-stream-completeness
|
||
publication_path: "findings/qonto-audit-deny-stream-completeness/v1/index.html"
|
||
publication_subtitle: "A live deny was observed on qonto-assistant, but nothing yet lets anyone claim the load-bearing deny stream is complete."
|
||
revision: "graded-1"
|
||
last_reviewed: "2026-09-02"
|
||
review_interval: 6m
|
||
escalation: none
|
||
last_checked: "2026-09-02T07:20:00Z"
|
||
next_check: "2026-09-02T07:20:00Z"
|
||
cadence: instant
|
||
clean_streak: 0
|
||
waiting_on:
|
||
- who: qonto-assistant
|
||
what: "publish a heartbeat or emission-cadence declaration and a reconciliation view for the audit.deny stream, or reject that obligation"
|
||
since: "2026-09-02"
|
||
would_change: "a published cadence plus a reconciliation view would let a later observation support completeness; a rejection keeps the grade and records that estate observation must not treat the stream as complete"
|
||
default: "the medium grade stands; missing cadence is recorded as a stalled remediation, and observation remains staffed with completeness pending"
|
||
default_at: "2026-09-16"
|
||
graded_by: risk-nexus
|
||
ruling: RISK-RULING-2026-09-02-A
|
||
checked_by: "grok/risk-nexus"
|
||
---
|
||
|
||
# RISK-F-0011 — qonto-assistant audit.deny stream completeness is not established
|
||
|
||
## What is true, as reported
|
||
|
||
King's Guard observed real `qonto-assistant` allow and deny events emitted by
|
||
`audit.AuditLogger` through `CapabilityService`. One deny (`list_transactions`
|
||
over MCP, `arg_constraint`) arrived with record richness 90 and preserved
|
||
origin linkage. Gate House accepted that mapping and recorded the qonto lane
|
||
as staffed for observation.
|
||
|
||
The same return says the `audit.deny` class is load-bearing, and that its
|
||
**stream completeness is unknown**:
|
||
|
||
- no heartbeat or emission-cadence declaration is published;
|
||
- no reconciliation view was supplied;
|
||
- richness 90 describes the received record, not the stream;
|
||
- no claim is made that every deny was emitted or observed.
|
||
|
||
This is not evidence that an event was suppressed. The reporter assigned no
|
||
severity and asked this register to intake, grade, and route.
|
||
|
||
Safe evidence named by Gate House: kings-guard revision `9daea96`; source
|
||
return `23480b81-bc34-4df4-92cc-840fbc8514fd`; Gate House disposition
|
||
`no_change` at commit `feff576` and
|
||
`gate-house/docs/conformance/2026-09-02-kings-guard-qonto-live-observation.md`.
|
||
The owner route `3b9c26a1-ba1a-4189-b439-edd61683aed5` was unread at intake.
|
||
|
||
## How it was found
|
||
|
||
Live observation, not a self-assessment. King's Guard completed
|
||
`KG-WP-0003-T06/T07` against the real qonto-assistant lane. Gate House reviewed
|
||
the return under `GH-WP-0001-T06` and routed the implementation residual here
|
||
on 2026-09-01 (message `53645a75-0215-4261-a700-f7aedf09e7e8`).
|
||
|
||
## What a current-source check adds
|
||
|
||
The local lockout does **not** consume the audit stream. `DenyEscalationTracker`
|
||
is in-process state on the decision path (`CapabilityService` calls
|
||
`record_deny` / `check` directly; `AuditLogger.emit` is a parallel record).
|
||
A dropped audit line would not, on today's source, disable qonto-assistant's
|
||
own Fast Local Loop.
|
||
|
||
What the stream is load-bearing *for* is estate observation. King's Guard
|
||
already consumes it. Without a cadence declaration or a reconciliation view,
|
||
that observation can report a received deny and cannot vouch that every deny
|
||
was emitted.
|
||
|
||
No heartbeat, emission-cadence, or reconciliation artefact was found in
|
||
qonto-assistant at filing. `fix_tracking` is unset.
|
||
|
||
Taxonomy ownership of an emission-cadence declaration (net-kingdom /
|
||
info-tech-canon) is a separate residual. This record does not wait on it:
|
||
depth-one, and one routing exchange has not yet failed. Silence there does not
|
||
change qonto-assistant's obligation to declare what it emits, or this grade.
|
||
|
||
## Suggested direction
|
||
|
||
Suggestion, owned by `qonto-assistant`:
|
||
|
||
1. Publish a heartbeat or emission-cadence declaration for `audit.deny`.
|
||
2. Supply a reconciliation view an observer can use to test completeness.
|
||
3. Open fix tracking, or reject the obligation in writing so observation stays
|
||
explicitly incomplete.
|
||
|
||
Risk Nexus owns severity, disclosure, escalation, and review cadence.
|
||
|
||
## Register ruling — 2026-09-02
|
||
|
||
`medium` (`I2` × `L3`), public, no escalation.
|
||
|
||
**`I2`: one system's observation of one deny class.** A missed audit.deny
|
||
does not, on the facts established, authorize a Qonto action or disable the
|
||
in-process lockout. It leaves estate observation unable to treat the stream as
|
||
complete. That is confined to the qonto-assistant lane.
|
||
|
||
**`L3`: the gap is the current state of a stream the working set already
|
||
consumes.** King's Guard reached the stream with no additional step and still
|
||
could not complete the claim. This is not `L4`: suppression is not established,
|
||
and the band is scored on the missing completeness evidence, not on an
|
||
unobserved drop. It is not `L2`: waiting for a special foothold would describe
|
||
the wrong defect.
|
||
|
||
**No fidelity modifier.** The observer reported completeness as unknown. A
|
||
later claim that the stream is complete without a cadence or reconciliation
|
||
view would be the lying-control state; that is not today's headline.
|
||
|
||
**Disclosure `public`.** Reading this does not shorten a path to a defect. It
|
||
is a missing completeness claim, published as one. Handover to `policy-nexus`
|
||
is `pending-handover`.
|
||
|
||
**No escalation.** No real-person data exposure, no new outside obligation, no
|
||
new spend, no failed ownership exchange, and no fourteen-day stall. The dated
|
||
wait makes that last statement expire.
|
||
|
||
Reasoning: `docs/rulings/2026-09-02-qonto-deny-stream.md`.
|
||
|
||
## Reviews
|
||
|
||
- **2026-09-02** — graded from the Gate House intake, the named conformance review, and a current-source check of qonto-assistant. Local lockout is in-process; the emitted deny stream still has no cadence or reconciliation view. Cadence starts at instant.
|