loomyard

module
v0.0.0-...-649fe0b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2026 License: Apache-2.0

README

LoomYard

LoomYard is an autonomous software-development pipeline built on Claude Code. You hand it a task, and it can discuss the task with you before it writes a plan. It then implements the plan batch by batch, has independent agents review every artifact, opens a pull request, and lands it once you approve. Each task runs in its own isolated git worktree pair, and many tasks can run at once.

At its center is lyx, a single Go binary (LoomYard eXecutable) that owns the task board, the git topology, every phase transition, and every agent launch.

LoomYard is developed by LoomYard. This repository's own tasks are discussed, planned, implemented, reviewed, and landed by its own pipeline, and that is its daily workload. A landing commit on main carries the change description its run wrote. Every run's records — the decision record, the plan, each review round, the agents' friction notes — are public in the companion repository loomyard-weft (see The records of this repository).

In short:

  • Deterministic Go around narrow LLM calls. Control flow, state, git, and validation are a tested program; inside a run, models do only the steps that need judgment, each through a file contract checked by a mechanical gate.
  • Independent multi-agent review. Every artifact — decision record, plan, implementation — is reviewed and fixed by fresh agents that did not write it, under a judge with a bounce budget.
  • Worktree isolation. Each task runs in its own git worktree pair, code and records, so many tasks run at once without seeing each other.
  • Resumable runs. A run's state is versioned in git at producer granularity, so a crashed or paused run resumes where it stopped, on any machine.

The central idea: deterministic Go around narrow LLM calls

An agentic system built out of prompts asks a model to do work a program does better. Deciding what runs next, parsing a plan, staging a commit, checking an artifact against its format, retrying a failed step, resuming after a crash: each of these is a program, and each is slow, expensive, and non-reproducible when a model does it instead.

LoomYard draws a hard line. Control flow, state, git, parsing, validation, routing, retry, and resume are Go — tested, deterministic, and cheap. Models do two kinds of work. Inside a run, they do the steps that need judgment: is this plan sound, does this diff match its plan, write this code. Above a run, an LLM driver steps it forward and supervises it: it reads what each step reported, repairs what went wrong, and escalates what it cannot fix. The driver never decides what runs next, though; the phase engine does. Every call inside a run goes through a narrow file contract — a prompt goes in, named files come out — and a mechanical gate checks the output before the run moves on. An agent whose output fails its gate is re-prompted in the same session with the findings, rather than trusted.

The payoff: the same run does the same thing twice, a crashed run resumes exactly where it stopped, and the parts most likely to break are covered by go test rather than by hope.

What a task run looks like

A task's run is a flat list of producers, walked by a generic phase engine (shed). The list is data, not code — contracts/recipes/loom-recipe.yaml, embedded in the binary:

Preflight → Loom-Preflight
  → Discussion-Write → [Discussion review]
  → Plan-Write       → [Plan review]
  → Batchifier → Webster → [Webster review]
  → Describe → Merge-In → [Merge review] → Publish → PR-Gate ⇄ PR-Rework
  → Finalize → Friction-Reflect

A smaller task can run the darn recipe instead (contracts/recipes/darn-recipe.yaml): one writer that edits, tests, and commits, one review segment over the committed diff, then the same landing rows.

  • Discussion — an agent turns the task into a decision record: scope, decisions taken, what is out of scope. It can stop and ask you when a decision is yours to make.
  • Plan — an agent writes a plan as a list of cards, each naming the code it touches by glyph — a stable symbol spelling resolved against the real tree through quarry, so a plan that names a function that does not exist fails validation before any code is written.
  • Webster — the implementer. One long-lived Master session reads the plan once and forks one implementer per batch inside its own session, bracketed by Go verbs (begin-batch, await-batch, record-batch) that verify and record each batch. A stuck fork escalates to a cold recovery session.
  • Review segments — each [… review] is a judge (Bouncer) paired with a review-and-fix round (burler). The judge approves or sends the artifact back for another round, within a bounce budget; an exhausted budget halts the run for a human rather than looping. The judge and the reviewer are fresh agents, independent of the one that wrote the artifact, so no agent ever reviews its own work.
  • Landing — Describe writes the change description, Merge-In merges the parent in, Publish opens the pull request, and PR-Gate waits for the operator. lyx loom approve lands it; lyx loom reject <review-file> sends the operator's findings to PR-Rework, which archives the built plan as a generation, plans and implements a new one, and comes back to the gate.
  • Friction-Reflect — the agents' own notes on what was hard or broken in the tooling are reflected on and can be filed as issues against LoomYard itself (selfreport).

Routing is explicit per row (on_done, on_stuck), never positional, and the engine's validator refuses a recipe whose edges cross a review segment's boundary. Resume, pause, and crash recovery work uniformly at producer granularity.

Three layers of driving

The phase engine only moves one producer at a time; what calls it is a choice of driver.

  • lyx shed step — drive one producer forward and report a JSON envelope naming its outcome and the trace it wrote. This is the primitive every driver is built on.
  • the loom driver — a Claude Code session launched from the driver stencil (contracts/stencils/shed/shed-template-driver.md) that drives a run by repeated lyx shed step, reads each envelope and trace, repairs what it can, re-steps after a transient failure, and escalates what it cannot. It carries no phase knowledge: which recipe runs is a property of the run's seed alone. lyx loom start (alias lyx start) bootstraps a task worktree and launches its driver session.
  • lyx batten — drives a task worktree's whole lifecycle from the hub's main worktree as one run of its own: create the worktree pair, seed the task's run, watch it to a terminal state, land it into the prime, tear the pair down.
  • lyx orch — hosts the hub orchestrator: one long-lived Claude session that dispatches and supervises runs. A detached watcher reads its context usage after each turn; past a threshold, while idle, it has the session write a note, then clears it and resumes it from that note, or compacts it in place, so the orchestrator outlives any single context window. lyx orch refresh requests the clear cycle and lyx orch distill the compact cycle; both write the note first.

The split is the same principle again: the engine decides what runs next, and the LLM layers above it only decide how to recover when a step fails.

Agents run as interactive tmux sessions, never claude -p

Every agent LoomYard launches is an interactive Claude Code session in a tmux pane, never headless claude -p. Interactive sessions keep subscription coverage; headless usage is moving to API billing.

So launching an agent is not an exec: it is "place a pane, launch the provider, dismiss its startup dialogs, drive it, detect completion." That is a layered stack, each layer knowing only the one below:

proc     spawn any OS process, cross-OS
reed     tmux overlay: strand bookkeeping, layout, a watchdog that reaps dead panes
shuttle  run ONE agent over the file contract via a swappable provider engine
burler   one review+fix round              webster   the batch implementer
shed     walk a flat producer list to a terminal outcome
loom     shed + the task recipe            batten    shed + the worktree-lifecycle recipe

shuttle classifies every run as done, died, or timeout, holds a turn end that lacks its output files (an autonomous run notifies its parent once per held turn end), reads background work off the Stop payload first, and owns everything provider-specific — how Claude is launched and which startup gates it shows — behind an engine interface, so a second provider plugs in as another engine without any layer above changing.

