The agent that shaped your project yesterday knows none of it today. greenline writes each
stage into the repo as plain Markdown: decisions, spec, tickets, reviews, evidence. A
fresh agent opens the files and picks up cold.
greenline shares its engineering methods across Codex and Claude Code.
Skills work locally; guidance is an optional connector.
No code or repository policy is uploaded.
The test is the session after this one.
Close the laptop mid-project. Open a different agent tomorrow. It reads the files, not the
chat.
example session
$ cd ~/tracker
$ npx greenline init
Workspace initialized. ok
Youbuild me a Linear-style issue tracker. keyboard first.
ClaudeBefore any code, one thing decides the data model: can an issue hold two states at
once, like blocked and in progress?
Youno. one state at a time. blocked is a flag on the issue.
ClaudeRecorded. Rejected: compound states. Accepted cost: filters read two fields.
CodexTKT-001 is ready. I’ll implement it, then obtain independent review and verify the
result.
CodexBuilt to its acceptance criteria. Tests green. result_commit recorded.
$ greenline doctor
no effects
ok
Codex and Claude Code write the same files. Neither remembers the session: everything
each one knew is Markdown in the repo.
What just landed on disk: decisions, spec, tickets, reviews, evidence
Global tickets and reviews keep their identity. An initiative groups related work and its
planning documents. A stranger, human or agent, reads those files top to bottom and picks
the work up cold.
01 shape
id INIT-007/DECstatus completerevision 1
D2 Identity conflict: SSO wins.
Linking an account revokes the local login.
Rejected: keeping both sessions alive;two sources of truth for identity.Accepted cost: linking logs you out once.
Shaping grills the ambiguity out before any code exists. Every decision keeps its
rejected alternative, so the reasoning survives, not just the verdict.
02 specify
id INIT-007/SPECstatus completerevision 3consumes [decisions.md@1]
The dashboard authenticates through the provider
handshake, exchanges sessions, and links accounts.
SSO wins identity conflicts, per decisions D2.
acceptance: login round-trip under 400ms, measured.
The spec records settled intent and acceptance, with exact input revisions. Your
request authorizes its scope; a consequential unresolved choice comes back to you.
03 build
id TKT-001status implementedrevision 2consumes [spec.md@3]depends_on []result_commit 4e2a91c
Provider handshake, end to end, usable on its own.
acceptance:[x] happy-path login lands a session
[x] bad state parameter is rejected, tested
[ ] round-trip timed under 400ms
A
tracer-bullet
ticket with no open dependencies is the
frontier: what's ready to build now. One ticket, one worktree, test-first. The pinned spec
revision means staleness is detected, not discovered.
04 review
id REV-001verdict findings (1)then VERIFIED
F1 handshake accepts an expired state token.
reproduction: tests/sso/expired-state.test.tsstatus returns to implementing; revision 2 follows.
r2 VERIFIED round-trip 340ms, measured.
Review runs in a fresh session against the committed code: the session that wrote
the code is never the one that grades it. A claim that can't be proven is recorded
as
NOT VERIFIED, and the ticket goes back.
PD-1 SSO wins identity conflicts ← 007 D2
PD-2 linking revokes the local login ← 007 D2
PD-7 sessions are server-pinned ← 007 D9
Authorized work closes when its acceptance, review, and verification are supported,
with the
harvest. Rulings that outlive the initiative land in the decisions book, and the next
initiative reads that book before shaping anything, so settled questions stay
settled.
The proof is two builds, not a testimonial.
No customers to quote yet. Here is
exactly what was built, by what, and what was measured.
meridian, a keyboard-first issue tracker.
Agents built it end to end with greenline, first decision to green tests. On disk when
they finished:
21 recorded decisions, each with the alternative it rejected,
205 passing tests,
and
reviews written by sessions that never wrote the code they graded. The command palette was
measured at 29ms over 10,000 issues, 95 of every 100 openings inside that, with the measuring script committed beside the number so anyone can take it again.
pulse, a habit-tracker CLI, and the handoff between them.
The second project was shaped by a fresh agent that had never seen the first. It read
the decisions book meridian left behind, applied those rulings to its own questions, and
re-decided nothing that was already settled. That handoff, one project picking up another's reasoning cold, is the whole thesis,
and it was the hardest part to make work.
These historical runs are recorded with misses included; they do not establish the current
pre-beta baseline’s acceptance: the times a skill didn't fire are written down next to the
times it did.
Settled ground stays settled.
greenline keeps its own decision records the way it keeps yours: harvested into a book,
each ruling with the alternative it rejected and the cost accepted. Three of ours,
verbatim:
GD-02
Everything is Markdown a person can open and read raw.
Rejected: a database or daemon holding project state.
GD-05
Review runs in a different session, never the builder's.
Rejected: self-review; nobody grades their own homework.
GD-08
Every refusal teaches: a doctor message names its own cure.
Rejected: bare error codes that send you to the docs.
What does it mean for an agent to carry a project?
It means the agent holds the decisions, the spec, the open tickets and the reviews for
work that runs longer than one conversation. Today most of that lives in a chat window and
dies with it. greenline writes each piece to a Markdown file in your repository, so the
project outlives the session that made it.
Do I have to change how I work?
You keep your editor, your agent and your Git workflow. greenline adds one directory,
.greenline/, and three commands you will actually run:
greenline status, greenline doctor and
greenline sync. The agent writes the files as it works. You answer
consequential choices; the agent continues stages your request already authorizes.
Does any of my code leave my machine?
greenline does not upload your code. An enabled garden connector passes facets and unit
ids to the garden command, never your code or repository policy.
Without it, skills work locally.
There is no telemetry. Your coding agent still talks to whatever model you already use, on
the terms you already accepted.
What is installed into Codex and Claude Code?
A skill is a written method your agent loads when the work calls for it.
npx greenline init installs the default method roster in the selected
harnesses. Optional asset integrations remain opt-in. Engineering guidance is garden's, a
separate product reached through an optional connector,
with no guidance body or service in the package and no library saved locally. Describe the work; your agent chooses methods without a manual skill relay.
Nothing is lost if it was written down. The files are on disk and committed to Git, so the
next session opens the initiative, reads the decisions and the spec, runs
greenline status, and picks up at the frontier: the ticket that is ready to
build now.
Start in one command.
Works from your Git repository. greenline does not upload your code.