BINKY-WP-0007: open Qonto Governed Assistant Phase 1 workplan
Some checks failed
Work Records / validate (push) Has been cancelled
Some checks failed
Work Records / validate (push) Has been cancelled
Tracks the Phase 1 scope from the architecture blueprint (policy kernel + REST, no MCP yet): ratify the five blueprint decisions, service skeleton with default-deny policy, REST surface + CostRunRate cutover, smoke tests and closure/handoff to Phase 2. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
53d25fbd78
commit
06802736a0
1 changed files with 101 additions and 0 deletions
101
workplans/BINKY-WP-0007-qonto-governed-assistant.md
Normal file
101
workplans/BINKY-WP-0007-qonto-governed-assistant.md
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
---
|
||||
id: BINKY-WP-0007
|
||||
type: workplan
|
||||
title: "Qonto Governed Assistant: policy kernel + REST (Phase 1)"
|
||||
domain: infotech
|
||||
repo: binky-control
|
||||
status: active
|
||||
owner: claude
|
||||
topic_slug: the-custodian
|
||||
created: "2026-07-22"
|
||||
updated: "2026-07-22"
|
||||
---
|
||||
|
||||
Follow-on from BINKY-WP-0005 (custody lane + first read-only pull, finished).
|
||||
Blueprint: `integrations/qonto-governed-assistant/ArchitectureBlueprint.md`.
|
||||
|
||||
**Recommendation being executed:** build a small **Qonto Governed Assistant**
|
||||
service — the only component allowed to hold the bank API key — exposing a
|
||||
default-deny policy-shaped MCP server and thin REST API, so every harness
|
||||
(Claude Code, Codex, Cursor, Grok, agent-harness sessions, scripts) is a dumb
|
||||
client of one governed endpoint instead of each wiring vendor MCP + local
|
||||
allow-lists directly. **No spend / no volume-cost tools in v1** — payments,
|
||||
transfers, card ops, and plan changes stay Red lane (human in the Qonto app).
|
||||
|
||||
This workplan tracks **Phase 1 only** (policy kernel + REST — minimum useful
|
||||
product, per blueprint §6). Phase 2 (MCP surface), Phase 3 (flex-auth/fleet),
|
||||
and Phase 4 (productization) are follow-on work, opened as residuals or a new
|
||||
workplan once Phase 1 lands.
|
||||
|
||||
## Task: Ratify architecture decisions (blueprint §9)
|
||||
|
||||
```task
|
||||
id: BINKY-WP-0007-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
Bring the five decision requests from the blueprint to the founder via
|
||||
DecisionQueue.md:
|
||||
|
||||
1. Adopt the domain-assistant architecture (option B) for Qonto.
|
||||
2. Repo home: new dedicated `qonto-assistant` repo (already present in the
|
||||
state-hub repo registry) vs. waiting for a generic `finance-connect`.
|
||||
3. v1 policy freeze: hard deny on all spend / volume-cost tools.
|
||||
4. MCP transport: remote streamable-HTTP only for production clients.
|
||||
5. Whether to ever run vendor `qonto-mcp-server` as an internal-only backend
|
||||
(blueprint default: no).
|
||||
|
||||
Done when: DEC entry filed, founder decision recorded, blueprint updated with
|
||||
the ratified answers.
|
||||
|
||||
## Task: Service skeleton — decision function + custody wiring
|
||||
|
||||
```task
|
||||
id: BINKY-WP-0007-T02
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
In the `qonto-assistant` repo (per T01 decision): shared `decide(tool, args,
|
||||
claims) -> Allow|Deny` module backed by `policy/qonto-v1.yaml` (blueprint
|
||||
§4.6); OpenBao fetch of `tenants/binky/qonto-api` only inside this service
|
||||
(AppRole/OIDC role, short TTL) — never in harness env. Hard deny list for
|
||||
every write/spend path, even unimplemented ones. Green lane (no live traffic
|
||||
yet).
|
||||
|
||||
Done when: policy module has unit tests for allow/deny cases including the
|
||||
deny-classes (`spend`, `volume_cost`, `credential_exfil`).
|
||||
|
||||
## Task: REST surface + CostRunRate consumer cutover
|
||||
|
||||
```task
|
||||
id: BINKY-WP-0007-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Implement `GET /v1/accounts`, `GET /v1/transactions`, `GET /v1/snapshot`
|
||||
behind the policy gate from T02. Replace the ad-hoc first-pull script used
|
||||
for `finance/CostRunRate.md` with a call through this REST surface. Blue lane
|
||||
(reads live account data; no writes).
|
||||
|
||||
Done when: CostRunRate refresh runs via the assistant end-to-end at least
|
||||
once, with call metadata (actor, tool, decision) logged to evidence, not the
|
||||
raw account data.
|
||||
|
||||
## Task: Smoke tests and closure
|
||||
|
||||
```task
|
||||
id: BINKY-WP-0007-T04
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
CI smoke against a mocked Qonto backend (deny-path and allow-path cases);
|
||||
one manual live read against the dogfood account through the deployed
|
||||
assistant. Close this workplan when Phase 1 is proven; hand off Phase 2 (MCP
|
||||
surface for all harnesses) as a residual intake or new workplan.
|
||||
|
||||
Done when: `statehub fix-consistency` run clean; Phase 2 scope captured
|
||||
either as an AutopilotWorkQueue residual or a follow-on workplan file.
|
||||
Loading…
Add table
Add a link
Reference in a new issue