Thomas Piacentini
← Atelier

Fiche

Outcomes, Workflows, Risks and Specs

Texte original · anglais

Frame the outcome, ground the workflow, rank assumptions, pick a slice, write the spec, set metrics, choose a stage.

From request to stage

  1. Outcome frame the result without naming a solution.
  2. Workflow record the steps people perform, with evidence.
  3. Assumptions score the bets. Test the riskiest open one first.
  4. Slice pick the smallest slice that covers the required proof.
  5. Specification fix invariants. Mark each decision mode.
  6. Metrics set thresholds before results exist.
  7. Stage choose prototype, pilot or production.
Sources

Choose a stage

noyesnoyesUnknownthe learning questionclientNeeds real users or data?choose_stagePrototypediscardable, isolatedprocessConsequence bounded, opsready?consequence below 4Pilotnamed audience, rollbackprocessProductionowned continuouslyprocess
Nodes and connections
NodeRoleKind
Unknownthe learning questionclient
Needs real users or data?choose_stage
Prototypediscardable, isolatedprocess
Consequence bounded, ops ready?consequence below 4
Pilotnamed audience, rollbackprocess
Productionowned continuouslyprocess
FromToConnection
UnknownNeeds real users or data?
Needs real users or data?Prototypeno
Needs real users or data?Consequence bounded, ops ready?yes
Consequence bounded, ops ready?Pilotno
Consequence bounded, ops ready?Productionyes
Sources

Outcome frame

User
who experiences the problem directly?
Situation
when and where does it occur?
Current behavior
what happens today, with workarounds?
Desired outcome
what observable state improves?
Constraints
fixed safety, policy, cost or compatibility limits.
Non-goals
tempting adjacent work that is excluded.
Solution leakage
a product form, model or framework in the outcome.
Sources

Formulas from the labs

Risk
\mathrm{impact} \times \mathrm{uncertainty} + \mathrm{irreversibility}
Slice score
\frac{\mathrm{value} + \mathrm{uncertainty\ reduced}}{\mathrm{effort} + \mathrm{risk\ penalty}}
Risk penalty
consequence times 2 if not reversible, else times 0.5.
Eligible slice
the required proof is a subset of proves.
Direct evidence ratio
direct items over all evidence items.
at-most
passes when value is at or below the threshold.
at-least
passes when value is at or above the threshold.
Sources

Assumptions and evidence

Value
will the outcome matter enough?
Usability
can the user understand and act on it?
Feasibility
can the system produce it with the data and constraints?
Viability
can the organization sustain cost, ownership and operation?
Safety
can it fail without unacceptable consequence?
Evidence ladder
direct behavior, artifact, reported behavior, inference.
Proof of current behavior
only the first two rungs.
Sources

Three decision modes

FactorLockedBoundedDelegated
Agent mayNot chooseChoose inside limitsOwn the choice, explain it
Use forSafety, authority, public compatibilitySearch budgets, retry countsNames, reversible refactors
Next stepHuman checkpointAgent proposes within limitsAgent implements and proves
RationaleRequiredRequiredOptional
Output keyhuman_checkpointbounded_decisionsagent_may_decide
Sources

Prototype, pilot, production

FactorPrototypePilotProduction
QuestionCan the mechanism produce the evidence at all?Does it work safely with a bounded real audience?Can we own it at the promised reliability?
Use whenNo real users or data neededReal behavior needed, consequence not readyConsequence bounded, operations ready
ControlsSynthetic or recorded inputs, discardableLimited audience, rollback, human owner, audit trailSLO, on-call owner, security review, monitoring
ExitMechanism earns another stageExpand, revise or stopRetirement path
Sources

Metric contract

plan = MeasurementPlan(
goal="Reduce time to identify the affected service without increasing unsafe actions",
questions=["How quickly is the correct service identified?"],
metrics=[
Metric("median_identification_seconds", "at-most", 120,
"ten incident replays", "replay log", "outcome"),
Metric("correct_service_rate", "at-least", 0.9,
"ten incident replays", "incident record", "outcome"),
Metric("production_writes", "at-most", 0,
"entire pilot", "audit log", "guardrail"),required kind
])
report(plan, values)missing value gives status missing
Sources

