Plan to finish every /goal condition

Two declarative completion conditions exist. Neither can pass today. This is the ordered route to making both return complete.

BUILT 2026-08-17, PHASE 1 RUN 2026-08-18 · CONDITIONS: impossible-guitar-parts/GOAL.md, community-os/GOAL.md

Contents
  1. Where both conditions stand
  2. Goal 1: guitar transcription, requirement by requirement
  3. Goal 2: Community canon, and its stale premise
  4. Phase 1: make the guitar goal satisfiable
  5. Phase 1 RESULT, run 2026-08-18
  6. Phase 2: run the per-song ladder
  7. Phase 3: repair the conditions, close the canon goal
  8. The one decision that is not mine

1. Where both conditions stand

Neither goal can return complete today, and the blockers are different in kind.

The guitar goal is blocked on four executable implementation gaps plus one open research question. The canon goal is blocked on a condition that describes a corpus state that has moved on, so it would judge against a false premise. Only 2 of 73+ skills carry a /goal condition at all.

2
goal conditions that exist
0
that can pass today
2
Mutiny ledger entries, seeded
1 of 10
songs measured end to end
2 of 10
songs with no guitar audio
1
blocker left after Phase 1

corrected 2026-08-18 My first pass searched only Downloads and the BELIEVEYOUME tree and reported zero ledgers. Widening the search found working CHECKPOINT.json ledgers under _outputs/theship-tabs/ and _outputs/appleseed-allparts/, plus a persisted beats_to_seconds.json for Kilgore Trout. The ledger machinery is proven on other bands and had never been applied to BELIEVEYOUME. That is a smaller problem than a missing mechanism, and Phase 1 has now seeded it.

2. Goal 1: guitar transcription, requirement by requirement

The condition specifies seven accuracy properties, twelve playability checks, a six-field lineage block, and a scope rule. Status below merges the pilot measurements from the concurrent Mutiny session with the stem census I measured today.

#Condition requirementStatusEvidence or gap
1Attack timing vs stemsdonerecall 74.1%, precision 88.0%, validated 5.70x against a deliberately wrong stem
2Note pitch vs stemsno power53.4% against a 51.0% control on every healthy map. Reported with its control, which is what the condition asks
3Duration and sustaindoneRUN 2026-08-18 built by the concurrent session as miss_and_duration_audit.py and executed here. Correlation −0.046 against a +0.023 shifted control, separation −0.069, so it refuses itself
4Guitar ownership per noterefused+0.2651 against a +0.2766 control, gain -0.0115 against a 0.05 threshold. A measured refusal satisfies the condition
5Tuning and capodoneDrop C confirmed, low C at 65.4 Hz, register floor measured
6Repeated or doubled notesdoneoctave_copy_gate.py, Broken Satellites copies traced to the local file
7Discrepancies classifieddoneRUN 2026-08-18 753 misses itemised per bar and classified: 2 supported correction, 10 unresolved ambiguity, 119 unsupported change
8Twelve playability checksdoneLead REVIEW, Rhythm's single flag refuted as a held-pedal false positive across bars 3 to 8
9comparison_basis lineage4 of 6RUN 2026-08-18 checkpoint, songsterr_reference, beat_map and audio all declared with hashes. Only stem_source stays open
10Persistent checkpoint stateseededRUN 2026-08-18 ledger written with 2 entries and a receipts trail at _outputs/impossible-guitar-parts/believeyoume-mutiny/
11Scope enforcementhonouredthe span-fix candidate took the file from 1 fault to 5 and was rejected, kept as evidence, nothing promoted
12Primary evidence exists2 songs blockedmeasured today Asleep in the Trunk and Jackie are 4-stem only, so no isolated guitar audio exists to satisfy the --audio requirement

Six requirements pass on the pilot song. Four are missing for implementation reasons. One is blocked on source audio for two songs. One is the open research question in section 7.

3. Goal 2: Community canon, and its stale premise

measured The condition states that "the only episode currently ingested is the shipped 32 line worked sample titled The Study Room Variable", and instructs the evaluator to treat any claim of real material as unbacked. I ran the corpus commands:

$ python3 os.py list
  S01E01 'Pilot'            360 lines / 15 scenes
  S01E02 'Spanish 101'      234 lines / 12 scenes
  S01E03 'Introduction to Film'  285 lines / 12 scenes
  [12+ episodes total, two flagged PARTIAL]

$ python3 os.py sources
  COMMENTARY-S01E01              commentary  782 units
  EW-BINGE-COMMUNITY-PRIMER      interview   727 units
  THR-COMMUNITY-REWATCH          interview    89 units

The corpus moved and the condition did not. Real episodes, real commentary and interview sources, and scored canon records with claims and hypotheses all exist. A condition carrying a false premise about corpus state will mis-judge in both directions: it would reject true statements about real material, and it gives no guidance on the material that is actually there. Repairing the condition text is a prerequisite to running this goal at all, and it belongs in Phase 3.

All four gates the condition specifies exist on disk: validate_citations.py, lint_canon.py, test_source_gate.py, test_canon.py. None has been run with its exit code captured outside a pipe, which the condition explicitly requires.

4. Phase 1: make the guitar goal satisfiable

Four steps, no research, one song (The Mutiny)

Every item here is blocked on writing code or running a command, not on an unanswered question. Together they take the pilot song from "measured well" to "expressible in the vocabulary the condition demands".

1.1 Implement duration and sustain agreement

written_attacks() returns duration_beats, so the data is in hand and only the comparison is missing. Compare written duration against decay-to-half-energy on the stem, through the health-gated map. Ship it with a shifted-time control like every other measure in this toolchain, and report the control beside the number whichever way the result goes.

1.2 Itemise the 795 unmatched attacks

Extraction goes through BM.apply_map(tab_t, rec_t, and the rest), the call that produces the 74.1% figure. The earlier attempt rebuilt the map with np.interp and saturated at 100%, which is the circularity trap this pipeline has hit before. Output one row per miss with staff, bar, beat, written pitch.

1.3 Classify every miss in the condition's own vocabulary

Three buckets, worded exactly as the condition words them: supported correction, unsupported change, unresolved ambiguity. On current evidence most will fall into the third bucket, and that is a legitimate result the condition accepts. It does not accept the count staying unitemised.

1.4 Persist the map and seed the ledger

python3 impossible_gate.py --init-checkpoint 08_the_mutiny/songsterr.gp

Then re-run the gate with the full flag set so comparison_basis is produced and written, which closes requirements 9 and 10 at once:

python3 ~/.claude/skills/impossible-guitar-parts/impossible_gate.py \
  --source songsterr.gp --checkpoint songsterr.gp --promote CANDIDATE.gp --examples \
  --stem-source c-tied.gp \
  --audio "03 - The Mutiny-RhythmGtr [R].wav" \
  --beat-map beats_to_seconds.json \
  --transform tie-chain-repair --edit-scope "Rhythm bars 3-8" \
  --changed-notes changed.json

Save the validated map to beats_to_seconds.json first. The [R] channel is the one that passed at 73.6% alignment with 2.22% bar CV, and the stereo sum was rejected at 7.20% with ten bars off, so the flag has to point at the channel rather than the folder.

Expected outcome: the gate returns best_validated_so_far with verdict FAIL, which per the condition means the job is still INCOMPLETE. That is the correct and useful result. It gives every later song a baseline to be measured against.

Phase 1 result, run 2026-08-18

Three of the four Phase 1 steps are closed. The fourth ran to a single named blocker, and the blocker is a missing artifact rather than a missing step.

Every number below was produced this pass on mutiny-songsterr.gp, sha256 21b37b73b6f35faa, the same source the pilot measured.

1.1 and 1.2 and 1.3, executed

correction My plan recorded duration agreement and miss classification as unbuilt. The concurrent session had written miss_and_duration_audit.py at 17:01 on 2026-08-17, which implements all three. It had not been run on The Mutiny. Running it is what this pass did.

MeasureResultControlVerdict
Beat map alignment73.2%14.8%gain +58.5, ACCEPTED
Map health, four criteriaclamped 5.1%, run 55, unique 0.949, span 95%limits 12 / 120 / 0.85 / 85%PASS on all four
Attack recall75.5% (2315 of 3068)12.7% decoy at +7.3susable
Duration against decay-to-halfr = −0.046, n=2291+0.023 shifted-timeseparation −0.069, NO DISCRIMINATING POWER

The duration measure refuses itself. The condition asks for duration and sustain agreement as a measured number rather than a claim, and a measure that loses to its own control is a legitimate answer to that. It joins pitch, ownership and attack-string on the list of measures that cannot license a note change on this material.

