Journal // repo-tracked public memory

The Road
to Punk.

A repo-tracked chronology of the experiments, failures, and systems that led to Punk. Not marketing copy. Public memory.

CURRENT
v0.4
STATUS
experimental
ERAS
6
ENTRIES
20
PROOF · 0x8A
$ punk journal --status
era: punk · v0.4
stage: experimental
entries: 20 logged
artifacts: 6 on shelf
modules: later
runtime: local-only
ERA
TYPE
20 entries
LEGACY · 2024 Q1
Raw Agents
Chaotic agent soup. No contracts, no stewards, no memory. Pure chaos research.
3 entries
2 survived
⬡ EXPERIMENT #001 · 2024-01-14
First multi-agent run

Spawned 4 agents against a single codebase with no handoff protocol. Three wrote the same function. One deleted it. No diff was mergeable.

— dropped #agents#chaos
✕ FAILURE #002 · 2024-02-03
The runaway loop incident

$43 in API calls. 900 files touched across 6 hours. Zero merged. The agent had no budget. It had no stop condition. It had opinions.

→ Per-agent budget cap #budget#loops
◎ INSIGHT #003 · 2024-02-20
Agents need contracts, not prompts

Every failure traced back to ambiguity. The agent did exactly what was asked. The ask was wrong. The prompt was a vibe. Conclusion: the spec is the unit of work, not the message.

→ Spec-as-contract #specs#contracts
VERDICT Mostly rubble. One survivor: the budget-cap insight.
LEGACY · 2024 Q2
Vibe Coding
LLM-first velocity. Ship fast, debug never. Felt powerful until it did not.
3 entries
2 survived
⬡ EXPERIMENT #004 · 2024-04-08
LLM-native IDE prototype

Replaced the file tree with a chat surface. No editor, no diff, no history. Felt fast for exactly 2 days. Code review became impossible. The diff was a lie.

— dropped #editor#ux
◈ ARTIFACT #005 · 2024-05-11
README: why vibes fail at scale

3-page internal note. Core argument: “vibe” is a failure mode dressed as speed. Coherence decays without a fixed source of truth. The LLM is not the source of truth. The spec is.

→ Spec-as-truth principle #docs#internal
✕ FAILURE #006 · 2024-06-02
Agent autonomy without stewardship

Granted an agent write access to main. It passed all tests. It rewrote the auth layer. It was technically correct and completely unreviewed. Stewardship entered the vocabulary that day.

→ Steward role requirement #stewardship#grants
VERDICT Anti-pattern confirmed. The spec is the cure for vibes.
ANCESTOR · 2024 Q3–Q4
Signum
Signing and verification experiments. First appearance of the steward concept.
4 entries
3 survived
§ SYSTEM #007 · 2024-07-18
Signum v0.1: signed event log

Every agent action produces a signed, content-addressed event. Any run is reproducible from its spec + seed. This became the audit trail you see in Punk today.

→ Audit log in runtime #audit#crypto
⬡ EXPERIMENT #008 · 2024-09-04
Steward as a named role

First time “steward” appeared in a spec file. A human who signs grants — not a reviewer, not an approver. The word carried a different weight. It stuck.

→ Steward concept in Punk #stewardship#naming
✕ FAILURE #009 · 2024-10-29
Multi-party signing was the wrong abstraction

Built distributed stewardship — multiple humans co-signing grants. Correct in theory. Coordination overhead destroyed the UX. Reverted to single-steward, local-first. Simplicity won.

— dropped #distributed#scope
◈ ARTIFACT #010 · 2024-11-15
Grant taxonomy v0.2

fs:rw, fs:ro, net:out, exec — these exact labels appear in Punk today. First stable grant vocabulary. Survived two full rewrites without modification.

→ fs:rw / fs:ro / net:out / exec labels #grants#taxonomy
VERDICT Grant taxonomy and audit trail survived intact.
ANCESTOR · 2025 Q1–Q2
SpecPunk
Specs as contracts. Named the aesthetic. Discovered modules were too early.
4 entries
3 survived
§ SYSTEM #011 · 2025-01-07
spec.md as the single source of truth

Append-only markdown. Versioned. Re-read every tick by every agent. Same spec + same seed = same outcome. The core loop. Still the core loop.

→ The core runtime loop #specs#determinism
⬡ EXPERIMENT #012 · 2025-02-14
Module marketplace concept

Prototype for community-authored shareable spec modules. Looked compelling. Added enormous surface area. Tabled for v1+. Modules are later. Core is now.

— dropped #modules#community
◈ ARTIFACT #013 · 2025-03-01
The porcupine mascot

Spines = grants. Every quill is a permission boundary. The animal does not attack. It makes the cost of bad contact obvious. A local-first creature. Does not need the cloud.

→ Brand and philosophy symbol #brand#mascot
◎ INSIGHT #014 · 2025-03-28
“Punk” as a technical stance

Not aesthetic. Not retro. DIY ownership: you hold the keys, you read the diff before merging, you deny by default. Suspicious of platforms. The name stopped being a joke.

