Reconcile
Verify the implementer's diff against the spec (after delegation) — does it work, only what's needed, and all of the plan — then absorb drift. Output — conformance.md + PASS, or a drift report + updated spec.From its SKILL.md
npx -y skills add NVZver/claude-marketplace --skill reconcileAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 3 commands, including `bash scripts/gate.sh` and 2 more.
SKILL.md
9.6 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
Trace. On load, print first:
=============== [lsa/skills/reconcile/SKILL.md] [lsa] ===============
LSA Reconcile (after — correctness)
See CORE.md §6 (the two checks). This is the after check; verify is the before check.
Role
Result verifier + spec maintainer.
Goal
Confirm the returned diff satisfies the spec; where reality diverged, the spec absorbs it.
Inputs
| Input | Source |
|---|---|
| The implementer's diff | delegate |
The spec + <flow>.feature files | specify |
| Quality-gate checks (required input) | .lsa.yaml gate: — see knowledge/quality-gate-contract.md. No gate: block → report the gate status NOT-RUNNABLE explicitly (Step 1); never silently skip. |
| Scenario-run count N | .lsa.yaml reconcile.runs — default 3 when the key (or the file) is absent |
Steps
Three questions — does · only · all:
- Does it work — run each Gherkin scenario against the diff N times, where N =
.lsa.yamlreconcile.runs, default 3 when the key is absent (agents are stochastic); pass = succeeds on ≥95% of runs. At the default N = 3, ≥95% means all 3 runs pass (3/3); a 2/3 scenario fails. Whenreconcile.runsraises N for a high-stakes epic, pass stays ≥95% of runs (e.g. N = 20 → at least 19 passing). Then run the.lsa.yamlgate:block — required input, not an optional extra: run each configured check and cite its command + exit/output as the proof (the Rule 7 gate artifact). Run the block in one pass where the repo provides an aggregate runner (this repo:bash scripts/gate.sh, which reads thegate:block and prints each check's command + exit), and cite its consolidated output; absent a runner, run each configured command. If the repo has nogate:block, report the gate status explicitly asgate: NOT-RUNNABLE — no gate: block in .lsa.yamlinconformance.mdand alongside the verdict — never silently skip the gate step. (→ scenario results + per-check gate results, or an explicitNOT-RUNNABLEgate status) - Only what's needed — every changed hunk traces to a requirement; an untraced hunk is over-delivery. Prove it by reading the Step-4 coverage table in reverse: every diff hunk appears in at least one requirement row; an orphan hunk (in the diff, in no row) is drift. (→ scope check)
- All of the plan — every requirement (F1…, including non-scenario ones) maps to a change in the diff or a covering test; an uncovered requirement is under-delivery. Prove it with the Step-4 coverage table: a requirement row with no implementing hunk and no covering test is a failing row. (→ completeness check)
- First run
bash scripts/coverage-skeleton.sh <feature-dir>to get the enumerated skeleton — it lists every requirement ID as a table row and every changed file as a candidate hunk (spec files under<feature-dir>excluded), the two deterministic axes computed once so you cite them instead of re-enumerating by hand (enumeration is scripted; the does·only·all judgment stays yours —.lsa/VISION.md:67§2 principle 10). Then fill only the semantic mapping column (which hunk satisfies which requirement) and read off orphans / uncovered from the filled table. Writeconformance.mdaround the requirement ↔ hunk coverage table — one row per requirement ID (F1…Fn fromrequirements.md) with four columns: requirement · the diff hunks/files that implement it · the scenario runs that prove it (e.g.3/3) · a per-row verdict. Below the table, write the orphan-hunk line in the canonical, machine-readable form — exactly one line, at column 0, eitherOrphan hunks: none.orOrphan hunks: <integer>(a prose heading such as## Orphan hunks (over-delivery vs …)does NOT satisfy this contract), optionally followed by a prose breakdown on subsequent lines — then the gate results (or the explicitNOT-RUNNABLEstatus, per Step 1). The judge cites this table — the only and all verdicts are read off it, not asserted in prose. Pass → done. Any check fails or the code diverged → present the drift (percore/outputRule 7 Delivery test — never only in a subagent transcript or pre-tool-call text), take approval, and edit the spec in place to match reality. (→ verdict + conformance.md + any spec update) - Metrics emit step — PASS verdicts only. When Step 4 reaches a
reconcile: PASS @ <sha>verdict, runbash scripts/metrics-harvest.sh <feature-dir>/conformance.md, quote its four-line output as the cited source, and append one row to.lsa/metrics.mdusing its existing six-column schema (feature · archived · accuracy (M/N) · Citation resolve-rate (M/N) · only-required-changes (M/N) · notes) — the harvest script'saccuracy-to-taskmaps toaccuracy,citation-resolve-ratetoCitation resolve-rate,only-required-changestoonly-required-changes. On a FAIL verdict, append no row. This step is descriptive only: it never changes the PASS/FAIL verdict, the gate threshold, orreconcile.runssemantics; a non-zero exit or anUNPARSEABLEline frommetrics-harvest.shis recorded verbatim in the row'snotescolumn and never turns a PASS into a FAIL.
One exception, and it is a format rule, not a metric rule. If only-required-changes comes back UNPARSEABLE (non-canonical orphan-hunk line), that is not a measurement failure — it is proof that the conformance.md you just wrote violates Step 4's output contract. Fix the orphan line to the canonical column-0 form and re-run the harvest before appending the row. The verdict is untouched either way; you are repairing your own artifact, not letting a metric gate a grade. Lint C19 enforces the same contract on every post-contract conformance.md, so a file that skips this fails the gate on the next run regardless.
Harvest with no diff-range argument while the cycle is still uncommitted — that is the live path the default range is correct for. Once the cycle is committed, pass its explicit range (<base>..<sha>); with no range, a committed cycle reports UNPARSEABLE (committed cycle, no explicit diff range given) rather than a ratio computed from unrelated later work. (→ .lsa/metrics.md row, or none on FAIL)
Output
conformance.md — its core is the requirement ↔ hunk coverage table (one row per requirement ID: requirement · implementing diff hunks/files · proving scenario runs · verdict), followed by the canonical orphan-hunk line (Orphan hunks: none. or Orphan hunks: <integer> — see Step 4; empty count on PASS) and the per-check gate results (or an explicit gate: NOT-RUNNABLE — no gate: block in .lsa.yaml status) — + a verdict line reconcile: PASS @ <graded-sha> — emitted as a distinct gate artifact in a context the implementer cannot author (see Constraints, Independence must be observable) — or a drift report + the spec updated to reality. On PASS, Step 5 additionally runs scripts/metrics-harvest.sh against that conformance.md and appends one row to .lsa/metrics.md, citing the script's output as the source.
Coverage-table shape (synthetic):
| Req | Implementing hunks/files | Proving runs | Verdict |
|---|---|---|---|
| F1 | `src/status.ts` (new command) | `status.feature` Scenario 1 — 3/3 | ✅ |
| F2 | `README.md` §Usage | — (doc requirement, no scenario) | ✅ |
Orphan hunks: none.
Gate: lint ✓ (exit 0) · test ✓ (exit 0) — or — gate: NOT-RUNNABLE — no gate: block in .lsa.yaml
Constraints
- Run N times (N and the pass threshold per Step 1), never once. Check does · only · all — a passing-but-incomplete diff is not done. The spec absorbs reality — never revert the code, never silently accept a failing or uncovered scenario. Never silently skip the gate step — no
gate:block means an explicitNOT-RUNNABLEgate status, not an omitted one. - Independent grader. reconcile is the grader the work cannot edit: run it in a context with no write access to the tests, acceptance
.featurescenarios, or quality-gate config (.lsa.yamlgate:) it grades; the implementer's diff never includes an edit to its own grader. (Reward-hacking defense —knowledge/quality-gate-contract.md§"Independence rule".) - Never routed down. reconcile is a floored model-routing surface (
lsa:reconcile) — it always resolvesinherit, never a lower tier, even if.lsa.yamlrouting:names one; grader quality is the safety floor of the whole system. Per../../knowledge/model-routing.md. - Independence must be observable, not asserted. The verdict (
conformance.md+reconcile: PASS|FAIL @ <graded-sha>, naming the SHA it graded) is authored in a separate context from the implementer and emitted in a commit separate from the implementation commit (or, where a single commit is unavoidable, as a record whose authoring context is provably not the implementer's); a run where reconcile is folded inline into the implementation commit fails this rule. Full rationale + the observed TripAnchor-1 failure:knowledge/quality-gate-contract.md§"Independence rule".
/lsa:reconcile — manual invocation. Also surfaced by the SessionStart drift hook.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.