Skip to main content

10 posts tagged with "planning"

View All Tags

0.23.1 — the pin says what it links, and the ladder says draft

· 3 min read
0.23.1 — the pin says what it links, and the ladder says draft | AEPTwo corrections that are the same mistake in two places: a dependency pin recording a tag two releases behind what exists, and a new ladder starting at drafted — one letter from a built-in.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-26-0055-the-pin-says-what-it-links.md · revision 8f106fad0926

A small release, and both fixes are the same mistake wearing different clothes: a label that had drifted from the thing it names.

0.23.0 — a claim that left the boundary

· 4 min read
0.23.0 — a claim that left the boundary | AEPEvery other ladder here models evidence flowing inward. An outbound claim runs the other way — a number already in a customer's inbox — and sending is not undoable. Added as a YAML file with no Rust change at all, which is what the whole entity-runtime programme was for.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-26-0049-a-claim-that-left-the-boundary.md · revision 8f106fad0926

Every ladder in this repository models evidence flowing inward: something was observed, and an artifact's status records what we now know.

An outbound claim runs the other way. A number in a customer's inbox. A status page saying "resolved". An availability figure in a renewal deck. Those are assertions that already left the boundary, and nothing here modelled them.

0.20.0 — evidence you record, and provenance for a decision

· 3 min read
0.20.0 — evidence you record, and provenance for a decision | AEPprotocol artifact evidence records an observation against an artifact so a later move can be decided on it. And a move now separates evidence that was recorded from evidence that was asserted — saying so at the moment it leans on the weaker one.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-26-0003-evidence-names-what-it-is-about.md · revision 8f106fad0926

0.15.0 let a rung cost evidence. This release is how the evidence gets there.

$ protocol artifact evidence outbound-claim:q3-uptime \
--kind approval --source "legal review" --ref https://example.invalid/approvals/814
outbound-claim:q3-uptime: approval recorded from legal review
on hand: approval=1

$ protocol artifact move outbound-claim:q3-uptime --to cleared
outbound-claim:q3-uptime moved draft -> cleared (revision 2)

0.19.0 — the plan has a history

· 3 min read
0.19.0 — the plan has a history | AEPThe markdown store gains an append-only journal, so what happened to an artifact becomes a question you can ask rather than a git log you reconstruct. A corrupt line is skipped and counted, never silently dropped.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-2354-the-plan-has-a-history.md · revision 8f106fad0926

The planning store is markdown files in git, so its history was always there — as git log, in a form you had to reconstruct. This release makes it a question you can ask.

$ protocol artifact history outbound-claim:q3-uptime
2026-08-26T00:08:16Z operator created as draft (revision 1)
2026-08-26T00:08:20Z operator approval recorded from legal review (https://example.invalid/approvals/814) (revision 1)
2026-08-26T00:08:20Z operator moved draft -> cleared (revision 2)
2026-08-26T00:08:20Z operator moved cleared -> sent (revision 3)

0.18.0 — the typed blocker, and a vocabulary that says why it is closed

· 3 min read
0.18.0 — the typed blocker, and a vocabulary that says why it is closed | AEPTwo rungs, and the value is entirely in the type: a blocker is typed by what would clear it, so "blocked" stops being a label on a card. Plus an audit of every adopter-facing vocabulary — open or closed, and what each closure buys.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-2348-the-typed-blocker.md · revision 8f106fad0926

$ protocol artifact lifecycle blocker
blocker starts at open
cleared -> nothing
open -> cleared

Two rungs. The value is entirely in the type: a blocker is typed by what would clear it, so blocked stops being a label on a card and becomes a statement with a named exit.

0.17.0 — obligation, a commitment on a clock nobody here controls

· 3 min read
0.17.0 — obligation, a commitment on a clock nobody here controls | AEPA second ladder, and the rule attached to it is the point: an obligation must never gate a transition. A missed external deadline is a fact to report, not a permission to withhold.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-2342-obligation.md · revision 8f106fad0926

An obligation is a commitment on a clock nobody here controls: a customer's deadline, a regulator's window, a partner's delivery date.

$ protocol artifact lifecycle obligation
obligation starts at open
met -> nothing
open -> met, slipped
slipped -> met

0.16.0 — a rung may open on a date, and the clock is read at the edge

· 3 min read
0.16.0 — a rung may open on a date, and the clock is read at the edge | AEPDate and duration operators join the condition language, so a rung can be shut until a date arrives. The kernel still has no clock: the instant is read at the edge and passed in, which is what makes a recorded decision re-checkable by somebody who was not there.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-2337-a-rung-may-open-on-a-date.md · revision 8f106fad0926

Some rungs should not open yet. A review window. A cooling-off period. A notice period somebody agreed to in a contract.

This release adds date and duration operators to the condition language, so a ladder can say so.

0.15.0 — a rung may cost evidence, and the refusal says which kind of no

· 3 min read
0.15.0 — a rung may cost evidence, and the refusal says which kind of no | AEPA ladder that only says what may follow what models permission, not earning. requires: names what a rung costs, and the refusal distinguishes "on the ladder and not yet earned" from "not on the ladder" — two sentences that lead to different next actions.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-2258-a-rung-may-cost-evidence.md · revision 8f106fad0926

0.13.0 made the status ladder data. This is the first release that spends it.

A ladder that only says what may follow what models permission, not earning. Anybody could move a story to implemented; the ladder had no opinion about whether anything was implemented.

0.13 — the ladder is data

· 5 min read
0.13 — the ladder is data | AEPRelease 0.13.0 takes the status ladder every plan item climbs out of Rust and puts it in a YAML file, decided by entity-core — a separate, IO-free kernel. The consequence: modelling a kind of work this repository never anticipated stops needing a pull request here and a release.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-25-1444-the-ladder-is-data.md · revision 8f106fad0926

Every plan item in the planning store sits at a status and climbs a ladder: draftproposedactiveimplementedaccepted. Until 0.13.0 that ladder was a hand-written lookup in Rust, and the consequence for anybody using the tool was concrete and annoying: a team whose work does not fit the shapes we happened to think of had to send a pull request to this repository and wait for a release.

It is a YAML file now.

0.8.0 — the repository starts planning itself, and a transcript gets judged

· 3 min read
0.8.0 — the repository starts planning itself, and a transcript gets judged | AEPPlanning artifacts become markdown in the repository, moved only through lifecycle-validated verbs. And an agent transcript normalises into an event IR judged against a typed specification — the third observation domain after a specification and a cluster.AEPfield-noteaepfield-noteadopterdevelopertry-spec-driven-developmentunderstand-safe-agentic-codingresearch

Source-owned field note · website/blog/2026-08-21-1708-the-plan-and-the-transcript.md · revision 8f106fad0926

Two waves in one release, and they are the same idea applied twice: take something that was prose and make it a typed thing a program can refuse.