Skip to content

docs: split WP-4, CA-31 moves to a new work package WP-7 - #29

Merged
constantin-jais merged 2 commits into
migrate/recover-codefrom
work/docs-wp4-split-wp7
Oct 26, 2026
Merged

constantin-jais merged 2 commits into
migrate/recover-codefrom
work/docs-wp4-split-wp7

Conversation

@constantin-jais

Copy link
Copy Markdown
Contributor

Why

Owner decision of 2026-10-26, verbatim: « Scinder en 2 WP (Recommandé) ».

WP-4 held three criteria of different kinds:

  • CA-22 (egress refused) and CA-32 (pass confined to its worktree) rest on one mechanism, R-13: container mounts, a network namespace, nftables.
  • CA-31 (vector 4 of ADR-0045, adaptive attacks) replays recorded model outputs against the deterministic controls: buildJobs, validateVerdict and the aggregation node (grep -n 'CA-31' docs/cahier-des-charges.md). It needs no container.

In one pull request, an exploit-seeking review of the confinement and one of the attack corpus would have to run on the same diff. The WP-3 review of a smaller diff has already taken three rounds. A separate CA-31 can also merge before the heavier confinement work.

What changes

docs/prd.md:

  • The WP-4 row covers CA-22 and CA-32. Its scope is unchanged.
  • A new row WP-7 covers CA-31. Its scope:
    • tools/review/vectors/**, for the corpus under vectors/adaptive/ and its replay;
    • tools/review/fanout-activation.ts, to mark the adaptive-attacks condition met;
    • docs/evidence/**, for an optional real-model measure (R-15).
  • One preamble sentence records the split and says that WP-7 can precede WP-4.
  • The provenance names the changed lines. The door count goes from six to seven packages.

docs/cahier-des-charges.md:

  • Section 8.2, R-12 and R-15 record that CA-31 is carried by WP-7. The decision of 2026-10-23 is kept as written.
  • The provenance line says so.

The text of CA-31 is unchanged.

After merge

Verification

  • Norm reader (bun prd-read.ts <repo-root>, governance tools/quality/prd-model.ts): RESULT: pass.
  • It warns that the WP-7 glob tools/review/vectors/** matches no tracked file on the served branch. WP-3 creates that directory.

Exempt: docs-only

🤖 Generated with Claude Code

Owner decision of 2026-10-26: WP-4 is split in two work packages.

- WP-4 keeps CA-22 (egress) and CA-32 (pass confined to its worktree).
  Both rest on the same mechanism (R-13: container mounts, network
  namespace and nftables), so they share one CI probe and one review.
- WP-7 carries CA-31 (vector 4 of ADR-0045, adaptive attacks). CA-31
  replays recorded model outputs against the deterministic controls
  (buildJobs, validateVerdict, the aggregation node); it does not depend
  on the R-13 mechanism, so WP-7 can be done before WP-4. Its scope is the
  vectors directory, the activation table (to mark its condition met) and
  docs/evidence for a real-model measure.

The PRD gains the WP-7 row, one preamble sentence, and the door count
(seven packages). The specification records the move in section 8.2,
R-12 and R-15, without rewriting the decision of 2026-10-23.

Norm reader (prd-read.ts, governance tools/quality/prd-model.ts):
RESULT: pass. It warns that the WP-7 glob tools/review/vectors/** matches
no tracked file on the served branch; the directory is created by WP-3.

Exempt: docs-only
Signed-off-by: Constantin Jais <74049135+constantin-jais@users.noreply.github.com>
Second-family review of #29 (GLM 5.3, ACCEPTABLE on 790ae47), one minor
finding, applied: the sentence listing the packages that declare the
not-yet-tracked directories under tools/review named WP-1, WP-3 and WP-4,
while the new WP-7 row also declares tools/review/vectors/**.

Exempt: docs-only
Signed-off-by: Constantin Jais <74049135+constantin-jais@users.noreply.github.com>
@constantin-jais
constantin-jais merged commit 02ff856 into migrate/recover-code Oct 26, 2026
1 check passed
constantin-jais added a commit that referenced this pull request Oct 26, 2026
Round 3, finding G5. The owner split WP-4 on 2026-10-26 (#29): WP-4 keeps
CA-22 and CA-32, CA-31 moves to the new work package WP-7 (#30). The
base was caught up first by a merge commit.

The condition adaptive-attacks now names WP-7; its source cites ADR-0045
and CA-31 and never mentioned WP-4, so it is unchanged. The header of
fanout-activation.ts names, for each condition still unmet, its exact
package: WP-4 for telemetry-egress-refused and pass-read-confined, WP-7
for adaptive-attacks.

Count, `grep -n 'WP-4' tools/review/*.ts tools/review/vectors/*.ts` before
the change: 11 found, 11 classified. Corrected (5): the header line, the
workPackage of adaptive-attacks, and three test lines that pinned it (the
unmet list, its title, the refusal line "CA-31; delivered by WP-4").
Kept (6): the workPackage of telemetry-egress-refused and of
pass-read-confined, the two unmet-list entries for those conditions, the
expected sixth condition, and the refusal line "CA-22; delivered by WP-4".
The test text follows the table, not the current output.

Gate-integrity questions for the changed tests:
1. What makes them red (env -i PATH HOME): the workPackage of
   adaptive-attacks set back to "WP-4": 2 red (the unmet list, and the
   refusal message naming its package).
2. Would an equivalent refactor redden them: no. They read each unmet
   condition's package from the table and the message, which is the fact
   the split changes.

Work-package: #19 WP-3
Signed-off-by: Constantin Jais <74049135+constantin-jais@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant