Skip to content

Releases: chrisgleissner/sidflow-data

SIDFlow 0.8.2 - HVSC full export

Choose a tag to compare

@chrisgleissner chrisgleissner released this 30 Jul 16:17

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_flags bit 0 now reads 0: 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_version remains 2
  • the header layout is unchanged
  • section ordering is unchanged
  • track ordering is unchanged
  • neighbors_per_track remains 3
  • 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:

  1. Update the pinned release tag and tiny-bundle digest.
  2. Maintain an exclusion set for tracks already played.
  3. Deduplicate by SID file identity when multiple subsongs should count as one tune.
  4. 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 SHA256SUMS

To 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.md
  • doc/neighbour-graph-design.md

SIDFlow 0.8.0 - HVSC full export

Choose a tag to compare

@chrisgleissner chrisgleissner released this 27 Jul 20:52

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 allfe92bd57…a346cd is 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 VACUUM reclaimed
    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 SHA256SUMS

SHA256SUMS 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)

Choose a tag to compare

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)

Choose a tag to compare

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)

Choose a tag to compare

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.