Add the create-loom-gauntlet skill: brownfield map recon or greenfield part-0 bootstrap - #55
Open
jpwinans wants to merge 2 commits into
Open
Add the create-loom-gauntlet skill: brownfield map recon or greenfield part-0 bootstrap#55jpwinans wants to merge 2 commits into
jpwinans wants to merge 2 commits into
Conversation
…d part-0 bootstrap Moves /create-loom-gauntlet into the repo as the canonical copy and makes it self-contained: the create-gauntlet dependency is removed, with the base gauntlet requirements inlined into the skill's non-negotiables. The dependency gate now decides a mode from two observables instead of assuming a mapped repo: map substance (graph-stats entityCount > 0 — a manifest over an empty graph is treated as absent) and extractable source (git ls-files over the six languages /map-codebase extracts). Mapped repos run the existing brownfield machinery unchanged; blank or scaffold-only repos run greenfield — a serialized part 0 freezes the interface contract between the parts that parallelize, writes the acceptance suite from the brief's measurable properties, and establishes the toolchain the objective's named commands require, then the run bootstraps its own map with /map-codebase and converges to brownfield rules for every later phase. Unmapped repos with existing code stop with instructions to map first. Map write rules differ by mode on purpose: the brownfield map graph stays a frozen read-only baseline for the run, while the greenfield map advances only via the scheduled /map-codebase runs. Bootstrap carries a degrade rule (an upgrade, never a blocker), and the store-reachability check documents that a typed NOT_FOUND still proves the store is up.
…d run
Gate steps 2 and 3 lose their ask-the-user branches: mapping or refreshing
is now the announced default action — a present human can interrupt it, an
absent one has nothing to decline — and stopping requires an observable
fact: map failure, or a cost cap the user already stated. GRAPH FACTS
records a map built or refreshed at generation, with the entityCount
disclosed as post-map. Brownfield adjective tasks get a derivation recipe
in recon: the objective's number comes from recorded tensions, invariant
claims, and failing commands, stated in DELIVERABLE so no builder
re-litigates it.
Loop mechanics tightened where the run found exploits or gaps.
Completeness and why-safe claims are regenerated by every critic round
they recur, closing the repair-verification loophole that let an
unverified closed-case comment survive three rounds. Measurement parts
touching any paid or metered resource carry a mock-first
machinery-and-precondition gate before real spend is authorized. Worktree
dispatches forbid git stash (refs/stash is repo-global; parallel builders
can silently apply each other's WIP — reproduced live) and prescribe WIP
commits on the worktree branch instead. Evidence directories gain
copy-aside plus per-batch read-only sealing, the lead's checkpoint is
also exported as JSON so it survives a store wipe, and the watchdog
restores the pre-flight backup before any manual reconstruction.
Reference selection keeps find-callers primary — corroborate, never
substitute; a pattern's instance list never justifies the winner. The
ledger documents the {score, basis} confidence shape, and the Transport
slot carries the zsh single-quoting discipline plus the scriptPath
invocation form for mapping foreign repos.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships
/create-loom-gauntletin-repo as the canonical copy — self-contained (nocreate-gauntletdependency) and dual-mode: the existing brownfield machinery for mapped repos, plus a greenfield mode for building a new product in a blank repo.The problem this solves: the skill previously assumed a
/map-codebasegraph exists, and its gate checked only thatmap-manifest.jsonexists — so a manifest over an empty graph (what mapping a blank repo produces) passed the gate and generated a prompt whose GRAPH FACTS were hollow assertions dressed as verified ground truth. Meanwhile the documented fallback for every gate failure was a user-level skill (create-gauntlet) that this repo does not ship, and whose model guidance had drifted stale against a correction this skill already carries (effort levels are not dispatchable).The mode gate
Store reachability first (both modes need it — the ledger lives in FalkorDB; a typed
NOT_FOUNDstill proves the store is up), then the mode from two observables, both recorded in the generated prompt:graph-statsreportsentityCount > 0. A manifest over an empty graph is treated as absent.git ls-filesover the six languages/map-codebaseextracts.Substance → brownfield, unchanged. Neither → greenfield. Source without a map → stop with instructions to map first (guessed contracts are worse than no gauntlet). Hybrid tasks (new subsystem in a mapped repo) run brownfield plus the part-0 discipline for the new subsystem only.
Greenfield design
The map describes what is; a new product is what will be — so independence is established by construction, then verified:
<test/lint/build>commands don't pre-exist in a blank repo, so part 0's exit criterion establishes them. Enumeration-shaped, opus critic./map-codebaseand every brownfield rule binds from then on — graph recon, blast-radius verification of the constructed independence, the critics' graph toolkit. Re-map (incremental) at each phase boundary. Degrade rule: bootstrap is an upgrade, never a blocker./map-codebaseruns — no agent writes it directly in either mode.Evidence
11e6e83vs HEAD,git diff --name-onlyscoping); capability probes returned sessions/receipts yes.uv run loomfailing to spawn in a repo without the venv — the--directorytransport requirement is now recorded in the prompt's Transport slot because we watched it fail, not because we guessed.create-gauntletreferences remain; every mode fork resolves to exactly one variant under the output lint; description is 444 chars of triggering conditions only.Suggested test
The end-to-end case this revision hasn't run: point
/create-loom-gauntletat a blank repo with a short product brief and check the generated prompt states its mode in GRAPH FACTS, carries part 0 with all three obligations, and cites the bootstrap + degrade rule. For regression, generate against this repo and confirm the brownfield output is materially unchanged from the previous skill version.~/.claude/skills/create-loom-gauntletis now a symlink here (per the repo's no-duplicates policy); the pre-revision original is backed up at~/.claude/backups/.