# Contextual Contract Loading

The contracts are valuable only if they preserve attention for the current
task. Use this routing policy.

| Current phase | Always load | Add this contract | Keep later in the request |
| --- | --- | --- | --- |
| Ordinary conversation | `00_always_on_core` | communication | current user message |
| Diagnose a bug | core | discovery, decision tables | failing output and source evidence |
| Implement a change | core | file safety, decision tables | target file and requested behavior |
| Build tests | core | verification contract, harness spec | exact changed boundary and prior failure |
| Long-horizon exploration | core | context/memory, delegation if used | active goal, evidence ledger, unresolved gaps |
| Delegate work | core | parallel/delegated work | worker scope, evidence, verifier, stop condition |
| External research | core | skills/external information | current question and primary sources |
| Publish/deploy/update | core | delivery/release, tools/external state | repository SOP and live identity evidence |

## Size budget

Aim for this request composition:

```text
always-on core:         <= 1,200 words
one phase contract:     <= 1,500 words
live task/evidence:      highest priority; use remaining budget
historical summaries:    compact; only if still decision-relevant
```

If context is tight, remove historical process prose first. Do not remove the
current user request, current source evidence, active steering, or the latest
verification result needed for the next decision.

## Placement rule

Place generic contracts early. Place current user intent, current tool evidence,
active steering, and the development-verification frame late. Late current
evidence is easier for the model to attend to and should override generic
procedure when there is no authority conflict.

## Retention rule

Retain a contract only while its decision branch is active. For example, remove
release procedure after returning to ordinary coding; remove a failed-edit
recovery explanation after a new current edit result resolves it. Keep the
audit outside normal prompt history so operators can inspect it without making
the model repeatedly reason over it.