Fabric: state that travels without touching your repo

An orchestrator has to keep state somewhere: config, the task board, plans, review verdicts, run status. In your repo it pollutes your history; outside it, the state does not branch with the work and cannot resume on another machine.

LoomYard keeps it in a second git repository woven into yours. Your repository holds the code; a companion repository carries everything LoomYard generates. Every code worktree gets a records sibling on a matching branch, wired together on disk, so state written while working in a worktree lands in the records without a single LoomYard file in your repo's history or .gitignore.

Together the two are the Fabric, and lyx fabric is the seam that moves both sides as one: add/remove a worktree pair, checkout both branches together, pull, status, diff, merge, and reconcile a pair that drifted back onto the recorded layout. Every git operation LoomYard's own code performs goes through the fabric engine — never raw git, and never an agent. An agent commits its own code and nothing else; the records are committed by Go, at boundaries the orchestrator controls.

Because the records branch in lockstep with the code, a task's whole state is versioned and pushed: pick the task up on another machine and it resumes where it stopped, and two tasks never see each other's plans or status.

<hub>/                    (not a git repo)
  ├── <prime>/            your repo, main branch        ┐ one Fabric
  ├── <prime>-<records>/  its records side              ┘
  ├── <slug>/             a task worktree               ┐ likewise, on
  ├── <slug>-<records>/   its records side              ┘ the task branch
  ├── _board/             the task store
  ├── _portals/           entry points into each worktree's state
  └── _launchers/         per-worktree launcher scripts and workspaces

The records of this repository

This repository's records side is loomyard-weft, public, so the runs that built LoomYard can be read artifact by artifact.

  • The board — the main branch is the task board. Its README is the board rendered by lyx board: running, ready, and blocked tasks with their dependencies, and where each run stands. board.json is the store, and each design-<slug>.md is the design of a task not yet built.

  • Landed runs — when a task lands, its records branch is deleted and an archive/<slug>/<tip> tag keeps its whole run under _lyx/.

    • discussion/decision-record.md — scope, decisions, and what is out of scope.
    • plan/ — the plan's cards.
    • reviews/ — each review segment's rounds: reviewer findings, fixer report, judge verdict, token usage.
    • landing/summary.md — the change description that became the landing commit's message.
    • loom/ — the agents' friction reflection.
    • shed/<slug>/drive-reports/ — the driver's reports.

    For example, archive/driver-arbiter is the run that built the driver arbiter.

  • Runs in flight — a records branch per running task, and the records branch of main, with the module configs and batten's status for each task it ran.

Engineering discipline

  • Structural invariants as tests. PATTERN.md records the repo's cross-cutting invariants, and most of them are enforced by go test scans rather than by review: one package owns path resolution, one parser exists per on-disk format, nothing outside shuttle touches provider readiness, and so on.
  • Told, never derived. Every layer from reed up is handed its geometry — absolute, already-resolved paths — instead of computing it, which is what lets the same producer run inside a hub or against a plain checkout (--target-dir) with no hub at all.
  • Prompts are versioned contracts. Every prompt an agent reads is a stencil under contracts/stencils/, embedded as a default and read from the hub at call time, so an operator can edit a live prompt without a rebuild and lyx stencil shows the drift.
  • Correctness by tool design, not by recall. A lyx command makes the correct path the path of least resistance and makes drift detectable, instead of relying on an agent to remember a rule.
  • Crucible. Modules that drive live tmux and real agents are hardened by crucible: serial, model-rotating review-and-fix rounds against the live substrate, each finding proved by sabotage — revert the fix, watch the regression test fail, restore.

Modules

Every user-facing module is a lyx <module> namespace; lyx --help lists them, and every command takes --help (or --json for structured help). Commands print a JSON envelope: {"ok":true, ...} or {"ok":false,"error":"..."}.

Module What it does
board the task board, plus a not-yet-claimable notes surface
fabric the code and records topology, sync, and the merge lifecycle; fabric clone creates a hub in one call
config view, edit, and reconcile module configs against their templates
reed the tmux strand overlay and its watchdog
shuttle run one agent over the file contract
burler one review+fix round over an artifact
webster the batch implementer
shed the generic seed/run/step/status/pause verbs over any recipe
loom the task pipeline, plus approve/reject at the PR gate and the standalone validators its gates use
batten a task worktree's whole lifecycle as one run
orch the self-cycling hub orchestrator session
quarry glyph lookups against the worktree's own code, the planner's source of symbol spellings
stencil inspect, diff, and promote the prompts agents read
selfreport file a bug or enhancement against LoomYard's own repo
ide open a worktree in VS Code

docs/overview.md maps every package, including the internal layers under these.

Getting started

go build ./cmd/lyx                                              # build the binary
lyx fabric clone --shortname <shortname> <records-url> <code-url>  # create a hub: both repos, wiring, config, board
lyx fabric add <slug>                                           # a task worktree pair
cd <hub>/<slug> && lyx start                                    # bootstrap the task; "lyx reed attach" shows its session

./update-plugins.sh (update-plugins.cmd on Windows) is the only route to production: from a clean tree pushed to origin/main, it installs the plugins, builds lyx into the Go bin dir, and moves the prod branch to that commit. ./deploy-dev builds the working tree into .dev-bin for testing without touching production.

The sandbox Hub is a bench for running the real binary end to end against a throwaway hub, with per-module suites an agent drives and reports findings from.

Requirements
  • Claude Code, logged in
  • Go (the version in go.mod) and a C toolchain — lyx links quarry's tree-sitter grammars through cgo
  • Git 2.42+
  • tmux (on Windows, psmux)
  • A GitHub token for Publish and selfreport: GH_TOKEN, GITHUB_TOKEN, or an authenticated gh CLI

Plugins

plugins/ holds this repo's Claude Code marketplace:

  • ly — the board skill.

The writing and code conventions every agent loads come from the shared scribe plugin; its marketplace also carries prowler, the web-fetch plugin that used to live here.

Lineage: Millhouse

LoomYard grew out of Millhouse, a set of Claude Code skills and Python tools for running parallel Claude Code sessions with minimal input: isolated worktrees per task, a wiki-backed task board, and subagents for discussion, planning, implementation, and review. Millhouse proved the workflow and built much of LoomYard before LoomYard took over its own development. LoomYard is the rebuild that moved the workflow out of prompts and into a program: the phase machine is data, review is a Go-owned gate loop, and the git topology is a model Millhouse has no equivalent of.

Through Millhouse, LoomYard builds on ideas from claude-code-plugins (Craig Motlin), autoboard (Willie Tran), and skills (Matt Pocock).

Documentation

  • PATTERN.md — the structural invariants (authoritative).
  • docs/overview.md — architecture, naming, and the module and package map.
  • contracts/specs/ — the on-disk format contracts, each with exactly one parser.
  • crucible/ — the hardening method for live-substrate modules.

Per-package documentation lives in each package's doc.go and is the durable detail for anything shipped.

Directories