Lab functions

TaskCode
Run a lab and its testspython3 -m unittest discover code/tests -v
Frame statusdecision(frame)
Audit workflow evidenceaudit(steps)
Rank assumptionsprioritize(items)
Highest open risknext_experiment(items)
Pick an eligible slicechoose(items, required_proof)
Spec to contractcompile_contract(specification)
Stage and its controlsplan(decision)
Sources

Lab constants

SettingDefaultNote
Risk dimensionsrange(1, 6)Impact, uncertainty, irreversibility
Evidence confidence0 <= item.confidence <= 1Else an issue
Workflow orderrange(1, len(steps) + 1)Contiguous from one
VALID_MODES{"locked", "bounded", "delegated"}Other modes are invalid
Stage consequence1 <= decision.consequence <= 5Else an error
Pilot at consequence4Or not reversible, or not ready
Sources

Validator messages

SymptomCauseFix
desired outcome names the proposed outputSolution leaked into the outcomeState the observable result instead
non-goals are emptyNo boundary on the sliceAdd concrete non-goals that reject work
no slice proves the required assumptionsCandidates skip the risky partDesign a slice that covers the proof set
constrained decision lacks rationaleLocked or bounded without a reasonWrite the reason for the limit
guardrail metric is missingOnly outcome metricsAdd a production_writes guardrail
Sources

Questions

A cheap slice scores high but misses proof?
It stays ineligible.
Every result says keep building?
The slice is not an experiment.
Can a lower layer prove a higher claim?
No. A unit test proves a local contract only.
Offline replay or pilot?
Neither substitutes for the other.
When does production begin?
When the organization accepts ongoing responsibility.
Sources

Tips

  • Avoid false minimums: UI-only, infrastructure-only, happy-path, demo, platform.
  • Write a stop rule before implementation.
  • Write pass, fail and ambiguous paths before you see results.
  • Mark the stage in configuration, access control, telemetry and docs.
Sources
Original source
---
id: product-discovery
title: Outcomes, Workflows, Risks and Specs
code: OW
subtitle: Frame the outcome, ground the workflow, rank assumptions, pick a slice, write the spec, set metrics, choose a stage.
hue: 330
sources: phases/14-agent-engineering/47-outcomes-before-output, phases/14-agent-engineering/48-discover-the-real-workflow, phases/14-agent-engineering/49-map-assumptions-and-risk, phases/14-agent-engineering/50-choose-the-smallest-testable-slice, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment, phases/14-agent-engineering/52-design-success-metrics, phases/14-agent-engineering/53-prototype-pilot-or-production
source_hash: 9fddd57a6902430a
---

## From request to stage
type: flow
from: phases/14-agent-engineering/47-outcomes-before-output/docs/en.md, phases/14-agent-engineering/48-discover-the-real-workflow/docs/en.md, phases/14-agent-engineering/49-map-assumptions-and-risk/docs/en.md, phases/14-agent-engineering/50-choose-the-smallest-testable-slice/docs/en.md, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/docs/en.md, phases/14-agent-engineering/52-design-success-metrics/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md

1. **Outcome**: frame the result without naming a solution.
2. **Workflow**: record the steps people perform, with evidence.
3. **Assumptions**: score the bets. Test the riskiest open one first.
4. **Slice**: pick the smallest slice that covers the required proof.
5. **Specification**: fix invariants. Mark each decision mode.
6. **Metrics**: set thresholds before results exist.
7. **Stage**: choose prototype, pilot or production.

## Choose a stage
type: architecture
from: phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/code/main.py

```arch
node | unk | 1,1 | Unknown | the learning question | client
node | real | 2,1 | Needs real users or data? | choose_stage |
node | proto | 3,1 | Prototype | discardable, isolated | process
node | ready | 2,2 | Consequence bounded, ops ready? | consequence below 4 |
node | pilot | 3,2 | Pilot | named audience, rollback | process
node | prod | 4,2 | Production | owned continuously | process
edge | unk | real |
edge | real | proto | no
edge | real | ready | yes
edge | ready | pilot | no
edge | ready | prod | yes
```

