pub enum DraftProposal {
Lesson {
lesson: String,
},
Fact {
relation: String,
object: String,
},
QueryRevision {
body: String,
},
PlanRevision {
edits: Vec<PlanEdit>,
},
CodeRevision {
source: String,
},
Skill {
description: String,
when_to_use: String,
steps: Vec<String>,
},
Consolidation {
lesson: String,
supersedes: Vec<String>,
},
Plan {
description: String,
when_to_use: String,
nodes: Vec<PlanNodeDraft>,
edges: Vec<PlanEdgeDraft>,
},
}Expand description
What a DISCOVER draft proposes to change. Closed vocabulary: every variant maps onto an apply path that already records an inverse, and anything the model returns outside it leaves the draft advisory.
Note what each variant does NOT carry. The subject of a Fact, the name of
a QueryRevision, the hash of a PlanRevision and the tool of a
CodeRevision all come from the draft’s target, and the evalset a
CodeRevision is gated against comes from the substrate — so the model
names the change but never names its own scope or its own grader.
Variants§
Lesson
One imperative line recorded as a Fact with relation = "lesson".
The pre-vocabulary shape, and still the default one.
Fact
A durable fact under a model-chosen relation — the “stop making a person re-supply this every time” proposal.
QueryRevision
A rewrite of the saved CAL query or template named by the target: the agent changing how it assembles its own context.
PlanRevision
Field-level edits to the Workflow plan named by the target. Node topology is not expressible here by construction — only the paths the engine’s allowlist admits.
CodeRevision
New source for the executable tool named by the target. Applies only through §7.4’s recorded evalset-run edge (Rule E1).
Skill
A reusable procedure — a Skill grain — derived from a trajectory that
succeeded: what it does, when to reach for it, and the ordered steps.
The skill’s NAME comes from the target (entity:<ns>/<name>), like a
fact’s subject; when a live skill of that name exists the proposal
supersedes it rather than adding a near-duplicate (PAST-Bench’s own
analysis names “splits into near-duplicate notes” as the procedural
failure mode). Offered only when Policy::skills.enabled.
Consolidation
One lesson replacing a PILE of live lessons on the same entity — the
answer to a lesson_pile finding. supersedes must be exactly the
live lesson hashes that finding listed; the apply supersedes each and
adds the one line, and a rollback restores every member.
Plan
A reusable procedure as a PLAN: named steps, each bound to a tool the
evidence shows was called, and edges with conditions in the runtime’s
frozen grammar. Applies as a Workflow grain (the structure the runtime
validates and can execute) plus a Skill grain of the same name (the
prose a model reads), in one batch; a live pair of that name is
superseded. Offered only when Policy::plans.enabled.