imacat and Claude Opus 5
2fa55f29d7
Restructure the remaining commands into the house shape
...
Every command now runs as one orchestrating class (the ctor
stores, run() executes, helpers and constants private), main a
thin controller; the guards the fixed corpus cannot trigger are
dropped, docstrings say each level's own contract once, and the
build-db summary reports the songs and the artists alone.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-19 10:46:21 +08:00
imacat and Claude Fable 5
30c9943bad
Import the settled patterns and annotations into the working store
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-18 22:37:32 +08:00
imacat and Claude Fable 5
3a9eee19d1
Correct three performer genders via build-db --gender-corrections
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:42 +08:00
imacat and Claude Fable 5
15cdb861ff
Import the settled code groups into the working store
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:41 +08:00
imacat and Claude Fable 5
7917d23d6e
Replace the quote newline escape with the lyric line-break convention
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:40 +08:00
imacat and Claude Opus 5
f87e3642f6
Derive the performing group genders from their Wikidata members
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:39 +08:00
imacat and Claude Opus 5
bebf85814e
Derive the song performer gender and identify Pinkfong as Hope Segoine
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:39 +08:00
imacat and Claude Opus 5
a64c04a128
Run the tests on an in-memory store and dispose the engine afterwards
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:36 +08:00
imacat and Claude Opus 5
c3e48aac56
Trim the build-db summary to songs, artists, codings and elapsed time
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:36 +08:00
imacat and Claude Opus 5
40c41f2734
Import the settled coding into the working store
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:36 +08:00
imacat and Claude Fable 5
b727284ef3
Gather the CLI command modules into a commands sub-package
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
a534b1b70b
Move the invariant checks into the importers and drop find_violations
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:34:36 +08:00
imacat and Claude Fable 5
c561330bd0
Repackage the build-db import steps into job classes
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:34:36 +08:00
imacat and Claude Fable 5
15f207ffc6
Remove the retired artist overrides layer and the mixed artist type
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:15:49 +08:00
imacat
c81bfcf51d
Restore official artist name spellings in the canonical table
2026-08-04 15:15:49 +08:00
imacat
1f95f0231d
Export human-readable songs and artists reports to the derived data layer
2026-08-04 15:15:49 +08:00
imacat
ae0e9d0a08
Split artist credits with documented exceptions and normalize artist names
2026-08-04 15:15:49 +08:00
imacat
6a91bc73eb
Merge same-song chart rows via a canonical artist credit table
2026-08-04 15:15:49 +08:00
imacat and Claude Fable 5
e9027472f4
Make every subcommand input an explicit CLI argument or option
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:13:31 +08:00
imacat and Claude Fable 5
e0eb343ce0
Refactor internal data passing to dataclasses and enums, and remove unneeded defensive code
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:13:31 +08:00
imacat and Claude Fable 5
8d223177cd
Add the data layer with the build-db, fetch-lyrics, and fetch-artists subcommands
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:12:22 +08:00