Add science control APIs and the hypothesis, experiment and promote CLI
Some checks failed
ci / build (push) Has been cancelled

Completes FLUID-WP-0006. The loop now runs end to end from the command
line: two competing presentation hypotheses, an experiment that issues a
routing policy rather than touching traffic, an amendment, a stop that
returns traffic to the default, a confirmed outcome, a resolved
competition, and a promotion the gate can refuse.

Starting or stopping an experiment returns the routing policy for the
operator to install rather than installing it. Blueprint 17 keeps the
controller out of the traffic path, and installing from the handler
would put it straight back in; emitting the document keeps the
separation visible instead of implied.

`fluid audit trace` now answers the section 25 questions from events
rather than summary records, and names the rivals a hypothesis beat: an
audit asking which hypotheses were considered is not answered by naming
only the winner.

Two fixes found by driving the CLI rather than only the tests. Go's flag
package stops at the first positional, so ids given after flags silently
swallowed them; ids are now taken before parsing. And there was no way
to attach a revision to the hypothesis that produced it, which left
`audit trace` unable to say why a revision existed -- `hypothesis attach`
closes that.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014KmVxhJ35tCo7rE7UnLwWu

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 1116572@bnt-lap001
Assistant-Session: 8ba9bb93-a72a-4883-b189-2499cce5c400
This commit is contained in:
tegwick 2026-09-04 06:44:47 +02:00
parent 634807a0cb
commit 3407b9cf85
9 changed files with 1006 additions and 29 deletions

View file

@ -4,7 +4,7 @@ type: workplan
title: "FLUID Science - the adaptation loop closes (Blueprint Phase C)"
domain: infotech
repo: fluid-core
status: active
status: done
owner: worsch
topic_slug: fluid-core
created: "2026-09-04"
@ -26,7 +26,7 @@ proving this loop works cleanly and safely, not autonomous coding.
```task
id: FLUID-WP-0006-T01
status: todo
status: done
priority: high
state_hub_task_id: "93dd0a6d-3f46-5da5-857d-e0bd49c356db"
```
@ -40,7 +40,7 @@ collapsing them into one narrative destroys criticism and auditability.
```task
id: FLUID-WP-0006-T02
status: todo
status: done
priority: medium
state_hub_task_id: "81f6a22f-929e-5c94-bc61-f4e06ad7de16"
```
@ -52,7 +52,7 @@ uncertainty is a feature.
```task
id: FLUID-WP-0006-T03
status: todo
status: done
priority: medium
state_hub_task_id: "0050d3e4-cc5c-5e1d-9d29-d14bace0e1cf"
```
@ -63,7 +63,7 @@ Blueprint §44.3: create, compare, prioritize, attach candidate, record outcome.
```task
id: FLUID-WP-0006-T04
status: todo
status: done
priority: high
state_hub_task_id: "36391a67-6a3e-54c9-afc5-181e0b968f85"
```
@ -77,7 +77,7 @@ Experiments are interruptible.
```task
id: FLUID-WP-0006-T05
status: todo
status: done
priority: medium
state_hub_task_id: "2c2a1ff5-f908-565f-ae5b-c0eb469e6482"
```
@ -89,7 +89,7 @@ finalize.
```task
id: FLUID-WP-0006-T06
status: todo
status: done
priority: high
state_hub_task_id: "7223f795-a005-5fe0-9abb-45e4803a3091"
```
@ -101,7 +101,7 @@ after results are visible without recording the amendment (§18).
```task
id: FLUID-WP-0006-T07
status: todo
status: done
priority: high
state_hub_task_id: "59188ee2-81e6-5331-a0f6-673b7daf871e"
```
@ -113,7 +113,7 @@ recorded as decisions with an authorizing actor (§19). Human authority only.
```task
id: FLUID-WP-0006-T08
status: todo
status: done
priority: high
state_hub_task_id: "8eb2e90c-6c65-5ef5-be19-d42c2b091d8c"
```
@ -125,7 +125,7 @@ itself a system behavior that must remain reconstructable.
```task
id: FLUID-WP-0006-T09
status: todo
status: done
priority: high
state_hub_task_id: "7dd49f06-9cc7-5791-abfb-33b27649ba8a"
```