Path Synopsis
cmd
lyx command
Package main is the cobra root for the lyx CLI.
Package main is the cobra root for the lyx CLI.
testtiming command
Command testtiming runs the repo's Go test suite and prints a wall-clock timing table, so a slow package or test is visible on its own rather than hidden in one combined number.
Command testtiming runs the repo's Go test suite and prints a wall-clock timing table, so a slow package or test is visible on its own rather than hidden in one combined number.
contracts
internal
agentname
Package agentname is the sole former, parser and validator of agent names.
Package agentname is the sole former, parser and validator of agent names.
alignment
Package alignment is the alignment agent's records, prompt and launch spec: the cold session that settles loom's parent review and PR-Gate in the run's place, or escalates to the run's parent.
Package alignment is the alignment agent's records, prompt and launch spec: the cold session that settles loom's parent review and PR-Gate in the run's place, or escalates to the run's parent.
arbiterstop
Package arbiterstop decides which halted stops the arbiter may settle.
Package arbiterstop decides which halted stops the arbiter may settle.
batcher
Package batcher groups a plan's flat card list into the execution units webster forks each run: a library of batchifier implementations behind the Batcher interface, a registry mapping each batchifier kind to its constructor, and Active, the config entry point callers reach for.
Package batcher groups a plan's flat card list into the execution units webster forks each run: a library of batchifier implementations behind the Batcher interface, a registry mapping each batchifier kind to its constructor, and Active, the config entry point callers reach for.
battencli
cli.go builds the cobra command tree for the batten module and the RunCLI/RunCLIIn seams that wire it into the standard io.Writer-based call contract.
cli.go builds the cobra command tree for the batten module and the RunCLI/RunCLIIn seams that wire it into the standard io.Writer-based call contract.
battenrecipe
Package battenrecipe owns the batten recipe's construction: parsing contracts/recipes.BattenRecipe and assembling it into a *shedengine.Shed against a caller-supplied shedrecipe.Env.
Package battenrecipe owns the batten recipe's construction: parsing contracts/recipes.BattenRecipe and assembling it into a *shedengine.Shed against a caller-supplied shedrecipe.Env.
battenshed
Package battenshed owns the task-worktree batten producers: creating the task worktree, seeding its own inner run, running that run inside it to a terminal state, landing it into the prime, and tearing it down.
Package battenshed owns the task-worktree batten producers: creating the task worktree, seeding its own inner run, running that run inside it to a terminal state, landing it into the prime, and tearing it down.
boardcli
Package boardcli is the `lyx board` command: the task-tracker board's verbs over one `board.json` store, whose entries carry a kind and labels.
Package boardcli is the `lyx board` command: the task-tracker board's verbs over one `board.json` store, whose entries carry a kind and labels.
boardengine
Package boardengine provides a one-shot, daemonless file-locked task tracker.
Package boardengine provides a one-shot, daemonless file-locked task tracker.
boardengine/boardtest
Package boardtest holds Loomyard's cross-cutting ("on-the-side") test suites for the boardengine module: benchmarks and concurrency stress tests.
Package boardtest holds Loomyard's cross-cutting ("on-the-side") test suites for the boardengine module: benchmarks and concurrency stress tests.
buildinfo
Package buildinfo is a stdlib-free leaf existing solely so cmd/lyx and every future standalone CLI package can read the build channel with no cycle risk.
Package buildinfo is a stdlib-free leaf existing solely so cmd/lyx and every future standalone CLI package can read the build channel with no cycle risk.
buildvcs
Package buildvcs reads the VCS identity of the running lyx binary in-process.
Package buildvcs reads the VCS identity of the running lyx binary in-process.
burlercli
Package burlercli is the `lyx burler` command tree: the debug-only CLI over internal/burlerengine.
Package burlercli is the `lyx burler` command tree: the debug-only CLI over internal/burlerengine.
burlerengine
Package burlerengine runs the two halves of one review+fix round over an artifact: a review half that returns a verdict and a fix half that repairs the findings.
Package burlerengine runs the two halves of one review+fix round over an artifact: a review half that returns a verdict and a fix half that repairs the findings.
cleanupcli
Package cleanupcli is the cleanup module: `lyx cleanup [--apply]`, the routine removal of the hub prime's leftover state.
Package cleanupcli is the cleanup module: `lyx cleanup [--apply]`, the routine removal of the hub prime's leftover state.
clihelp
Package clihelp provides the shared cobra infrastructure used by cmd/lyx and every module's RunCLI seam.
Package clihelp provides the shared cobra infrastructure used by cmd/lyx and every module's RunCLI seam.
cliwire
Package cliwire owns standalone/hub CLI wiring resolution for the standalone-capable CLIs -- webstercli and burlercli.
Package cliwire owns standalone/hub CLI wiring resolution for the standalone-capable CLIs -- webstercli and burlercli.
commentlint
Package commentlint finds fixed-column-wrapped line breaks in the `//` comment blocks a diff touches.
Package commentlint finds fixed-column-wrapped line breaks in the `//` comment blocks a diff touches.
configcli
Package configcli is the `lyx config` command: it edits or sets a module's configuration under `_lyx/config/` and syncs fabric on success.
Package configcli is the `lyx config` command: it edits or sets a module's configuration under `_lyx/config/` and syncs fabric on success.
configengine
Package configengine loads, resolves and writes a module's YAML configuration under a base directory's `_lyx/config/`.
Package configengine loads, resolves and writes a module's YAML configuration under a base directory's `_lyx/config/`.
creelcli
Package creelcli builds the `lyx creel` group over internal/creelengine: `post`, `inject`, `interrupt`, `forward`, `read`, `inbox`, `log`, `hold`, `release` and the hidden `daemon`.
Package creelcli builds the `lyx creel` group over internal/creelengine: `post`, `inject`, `interrupt`, `forward`, `read`, `inbox`, `log`, `hold`, `release` and the hidden `daemon`.
creelengine
Package creelengine is the engine of creel, the per-hub message daemon: a pool of mail and queued injects that agents post to and read from, delivered into agent panes when they are idle.
Package creelengine is the engine of creel, the per-hub message daemon: a pool of mail and queued injects that agents post to and read from, delivered into agent panes when they are idle.
darnengine
Package darnengine owns the darn recipe's hub-wide configuration and the verify command every darn verify reads.
Package darnengine owns the darn recipe's hub-wide configuration and the verify command every darn verify reads.
discussionparser
Package discussionparser is the SOLE reader and SOLE writer of `_lyx/discussion/`'s on-disk format: the decision record's required H2 sections, the support log's existence and the relevant list's format, and the two write paths into the record.
Package discussionparser is the SOLE reader and SOLE writer of `_lyx/discussion/`'s on-disk format: the decision record's required H2 sections, the support log's existence and the relevant list's format, and the two write paths into the record.
dotgit
Package dotgit reads a directory's `.git` entry in-process: the git dir, the common dir, whether they form a usable repository, and the worktree root above a path.
Package dotgit reads a directory's `.git` entry in-process: the git dir, the common dir, whether they form a usable repository, and the worktree root above a path.
durfmt
Package durfmt is the duration formats the status panes and the timing report share.
Package durfmt is the duration formats the status panes and the timing report share.
editdirective
Package editdirective renders the edit directive every spawned role's opening stencil carries, so a role changes files with the Edit and Write tools rather than a script.
Package editdirective renders the edit directive every spawned role's opening stencil carries, so a role changes files with the Edit and Write tools rather than a script.
envsource
Package envsource reads environment variables from a .env file and OS environment.
Package envsource reads environment variables from a .env file and OS environment.
fabriccli
Package fabriccli is the `lyx fabric` command: the one git-coordination module over a hub's code side (warp) and records side (weft), driving `internal/fabricengine` (see docs/overview.md).
Package fabriccli is the `lyx fabric` command: the one git-coordination module over a hub's code side (warp) and records side (weft), driving `internal/fabricengine` (see docs/overview.md).
fabricengine
dirtiness.go holds the package's `git status --porcelain` probes: the dirtiness check and the tracked dirty-path listing.
dirtiness.go holds the package's `git status --porcelain` probes: the dirtiness check and the tracked dirty-path listing.
fabricvocab
Package fabricvocab holds the predicates that decide whether a spelling breaks the fabric vocabulary.
Package fabricvocab holds the predicates that decide whether a spelling breaks the fabric vocabulary.
friction
Package friction composes the self-report Tier 2 friction-note directive every prompt-composing engine injects into an agent's prompt, and the non-clobbering path that agent writes its optional note to.
Package friction composes the self-report Tier 2 friction-note directive every prompt-composing engine injects into an agent's prompt, and the non-clobbering path that agent writes its optional note to.
frictionengine
Package frictionengine implements the Tier 2 aggregation-and-reflection step: it scans a task's friction directory for notes left behind by the agents that ran before it, and, when there is something to reflect on, spawns exactly one autonomous reflection agent over the aggregated notes through a narrow Shuttle seam.
Package frictionengine implements the Tier 2 aggregation-and-reflection step: it scans a task's friction directory for notes left behind by the agents that ran before it, and, when there is something to reflect on, spawns exactly one autonomous reflection agent over the aggregated notes through a narrow Shuttle seam.
fslink
Package fslink provides a unified cross-platform link primitive that abstracts the differences between Windows junctions and POSIX symlinks.
Package fslink provides a unified cross-platform link primitive that abstracts the differences between Windows junctions and POSIX symlinks.
fswatch
Package fswatch is the one file-change event source for every lyx process.
Package fswatch is the one file-change event source for every lyx process.
fsx
gatecli
Package gatecli provides the cobra command tree for `lyx gate`, whose one verb, `test`, is the sanctioned route for an agent's slotted `go test`.
Package gatecli provides the cobra command tree for `lyx gate`, whose one verb, `test`, is the sanctioned route for an agent's slotted `go test`.
gateslot
Package gateslot owns the hub-wide pool of gate slots that bounds how many gate builds and test runs the hub executes at once.
Package gateslot owns the hub-wide pool of gate slots that bounds how many gate builds and test runs the hub executes at once.
gitexec
Package gitexec runs git as a subprocess and reports the outcome in one of two shapes.
Package gitexec runs git as a subprocess and reports the outcome in one of two shapes.
githubclient
Package githubclient owns GitHub token resolution, token caching, and construction of an authenticated *github.Client -- nothing else.
Package githubclient owns GitHub token resolution, token caching, and construction of an authenticated *github.Client -- nothing else.
gitkit
Package gitkit is the below-fabric leaf holding test git plumbing: the spawn, query and commit helpers, config seeding, the hermetic git environment and the primitive repo fixture CopyRepo.
Package gitkit is the below-fabric leaf holding test git plumbing: the spawn, query and commit helpers, config seeding, the hermetic git environment and the primitive repo fixture CopyRepo.
gitrepo
Package gitrepo provides a typed Repo over a single local git checkout, split across two backends: go-git for local object and ref reads, and internal/gitexec's raw command runner for anything that authenticates to a remote or mutates the working tree.
Package gitrepo provides a typed Repo over a single local git checkout, split across two backends: go-git for local object and ref reads, and internal/gitexec's raw command runner for anything that authenticates to a remote or mutates the working tree.
gitrepo/internal/gitoracle
Package gitoracle is the differential-parity harness's CLI oracle for internal/gitrepo.
Package gitoracle is the differential-parity harness's CLI oracle for internal/gitrepo.
haltnote
Package haltnote is the sole renderer and parser of the Go-authored halt note loom writes into its friction directory when a run halts `blocked` or `failed`.
Package haltnote is the sole renderer and parser of the Go-authored halt note loom writes into its friction directory when a run halts `blocked` or `failed`.
helpcli
Package helpcli provides the cobra command tree for `lyx help`, which replaces cobra's built-in help command on the root.
Package helpcli provides the cobra command tree for `lyx help`, which replaces cobra's built-in help command on the root.
hibernatecli
Package hibernatecli builds the `lyx hibernate` group with `lyx hibernate request [--after <slug>] [--after-all]`, `lyx hibernate cancel`, `lyx hibernate status` and the hidden `lyx hibernate watch` over internal/hibernateengine.
Package hibernatecli builds the `lyx hibernate` group with `lyx hibernate request [--after <slug>] [--after-all]`, `lyx hibernate cancel`, `lyx hibernate status` and the hidden `lyx hibernate watch` over internal/hibernateengine.
hibernateengine
Package hibernateengine implements the hibernate request file and the submit, cancel and status sequences behind `lyx hibernate`, over seams.
Package hibernateengine implements the hibernate request file and the submit, cancel and status sequences behind `lyx hibernate`, over seams.
hubforge
Package hubforge is the repo-wide real-hub fixture factory: it builds every hub fixture through fabriccli.CloneAndWire and never replicates that wiring by hand.
Package hubforge is the repo-wide real-hub fixture factory: it builds every hub fixture through fabriccli.CloneAndWire and never replicates that wiring by hand.
hubgeom
Package hubgeom is the hub-mode adapter that tells engines their geometry: it converts a resolved *lyxcwd.Location into the geometry struct each engine holds, so no engine derives its own coordinates from a Location itself.
Package hubgeom is the hub-mode adapter that tells engines their geometry: it converts a resolved *lyxcwd.Location into the geometry struct each engine holds, so no engine derives its own coordinates from a Location itself.
hubreconcile
Package hubreconcile reconciles a hub's config once after a binary change, under a hub lock, and commits everything it wrote.
Package hubreconcile reconciles a hub's config once after a binary change, under a hub lock, and commits everything it wrote.
impactset
Package impactset derives the command a Webster-Burler-Fix round gate runs from the diff between a base commit and HEAD.
Package impactset derives the command a Webster-Burler-Fix round gate runs from the diff between a base commit and HEAD.
landingshed
Package landingshed owns landing's general producers, Merge-In, Publish, PR-Align, PR-Gate and Finalize, which any producer list may name -- none is special-cased by the engine that drives them.
Package landingshed owns landing's general producers, Merge-In, Publish, PR-Align, PR-Gate and Finalize, which any producer list may name -- none is special-cased by the engine that drives them.
languageconfig
Package languageconfig owns the hub-wide _lyx/config/language.yaml: the skills every code-writing or code-reviewing role loads after its own, the hub's verify-tier rules and the hub's structure-aware rename tools.
Package languageconfig owns the hub-wide _lyx/config/language.yaml: the skills every code-writing or code-reviewing role loads after its own, the hub's verify-tier rules and the hub's structure-aware rename tools.
logger
Package logger is a minimal log/slog wrapper shared across lyx's internal packages, extended with a process-wide trace identity, explicit-parent diagnostic spans, and a durable per-process trace-file sink.
Package logger is a minimal log/slog wrapper shared across lyx's internal packages, extended with a process-wide trace identity, explicit-parent diagnostic spans, and a durable per-process trace-file sink.
loggerconfig
Package loggerconfig owns _lyx/config/logger.yaml, the trace-retention bounds the exit sweep reads.
Package loggerconfig owns _lyx/config/logger.yaml, the trace-retention bounds the exit sweep reads.
loomcli
Package loomcli is the `lyx loom` command: it bootstraps and drives one task's phase machine per worktree on the generic shed engine, and carries the verbs through which the operator and the run's parent answer its gates.
Package loomcli is the `lyx loom` command: it bootstraps and drives one task's phase machine per worktree on the generic shed engine, and carries the verbs through which the operator and the run's parent answer its gates.
loomengine
Package loomengine implements loom's own seed-coherence check, CheckSeed: one of the four preconditions a task must meet before it is fit to run, with the other three now internal/preflight's orchestrator-agnostic tier-1/tier-2 checks (worktree geometry, worktree cleanliness, fabric readiness/sync).
Package loomengine implements loom's own seed-coherence check, CheckSeed: one of the four preconditions a task must meet before it is fit to run, with the other three now internal/preflight's orchestrator-agnostic tier-1/tier-2 checks (worktree geometry, worktree cleanliness, fabric readiness/sync).
loomrecipe
Package loomrecipe owns loom's recipe-backed producer-list construction and is the drop-in replacement for loomshed.New.
Package loomrecipe owns loom's recipe-backed producer-list construction and is the drop-in replacement for loomshed.New.
loomshed
Package loomshed owns loom's own producer constructors, its durable row names, its status seeder, and its own cancellation helpers.
Package loomshed owns loom's own producer constructors, its durable row names, its status seeder, and its own cancellation helpers.
lyxcwd
Package lyxcwd is the entry gate that converts "the process started somewhere" into "these are the coordinates of a legal lyx worktree, or here is why this is not one".
Package lyxcwd is the entry gate that converts "the process started somewhere" into "these are the coordinates of a legal lyx worktree, or here is why this is not one".
lyxdirs
Package lyxdirs is a stdlib-free leaf existing solely so internal/configengine, internal/logger, internal/gitkit, internal/fabricengine and every module engine can name the two lyx directory tokens without any of them owning the pair, and without risking the internal/fabricengine -> internal/logger -> internal/lyxcwd import cycle.
Package lyxdirs is a stdlib-free leaf existing solely so internal/configengine, internal/logger, internal/gitkit, internal/fabricengine and every module engine can name the two lyx directory tokens without any of them owning the pair, and without risking the internal/fabricengine -> internal/logger -> internal/lyxcwd import cycle.
lyxtemp
Package lyxtemp owns lyx's per-user temp root in the system temp directory, and one locked run directory per process inside it.
Package lyxtemp owns lyx's per-user temp root in the system temp directory, and one locked run directory per process inside it.
mergeresolve
Package mergeresolve merges a source branch into the current pair and, on conflict, resolves it through a fresh, higher-capability LLM session run in a clean context, never a `/model` switch inside a polluted one.
Package mergeresolve merges a source branch into the current pair and, on conflict, resolves it through a fresh, higher-capability LLM session run in a clean context, never a `/model` switch inside a polluted one.
modelspec
Package modelspec parses and resolves the model-spec notation every agent-spawning config in the stack uses to say which LLM runs a role (webster's roles, burler reviewers and judges, loom's producers).
Package modelspec parses and resolves the model-spec notation every agent-spawning config in the stack uses to say which LLM runs a role (webster's roles, burler reviewers and judges, loom's producers).
orchcli
Package orchcli is the CLI for the hub orchestrator: the long-lived session in the hub's prime worktree that runs the task loop for the operator.
Package orchcli is the CLI for the hub orchestrator: the long-lived session in the hub's prime worktree that runs the task loop for the operator.
orchengine
Package orchengine is the engine behind `lyx orch`: the hub orchestrator hosted as an interactive shuttle run in the prime worktree's reed session, cycled before its context fills.
Package orchengine is the engine behind `lyx orch`: the hub orchestrator hosted as an interactive shuttle run in the prime worktree's reed session, cycled before its context fills.
pairteardown
Package pairteardown is the one sequence that ends a pair: it waits for the pair's loom driver to go quiet, probes for removal refusals, kills the pair's step loop, ends the pair's reed session, and only then removes the pair.
Package pairteardown is the one sequence that ends a pair: it waits for the pair's loom driver to go quiet, probes for removal refusals, kills the pair's step loop, ends the pair's reed session, and only then removes the pair.
parentdirective
Package parentdirective renders the parent directive every spawned role's opening stencil carries, so a role that is blocked escalates to its parent session rather than the operator.
Package parentdirective renders the parent directive every spawned role's opening stencil carries, so a role that is blocked escalates to its parent session rather than the operator.
parentlock
Package parentlock owns the parent lock: one record per parent branch that lets a single run at a time move that parent, valid exactly while its owner process lives.
Package parentlock owns the parent lock: one record per parent branch that lets a single run at a time move that parent, valid exactly while its owner process lives.
parentreview
Package parentreview owns the on-disk exchange between a task's Discussion-Write session and its parent's reviewer.
Package parentreview owns the on-disk exchange between a task's Discussion-Write session and its parent's reviewer.
pattern
Package pattern answers one question for every code-touching lyx agent — is PATTERN active in this worktree, and what should the agent be told? — and returns the role-appropriate directive text, read from a stencil file and carrying the PATTERN overview, to inject into that agent's prompt.
Package pattern answers one question for every code-touching lyx agent — is PATTERN active in this worktree, and what should the agent be told? — and returns the role-appropriate directive text, read from a stencil file and carrying the PATTERN overview, to inject into that agent's prompt.
patternlint
Package patternlint finds growth of the PATTERN overview past its headroom line.
Package patternlint finds growth of the PATTERN overview past its headroom line.
pauserecord
Package pauserecord owns the pause record: one JSON file that every reader of a pause consults.
Package pauserecord owns the pause record: one JSON file that every reader of a pause consults.
planglyph
doc.go documents internal/planglyph, the sole owner of every quarry.Repo call (Open, Resolve, DeltaGit) and of the package-level quarry.Name, and of the resolve-backed validation pass layered on top of internal/planparser's pure checks.
doc.go documents internal/planglyph, the sole owner of every quarry.Repo call (Open, Resolve, DeltaGit) and of the package-level quarry.Name, and of the resolve-backed validation pass layered on top of internal/planparser's pure checks.
planindex
Package planindex names the code index a plan gate calls, without linking it.
Package planindex names the code index a plan gate calls, without linking it.
planparser
Package planparser is the SOLE parser AND SOLE writer of the on-disk plan format written under `_lyx/plan/` (see contracts/specs/loom-plan-spec.md, the pinned spec this package implements).
Package planparser is the SOLE parser AND SOLE writer of the on-disk plan format written under `_lyx/plan/` (see contracts/specs/loom-plan-spec.md, the pinned spec this package implements).
preflight
Package preflight is the orchestrator-agnostic home of the tier-1 and tier-2 preconditions every composing orchestrator — today only loomengine — validates before it runs: worktree geometry, worktree pair cleanliness, and fabric readiness/sync, plus the two cheap predicates and the mode resolver a standalone-capable CLI's pre-run consults before every command.
Package preflight is the orchestrator-agnostic home of the tier-1 and tier-2 preconditions every composing orchestrator — today only loomengine — validates before it runs: worktree geometry, worktree pair cleanliness, and fabric readiness/sync, plus the two cheap predicates and the mode resolver a standalone-capable CLI's pre-run consults before every command.
preflightshed
Package preflightshed owns the general Preflight producer -- a content-free shedengine.ShedProducer wrapping internal/preflight.Check -- which any producer list may name, the same way internal/landingshed frames Publish and Finalize as producers "shared by reference" rather than owned by one product.
Package preflightshed owns the general Preflight producer -- a content-free shedengine.ShedProducer wrapping internal/preflight.Check -- which any producer list may name, the same way internal/landingshed frames Publish and Finalize as producers "shared by reference" rather than owned by one product.
proc
Package proc provides cross-OS primitives for controlling child-process window visibility and detachment, and for reading a process's liveness, start time, CPU time and ancestry.
Package proc provides cross-OS primitives for controlling child-process window visibility and detachment, and for reading a process's liveness, start time, CPU time and ancestry.
reedcli
Package reedcli is the reed CLI, the cobra layer over the tmux window manager whose domain lives in `internal/reedengine`'s package doc.
Package reedcli is the reed CLI, the cobra layer over the tmux window manager whose domain lives in `internal/reedengine`'s package doc.
reedengine
Package reedengine is the domain kernel for lyx's tmux window manager: the tmux subprocess overlay, strand bookkeeping, persisted state, config, and (in the operations layer) the lifecycle verbs that compose them.
Package reedengine is the domain kernel for lyx's tmux window manager: the tmux subprocess overlay, strand bookkeeping, persisted state, config, and (in the operations layer) the lifecycle verbs that compose them.
reedengine/render
Package render owns the closed display vocabulary a spawner names when it places a strand.
Package render owns the closed display vocabulary a spawner names when it places a strand.
reportcli
Package reportcli is the report module: `lyx report convergence [--since <date>] [--fresh-days <n>] [--format json|markdown]`, the read-only convergence report, and `lyx report timing [--since <date>] [--by day|week] [--format json|markdown]`, the read-only timing report.
Package reportcli is the report module: `lyx report convergence [--since <date>] [--fresh-days <n>] [--format json|markdown]`, the read-only convergence report, and `lyx report timing [--since <date>] [--by day|week] [--format json|markdown]`, the read-only timing report.
reportengine
Package reportengine computes the read-only report behind `lyx report convergence`: per finished run and per ISO week, what woke the orch, what stopped and repaired runs, and how the parent branch's landings fared.
Package reportengine computes the read-only report behind `lyx report convergence`: per finished run and per ISO week, what woke the orch, what stopped and repaired runs, and how the parent branch's landings fared.
reviewbudget
Package reviewbudget declares the review budget key family that loom and darn config are built on: the run-wide `review_max_bounces` and `review_hard_max_bounces`, and the per-perch `<perch>_max_bounces`, `<perch>_hard_max_bounces` and `<perch>_auto_accept`.
Package reviewbudget declares the review budget key family that loom and darn config are built on: the run-wide `review_max_bounces` and `review_hard_max_bounces`, and the per-perch `<perch>_max_bounces`, `<perch>_hard_max_bounces` and `<perch>_auto_accept`.
seatengine
Package seatengine runs one step as a table of seats: a chair and its advisors, each a shuttle run in its own strand.
Package seatengine runs one step as a table of seats: a chair and its advisors, each a shuttle run in its own strand.
segmentcolor
Package segmentcolor is a stdlib-only leaf holding lyx's closed vocabulary of loom segments and palette colors.
Package segmentcolor is a stdlib-only leaf holding lyx's closed vocabulary of loom segments and palette colors.
selfexec
Package selfexec is the self-re-exec helper a long-lived process calls when its binary has been replaced on disk.
Package selfexec is the self-re-exec helper a long-lived process calls when its binary has been replaced on disk.
selfreportcli
Package selfreportcli provides the cobra command tree for filing LoomYard bugs and enhancements as GitHub issues directly from lyx.exe.
Package selfreportcli provides the cobra command tree for filing LoomYard bugs and enhancements as GitHub issues directly from lyx.exe.
selfreportengine
Package selfreportengine provides the domain kernel for filing GitHub issues, and for listing, fetching, commenting on and closing them for board intake, via githubclient's authenticated go-github client.
Package selfreportengine provides the domain kernel for filing GitHub issues, and for listing, fetching, commenting on and closing them for board intake, via githubclient's authenticated go-github client.
shedadapters
Package shedadapters holds the shedengine.ShedProducer adapters that let a Shed-built product drive shuttle, Webster, the two halves of a burlerengine round, a seatengine table of seats, and the generic review-gate Bouncer as ordinary producers in its own flat producer list.
Package shedadapters holds the shedengine.ShedProducer adapters that let a Shed-built product drive shuttle, Webster, the two halves of a burlerengine round, a seatengine table of seats, and the generic review-gate Bouncer as ordinary producers in its own flat producer list.
shedbuild
Package shedbuild owns the recipe file format: decoding a recipe document into a Recipe and assembling a Recipe plus a caller-supplied shedrecipe.Env into the []shedengine.ProducerDef that shedengine.Shed already consumes unchanged.
Package shedbuild owns the recipe file format: decoding a recipe document into a Recipe and assembling a Recipe plus a caller-supplied shedrecipe.Env into the []shedengine.ProducerDef that shedengine.Shed already consumes unchanged.
shedcheck
Package shedcheck is an authoring-time structural analysis of an assembled shedengine producer graph: it walks the OnDone/OnStuck routing the same way shedengine.Run would, without ever calling a producer, and reports every structural defect it finds.
Package shedcheck is an authoring-time structural analysis of an assembled shedengine producer graph: it walks the OnDone/OnStuck routing the same way shedengine.Run would, without ever calling a producer, and reports every structural defect it finds.
shedcli
Package shedcli builds the "lyx shed" subtree: a named-recipe arming table plus the three CLI seams (Command, RunCLI, RunCLIIn) that register it under the lyx root.
Package shedcli builds the "lyx shed" subtree: a named-recipe arming table plus the three CLI seams (Command, RunCLI, RunCLIIn) that register it under the lyx root.
sheddriver
Package sheddriver is the shed layer's Go driver and its tackler.
Package sheddriver is the shed layer's Go driver and its tackler.
shedengine
Package shedengine is a generic outer phase-FSM: it walks one flat, ordered list of producers, with no predefined slots, honoring resume, crash-recovery, and pause uniformly at producer granularity.
Package shedengine is a generic outer phase-FSM: it walks one flat, ordered list of producers, with no predefined slots, honoring resume, crash-recovery, and pause uniformly at producer granularity.
shedrecipe
Package shedrecipe owns the engine registry: the name to shedengine.ShedProducer-constructor mapping a future recipe loader resolves each row's Engine field against.
Package shedrecipe owns the engine registry: the name to shedengine.ShedProducer-constructor mapping a future recipe loader resolves each row's Engine field against.
shedrun
Package shedrun is the sole declarer of the "shed" run-directory path segment, of the run-id vocabulary (including the reserved literal "self"), and of the seed.json contract: the file that records a run's chosen recipe, driver, and parameters at seed time.
Package shedrun is the sole declarer of the "shed" run-directory path segment, of the run-id vocabulary (including the reserved literal "self"), and of the seed.json contract: the file that records a run's chosen recipe, driver, and parameters at seed time.
shedtransient
Package shedtransient is the one place that translates a lower-level package's own failure classification into shedengine's transient mark.
Package shedtransient is the one place that translates a lower-level package's own failure classification into shedengine's transient mark.
shedverbs
Package shedverbs implements the generic cobra verb bodies -- run, step, status, pause, and goto -- shared by every module that arms a *shedengine.Shed onto a CLI subtree.
Package shedverbs implements the generic cobra verb bodies -- run, step, status, pause, and goto -- shared by every module that arms a *shedengine.Shed onto a CLI subtree.
shellguard
Package shellguard is the one neutral table of every guard lyx installs against shell commands an agent runs.
Package shellguard is the one neutral table of every guard lyx installs against shell commands an agent runs.
shortcutcli
Package shortcutcli mounts the top-level operator shortcuts (`lyx a`, `lyx attach`, `lyx prime`, `lyx pause`, `lyx p`, `lyx resume`, `lyx r`) declared in one embedded file.
Package shortcutcli mounts the top-level operator shortcuts (`lyx a`, `lyx attach`, `lyx prime`, `lyx pause`, `lyx p`, `lyx resume`, `lyx r`) declared in one embedded file.
shuttleengine
Package shuttleengine runs one LLM agent as an interactive session and returns its result.
Package shuttleengine runs one LLM agent as an interactive session and returns its result.
shuttleengine/claudeengine
activity.go implements shuttleengine.ActivityReader for Claude: the session's last activity, its forks included, and whether the newest main-chain turn end of the transcript a Stop payload names through transcript_path is an API error.
activity.go implements shuttleengine.ActivityReader for Claude: the session's last activity, its forks included, and whether the newest main-chain turn end of the transcript a Stop payload names through transcript_path is an API error.
shuttleengines
Package shuttleengines is the registry of named shuttle engines.
Package shuttleengines is the registry of named shuttle engines.
sleepjournal
Package sleepjournal reads the machine's suspends and hibernates from systemd-sleep's journal entries.
Package sleepjournal reads the machine's suspends and hibernates from systemd-sleep's journal entries.
standalonegeom
Package standalonegeom is the told-mode sibling of internal/hubgeom: it builds engine geometry structs from told strings alone, never resolving cwd and never reading the environment.
Package standalonegeom is the told-mode sibling of internal/hubgeom: it builds engine geometry structs from told strings alone, never resolving cwd and never reading the environment.
standalonestate
Package standalonestate is a stdlib-only leaf that derives a per-target-directory hash8 and per-OS state directory, so every standalone CLI package can import it with no cycle risk.
Package standalonestate is a stdlib-only leaf that derives a per-target-directory hash8 and per-OS state directory, so every standalone CLI package can import it with no cycle risk.
state
Package state provides generic locked typed JSON I/O for persistent state, and states the rule that governs a locked-JSON read-modify-write: it must hold one lock across both the read and the write.
Package state provides generic locked typed JSON I/O for persistent state, and states the rule that governs a locked-JSON read-modify-write: it must hold one lock across both the read and the write.
statuscommit
Package statuscommit is the shared core of a shed module's per-transition status commit seam: the `shedengine.Shed.CommitStatus` closure that commits a run's status file onto the fabric sibling and pushes it.
Package statuscommit is the shared core of a shed module's per-transition status commit seam: the `shedengine.Shed.CommitStatus` closure that commits a run's status file onto the fabric sibling and pushes it.
statuspane
Package statuspane is the pane mechanics the runs overview and the gate checklist share: a redraw-in-place pane loop and a status-file reader.
Package statuspane is the pane mechanics the runs overview and the gate checklist share: a redraw-in-place pane loop and a status-file reader.
stencilstore
Package stencilstore owns the entire stencil lifecycle -- seeding, hash-stamping, edit detection, reading, and validation -- against a caller-supplied absolute stencils directory.
Package stencilstore owns the entire stencil lifecycle -- seeding, hash-stamping, edit detection, reading, and validation -- against a caller-supplied absolute stencils directory.
summaryparser
Package summaryparser is the sole declarer of the final-summary artifact's filename and the sole parser of its format.
Package summaryparser is the sole declarer of the final-summary artifact's filename and the sole parser of its format.
tendercli
Package tendercli builds the `lyx tender` group with `lyx tender pause [<slug>]`, `lyx tender resume [<slug>]`, `lyx tender revive [<slug>]` and `lyx tender status` over internal/tenderengine, and installs the network gate every lyx process in a hub runs under.
Package tendercli builds the `lyx tender` group with `lyx tender pause [<slug>]`, `lyx tender resume [<slug>]`, `lyx tender revive [<slug>]` and `lyx tender status` over internal/tenderengine, and installs the network gate every lyx process in a hub runs under.
tenderengine
Package tenderengine implements the pause, resume, revive and status sequences behind `lyx tender`, over seams.
Package tenderengine implements the pause, resume, revive and status sequences behind `lyx tender`, over seams.
termwindow
Package termwindow opens a desktop terminal window that runs "lyx reed attach" in a worktree, so the operator can watch a run in a window of its own.
Package termwindow opens a desktop terminal window that runs "lyx reed attach" in a worktree, so the operator can watch a run in a window of its own.
testkit
Package testkit is the root of the shared test kits.
Package testkit is the root of the shared test kits.
testkit/boardkit
Package boardkit builds a hub fixture whose board directory holds only the board config.
Package boardkit builds a hub fixture whose board directory holds only the board config.
testkit/creelfake
Package creelfake fakes the two seams creelengine is told: Delivery, the hub's strands and their panes, and Clock.
Package creelfake fakes the two seams creelengine is told: Delivery, the hub's strands and their panes, and Clock.
testkit/envelope
Package envelope decodes the internal/output JSON envelope a CLI prints.
Package envelope decodes the internal/output JSON envelope a CLI prints.
testkit/envkit
Package envkit builds the fully filled seam structs the recipe tests share: a `shedrecipe.Env`, a `landingshed.Deps` and a `loomshed.PRReworkDeps`.
Package envkit builds the fully filled seam structs the recipe tests share: a `shedrecipe.Env`, a `landingshed.Deps` and a `loomshed.PRReworkDeps`.
testkit/indexkit
Package indexkit stubs the code index a plan gate calls, for the CLI tests that pin which index a verb validates through.
Package indexkit stubs the code index a plan gate calls, for the CLI tests that pin which index a verb validates through.
testkit/llmkit
Package llmkit locates the LLM binary for a test and skips the test when it is absent.
Package llmkit locates the LLM binary for a test and skips the test when it is absent.
testkit/locationkit
Package locationkit builds synthetic, unresolved locations for path-arithmetic tests.
Package locationkit builds synthetic, unresolved locations for path-arithmetic tests.
testkit/logcapture
Package logcapture redirects internal/logger output into a buffer for one test and restores it afterwards.
Package logcapture redirects internal/logger output into a buffer for one test and restores it afterwards.
testkit/lyxbin
Package lyxbin builds the `lyx` binary from `./cmd/lyx` for `integration`, `tmux` and `llm` tests.
Package lyxbin builds the `lyx` binary from `./cmd/lyx` for `integration`, `tmux` and `llm` tests.
testkit/plankit
Package plankit is the one test-side writer of valid plans.
Package plankit is the one test-side writer of valid plans.
testkit/scankit
Package scankit is the shared harness for source-scan invariant tests.
Package scankit is the shared harness for source-scan invariant tests.
testkit/shedfake
Package shedfake fakes the shed-layer seams: the shuttle, the burler half runner, the seat runner, the merge shuttle and the webster run seams, plus the producer Call helpers.
Package shedfake fakes the shed-layer seams: the shuttle, the burler half runner, the seat runner, the merge shuttle and the webster run seams, plus the producer Call helpers.
testkit/shuttlefake
Package shuttlefake fakes the two seams a shuttle consumer is built over: shuttleengine.Engine and shuttleengine.ReedOps.
Package shuttlefake fakes the two seams a shuttle consumer is built over: shuttleengine.Engine and shuttleengine.ReedOps.
testkit/stencilkit
Package stencilkit seeds stencil fixtures from the registry through `stencilstore`.
Package stencilkit seeds stencil fixtures from the registry through `stencilstore`.
testkit/tmuxkit
Package tmuxkit gives each test package one isolated tmux socket directory.
Package tmuxkit gives each test package one isolated tmux socket directory.
treadleengine
Package treadleengine is the generalized round-loop engine: it spawns a round via a caller-supplied RoundRunner each iteration, gates convergence (llm-verdict / command / both), runs an ephemeral progress judge against a milestone-capped round ladder, and persists per-round state for crash/pause resume — all of it behind a seam, so a consumer supplies a round-runner without duplicating any of this machinery.
Package treadleengine is the generalized round-loop engine: it spawns a round via a caller-supplied RoundRunner each iteration, gates convergence (llm-verdict / command / both), runs an ephemeral progress judge against a milestone-capped round ladder, and persists per-round state for crash/pause resume — all of it behind a seam, so a consumer supplies a round-runner without duplicating any of this machinery.
twilldirective
Package twilldirective renders the twill directive, so a writer that has settled its record reviews it through lenses, one fork per lens, before it ends.
Package twilldirective renders the twill directive, so a writer that has settled its record reviews it through lenses, one fork per lens, before it ends.
verifyrun
Package verifyrun runs one shell command in-process and reports its exit code.
Package verifyrun runs one shell command in-process and reports its exit code.
verifytree
Package verifytree is the one function every plan-verify site calls.
Package verifytree is the one function every plan-verify site calls.
webstercli
acceptaudit.go implements the `accept-audit` webster verb: the operator's acknowledgement of the run-exit correctness findings that stay pending and block run entry.
acceptaudit.go implements the `accept-audit` webster verb: the operator's acknowledgement of the run-exit correctness findings that stay pending and block run entry.
websterengine
conflictrecord.go declares the never-tracked plan-conflict record begin-batch leaves in webster's scratch directory, and its writers and removers.
conflictrecord.go declares the never-tracked plan-conflict record begin-batch leaves in webster's scratch directory, and its writers and removers.
yamlengine
Package yamlengine reconciles, fills, checks and sets YAML configuration against a template while keeping the template's comments and key order.
Package yamlengine reconciles, fills, checks and sets YAML configuration against a template while keeping the template's comments and key order.
tools
codestats command
Command codestats scans a source tree and writes a markdown report of how its lines divide: code, comment and blank per language, tests against production, and markdown's share of the whole.
Command codestats scans a source tree and writes a markdown report of how its lines divide: code, comment and blank per language, tests against production, and markdown's share of the whole.
deploy command
Command deploy is the only route by which lyx and the loomyard plugins are installed.
Command deploy is the only route by which lyx and the loomyard plugins are installed.
godocreflow command
Command godocreflow reflows the text of Go doc-comment blocks -- file-level header comments, package doc comments, and comments immediately preceding an exported declaration -- to semantic line breaks (one sentence per line, plus a break at an internal independent-clause boundary), per the golang-comments skill's "Line-wrap style" section.
Command godocreflow reflows the text of Go doc-comment blocks -- file-level header comments, package doc comments, and comments immediately preceding an exported declaration -- to semantic line breaks (one sentence per line, plus a break at an internal independent-clause boundary), per the golang-comments skill's "Line-wrap style" section.
internal/devbin
Package devbin locates the repository root and the derived `.dev-bin` directory used to install and resolve dev/test builds of lyx, keeping that derivation in exactly one place in the codebase.
Package devbin locates the repository root and the derived `.dev-bin` directory used to install and resolve dev/test builds of lyx, keeping that derivation in exactly one place in the codebase.
mdreflow command
Command mdreflow is a one-shot (and repeatable) repo sweep tool for the mill:markdown skill's semantic-line-break rule: reflow markdown prose and list-item paragraphs to one-sentence-per-line, with extra breaks at internal clause boundaries (semicolon, or comma+coordinating- conjunction+explicit-subject).
Command mdreflow is a one-shot (and repeatable) repo sweep tool for the mill:markdown skill's semantic-line-break rule: reflow markdown prose and list-item paragraphs to one-sentence-per-line, with extra breaks at internal clause boundaries (semicolon, or comma+coordinating- conjunction+explicit-subject).
sandbox command
tokencount command
Command tokencount reads the session transcripts of a set of task runs through the shuttle engines that recorded them.
Command tokencount reads the session transcripts of a set of task runs through the shuttle engines that recorded them.
wordswap command
Command wordswap performs a case-preserving whole-token substitution of one word for another across files of any language: identifiers, comments, string literals, shell variables, and markdown prose all substitute through the same mechanism.
Command wordswap performs a case-preserving whole-token substitution of one word for another across files of any language: identifiers, comments, string literals, shell variables, and markdown prose all substitute through the same mechanism.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL