You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stage ownership: S3 adapter quality; consumers may include S5 corpus and S8 inspector
Problem
S3 requires Guitar Pro import to preserve guitar semantics and emit a LossReport. The code and docs identify individual unsupported/missing mappings, but there is no single machine-readable coverage matrix answering:
Which GP constructs are observed?
Which are parsed by the upstream library?
Which reach Griff's canonical model?
Which survive projections/generation/export?
Which are lost, flattened or approximated?
How frequently does each loss affect the actual corpus?
Issue #75 already exposes the practical failure mode: pull-off exists upstream but is not mapped; tap and let-ring require additional model work. Without prevalence data, roadmap priority is still driven partly by whichever missing articulation happened to be noticed last. Humans have used worse prioritization methods, but that is not a reason to preserve them.
Goal
Build a Guitar Pro Loss Observatory that combines:
a machine-readable construct support matrix;
stable typed loss codes;
per-file and corpus-wide prevalence reports;
minimized regression fixtures for confirmed losses;
CI gates preventing supported constructs from silently regressing.
Support matrix
Track each construct across explicit stages:
construct
upstream parser observed
GP adapter mapped
canonical model representation
source provenance retained
preview/tab projection
regeneration preservation
export support
loss/approximation code
fixture coverage
fuzz seed coverage
Initial vocabulary should include at least:
string/fret assignment
bend
slide
hammer-on
pull-off
tap
let-ring span
palm-mute span
natural/artificial/pinch harmonic
grace note
tie
tuplet
vibrato
accent/ghost/staccato/dead note
whammy
multiple voices
repeat / alternate ending
tempo change
time-signature change
triplet feel / swing metadata
The matrix is data, not a hand-maintained README table that can drift politely for months.
Stable loss codes
Introduce versioned codes such as:
GPLOSS001 parsed construct has no canonical representation
GPLOSS002 canonical representation exists but adapter does not map it
GPLOSS003 construct is flattened/approximated
GPLOSS004 provenance (string/fret/technique extent) is lost
GPLOSS005 unsupported container/version feature
Specific codes may be finer-grained, for example pull-off-unmapped vs let-ring-model-missing. Requirements:
stable identity across wording changes;
severity/fidelity class separate from message text;
source location/track/bar/note context where available;
one file may carry multiple occurrences of the same loss;
unknown constructs fail visibly rather than disappearing into a generic warning count.
For each confirmed loss, provide a bounded reducer that attempts to remove unrelated:
tracks;
bars;
voices;
notes;
techniques/metadata;
while preserving the same loss code after import.
The reducer must preserve a valid parseable GP fixture. If safe structural rewriting is not possible for a format/version, support a fixture-extraction path or explicit not-minimizable result rather than corrupting binary files and calling it science.
CI policy
Every supported construct has at least one fixture.
Every confirmed loss has a fixture or explicit corpus-only evidence.
A construct moving from unsupported to supported updates the matrix and turns its fixture into a positive conformance test.
Known loss counts on pinned fixtures cannot silently drop because instrumentation stopped firing.
Corpus prevalence runs may be scheduled/non-blocking; fixture conformance remains blocking.
Classification
Problem
S3 requires Guitar Pro import to preserve guitar semantics and emit a
LossReport. The code and docs identify individual unsupported/missing mappings, but there is no single machine-readable coverage matrix answering:Issue #75 already exposes the practical failure mode: pull-off exists upstream but is not mapped; tap and let-ring require additional model work. Without prevalence data, roadmap priority is still driven partly by whichever missing articulation happened to be noticed last. Humans have used worse prioritization methods, but that is not a reason to preserve them.
Goal
Build a Guitar Pro Loss Observatory that combines:
Support matrix
Track each construct across explicit stages:
Initial vocabulary should include at least:
The matrix is data, not a hand-maintained README table that can drift politely for months.
Stable loss codes
Introduce versioned codes such as:
Specific codes may be finer-grained, for example
pull-off-unmappedvslet-ring-model-missing. Requirements:CLI/report surface
Suggested commands:
Corpus report should include:
Minimization
For each confirmed loss, provide a bounded reducer that attempts to remove unrelated:
while preserving the same loss code after import.
The reducer must preserve a valid parseable GP fixture. If safe structural rewriting is not possible for a format/version, support a fixture-extraction path or explicit
not-minimizableresult rather than corrupting binary files and calling it science.CI policy
Required controls
Acceptance
Non-goals