Walden§ docs

The Daily Workflow

The complete command loop, from repository bootstrap to certification. This page is operational — for the why behind each step, read The Spec Lifecycle; for every flag, the CLI reference.

In the agentic flow, the authoring steps below (drafting requirements, design, tasks; implementing code) are what the skill does for you, driving these exact commands and stopping at each gate for your approval. The loop is the same either way — this page describes what runs underneath.

1. Bootstrap

walden repo init

Creates .walden/ (constitution.md for stable project context, lessons.md, a scoped .gitignore) and the generated CI workflow .github/workflows/validate-walden.yml, pinned to the generating version. If git is not initialized, the CLI initializes it first.

walden feature init "User Auth"

Names normalize to kebab-case; the spec scaffolds in .walden/specs/user-auth/ as three draft documents.

Optionally declare environment probes in .walden/environment.md for the toolchains your proofs depend on — evidence records will carry their outputs, and drift becomes a printed diagnosis instead of forensics.

2. Requirements

Edit requirements.md: introduction, user stories, EARS acceptance criteria with stable IDs (R1.AC1), non-functional requirements (NFR1), constraints (C1), out-of-scope. Then:

walden validate user-auth
walden review open user-auth --phase requirements
walden review approve user-auth --phase requirements

Approve runs full phase validation before sealing — nothing structurally invalid gets a fingerprint.

3. Design

Edit design.md: architecture, at least one alternative considered, simplicity review, failure modes and tradeoffs, testing strategy, requirement coverage table. Same gate:

walden validate user-auth
walden review open user-auth --phase design
walden review approve user-auth --phase design

Unresolved forks can be parked as [decision: which store backs this?] markers — but they must be resolved before certification: the release gate blocks on decision markers in approved documents.

4. Tasks

Edit tasks.md: a two-level hierarchy where every leaf task names its acceptance criteria, its design section, and an executable proof:

- [ ] 1. Implement authentication service
  - [ ] 1.1 Add password hashing utility
    - Requirements: `R1.AC1`, `R1.AC2`, `NFR2`
    - Design: Authentication Service
    - Verification:
      - command: ["go", "test", "-run", "TestHash", "./internal/auth"]
        expect_output: "--- PASS: TestHash"
        covers: ["R1.AC1", "R1.AC2"]

Declare expect_output on test runners so a pattern matching zero tests cannot pass vacuously; declare timeout: on steps that legitimately run long (the default budget is 10 minutes per step). Prefer read-only proof commands — ["go", "mod", "tidy", "-diff"], not ["go", "mod", "tidy"] — because re-verification is pure.

walden validate user-auth
walden review open user-auth --phase tasks
walden review approve user-auth --phase tasks

5. Execute

walden task status user-auth        # readiness, blockers, next runnable task
walden task start user-auth         # normalized execution context for the next task
walden task complete user-auth 1.1  # runs the proof; only a pass checks the box
walden task complete-all user-auth  # all runnable tasks in order, stops at first failure

A passing completion writes the task's evidence record — proof steps, chain fingerprints, code identity, execution profile — to .walden/evidence/user-auth.json. A failing proof leaves the box unchecked; fix and retry.

6. Reconcile

Editing an approved document breaks its seal: the document and everything downstream become stale, and execution blocks. Repair the chain:

walden reconcile user-auth

This resets the modified document and its downstream to draft and clears their fingerprints; re-walk the review gates to record fresh seals. Content-identical re-approval does not stale anything.

7. Verify

When code or specs move, evidence tells you what still holds:

walden evidence status user-auth   # derived state per task; read-only, always exit 0
walden verify user-auth            # re-prove what is no longer verified
walden verify user-auth --all      # re-prove everything
walden verify user-auth --check    # report only, write nothing (CI mode)

A code-only bugfix needs no spec ceremony: evidence goes stale-code, and one verify proves the acceptance criteria still hold — or names the task whose proof broke. Failures on a drifted machine carry the diagnosis: environment drift: go: recorded "go1.25.0" → current "go1.24.0".

8. Certify

walden release check               # every feature
walden release check user-auth     # one feature
walden release check --strict      # additionally require committed .walden/ state

One deterministic verdict per feature — fresh approved chain, full validation, no decision markers, evidence verified — plus the repository-level criterion: a clean worktree outside .walden/. Exit 0 iff no blocker exists; every blocker names its remedy. The gate executes no proofs and writes nothing.

Pending tasks block by default. Shipping less than the approved plan is a recorded decision, not a default:

walden release check --allow-pending --reason "auth hardening deferred to 1.3"
# RELEASABLE — 3 feature(s) certified, 2 task(s) waived (reason: auth hardening deferred to 1.3), commit ba53cfe55b40

The reason and the waived task identifiers ride the verdict (completion class with-waivers). --allow-pending without a non-empty --reason is refused. Uncommitted code outside .walden/ always blocks with no bypass; a repository without usable git fails closed.

9. Lessons

After a correction, failed validation, or execution surprise, make the failure reusable:

walden lesson log \
  --feature user-auth \
  --phase execute \
  --trigger "test failed because mock diverged from real database" \
  --lesson "integration tests must hit a real database" \
  --guardrail "before approving design, confirm test strategy uses real dependencies"

Lessons append to .walden/lessons.md and are reviewed before similar future work.

At any point

walden status user-auth       # phase, blockers, next action
walden validate user-auth     # structural validation of the current phase
walden validate --all         # every feature, full spec

Every command takes --json for a versioned machine-readable envelope — same information, same exit codes.