## Outcome frame
type: concepts
from: phases/14-agent-engineering/47-outcomes-before-output/docs/en.md, phases/14-agent-engineering/47-outcomes-before-output/code/main.py

- **User**: who experiences the problem directly?
- **Situation**: when and where does it occur?
- **Current behavior**: what happens today, with workarounds?
- **Desired outcome**: what observable state improves?
- **Constraints**: fixed safety, policy, cost or compatibility limits.
- **Non-goals**: tempting adjacent work that is excluded.
- **Solution leakage**: a product form, model or framework in the outcome.

## Formulas from the labs
type: concepts
from: phases/14-agent-engineering/48-discover-the-real-workflow/code/main.py, phases/14-agent-engineering/49-map-assumptions-and-risk/code/main.py, phases/14-agent-engineering/50-choose-the-smallest-testable-slice/code/main.py, phases/14-agent-engineering/52-design-success-metrics/code/main.py

- **Risk**: $\mathrm{impact} \times \mathrm{uncertainty} + \mathrm{irreversibility}$
- **Slice score**: $\frac{\mathrm{value} + \mathrm{uncertainty\ reduced}}{\mathrm{effort} + \mathrm{risk\ penalty}}$
- **Risk penalty**: consequence times 2 if not reversible, else times 0.5.
- **Eligible slice**: the required proof is a subset of `proves`.
- **Direct evidence ratio**: direct items over all evidence items.
- **`at-most`**: passes when value is at or below the threshold.
- **`at-least`**: passes when value is at or above the threshold.

## Assumptions and evidence
type: concepts
from: phases/14-agent-engineering/49-map-assumptions-and-risk/docs/en.md, phases/14-agent-engineering/48-discover-the-real-workflow/docs/en.md

- **Value**: will the outcome matter enough?
- **Usability**: can the user understand and act on it?
- **Feasibility**: can the system produce it with the data and constraints?
- **Viability**: can the organization sustain cost, ownership and operation?
- **Safety**: can it fail without unacceptable consequence?
- **Evidence ladder**: direct behavior, artifact, reported behavior, inference.
- **Proof of current behavior**: only the first two rungs.

## Three decision modes
type: comparison
from: phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/docs/en.md, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/code/main.py

| Factor | Locked | Bounded | Delegated |
|---|---|---|---|
| Agent may | Not choose | Choose inside limits | Own the choice, explain it |
| Use for | Safety, authority, public compatibility | Search budgets, retry counts | Names, reversible refactors |
| Next step | Human checkpoint | Agent proposes within limits | Agent implements and proves |
| Rationale | Required | Required | Optional |
| Output key | `human_checkpoint` | `bounded_decisions` | `agent_may_decide` |

## Prototype, pilot, production
type: comparison
span: 2
from: phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/code/main.py

| Factor | Prototype | Pilot | Production |
|---|---|---|---|
| Question | Can the mechanism produce the evidence at all? | Does it work safely with a bounded real audience? | Can we own it at the promised reliability? |
| Use when | No real users or data needed | Real behavior needed, consequence not ready | Consequence bounded, operations ready |
| Controls | Synthetic or recorded inputs, discardable | Limited audience, rollback, human owner, audit trail | SLO, on-call owner, security review, monitoring |
| Exit | Mechanism earns another stage | Expand, revise or stop | Retirement path |

## Metric contract
type: annotated-code
lang: python
from: phases/14-agent-engineering/52-design-success-metrics/code/main.py, phases/14-agent-engineering/52-design-success-metrics/docs/en.md

```python
plan = MeasurementPlan(
    goal="Reduce time to identify the affected service without increasing unsafe actions",
    questions=["How quickly is the correct service identified?"],
    metrics=[
        Metric("median_identification_seconds", "at-most", 120,
               "ten incident replays", "replay log", "outcome"),
        Metric("correct_service_rate", "at-least", 0.9,
               "ten incident replays", "incident record", "outcome"),
        Metric("production_writes", "at-most", 0,
               "entire pilot", "audit log", "guardrail"),  # required kind
    ])
report(plan, values)          # missing value gives status missing
```

