Cryptograss:Connectome/Tools

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search

The four Artificial Dumb tools live in pickipedia/tools/: Sideman, Rambler, Homeplace, Taper. Each is a script a person runs; no language model reads, writes or changes the data. The docstrings in the code are the source; this page summarizes them, and the docstrings win when they disagree. Landings: #165 (Sideman), #169 (Rambler), #172 (Homeplace), #173 (Taper).[unverified]

Homeplace and Rambler share one graph JSON: records (and shows), people, and the pairs of records that share a person. Graphs merge with --merge and walk as one; Magentoid reads the JSON.[unverified]

Sideman (recording_credits.py)

Reads: MusicBrainz — every recording of a title whose artist credit mentions the artist — and, where MusicBrainz links one, Discogs. Stdlib only. Puts out: what each source says, printed per credit with its scope: track or release. Only track credits answer "who played on this song"; release credits are printed as a lead to check against liner notes, never promoted. Dumb by design: people are not merged across sources and nothing is guessed. Reissues fold to one release per MusicBrainz release group, the earliest dated. Discogs composite roles ("Banjo, Producer, Mixed By") are judged per comma/slash part, and a part is dropped as a job only when a deny-list word appears anywhere in it (producer, engineer, liner notes, technician, assistant, roadie, …) — a new job title passes as playing until someone adds it. MusicBrainz results stop at 1000 recordings. Where the title isn't on a release's tracklist, that release's line reads "track not found".[unverified]

Rambler (rambler.py)

Reads: Sideman's MusicBrainz and Discogs helpers, walked outward from one MusicBrainz release, --hops steps deep. Puts out: a record-level graph — people, records, and the pairs of records that share a person — as JSON, or as {{Record personnel}} lines with --wikitext. It writes nothing; a person decides where the lines go. Dumb by design: an edge comes only from a record's own credits; a record reached through a person is not evidence, and the output says so when someone found through a person is not credited on it. People match by exact name — "James Kerwin" and "Jim Kerwin" are two people, so it can miss an edge and cannot invent one. Only people with a MusicBrainz id walk onward; Discogs-only names are edges that go no further. Compilations are skipped. Records with nobody credited are listed as the worklist.[unverified]

Homeplace (homeplace.py)

Reads: the sources we keep ourselves — arthel's YAML (each show in shows/*.yaml with its ensemble and anyone featured on a song; each studio cut in songs_and_tunes/*.yaml, the record it is on and the ensemble that cut it) and PickiPedia's own properties: Has performer from {{Studio cut}} subobjects, Has personnel from {{Record personnel}}. Needs PyYAML. Puts out: the same graph Rambler does, so the two merge with --merge and walk as one. Shows are records with kind "show": same stage, a lower-resolution edge than a cut, marked so. Dumb by design: it copies names as written — "Justin Holmes" and "Justin Myles Holmes" are two people until a person says otherwise, and a solo marked "Justin" matches nobody. Every edge names its source: the YAML file or the wiki page the subobject is on. It writes nothing; the wiki's data model is read, never added to.[unverified]

Taper (taper.py)

First named Tunesmith; renamed Taper on 6 Nov 2026 because Tunesmith is Richard Smith's studio, where many of our friends record. It writes a tune's lineage the way a taper writes one on a show.[unverified] Reads: an ABC file a person fetched. A person runs it; no emergent opens the files it handles. Puts out: the ABC copied beside a .lineage.json — id, title, kind, notesBy, source, license, fetchedBy, and the blocks, matching Magentoid's tune.ts — and a MIDI file when abc2midi is installed. Dumb by design: it is a converter, not a reader. It also reads .lineage.json files, for earcheck and check. add leaves the ear-check empty, so nothing plays until a person runs earcheck; emergents' names are refused for fetchedBy and notesBy at add time, and for the ear-check there and in tune.ts. check lists every lineage under a directory and what each is missing; the game loads only complete lineages.[unverified]

Redeploy: none. Worked on by: re, blu, in #connectome[unverified]