imacat
190f95b632
Add conference paper first draft.
2026-08-17 22:38:40 +08:00
imacat and Claude Fable 5
54e42c072c
Record the blind semantic code grouping in the decision log
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:40 +08:00
imacat and Claude Fable 5
77049eb026
Record the full k-value comparison table in the decision log
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:39 +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
ea9df52bc3
Drop the redundant HTTP error class from the retry catch
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:39 +08:00
imacat and Claude Opus 5
62adf7f937
Pin the parenthesized members pattern to a single split point
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
35d8e08871
Make the module-level helpers private instead of protected
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
693dbccc9d
Extract the protected name restoration out of the credit parser
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
2ea23d9bce
Classify the transient request errors in one place
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
87926d9622
Extract the record content builder out of the export line builder
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
aa8b84c8cd
Stop binding the unread role in the parsed credit check
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:38 +08:00
imacat and Claude Opus 5
7739abd105
Remove the unused skipped counter of the artist fetcher
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:37 +08:00
imacat and Claude Opus 5
dfdfccc460
Capture the command output in the parent-directory export test
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:37 +08:00
imacat and Claude Opus 5
4ae6fa7b2e
Merge the two identical chart-position formatters of the CSV exporter
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:37 +08:00
imacat and Claude Opus 5
3aa5c7a432
Unify the export-llm-input and run-llm summary lines with build-db
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:37 +08:00
imacat and Claude Opus 5
bc44d60d18
Close the HTTP error fixtures when the test ends
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:37 +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 Opus 5
58189bae3a
Settle the coding of the 883 songs against the 101 keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:36 +08:00
imacat and Claude Opus 5
745a8eed9b
Repair the coding output with a reviewed correction table
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:35 +08:00
imacat and Claude Opus 5
7f43cf238b
Record how far the coding output departs from its stated contract
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:35 +08:00
imacat and Claude Opus 5
95a05a0631
Add the tally-codings subcommand for the majority vote
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:35 +08:00
imacat and Claude Opus 5
24a4ca6970
Archive the third coding run
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:34 +08:00
imacat and Claude Opus 5
c51c9d71e1
Settle the coding by a majority of three runs instead of an arbitration
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:34 +08:00
imacat and Claude Opus 5
7008e14972
Import each command module only when its subcommand runs
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:34 +08:00
imacat and Claude Opus 5
668f1bb118
Restructure cluster-keywords into builders and result records
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:34 +08:00
imacat and Claude Opus 5
019f317a82
Archive the arbitration pass over the coding disagreements
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:34 +08:00
imacat and Claude Opus 5
20c48f04b9
Quote one line per kept keyword in the arbitration
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:33 +08:00
imacat and Claude Opus 5
3bae24b930
Build the arbitration input with a per-ID extras merge
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:33 +08:00
imacat and Claude Opus 5
1714257c89
Add the compare-codings subcommand for the arbitration handoff
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:33 +08:00
imacat and Claude Opus 5
949a0f9c8d
Drop the source-provenance artifact from cluster-keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:33 +08:00
imacat and Claude Opus 5
f2a80475a5
Rename the arbitration definition file to 03-02-arbitration
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:32 +08:00
imacat and Claude Opus 5
7c2e286c9d
Archive the second coding pass against the 101 keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:32 +08:00
imacat and Claude Opus 5
5325a8f9a4
Archive the first coding pass against the 101 keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:32 +08:00
imacat and Claude Opus 5
71b640085a
Keep the medoid group names after testing LLM naming
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:32 +08:00
imacat and Claude Opus 5
dcf9e280d0
Report the clustering result in a sentence
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:32 +08:00
imacat and Claude Opus 5
e4f40e7c0f
Rebuild the coding keywords with 100 groups
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:31 +08:00
imacat and Claude Opus 5
4dc526c4b0
Record the clustering invocation in a meta file
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:31 +08:00
imacat and Claude Opus 5
15f1843cde
Raise the clustering to 100 groups
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:31 +08:00
imacat and Claude Opus 5
8cdeb3db2e
Quote one line per assigned keyword
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:31 +08:00
imacat and Claude Opus 5
4fdc7b48fd
Take the extra coding keywords from the command line
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:30 +08:00
imacat and Claude Opus 5
de8b8ee678
Merge the keyword pooling into cluster-keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:30 +08:00
imacat and Claude Opus 5
5cf2b8ee8c
Separate the clustered keyword list from the keywords to merge
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:30 +08:00
imacat and Claude Opus 5
04d5095e44
Pass the coding keywords as input instead of baking them into the prompt
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:29 +08:00
imacat and Claude Opus 5
ce4f9ad481
Archive the clustered coding vocabulary
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:29 +08:00
imacat and Claude Opus 5
41dc3ea2ea
Add the cluster-keywords subcommand for the coding vocabulary
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:29 +08:00
imacat and Claude Opus 5
c03add4868
Archive the pooled keywords of the two tagging runs
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:29 +08:00
imacat and Claude Opus 5
d73de3d01c
Add the pool-keywords subcommand for the tagging runs' keywords
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:28 +08:00
imacat and Claude Opus 5
14a3cbe121
Rebuild the vocabulary step on embeddings and drop the screen track
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-17 22:38:28 +08:00
imacat and Claude Fable 5
4313d58471
Report the elapsed time when run-llm finishes
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:28 +08:00
imacat and Claude Fable 5
db9fbd71d4
Archive the tag run2 execution
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:27 +08:00
imacat and Claude Fable 5
1802dac07a
Archive the tag run1 execution and add the run-cost ledger
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:27 +08:00
imacat and Claude Fable 5
9b2af3bb50
Require valid JSON with escaped quotes in the definition files
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:27 +08:00
imacat and Claude Fable 5
99bbd566cf
Forbid Markdown code fences in the definition-file outputs
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:27 +08:00
imacat and Claude Fable 5
3f793afd34
Record the song-775 refusal ablation and rule it unanalyzable
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:27 +08:00
imacat and Claude Fable 5
05ba3942a2
Add watermark normalization to fetch-lyrics
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
d46c50a2db
Changed the natural-coding definition files to single-pass convergence
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
964006ec6d
Add the natural-coding definition files and the convergence algorithms
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
0c82da7a1d
Settle women-power as the a-priori screen label term
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
93a4f808bf
Reduce run-llm to a pure batch executor
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
7a58f37d9f
Record the natural-coding pipeline design in the project documents
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +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
396848e898
Add the export-llm-input subcommand for the lyrics-only LLM input
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
55926b8dc4
Regenerate the artists report with the Wikidata snapshot applied
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:26 +08:00
imacat and Claude Fable 5
ee6a1b88c5
Rename the Markdown documents to dash-connected names
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-17 22:38:20 +08:00
imacat and Claude Fable 5
1a7519becd
Drop the engine preparation from build-db
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:34:36 +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
8fdd21f8a2
Package the capture-layer application into a CaptureImporter class
...
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
64c62eb394
Capture the song lyrics from the pilot study and the public APIs
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:34:36 +08:00
imacat and Claude Fable 5
0d3cd69a0f
Align the fetch-lyrics summary with fetch-artists via shared utils
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:34:26 +08:00
imacat and Claude Fable 5
81975b72e4
Remove the missing-lyrics report from fetch-lyrics
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:15:49 +08:00
imacat and Claude Fable 5
1b21471845
Fall back to the original artist credit when fetching lyrics
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 15:15:49 +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
93aa06703b
Keep the artist snapshot sorted by name
2026-08-04 15:15:49 +08:00
imacat
8fdd25f569
Show resolved count and elapsed time in the fetch-artists summary
2026-08-04 15:15:49 +08:00
imacat
00b5c208ec
Resolve artists on Wikidata via exact-match SPARQL with song corroboration
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
942a74c86c
Record the complete-Wikidata-then-capture workflow decision
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
e15c988bf4
Store the source chart CSV with its original CRLF line endings
2026-08-04 15:15:49 +08:00
imacat
f36a30411d
Align the source chart CSV with the archived Billboard year-end charts
2026-08-04 15:15:49 +08:00
imacat and Claude Fable 5
5d5e4fac50
Reorganize data/ into source, captures, and manual layers
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
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
imacat and Claude Fable 5
f9ab79f0c2
Use the unified pydantic-settings configuration in run_llm
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 14:03:37 +08:00
imacat and Claude Fable 5
b68393ab01
Record the data storage architecture and phase-1 plan in the project documents
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 14:03:37 +08:00
imacat and Claude Fable 5
12ace6f45a
Add the tools sub-project with the run_llm batch runner
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-04 14:03:28 +08:00
imacat and Claude Fable 5
9a42b463a3
Initialize project structure, workflow rules, and research plan
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-30 18:51:10 +08:00