docs(m2): correct where the O4 gate lands and why
The first draft pinned the gate to Step 21. Wrong distinction: the gate lives in the launcher, so it covers tools reached through the MCP server and not a skill that calls a script directly, which is how Steps 21 and 22 write. Step 21 is where the defect starts; it is not where the gate has to land. Pinned to Step 24 instead, with the one-file fence amendment named. Co-Authored-By: Claude <claude-opus-5>
This commit is contained in:
parent
651d996004
commit
52fd5c26a7
1 changed files with 14 additions and 5 deletions
|
|
@ -455,11 +455,20 @@ defect starts at plan Step 21 and Step 22, where `sak.md` and
|
|||
`beslutninger.jsonl` first persist employer names, titles, URLs and notes that
|
||||
came from a listing.
|
||||
|
||||
**Timing.** Taken here, in M2, as the order required. Implemented in the step
|
||||
that introduces the first such write (Step 21), because the change lives in
|
||||
`scripts/jobbsok_tools_launch.py` and `scripts/jobbsok_tools.py`, both outside
|
||||
the fence of the order that took the decision. A decision recorded without its
|
||||
implementation date is a decision that evaporates; this one has a step number.
|
||||
**Timing, and one distinction the first draft of this section got wrong.**
|
||||
The gate lives in `scripts/jobbsok_tools_launch.py`, so it protects exactly one
|
||||
path: tools reached through the MCP server. It does **not** protect a skill that
|
||||
calls a script directly, which is how `sak` and `beslutning` write in Steps 21
|
||||
and 22. So Step 21 is where the *defect* starts and it is not where the *gate*
|
||||
has to land; the hard deadline is the first time the server exposes a tool that
|
||||
persists untrusted content, which Step 24's status and daily tools are not.
|
||||
|
||||
Implemented at **Step 24** anyway, because that is the next step that touches
|
||||
this neighbourhood and shipping the gate before it is needed costs nothing.
|
||||
Step 24's fence (plan Session 6) lists `scripts/jobbsok_tools.py` and must be
|
||||
extended by one file to include the launcher; the order that carries Step 24
|
||||
says so explicitly. A decision recorded without an implementation step is a
|
||||
decision that evaporates; this one has a step number and a fence amendment.
|
||||
|
||||
## Degradation branch
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue