An honest plan for the next month
You will learn
How to write a plan whose every line is either measured or plainly not known yet, with no promise about the future.
A plan for the next month is honest when each line is one of two kinds: a thing you measured, with the run that printed it, or a thing you do not know yet, with the run that would tell you. A line that promises a result nobody has measured does not belong in it. The made-up plan for the reading log has 5 lines: 2 measured, 3 unknown and 0 promised, and 2 + 3 + 0 = 5. The spec has 4 tests: the lines add up, something is measured, something is unknown and nothing is promised. Set PROMISED to 1 and two of them go red. This lesson gives no forecast of any kind: it is a way of writing, not a prediction.
Try it
In the spec, set PROMISED to 1 and read the 2 tests that fail; then put it back. Write 5 lines for your own project and mark each one measured or unknown; if a line is neither, cross it out.
A plan of five lines for a made-up reading log, each marked measured or unknown, with no promise about the future. Lesson 27 of the Vibecoding course.
specs/vibecoding/honest_plan.t27
// SPDX-License-Identifier: Apache-2.0
; Vibecoding, lesson 27: An honest plan for the next month.
; A plan is honest when every line is either something you measured or something you say you do
; not know yet, and no line is a promise about the future you cannot check.
; Made-up plan for the reading log: 5 lines. Plant a bug: set PROMISED to 1 and watch it go red.
; phi^2 + 1/phi^2 = 3 | TRINITY
module vibecoding_honest_plan;
pub const PLAN_LINES : u8 = 5;
; Lines that name a number a run printed.
pub const MEASURED : u8 = 2;
; Lines that say plainly: not known yet, and what would tell us.
pub const UNKNOWN : u8 = 3;
; Lines that promise an outcome nobody has measured.
pub const PROMISED : u8 = 0;
test every_line_is_measured_or_unknown {
assert MEASURED + UNKNOWN + PROMISED == PLAN_LINES;
}
test the_plan_names_something_it_measured {
assert MEASURED >= 1;
}
test the_plan_names_something_it_does_not_know {
assert UNKNOWN >= 1;
}
test the_plan_promises_nothing_unmeasured {
assert PROMISED == 0;
}
All lessons
Module 1 · What vibecoding is
You describe, an agent writes, you run it and check. What a program is, and five myths put to a test.
Module 2 · Your desk
An editor with an agent beside it, ten terminal commands, and reading an error message.
Module 3 · Save points with git
A commit is a save point, a branch is a safe try, and a key is a pair of which one stays private.
Module 4 · Prompting
The parts of a prompt, an example in place of an adjective, and one small step at a time.
Module 5 · The working loop
Four phases from idea to ship, the loop of ask, run, read and fix, and what to do when it is stuck.
Module 6 · A test as the judge
A test says yes or no, a planted bug shows the test works, and a diff is read before it is accepted.
Module 7 · The parts of an agent
What an agent answers with, what it can do with tools, and what it keeps between messages.
Module 8 · A first bot
A bot is a message loop, a bot comes from a spec, and a secret stays out of the repository and the prompt.
Module 9 · Your own project
A spec for your own idea, one thing measured after it runs, and an honest plan for the next month.