## Lab functions
type: task-table
col: 4
from: phases/14-agent-engineering/47-outcomes-before-output/code/main.py, phases/14-agent-engineering/48-discover-the-real-workflow/code/main.py, phases/14-agent-engineering/49-map-assumptions-and-risk/code/main.py, phases/14-agent-engineering/50-choose-the-smallest-testable-slice/code/main.py, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/code/main.py, phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/code/main.py

| Task | Code |
|---|---|
| Run a lab and its tests | `python3 -m unittest discover code/tests -v` |
| Frame status | `decision(frame)` |
| Audit workflow evidence | `audit(steps)` |
| Rank assumptions | `prioritize(items)` |
| Highest open risk | `next_experiment(items)` |
| Pick an eligible slice | `choose(items, required_proof)` |
| Spec to contract | `compile_contract(specification)` |
| Stage and its controls | `plan(decision)` |

## Lab constants
type: defaults
from: phases/14-agent-engineering/48-discover-the-real-workflow/code/main.py, phases/14-agent-engineering/49-map-assumptions-and-risk/code/main.py, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/code/main.py, phases/14-agent-engineering/53-prototype-pilot-or-production/code/main.py

| Setting | Default | Note |
|---|---|---|
| Risk dimensions | range(1, 6) | Impact, uncertainty, irreversibility |
| Evidence `confidence` | 0 <= item.confidence <= 1 | Else an issue |
| Workflow `order` | range(1, len(steps) + 1) | Contiguous from one |
| `VALID_MODES` | {"locked", "bounded", "delegated"} | Other modes are invalid |
| Stage `consequence` | 1 <= decision.consequence <= 5 | Else an error |
| Pilot at consequence | 4 | Or not reversible, or not ready |

## Validator messages
type: troubleshooting
span: 2
from: phases/14-agent-engineering/47-outcomes-before-output/code/main.py, phases/14-agent-engineering/50-choose-the-smallest-testable-slice/code/main.py, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/code/main.py, phases/14-agent-engineering/52-design-success-metrics/code/main.py

| Symptom | Cause | Fix |
|---|---|---|
| `desired outcome names the proposed output` | Solution leaked into the outcome | State the observable result instead |
| `non-goals are empty` | No boundary on the slice | Add concrete non-goals that reject work |
| `no slice proves the required assumptions` | Candidates skip the risky part | Design a slice that covers the proof set |
| `constrained decision lacks rationale` | Locked or bounded without a reason | Write the reason for the limit |
| `guardrail metric is missing` | Only outcome metrics | Add a `production_writes` guardrail |

## Questions
type: qa
from: phases/14-agent-engineering/50-choose-the-smallest-testable-slice/docs/en.md, phases/14-agent-engineering/51-write-specifications-that-preserve-judgment/docs/en.md, phases/14-agent-engineering/52-design-success-metrics/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md, phases/14-agent-engineering/48-discover-the-real-workflow/docs/en.md

- **A cheap slice scores high but misses proof?** It stays ineligible.
- **Every result says keep building?** The slice is not an experiment.
- **Can a lower layer prove a higher claim?** No. A unit test proves a local contract only.
- **Offline replay or pilot?** Neither substitutes for the other.
- **When does production begin?** When the organization accepts ongoing responsibility.

## Tips
type: tips
from: phases/14-agent-engineering/50-choose-the-smallest-testable-slice/docs/en.md, phases/14-agent-engineering/52-design-success-metrics/docs/en.md, phases/14-agent-engineering/53-prototype-pilot-or-production/docs/en.md, phases/14-agent-engineering/49-map-assumptions-and-risk/docs/en.md

- Avoid false minimums: UI-only, infrastructure-only, happy-path, demo, platform.
- Write a stop rule before implementation.
- Write pass, fail and ambiguous paths before you see results.
- Mark the stage in configuration, access control, telemetry and docs.
Code et livrables 1
Ce que vous en retenez

Enregistré dans votre carnet sur cet appareil.

Sources et limites

Les repères de lecture sont déclaratifs. Les résultats de tests sont enregistrés séparément ; ils valent pour les cas exécutés.

AI Engineering from Scratch · 3f9715c · MIT

Télécharger ce fichier ↓