→ Core product philosophy #philosophy#naming
VERDICT Core loop, steward model, and the name survived.
PIVOT · 2025 Q3
Reset
Hard scope cut. Modules, cloud sync, team dashboard — all dropped.
3 entries
2 survived
§ SYSTEM #015 · 2025-07-03
Scope decision: core first

Dropped: module marketplace. Dropped: cloud sync. Dropped: team dashboard. Dropped: multi-steward. Kept: spec runtime, steward grants, local-only. One machine. One steward.

→ Bounded core scope #scope#discipline
✕ FAILURE #016 · 2025-08-11
Over-engineered grant DSL

Built a full grammar for grant expressions. Nested, composable, extensible. It was expressive and unreadable in a spec file. Replaced with the six flat labels from Signum v0.2.

— dropped #grants#simplicity
◈ ARTIFACT #017 · 2025-09-20
v0.3 internal README

“Punk is not production-ready. It is a bounded runtime for experimenters who want to understand their tools. You should read the source before you run it.” — still the product framing.

→ Product framing #docs#scope
VERDICT Discipline enforced. Smaller is the product.
CURRENT · 2025 Q4 → now
Punk
Local-first bounded runtime. One machine, one steward, no cloud. This is it.
3 entries
3 survived
§ SYSTEM #018 · 2025-10-15
v0.4 runtime loop

spec init → spec run → steward review → merge. Four commands. Local. No network at rest. The entire product in one shell session on one machine.

● current #runtime#ux
⬡ EXPERIMENT #019 · 2025-11-30
Budget enforcer at spawn

Per-agent token and cost ceiling enforced at spawn time — not post-hoc in billing. The $43 incident from February 2024 cannot happen. The ceiling is structural.

● current #budget#safety
◎ INSIGHT #020 · 2026-01-08
Runtime executes. Human writes.

Punk does not write specs. It runs them. The human writes the spec. The agent executes it. The steward signs grants. Roles are fixed and non-negotiable. The runtime stays in its lane.

● current #philosophy#roles
VERDICT Experimental. Early-stage. Not production-ready. That is the point.
// no entries match this filter
// what survived

From experiment to principle.

ERA
EXPERIMENT / FAILURE
→ PUNK PRINCIPLE
STATUS
Raw Agents
Runaway loop · 2024-02
Per-agent budget cap at spawn
● LIVE
Raw Agents
Three agents, one function
Spec-as-contract (single source of truth)
● LIVE
Vibe Coding
LLM-native IDE
— dropped
✕ DROPPED
Vibe Coding
Agent write to main, unreviewed
Steward grant requirement
● LIVE
Signum
Signed event log v0.1
Audit trail in runtime
● LIVE
Signum
Multi-party signing
— dropped: single-steward wins
✕ DROPPED
Signum
Grant taxonomy v0.2
fs:rw / fs:ro / net:out / exec labels
● LIVE
SpecPunk
spec.md append-only loop
Core runtime loop
● LIVE
SpecPunk
Module marketplace prototype
— tabled: modules are later
✕ DROPPED
SpecPunk
“Punk” as technical stance
DIY ownership philosophy
● LIVE
Reset
Hard scope cut (2025-07)
One machine, one steward, no cloud
● LIVE
Reset
Grant DSL with full grammar
— dropped: flat labels only
✕ DROPPED
// artifact shelf

Source fragments.

These documents, notes, and READMEs exist in the repo. They are not summaries. They are receipts.

INCIDENT REPORT
// incident-2024-02-03
cost: $43.17
files_modified: 900
merged: 0
root_cause: no_budget_ceiling
resolution: never_again
2024-02-03 · Raw Agents
INTERNAL NOTE · 3pp
# why-vibes-fail.md

> Coherence decays without a
> fixed source of truth.
>
> The LLM is not the source.
> The spec is.
2024-05-11 · Vibe Coding
SYSTEM DESIGN
// signum-event v0.1
spec_hash: sha256:3f9a...
agent_id:   pid/4221
action:     fs:rw
path:       src/auth/**
signed_by:  @mira
timestamp:  2024-07-18T14:03:11Z
2024-07-18 · Signum
GRANT VOCAB · v0.2
## grants
fs:rw   on src/auth/**
fs:ro   on docs/**
net:out to api.stripe.com
exec    — denied

// still the same in punk v0.4
2024-11-15 · Signum
BRAND NOTE
// mascot-rationale.md

Spines = grants.
The porcupine does not
attack. It makes the
cost of bad contact
obvious.

// deny-by-default
2025-03-01 · SpecPunk
README · v0.3 INTERNAL
# punk v0.3 (internal)

Not production-ready.
Bounded runtime for
experimenters.

Read the source first.
Then run it.

// modules: later
// core: now
2025-09-20 · Reset
// the build continues

This is a working runtime,
not a finished product.

The journal is public memory. The runtime is open source. If you experiment, write a spec, or find a failure worth logging — that belongs here too.

punk v0.4 · local runtime · experimental not production-ready modules: later
PROOF · 0x8A
// deny-by-default
// stay local
// read the diff