Releases: chrisgleissner/sidflow-data
Release list
SIDFlow 0.8.2 - HVSC full export
Portable SID correlation export of HVSC 85 + Update 85, generated by SIDFlow.
| SIDFlow | 0.8.2 |
| tracks / files | 87,868 / 61,157 |
| profile | full |
| similarity vector | 58 dimensions, rank-uniform normalised |
| similarity metric | weighted cosine |
| precomputed neighbours per track | 25 |
| SID emulation | sidlite |
| feature schema | 1.5.0 |
| schemas | sidcorr-1, sidcorr-lite-1, sidcorr-tiny-1, sidcorr-features-1 |
What's Changed
Only the tiny bundle changes in this release. The full export, compressed full export, lite bundle, and features sidecar are byte-identical to 0.8.1.
No reclassification was run. Asset names, track ordering, file identities, style masks, ratings, vectors, and full-export neighbour rankings remain unchanged.
Published data
| Asset | Content in 0.8.2 | Version |
|---|---|---|
sidcorr-hvsc-full-sidcorr-1.sqlite |
Byte-identical to 0.8.1 | sidcorr-1, unchanged |
sidcorr-hvsc-full-sidcorr-1.sqlite.gz |
Byte-identical to 0.8.1 | compressed sidcorr-1, unchanged |
sidcorr-hvsc-full-sidcorr-lite-1.sidcorr |
Byte-identical to 0.8.1 | sidcorr-lite-1, unchanged |
sidcorr-hvsc-full-sidcorr-tiny-1.sidcorr |
Neighbour table and graph_flags changed |
sidcorr-tiny-1, binary format 2 |
sidcorr-hvsc-full-features-1.jsonl.gz |
Byte-identical to 0.8.1 | sidcorr-features-1, unchanged |
The full and lite exports were rebuilt through the normal CLI and reproduced byte for byte. scripts/reproduce-published-bundles.sh performs this verification.
Tiny neighbour graph
The tiny graph is now a searchable proximity index rather than a directed acyclic graph.
graph_flagsbit 0 now reads0: acyclicity is no longer declared or guaranteed.- Bit 3 is retired.
- Neighbour targets are no longer restricted to lower track ordinals.
- Every track has three outgoing neighbours.
- Slots 0 and 1 preserve the source export's two closest neighbours.
- Slot 2 provides a more diverse connection for broader traversal.
- Rows remain ordered by descending similarity.
| Metric | 0.8.1 | 0.8.2 |
|---|---|---|
| mean out-degree | 2.799 of 3 | 3.000 of 3 |
| tracks with no incoming edge | 24,669 (28.08%) | 2 (0.002%) |
| tracks with no outgoing edge | 2,786 | 0 |
| largest undirected component | 99.08% | 99.995% |
| greedy routing recall@1 | 0.30% | 0.80% |
| composer lift | 84.536 | 74.772 |
| nDCG@10 | 0.1440 | 0.1507 |
This is a graph-data and specification change, not a file-format change:
binary_format_versionremains2- the header layout is unchanged
- section ordering is unchanged
- track ordering is unchanged
neighbors_per_trackremains3- asset filenames are unchanged
Existing releases/latest/download/<name> URLs therefore continue to resolve.
File identities, per-file track counts, style masks, packed ratings, and station membership are unchanged. Only the graph used to move between tracks differs.
Migration
Full, compressed full, lite, and features consumers
No migration is required.
The payloads and schema versions are unchanged, so existing parsers, indexes, caches, and recommendation results remain valid.
Tiny consumers that only parse the format
Update the release tag and expected digest.
No parser change is required because the binary layout and version are unchanged.
Tiny consumers that validate or traverse the graph
Remove any assumption that:
- the graph is acyclic
- neighbour ordinals are lower than the source ordinal
- traversal terminates because the graph eventually runs out of forward edges
Cycles are valid in a similarity graph. Maintain an explicit visited set to prevent repeats and bound traversal.
SID Radio clients
For long-running stations:
- Update the pinned release tag and tiny-bundle digest.
- Maintain an exclusion set for tracks already played.
- Deduplicate by SID file identity when multiple subsongs should count as one tune.
- Let the station query progress with recent listening history instead of repeatedly expanding from the original seed.
The new graph provides the connectivity. The progressing-query policy turns that connectivity into a station that can continue for hours.
Digests
| Asset | SHA256 | Change from 0.8.1 |
|---|---|---|
sidcorr-hvsc-full-sidcorr-1.sqlite |
d3d825ae…b176da |
unchanged |
sidcorr-hvsc-full-sidcorr-1.sqlite.gz |
7eeddad8…b2fcf0 |
unchanged |
sidcorr-hvsc-full-sidcorr-1.manifest.json |
4afe8314…d9a741 |
unchanged |
sidcorr-hvsc-full-features-1.jsonl.gz |
006cd388…045f39b |
unchanged |
sidcorr-hvsc-full-features-1.manifest.json |
62667463…efc2c6 |
unchanged |
sidcorr-hvsc-full-sidcorr-lite-1.sidcorr |
fe92bd57…a346cd |
unchanged |
sidcorr-hvsc-full-sidcorr-lite-1.manifest.json |
1953a666…b22279 |
generated_at only |
sidcorr-hvsc-full-sidcorr-tiny-1.sidcorr |
10db2838831bb2386f6dd19041a7ae8525878c401afa6eaf932d9b1610c1c0bc |
changed |
sidcorr-hvsc-full-sidcorr-tiny-1.manifest.json |
ca6e8f7c…48e371f |
changed |
Verification
Verify the downloaded assets with:
sha256sum -c SHA256SUMSTo run SIDFlow's release gate against the downloaded files:
bun run verify:exports -- --exports <download-dir> --hvsc <your-hvsc>The release checks the published bytes directly, including graph flags, neighbour ordering, connectivity, dead ends, unreachable tracks, and traversal behaviour.
See the migration guide and graph-design document in chrisgleissner/sidflow:
doc/migration/0.8.0-to-0.8.2.mddoc/neighbour-graph-design.md
SIDFlow 0.8.0 - HVSC full export
Portable SID correlation export of the High Voltage SID Collection, generated by SIDFlow.
| SIDFlow | 0.8.0 |
| corpus | hvsc |
| HVSC release | 85 |
| profile | full |
| tracks / files | 87,868 / 61,157 |
| similarity vector | 58 dimensions, rank-uniform normalised |
| similarity metric | weighted cosine, weights published in the manifest |
| precomputed neighbours per track | 25 |
| SID emulation | sidlite |
| feature schema | 1.5.0 |
| schemas | sidcorr-1, sidcorr-lite-1, sidcorr-tiny-1, sidcorr-features-1 |
What's Changed
No reclassification was run. Every artefact is derived deterministically from the
0.7.0 export, whose data is unchanged: 87,868 tracks, 2,196,700 neighbour rows, identical
vectors and ratings. What changed is what the export says about itself, how it assigns
stations, and what else is published beside it.
Which asset do I want?
Start with lite. It reproduces the full export's top-25 neighbours at R@25 = 0.987
and its favourite-seeded stations at 98% overlap, in 8 MB against 982 MB.
| Asset | Bytes | For |
|---|---|---|
sidcorr-hvsc-full-sidcorr-lite-1.sidcorr |
8,118,973 | recommendations, stations, similarity — the right default |
sidcorr-hvsc-full-sidcorr-tiny-1.sidcorr |
1,834,993 | constrained clients; style filtering and neighbour expansion. No vectors; needs a local HVSC |
sidcorr-hvsc-full-features-1.jsonl.gz (new) |
75,933,721 | deriving your own representation from raw feature records. Pair with lite |
sidcorr-hvsc-full-sidcorr-1.sqlite.gz (new) |
194,351,886 | the full export, 5.05× smaller. Prefer this over the plain .sqlite |
sidcorr-hvsc-full-sidcorr-1.sqlite |
982,155,264 | features_json in a database, or SQL access |
hvsc-full-sidcorr-1-0.8.0.tar.gz |
277,449,597 | everything except .sqlite.gz, in one archive |
Read vector_weights. It decides whether your results are correct.
Similarity is a weighted cosine. Until this release the 58-entry weight table was not
published anywhere, so a consumer who implemented the lite specification exactly computed
plain cosine and agreed with the authoritative neighbours on roughly half their results:
| What the consumer computes | R@1 | R@25 |
|---|---|---|
| weighted cosine | 0.983 | 0.988 |
| plain cosine | 0.478 | 0.505 |
40% station overlap against 98%. Both answers look like plausible recommendations, so
there is no way to notice from the outside.
The weight applies to the dot product and to both norms — equivalently, it is a plain
cosine over vectors whose components are scaled by √wᵢ. Read similarity_metric and
vector_weights from the manifest.
What changed
The manifest now describes the file it ships beside
file_checksums.sqlite_sha256 had never matched the published file, in any release:
the exporter hashed the database and then wrote that hash into it. SHA256SUMS was always
correct, so nothing broke — but anyone verifying via the manifest rejected every release.
Fixed; both now agree.
neighbor_row_count is measured rather than track_count × k. paths.* are basenames
rather than the build host's absolute layout. New: hvsc_version, similarity_metric,
vector_weights.
Station membership changed for most of the corpus
The tiny profile's nine style masks were computed by taking each track's three
highest-scoring personas unconditionally, which produced:
| Persona | 0.7.0 | 0.8.0 |
|---|---|---|
slow_ambient |
46,652 (53.1%) | 17,574 (20.0%) |
nostalgic |
45,562 (51.9%) | 17,574 (20.0%) |
melodic |
45,496 (51.8%) | 17,574 (20.0%) |
experimental |
42,495 (48.4%) | 17,574 (20.0%) |
fast_paced |
41,648 (47.4%) | 17,574 (20.0%) |
era_explorer |
29,116 (33.1%) | 17,574 (20.0%) |
deep_discovery |
11,962 (13.6%) | 17,574 (20.0%) |
composer_focus |
673 (0.8%) | 17,574 (20.0%) |
theme_hunter |
0 (0.0%) | 17,574 (20.0%) |
A station that could never play anything, one that looped after 673 tracks, a 69× spread,
and 9,451 tracks carrying both fast_paced and slow_ambient — two stations a
listener experiences as opposites.
Each persona is now the top 20% of the corpus by its own score, with a hard gate that
fails the export rather than publishing a starved or indistinguishable station.
style_populations and style_population_policy are in the tiny manifest.
Bit assignments, style keys, labels and style_count = 9 are unchanged, and
binary_format_version is still 2 — so a client reading masks positionally gets corrected
stations with no code change. Verified: the rebuilt tiny bundle differs from 0.7.0's
only in its style-mask table (104,507 bytes); every md5_48 identity, per-file subsong
count, packed rating and neighbour record is byte-identical.
Digests
Every digest changes; update your pins. Two things worth noting:
- The lite bundle's bytes did not change at all —
fe92bd57…a346cdis the same digest
0.7.0 published. Only its manifest gained fields. - The full export shrank, 1,013,977,088 → 982,155,264 bytes, as
VACUUMreclaimed
free pages during the manifest repair. Track and neighbour counts are unchanged.
Upgrading
Read the migration guide.
It covers two hops — the 0.5-era → 0.7.0 data change and the 0.7.0 → 0.8.0 contract
change — with dedicated u64deck and c64commander sections.
If you are on anything published before 2026-07-26, the short version is that that
export's similarity data was inert: 15 distinct vectors across 87,073 tracks, 91.4%
sharing the literal [3,3,3,3], ratings that never took the values 1 or 5, and
neighbor_row_count: 0. Any threshold tuned against it needs re-tuning.
Verifying
sha256sum -c SHA256SUMSSHA256SUMS and the sidecar manifests agree from this release onward. To run SIDFlow's
own release gate against what you downloaded:
bun run verify:exports -- --exports <download-dir> --hvsc <your-hvsc>Release naming
From this release the tag is the SIDFlow version that produced it. Earlier releases
used sidcorr-<corpus>-<profile>-<timestamp>; they are not retagged, so every existing
download URL still resolves and releases/latest/download/… is unaffected. The verified
mapping is in the sidflow-data README.
Assets: the sidcorr-1 SQLite export and its manifest, a gzipped copy of it, the derived
lite and tiny bundles with their manifests, the features sidecar with its manifest, and
SHA256SUMS. The tarball contains everything except the gzipped SQLite.
SIDFlow 0.7.0 - HVSC full export (20260726T203707Z)
Portable SID correlation export of the High Voltage SID Collection, generated by SIDFlow.
| SIDFlow | 0.7.0 |
| corpus | hvsc |
| HVSC release | 85 |
| profile | full |
| tracks | 87868 |
| similarity vector | 58 dimensions, rank-uniform normalised |
| precomputed neighbours per track | 25 |
| SID emulation | sidlite |
| feature schema | 1.5.0 |
| schemas | sidcorr-1, sidcorr-lite-1, sidcorr-tiny-1 |
| generated | 2026-07-26T20:34:56Z |
Assets: the sidcorr-1 SQLite export and its manifest, the derived lite and tiny
bundles with their manifests, and SHA256SUMS. The tarball contains the full set.
Notes
Never assume a similarity vector width: read vector_dimensions from the manifest.
Earlier bundles stored 4; this one stores 58, so code that hardcoded the old width will
misread it. Similarity is a plain weighted cosine over the stored vector, and values are
in [0, 1] so cosine stays non-negative.
The 58 dimensions are three groups: 24 perceptual from the rendered audio, 11
pitch/texture, and 23 describing how the tune's playroutine drives the SID chip. The
last 34 are read from the register write trace rather than from audio.
sid_engine records which SID emulation rendered the corpus. It is not the
render_engine column in the tracks table, which reports the renderer backend and reads
wasm for both emulations. A corpus mixing emulations is refused at export time,
because features from different emulations are not on a comparable scale.
SIDFlow 0.5.6 - HVSC full export (20260407T115218Z)
Portable SID correlation export of the High Voltage SID Collection, generated by SIDFlow.
| SIDFlow | 0.5.6 |
| corpus | hvsc |
| profile | full |
| tracks | 87073 |
| similarity vector | 4 dimensions |
| precomputed neighbours per track | 0 |
| SID emulation | not recorded |
| feature schema | 1.3.0 |
| schemas | sidcorr-1, sidcorr-lite-1, sidcorr-tiny-1 |
| generated | 2026-04-07T11:18:09Z |
Assets: the sidcorr-1 SQLite export and its manifest, the derived lite and tiny
bundles with their manifests, and SHA256SUMS. The tarball contains the full set.
Notes
The version above describes the authoritative sidcorr-1 SQLite export. The lite and
tiny bundles were derived from it a day later, on 2026-04-08, from main past the
0.5.7 tag — that code first shipped in 0.5.8.
Never assume a similarity vector width: read vector_dimensions from the manifest. It
is 4 here and 58 from 0.7.0 onward.
SIDFlow 0.5.0-rc1 (pre-tag build) - HVSC full export (20260315T095426Z)
Portable SID correlation export of the High Voltage SID Collection, generated by SIDFlow.
| SIDFlow | 0.5.0-rc1 (pre-tag build) |
| corpus | hvsc |
| profile | full |
| tracks | 71498 |
| similarity vector | 4 dimensions |
| precomputed neighbours per track | 0 |
| SID emulation | not recorded |
| feature schema | 1.2.0 |
| schemas | sidcorr-1 |
| generated | 2026-03-14T16:54:06Z |
Assets: a tarball containing the sidcorr-1 SQLite export, its manifest, and SHA256SUMS.
Notes
Built from main before the 0.5.0-rc1 tag existed, so no release produced it. The
similarity-export code is absent from 0.4.0; 0.5.0-rc1, tagged the next day six
commits later, is the earliest release containing it. Read the version above as that
earliest release, not as the build source.
Never assume a similarity vector width: read vector_dimensions from the manifest. It
is 4 here and 58 from 0.7.0 onward.