The 753 misses, itemised and classified

Song miss rate 24.5%, aggregated over the 131 bars holding at least 4 attacks, in the condition’s own three-way wording.

ClassBarsRuleThe flagged bars
supported correction2miss far above the song rate AND the decoy does not reproduce itbar 2 (8 attacks, miss 100.0%, decoy 25.0%) and bar 8 (9 attacks, miss 77.8%, decoy 55.6%)
unresolved ambiguity10miss high and the decoy misses too, so the detector explains itbars 5, 22, 119, 125, 126, 127, 128, 131, 132, 133
unsupported change119no evidence of a discrepancyevery remaining bar

Bars 2 and 8 are the first localised evidence this thread has produced. Nine measures across two songs had previously localised nothing. Two bars now carry a miss rate their own decoy does not reproduce. That is a lead worth listening to, and it is two bars out of 135 rather than a licence to rewrite the file.

1.4 Ledger seeded, basis 4 of 6 declared

Working copy, persisted map, health record and receipts trail live at ~/Projects/_outputs/impossible-guitar-parts/believeyoume-mutiny/. The ledger holds two entries, both correctly recorded as rejected experiments.

comparison basis
   stem_source            not declared        <-- the only evidence gap
   parent                 not declared
   checkpoint             21b37b73b6f35faa  mutiny-songsterr.gp
   songsterr_reference    21b37b73b6f35faa  mutiny-songsterr.gp
   beat_map               d834a8cd5513b6fd  beats_to_seconds.json
   audio                  1d8767faddfaaf83  03 - The Mutiny-RhythmGtr [R].wav
   transform              none-baseline-measurement
   edit_scope             no edit, baseline census only
   status                 best_validated_so_far

The blocker, and it is album-wide

No BELIEVEYOUME song has a full stem-derived transcription, so --stem-source has nothing legitimate to point at on any of the ten. Two candidates looked like one and both were disqualified on provenance:

The condition is explicit that a filename confers no authority, so declaring either as the stem source would be the exact failure it exists to stop. The gate refusing here is the gate working.

A new playability flag on the Lead staff

TUNING_EVIDENCE   whole part Lead Guitar
   string 0 is detuned -2 from the rest of the tuning and its open pitch is never used.
   A single-string detune needs recurring use of the open pitch it creates, several
   independent ergonomic gains, repeated chord shapes, or direct audio support

Both guitar staves carry the identical setup [36, 43, 48, 53, 57, 62]. The Rhythm staff still shows its single IMPOSSIBLE_SPAN at bar 3.875, which the pilot refuted as a held-pedal false positive across bars 3 to 8, and that refutation stands.

What Phase 2 inherits

  1. Order changes. No song can complete the basis today, so the ladder is not gated on which song has a stem source. Run it on evidence quality, which keeps my original order.
  2. One decision unblocks all ten. Either build a real stem-derived transcription for at least one song, or promote under --license-blind-promotion EVIDENCE, which the gate accepts and permanently marks as never accuracy-tested. The first costs a transcription pass, the second costs the accuracy claim.
  3. Bars 2 and 8 of The Mutiny are worth your ear before any of the above.

5. Phase 2: run the per-song ladder

One song per pass, ordered by what the evidence supports

Order comes from two measured inputs: the guitar stems each song actually holds (my census today) and the Songsterr freshness audit. Songs needing a re-pull go after songs that do not, because measuring a stale local export wastes the whole pass.

PassSongGuitar stemsGatePrerequisite
0The Mutiny4, with true L/Rpilot runPhase 1 closes its four gaps
1The Alligator2 (lead, rhythm)readyhas a stem-corrected prior and a resolved key
2Not Too Much3readyD Standard, confirm tuning before the position gate
3My Mirror Hates Me3readyreplication song, Standard E, map built once before
4So Far So3readythe private tab is Drop C, the public one a different arrangement
5Endless Summer2 (lead, rhythm)readynone
6Lazarus2 (lead, rhythm)re-pulllocal is a stale 3-track export; s5476396 carries Vocals and Drums
7Broken Satellites3re-pullcopy tracks are local only; choose between s5084035 and s5965143
8Asleep in the Trunknone isolatedre-separate4-stem FLAC, and the local tab is a 173-note shell. Also settle 3/4 against 4/4
9Jackienone isolatedre-separate4-stem FLAC, single guitar staff

The two blocked songs have one unblocking step

Asleep in the Trunk and Jackie need a Moises six-stem re-separation before the condition's --audio requirement can be met. A demucs 6-stem pass exists today for exactly those two at BandBooks/BELIEVEYOUME/3-guitar-derivation/_demucs_6s/htdemucs_6s/ with a guitar.wav each, so the cheaper first move is testing whether that guitar file passes map_health_gate.py. If it does, both songs unblock with no new separation. If it fails, run the Moises role split, which is what produced the usable stems on the other five.

Per-pass checklist, identical every time

  1. Re-pull the live tab and run empty_staff_gate.py, since a full-size file with a zero-note staff clears every presence check
  2. Build the beat map on the single best isolated guitar channel, and run map_health_gate.py. A map that beats a random control can still be degenerate
  3. Run audio_accuracy_audit.py including the new duration measure, each number beside its own control
  4. Run the five-tier playability grade
  5. Itemise and classify every discrepancy
  6. Run impossible_gate.py with the full flag set so comparison_basis and the ledger entry are written

Nine passes at Phase 1's demonstrated cost. Steps 1 to 2 are the ones that fail loudly and cheaply, so a song that cannot produce a healthy map stops at step 2 rather than consuming a whole pass.

6. Phase 3: repair the conditions, close the canon goal

3.1 Rewrite the community-os condition against real state

Replace the "only the 32 line worked sample is ingested" clause with the measured corpus, and keep the mechanism the clause was protecting: a green gate proves plumbing and never proves corpus content. The new wording should demand a surfaced os.py list and os.py sources per run, which stays correct as the corpus grows rather than pinning a number that goes stale again.

3.2 Run the four canon gates with exit codes off the pipe

for g in validate_citations lint_canon test_source_gate test_canon; do
  python3 "$g.py" > "/tmp/$g.out" 2>&1
  echo "$g exit=$?"     # captured before any pipe touches it
  tail -5 "/tmp/$g.out"
done

The condition calls out the pipe trap explicitly, because a pipe reports the last command's status and not the script's. Surface the counts alongside: citation tokens, record counts by kind, and the check counts from both test files.

3.3 Give the other pipelines a condition, or say plainly that they have none

Two of 73+ skills carry a /goal. The book pipeline, the tarot corpus, the Etsy delivery audit and the stem players all ship artifacts under hard gates with no completion condition above them. Writing conditions for all of them is a larger project than this plan covers. The honest close is a short register of which pipelines have a condition and which do not, so an absent condition is visible rather than assumed.

7. The one decision that is not mine

Phase 1 and Phase 2 do not answer whether the inherited tab is correct.

Nine measures were run across two songs with controls on both sides. Attack recall is the unique survivor at 5.70x. Pitch agreement has no discriminating power on every healthy map (+2.4, +2.6, +3.6). Ownership was refused at -0.0115. Per-bar support came in at +4.7 against a +15.0 requirement. Nothing says the tab is wrong. These tools cannot tell on this material, and each one says so about itself.

So a note-by-note correction cannot be justified today, and three routes are open:

RouteWhat it costsWhat it gets
Accept the inherited tab with its profilePhase 1 plus nine Phase 2 passesTen songs each carrying a measured accuracy and playability profile, a ledger entry, and a lineage block. The condition returns complete on the requirements it can test, with the untestable ones stated
Fund the missing-signal workOpen-ended researchThe search space is mapped: continuous spectral features are ruled out, and what is untried is a learned or template matcher on discrete events
Correct by earYour listening time, one song at a timeCorrections the tools record as evidence rather than license. Your ear outranks the scorecard, and each correction becomes an executable regression case

My recommendation is the first route, with the third running alongside on any song where you hear something wrong. It is the only route that reaches a defensible complete on both conditions using evidence in hand, and it leaves the research route open rather than foreclosing it. The measured profile is worth having on all ten songs whichever route follows.

Ownership note

coordination A concurrent session owns the guitar-tab thread and produced the Mutiny pilot measurements cited here. Phase 1 edits files in ~/.claude/skills/impossible-guitar-parts/, which is that session's working tree. This plan touches nothing there. Hand Phase 1 to that session, or close it out before starting Phase 1 here.