Draft RISK-WP-0002, RISK-WP-0003, RISK-WP-0004
Publication handover (two findings ready, three tasks, one of which is a paragraph); regulatory intake as a working remit rather than one record, carrying RISK-REG-0001's open items; and running the register, where every task traces to something that actually went wrong in week one — grading before reading the inbox, a status the tooling did not know, an id collision, two gradings resting on file comparison because a token expired, and an on-request path nobody has walked. All three are status: proposed. The custodian decides which become active and in what order. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
a1961a8f6f
commit
a798a4c771
3 changed files with 404 additions and 0 deletions
110
workplans/RISK-WP-0002-publication-handover.md
Normal file
110
workplans/RISK-WP-0002-publication-handover.md
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
---
|
||||
id: RISK-WP-0002
|
||||
type: workplan
|
||||
title: "Hand the publishable findings to policy-nexus, and decide what else is a public document"
|
||||
domain: infotech
|
||||
repo: risk-nexus
|
||||
status: proposed
|
||||
owner: the-custodian
|
||||
topic_slug: risk-nexus
|
||||
created: "2026-08-20"
|
||||
updated: "2026-08-20"
|
||||
depends_on_workplans:
|
||||
- RISK-WP-0001
|
||||
---
|
||||
|
||||
# RISK-WP-0002 — publication handover
|
||||
|
||||
**Draft.** Sized deliberately small: two documents are ready and the rest is a
|
||||
decision, not a project.
|
||||
|
||||
## Goal
|
||||
|
||||
`RISK-F-0001` and `RISK-F-0008` carry `disclosure: public` and
|
||||
`publication: pending-handover`. Get them onto `policy.coulomb.social` under
|
||||
`policy-nexus`'s existing contract, and settle whether this repo's method
|
||||
documents are public too.
|
||||
|
||||
Done means: both findings have a permanent address, `publication: published`,
|
||||
and a recorded answer on the method documents.
|
||||
|
||||
## Why now
|
||||
|
||||
Six findings are embargoed with lift conditions, and `RISK-F-0009` has already
|
||||
demonstrated that a condition can be met and the embargo still hold. When those
|
||||
conditions start clearing, publication will happen in a trickle rather than a
|
||||
batch — so the route wants to exist before it is needed, not during.
|
||||
|
||||
`policy-nexus` has been told this is coming (2026-08-20) and asked for nothing.
|
||||
|
||||
## Tasks
|
||||
|
||||
### T01 — Publish the two ready findings
|
||||
|
||||
```task
|
||||
id: RISK-WP-0002-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
Follow `policy-nexus`'s publication contract as it stands. Do not invent an
|
||||
address scheme: `POLICY-NEXUS-WP-0001` settled addressing and permanence, and
|
||||
this repo is a consumer of that decision.
|
||||
|
||||
Open question for T01 rather than an assumption: **is a finding published whole,
|
||||
or as a summary?** `RISK-F-0001` contains a full ruling, a re-grade, a review
|
||||
log and this register's own process defect. Some of that is register-internal
|
||||
work product. Decide once, here, and apply it to every later publication.
|
||||
|
||||
### T02 — Rule on the method documents
|
||||
|
||||
```task
|
||||
id: RISK-WP-0002-T02
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
`docs/method/severity.md`, `disclosure.md`, `escalation.md`, `review.md`.
|
||||
|
||||
The case for publishing: they say how the estate grades and holds risk, which
|
||||
is exactly what an outside reader needs to judge whether a published finding
|
||||
means anything.
|
||||
|
||||
The case against: the escalation rule names the operator's own thresholds, and
|
||||
the severity scale is a judgement instrument this repo revises freely. A
|
||||
published instrument invites argument about the instrument.
|
||||
|
||||
Suggested split, to be ruled on rather than assumed: severity and disclosure
|
||||
public, escalation and review internal. Escalation in particular describes when
|
||||
the operator is interrupted, which is not the estate's business to advertise.
|
||||
|
||||
### T03 — The standing route
|
||||
|
||||
```task
|
||||
id: RISK-WP-0002-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Write down what happens when an embargo lifts: who hands over, in what shape,
|
||||
and how `publication: published` gets recorded back on the finding.
|
||||
|
||||
Small. It is a paragraph in `docs/method/disclosure.md` plus whatever
|
||||
`policy-nexus` needs on their side, not a mechanism.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- No publication surface here. `policy-nexus` hosts; this repo hands over.
|
||||
- No timed release, no coordinated disclosure, no notification tiers. Those stay
|
||||
deferred (`docs/method/disclosure.md`) until there are real users.
|
||||
- No re-grading of anything to make it publishable.
|
||||
|
||||
## Risks
|
||||
|
||||
**A finding is published with an internal ruling attached.** Mitigation: T01
|
||||
decides whole-versus-summary before anything ships.
|
||||
|
||||
**The handover becomes a project.** Mitigation: three tasks, one of which is a
|
||||
paragraph. If it grows, that is a signal the publication contract does not fit
|
||||
findings, and that is a conversation with `policy-nexus` rather than more tasks
|
||||
here.
|
||||
125
workplans/RISK-WP-0003-regulatory-intake.md
Normal file
125
workplans/RISK-WP-0003-regulatory-intake.md
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
---
|
||||
id: RISK-WP-0003
|
||||
type: workplan
|
||||
title: "Make regulatory intake a working remit rather than one record"
|
||||
domain: infotech
|
||||
repo: risk-nexus
|
||||
status: proposed
|
||||
owner: the-custodian
|
||||
topic_slug: risk-nexus
|
||||
created: "2026-08-20"
|
||||
updated: "2026-08-20"
|
||||
depends_on_workplans:
|
||||
- RISK-WP-0001
|
||||
---
|
||||
|
||||
# RISK-WP-0003 — regulatory intake
|
||||
|
||||
**Draft.** The half of this repo's remit that `RISK-WP-0001` deliberately did
|
||||
not touch.
|
||||
|
||||
## Goal
|
||||
|
||||
`INTENT.md` says regulation was previously "consulted and discarded" — the same
|
||||
question asked twice and the answer silently expiring. `RISK-REG-0001` is one
|
||||
record against that. Make it a remit: a format that expires, a way for repos to
|
||||
ask, and the open items that record is carrying.
|
||||
|
||||
Done means: the retention question is answered as far as it can be without
|
||||
buying advice, the trigger list for buying advice is ruled, and a repo with a
|
||||
regulatory question knows where to put it.
|
||||
|
||||
## The open items this inherits
|
||||
|
||||
From `RISK-REG-0001` and `RISK-F-0008`, both already written down:
|
||||
|
||||
1. **A defensible retention period per category.** The determination names this
|
||||
as the weakest point in the estate's whole position: supervisory practice
|
||||
accepts audit logging under legitimate interest and then asks how long, and
|
||||
"we keep audit because it is audit" is the form that fails.
|
||||
2. **`audit-core`'s co-residency horizon.** At `P1` the real erasure horizon is
|
||||
the maximum across every co-resident on `platform-pg`, not the declared
|
||||
value. An infrastructure fact is doing load-bearing work in a legal position,
|
||||
which is an uncomfortable place for it to be. Blocked on `audit-core`.
|
||||
3. **The trigger list.** First real person's data, first counterparty contract
|
||||
requiring a stated position, first Art 17 request. Proposed 2026-08-19, not
|
||||
ruled.
|
||||
|
||||
## Tasks
|
||||
|
||||
### T01 — Rule the trigger list
|
||||
|
||||
```task
|
||||
id: RISK-WP-0003-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
Custodian decision. Cheap, and it is what stops the estate either buying advice
|
||||
it does not need or discovering it needed it. Until it is ruled, `RISK-F-0008`
|
||||
stays escalated as `partially-answered`.
|
||||
|
||||
### T02 — Retention periods per category
|
||||
|
||||
```task
|
||||
id: RISK-WP-0003-T02
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
State a period and a reason per category in `RISK-REG-0001`, or state plainly
|
||||
that the estate cannot yet and why. The second is an acceptable outcome and a
|
||||
better record than a number nobody can defend.
|
||||
|
||||
Depends on `audit-core` answering the co-residency horizon, which has been
|
||||
asked for. If they cannot, that dependency is itself the answer to record.
|
||||
|
||||
### T03 — Intake route for regulatory questions
|
||||
|
||||
```task
|
||||
id: RISK-WP-0003-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
`audit-core` routed theirs by messaging this repo and asking for an owner,
|
||||
which worked. Write that down as the route rather than leaving it as one repo's
|
||||
good instinct: what a regulatory question needs when it arrives, what it gets
|
||||
back, and what this repo will not answer (legal advice, and what the owning
|
||||
repo must therefore do).
|
||||
|
||||
Extend `findings/README.md` or give `docs/regulatory/README.md` the reporter's
|
||||
half. Do not invent an intake system.
|
||||
|
||||
### T04 — Expiry
|
||||
|
||||
```task
|
||||
id: RISK-WP-0003-T04
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
Regulatory records expire; that is why the remit moved here. Put them on the
|
||||
same cadence ladder as findings (`docs/method/review.md`) rather than inventing
|
||||
a second review mechanism — a record that has held still for a quarter is
|
||||
making the same statement a finding at `1q` makes.
|
||||
|
||||
`make check` should report a regulatory record due for a check exactly as it
|
||||
reports a finding.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- **No legal advice.** `INTENT.md`, and the records say so in their own text.
|
||||
- **No survey of every regime that might apply.** Regulation is scoped to rules
|
||||
bearing on data the estate holds, markets it sells into, or obligations it has
|
||||
taken on. A general compliance programme is not this.
|
||||
- **No answering what a repo must therefore do.** That is the owning repo's.
|
||||
|
||||
## Risks
|
||||
|
||||
**The remit becomes a compliance function.** Mitigation: records answer
|
||||
questions that were actually asked, by a repo, with a date.
|
||||
|
||||
**A record states a legal conclusion with false confidence.** Mitigation: every
|
||||
record names where it is weak, and `external_review: none` is a required field
|
||||
rather than an omission.
|
||||
169
workplans/RISK-WP-0004-run-the-register.md
Normal file
169
workplans/RISK-WP-0004-run-the-register.md
Normal file
|
|
@ -0,0 +1,169 @@
|
|||
---
|
||||
id: RISK-WP-0004
|
||||
type: workplan
|
||||
title: "Run the register: make the cadence actually happen, and close the gaps the first week found"
|
||||
domain: infotech
|
||||
repo: risk-nexus
|
||||
status: proposed
|
||||
owner: the-custodian
|
||||
topic_slug: risk-nexus
|
||||
created: "2026-08-20"
|
||||
updated: "2026-08-20"
|
||||
depends_on_workplans:
|
||||
- RISK-WP-0001
|
||||
---
|
||||
|
||||
# RISK-WP-0004 — run the register
|
||||
|
||||
**Draft.** `RISK-WP-0001` built the instruments. This one is about the register
|
||||
being *operated*, which is a different thing and the one that fails quietly.
|
||||
|
||||
## Goal
|
||||
|
||||
Nine findings, two notes, a regulatory record and an adaptive cadence exist.
|
||||
**Nothing currently performs a check.** `make check` says what is due; a person
|
||||
or an agent has to read the finding, ask the five questions, and record the
|
||||
outcome. If that does not happen, every finding sits at `instant` forever and
|
||||
the ladder becomes decoration.
|
||||
|
||||
Done means: checks happen on their own schedule without the operator
|
||||
remembering, the register's own known gaps are closed, and the failure modes
|
||||
found in the first week cannot recur silently.
|
||||
|
||||
## What the first week actually found
|
||||
|
||||
Every task below traces to something that happened, not something imagined.
|
||||
|
||||
| What happened | Task |
|
||||
| --- | --- |
|
||||
| Graded `RISK-F-0001` `critical` while its fix notice sat unread in the inbox | T02 |
|
||||
| `RISK-F-0003` returned as `mitigated`, a word the tooling did not know, and vanished from the nag | fixed ad hoc; T03 generalises it |
|
||||
| `ops-warden` and this register both used `RISK-F-0004` | fixed ad hoc; duplicate check now in `make check` |
|
||||
| Two gradings rest on file comparison because an operator token is expired | T05 |
|
||||
| `RISK-F-0007` accepted with an on-request path nobody has exercised | T04 |
|
||||
|
||||
## Tasks
|
||||
|
||||
### T01 — Something performs the checks
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T01
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
`tools/record_check.py` moves a finding along the ladder and writes the dated
|
||||
line. What is missing is the thing that *calls* it on schedule.
|
||||
|
||||
Options, in ascending order of how much this repo should want them: a scheduled
|
||||
agent session that runs `make check`, works the due list, and records outcomes;
|
||||
a cron that only reports; a human habit. The first is the only one that
|
||||
survives the operator being busy, which is the condition the whole ladder is
|
||||
designed for.
|
||||
|
||||
Whatever it is, the check must remain a **judgement** — re-read the grade,
|
||||
re-check every stated blocker, read the owner's tracking record. A job that
|
||||
stamps `clean` without doing that is worse than no job, because it manufactures
|
||||
a stability signal that is false. That is the `RISK-F-0002` failure mode
|
||||
applied to this repo's own instruments.
|
||||
|
||||
### T02 — Inbox before grading, as a check rather than a habit
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T02
|
||||
status: todo
|
||||
priority: high
|
||||
```
|
||||
|
||||
`RISK-WP-0001`'s residual says: if it slips again, make it a check. It has
|
||||
slipped once, on the register's first day, and cost a wrong grade and a nearly
|
||||
sent escalation.
|
||||
|
||||
`make check` should compare each finding's `last_checked` against the newest
|
||||
message this repo has received about that system, and report any finding whose
|
||||
inbox has spoken more recently than its register has. That is mechanical and
|
||||
does not require the tooling to understand the message.
|
||||
|
||||
### T03 — Fail loud everywhere else too
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T03
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
The `mitigated` defect was one instance of a class: the tooling quietly
|
||||
tolerating something it did not expect. Sweep for the rest — unknown disclosure
|
||||
states, unparseable dates, a `constraint_on` pointing at a finding that does
|
||||
not exist, an `embargo_condition` on a finding that is not embargoed.
|
||||
|
||||
Every one of them should be reported by name and keep the finding watched.
|
||||
|
||||
### T04 — Exercise the on-request verification path once
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T04
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
`RISK-F-0007` is accepted until production on the strength of a path nobody has
|
||||
used. A route that has never been walked is a plan, not a route.
|
||||
|
||||
Pick one named consumer boundary, request verification through the documented
|
||||
path, and see what actually happens: who answers, what evidence comes back,
|
||||
whether the finding's likelihood moves for that consumer, and what the record
|
||||
looks like. The value is in the friction it exposes.
|
||||
|
||||
### T05 — The verification credential
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T05
|
||||
status: todo
|
||||
priority: medium
|
||||
```
|
||||
|
||||
`RISK-F-0009` and `RISK-F-0003`'s mitigation both rest on comparing files
|
||||
because `ops-warden`'s operator token is expired and `bao policy read` cannot
|
||||
be run.
|
||||
|
||||
That is not a finding — nothing is wrong with the estate because a token
|
||||
expired — but it means the register is grading deployed controls from their
|
||||
source. Establish what this repo can legitimately verify itself, and what it
|
||||
must always take from owners. **If the answer is "nothing", that is worth
|
||||
knowing and writing down**, because it bounds every grade in the register.
|
||||
|
||||
### T06 — Regulatory records on the same ladder
|
||||
|
||||
```task
|
||||
id: RISK-WP-0004-T06
|
||||
status: todo
|
||||
priority: low
|
||||
```
|
||||
|
||||
Duplicate of `RISK-WP-0003-T04`, kept here as a pointer rather than a second
|
||||
copy. Whichever workplan reaches it first does it; the other closes with a
|
||||
reference.
|
||||
|
||||
## Non-goals
|
||||
|
||||
- **No dashboard.** `REGISTER.md` and `make check` are the surface, and the
|
||||
register is supposed to stay small enough to read.
|
||||
- **No automated grading.** A machine may schedule, list and record. Severity,
|
||||
disclosure and escalation stay judgements this repo makes.
|
||||
- **No monitoring of other systems.** `RISK-N-0003` records that everything
|
||||
here was found by reading rather than watching; this workplan does not
|
||||
attempt to change that, and a register that grows probes becomes a second
|
||||
engineering team.
|
||||
|
||||
## Risks
|
||||
|
||||
**A scheduled check becomes a rubber stamp.** The whole value of the ladder is
|
||||
that a `1q` rung means something. Mitigation: T01 treats stamping without
|
||||
judgement as a defect, and `clean_streak` makes a suspiciously smooth climb
|
||||
visible.
|
||||
|
||||
**The register spends its attention on itself.** Six tasks about the register's
|
||||
own machinery, none of which fix a defect in the estate. Mitigation: T01, T02
|
||||
and T05 all exist because the register got something wrong in week one; if
|
||||
week two produces no such items, this workplan should shrink rather than grow.
|
||||
Loading…
Add table
Add a link
Reference in a new issue