Persist the gap analysis to history/, open RISK-WP-0005
history/2026-08-21-intent-gap-analysis.md follows the estate's history convention. RISK-WP-0005 carries the seven gaps, ordered so the one place the register misreports goes first: fix_tracking is a string nobody reads, so a stalled fix and a silent owner are currently the same thing. The two INTENT claims with no implementation at all — incident intake and external report — are T02. STATE.md now says both of those out loud rather than leaving them to the assessment. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
ace941ef05
commit
0ff87c22d8
3 changed files with 258 additions and 4 deletions
13
STATE.md
13
STATE.md
|
|
@ -18,6 +18,7 @@ question carries a default and a date, and the check cadence is scheduled on
|
||||||
| `RISK-WP-0002` | active | Publication handover — T01 with `policy-nexus` |
|
| `RISK-WP-0002` | active | Publication handover — T01 with `policy-nexus` |
|
||||||
| `RISK-WP-0003` | **finished** | Regulatory intake; the legal policy set |
|
| `RISK-WP-0003` | **finished** | Regulatory intake; the legal policy set |
|
||||||
| `RISK-WP-0004` | **finished** | Running the register: cadence, verification, inbox-before-grading |
|
| `RISK-WP-0004` | **finished** | Running the register: cadence, verification, inbox-before-grading |
|
||||||
|
| `RISK-WP-0005` | active | Closing the seven gaps in `history/2026-08-21-intent-gap-analysis.md` |
|
||||||
|
|
||||||
## The register
|
## The register
|
||||||
|
|
||||||
|
|
@ -87,6 +88,18 @@ python3 tools/register_check.py # just the register
|
||||||
statehub fix-consistency --repo risk-nexus
|
statehub fix-consistency --repo risk-nexus
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Known, and being worked
|
||||||
|
|
||||||
|
`history/2026-08-21-intent-gap-analysis.md` graded this repo against its own
|
||||||
|
`INTENT.md`. Five of six ownership claims hold; seven gaps do not, and
|
||||||
|
`RISK-WP-0005` carries them. The two worth knowing without reading it:
|
||||||
|
|
||||||
|
- **`fix_tracking` is a string nobody reads.** The register claims to track
|
||||||
|
remediation and does not — an owner who goes quiet and a fix that goes quiet
|
||||||
|
look identical.
|
||||||
|
- **Incident and external-report intake do not exist**, though `INTENT.md`
|
||||||
|
claims both. Every finding so far came from a repo reading its own code.
|
||||||
|
|
||||||
## Known conditions
|
## Known conditions
|
||||||
|
|
||||||
- **Workplans are not indexed in the hub.** C-06 on all four: this instance is
|
- **Workplans are not indexed in the hub.** C-06 on all four: this instance is
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
---
|
---
|
||||||
id: RISK-ASSESS-0001
|
type: history
|
||||||
type: assessment
|
title: "risk-nexus INTENT gap analysis"
|
||||||
title: "STATE.md against INTENT.md — what is missing"
|
|
||||||
date: "2026-08-21"
|
date: "2026-08-21"
|
||||||
owner: risk-nexus
|
author: claude
|
||||||
|
repo: risk-nexus
|
||||||
|
related_workplan: RISK-WP-0005
|
||||||
---
|
---
|
||||||
|
|
||||||
# What this repo promised, and what it has
|
# What this repo promised, and what it has
|
||||||
240
workplans/RISK-WP-0005-close-the-intent-gaps.md
Normal file
240
workplans/RISK-WP-0005-close-the-intent-gaps.md
Normal file
|
|
@ -0,0 +1,240 @@
|
||||||
|
---
|
||||||
|
id: RISK-WP-0005
|
||||||
|
type: workplan
|
||||||
|
title: "Close the gaps between what INTENT claims and what the register can actually do"
|
||||||
|
domain: infotech
|
||||||
|
repo: risk-nexus
|
||||||
|
status: active
|
||||||
|
owner: the-custodian
|
||||||
|
topic_slug: risk-nexus
|
||||||
|
created: "2026-08-21"
|
||||||
|
updated: "2026-08-21"
|
||||||
|
depends_on_workplans:
|
||||||
|
- RISK-WP-0001
|
||||||
|
- RISK-WP-0004
|
||||||
|
---
|
||||||
|
|
||||||
|
# RISK-WP-0005 — close the INTENT gaps
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
`history/2026-08-21-intent-gap-analysis.md` compared what `INTENT.md` claims
|
||||||
|
against what four days of building actually produced. Five of six ownership
|
||||||
|
claims hold. Seven gaps do not.
|
||||||
|
|
||||||
|
Done means: the register no longer reports anything it cannot see, no longer
|
||||||
|
claims a surface it does not have, and the two intake paths `INTENT.md` names
|
||||||
|
but has never had — incident and external report — exist.
|
||||||
|
|
||||||
|
## The honest framing
|
||||||
|
|
||||||
|
Every task here exists because the register failed one of its own tests, not
|
||||||
|
because someone imagined an improvement. Two are uncomfortable enough to state
|
||||||
|
plainly at the top:
|
||||||
|
|
||||||
|
- **`fix_tracking` is a string nobody reads.** The register claims to track
|
||||||
|
remediation and does not. An owner who goes quiet and a fix that goes quiet
|
||||||
|
are currently indistinguishable.
|
||||||
|
- **A regulation that applies was found *after* it was needed**, by about
|
||||||
|
nineteen months. The policy catalogue fixes the next one; nothing fixes that
|
||||||
|
one.
|
||||||
|
|
||||||
|
## Tasks
|
||||||
|
|
||||||
|
### T01 — Make remediation tracking track
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T01
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 2, and first because it is the only place the register currently reports
|
||||||
|
something it cannot see.
|
||||||
|
|
||||||
|
`fix_tracking` holds ids like `FLEX-WP-0015-T02`. The hub knows whether those
|
||||||
|
moved. Read them: resolve each `fix_tracking` against the hub, record the
|
||||||
|
status and the date it last changed, and surface it in `make check`.
|
||||||
|
|
||||||
|
Then separate the two silences that currently look alike:
|
||||||
|
|
||||||
|
- **The register has not checked** — the cadence rung already says this.
|
||||||
|
- **The fix has not moved** — its own timer, independent of whether anyone
|
||||||
|
checked, escalating on trigger 5 without needing a human to notice.
|
||||||
|
|
||||||
|
**Acceptance:** `make check` reports, per open finding, when its fix record
|
||||||
|
last changed. A finding whose fix has not moved in its stall window is listed
|
||||||
|
whether or not the register has been checking.
|
||||||
|
|
||||||
|
Where `fix_tracking` is `unset` (`RISK-F-0004`, `RISK-F-0006`, `RISK-F-0009`),
|
||||||
|
that absence is itself the report.
|
||||||
|
|
||||||
|
### T02 — An intake path for incidents and external reports
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T02
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 1. `INTENT.md` claims intake "from any source: research, review, incident,
|
||||||
|
external report". Two of those four have no path at all.
|
||||||
|
|
||||||
|
Three pieces, and only the first is this repo's alone:
|
||||||
|
|
||||||
|
1. **Incident intake.** A finding that describes something happening *now*
|
||||||
|
rather than a latent defect. Needs: an entry shape, a tempo (the ladder
|
||||||
|
already starts at `instant`, which is most of it), and a link from an
|
||||||
|
incident to `RISK-POL-0005` — breach notification runs on a 72-hour clock
|
||||||
|
that nothing currently starts.
|
||||||
|
2. **External report.** There is no address an outsider could use and no
|
||||||
|
`security.txt` anywhere in the estate. Where that address lives is not this
|
||||||
|
repo's call — route the question to `the-custodian` and `policy-nexus`,
|
||||||
|
since it is a published surface.
|
||||||
|
3. **Severity for a live incident.** The scale assumes a defect nobody is
|
||||||
|
exercising. Say what changes when someone is.
|
||||||
|
|
||||||
|
**Non-goal:** a bug bounty, a disclosure programme, or any commitment to
|
||||||
|
outside parties. The ask is a route, not a promise.
|
||||||
|
|
||||||
|
### T03 — Define the production transition
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T03
|
||||||
|
status: todo
|
||||||
|
priority: high
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 4, and cheap. Five findings owe a re-score at "the production transition"
|
||||||
|
and `RISK-F-0007`'s acceptance **expires** there.
|
||||||
|
|
||||||
|
Nobody has defined the event, nobody has been named to declare it, and nothing
|
||||||
|
outside this repo knows the obligation exists. An acceptance that expires on an
|
||||||
|
undefined event expires on nobody's calendar.
|
||||||
|
|
||||||
|
Settle: what counts as the transition (first real user? first real tenant data?
|
||||||
|
a declaration?), who declares it, and how this register hears about it. Then
|
||||||
|
tell the repos that carry re-score obligations.
|
||||||
|
|
||||||
|
Custodian decision on the definition; the plumbing is ours.
|
||||||
|
|
||||||
|
### T04 — Stop claiming a surface we do not have
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T04
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 5. `README.md` and `INTENT.md` both say this repo serves
|
||||||
|
`risk.coulomb.social`. It serves nothing.
|
||||||
|
|
||||||
|
Correct the README to say what is true — that publication runs through
|
||||||
|
`policy-nexus` and two documents are pending an address. `INTENT.md` is the
|
||||||
|
repo's constitutional document and its amendment is the custodian's; propose
|
||||||
|
the wording rather than editing it.
|
||||||
|
|
||||||
|
Small, and exactly the class of claim this register grades other repos down
|
||||||
|
for: a stated control that is not there.
|
||||||
|
|
||||||
|
### T05 — Give escalation a delivery guarantee
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T05
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 6. An escalation goes to an inbox and is said aloud in whatever session is
|
||||||
|
running. If nobody reads it, it is indistinguishable from one never sent —
|
||||||
|
which is the failure this register committed on 2026-08-19 and fixed **for
|
||||||
|
itself** with `hourly-register-inbox-watch`, without applying the same fix to
|
||||||
|
the path that matters more.
|
||||||
|
|
||||||
|
Needs: an acknowledgement state on the escalation (sent → seen → answered), and
|
||||||
|
a re-raise once, per the adopted rule's "raised again once" clause. Not a
|
||||||
|
weekly nag; the rule is explicit that repetition until someone answers is how
|
||||||
|
the operator becomes the queue.
|
||||||
|
|
||||||
|
### T06 — Make a lie about stability impossible to miss
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T06
|
||||||
|
status: todo
|
||||||
|
priority: medium
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 7. If nothing performs checks, every finding still climbs nowhere and sits
|
||||||
|
at `instant` — but the reverse case is the dangerous one: a `1q` rung means
|
||||||
|
"stable for a quarter" and "nobody looked for a quarter" and those read
|
||||||
|
identically.
|
||||||
|
|
||||||
|
Two cheap defences:
|
||||||
|
|
||||||
|
- **Attribution.** Record who or what performed each check. A rung earned by
|
||||||
|
nobody should be visible as such.
|
||||||
|
- **A register heartbeat.** If no check has been recorded anywhere in the
|
||||||
|
register for longer than the shortest rung by some margin, `make check` says
|
||||||
|
so first, before anything else.
|
||||||
|
|
||||||
|
### T07 — A coverage model
|
||||||
|
|
||||||
|
```task
|
||||||
|
id: RISK-WP-0005-T07
|
||||||
|
status: todo
|
||||||
|
priority: low
|
||||||
|
```
|
||||||
|
|
||||||
|
Gap 3: the largest, the most expensive, and the one that decides whether
|
||||||
|
"nobody is surprised" is a claim this repo can ever make.
|
||||||
|
|
||||||
|
The register knows what was reported. It has no view of what was never looked
|
||||||
|
at, so a system with zero findings is indistinguishable from a system nobody
|
||||||
|
assessed — while `RISK-N-0003` records that every repo which *has* examined its
|
||||||
|
own boundary this month found a defect.
|
||||||
|
|
||||||
|
Start minimal: a list of systems from the hub, a last-assessed date per system,
|
||||||
|
and the count of systems that have never been. Not an assessment programme, not
|
||||||
|
a maturity model, and not this repo assessing anyone.
|
||||||
|
|
||||||
|
**If this task grows past a page it becomes its own workplan.** Coverage is a
|
||||||
|
different problem from triage and should not quietly absorb this one.
|
||||||
|
|
||||||
|
## Non-goals
|
||||||
|
|
||||||
|
- **No monitoring.** `RISK-N-0003` stands as a note. A register that grows
|
||||||
|
probes becomes a second engineering team, which `INTENT.md` names.
|
||||||
|
- **No blocking.** Build mode: a finding is information.
|
||||||
|
- **No commitment to outside parties.** T02 builds a route in, not a promise
|
||||||
|
out.
|
||||||
|
- **No new instruments.** The four exist and have survived use. This workplan
|
||||||
|
makes them honest, not larger.
|
||||||
|
|
||||||
|
## Sequencing
|
||||||
|
|
||||||
|
T01 first — it is the only gap where the register misreports. T02 and T03 next
|
||||||
|
and in parallel; both are cheap and T03 is mostly a decision. T04 any time.
|
||||||
|
T05 and T06 after T01, since both touch the same reporting surface. T07 last,
|
||||||
|
and possibly not here at all.
|
||||||
|
|
||||||
|
## Risks
|
||||||
|
|
||||||
|
**The register spends another workplan on itself.** Seven tasks, none of which
|
||||||
|
fix a defect in the estate. Mitigation: T01, T02 and T03 all close claims
|
||||||
|
`INTENT.md` already makes, which is repayment rather than expansion — and the
|
||||||
|
same test as last time applies: if the next round produces no such items, this
|
||||||
|
kind of workplan should stop.
|
||||||
|
|
||||||
|
**T07 swallows the workplan.** Mitigation: it is last, explicitly minimal, and
|
||||||
|
carries its own escape clause.
|
||||||
|
|
||||||
|
**Incident intake invites a promise.** Mitigation: T02's non-goal is stated in
|
||||||
|
the task, not only here.
|
||||||
|
|
||||||
|
## Residuals
|
||||||
|
|
||||||
|
- The nineteen-month-late obligations are not recoverable and are recorded in
|
||||||
|
the history note rather than converted into a task.
|
||||||
|
- Whether findings should be reported to the estate by anything other than
|
||||||
|
their owners — monitoring, coverage sweeps — stays a note until evidence
|
||||||
|
makes it a finding.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue