sol: sol-lane headline triage 2026-11-02 (manifest + independent verifier)
This commit is contained in:
1 parent
c948dbe0ca
commit
debf8482cd
3 files changed
+527
No files matched your search
@@ -0,0 +1,18 @@
|
||||
# SOL-LANE HEADLINE TRIAGE - 2026-11-02
|
||||
|
||||
Scope: every regular file under /root/troupe-standup/wizard-work/sol/ (committed sol lane), recursively, via `find -type f`.
|
||||
|
||||
Classification rule (file extension rubric):
|
||||
text: md txt rst adoc org log | data: json csv tsv yaml yml toml ipynb
|
||||
media: mp3 wav mp4 webm png jpg jpeg gif webp svg
|
||||
script: py sh bash zsh ps1 bat | doc: pdf doc docx ppt pptx xls xlsx
|
||||
other: extension not in schema -> utf-8-decodable text, else binary data
|
||||
|
||||
Counts:
|
||||
data 110
|
||||
script 181
|
||||
text 128
|
||||
TOTAL 419
|
||||
|
||||
Artifact TSV: /root/.hermes/wizard-outputs/sol/sol-lane-headline-2026-11-02.tsv
|
||||
Artifact TSV copies into: /root/troupe-standup/wizard-work/sol/
|
||||
@@ -0,0 +1,419 @@
|
||||
data .chk.json
|
||||
data Demands-ClassTriage-2026-10-31.json
|
||||
data Sol-Lane-Status-2026-11-01.json
|
||||
data Sol-Lane-Triage-2026-10-24.json
|
||||
data Sol-Profile-Triage-2026-10-31.json
|
||||
data Sol-Profile-Triage-2026-11-01.json
|
||||
data Triage-2026-09-26.json
|
||||
data Triage-2026-09-28-classify.json
|
||||
data Triage-2026-10-29-reverify.json
|
||||
data Triage-2026-10-29.json
|
||||
data Triage-2026-10-30.json
|
||||
data Triage-2026-10-31-probes.json
|
||||
data Triage-2026-10-31.json
|
||||
data Triage-2026-11-01.json
|
||||
data Triage-2026-11-02.json
|
||||
data Triage-sol-profile-2026-11-02.json
|
||||
data Triaged-Seed-2026-10-26.json
|
||||
data Untracked-Triad-2026-11-01.json
|
||||
data Untracked-Triad-2026-11-02.json
|
||||
data Working-Tree-Triage-2026-11-02.json
|
||||
data __pycache__/build_untracked_classify.cpython-314.pyc
|
||||
data __pycache__/build_untracked_triad_2026_11_01.cpython-314.pyc
|
||||
data __pycache__/classify.cpython-314.pyc
|
||||
data __pycache__/gen_untracked_classify_2026_11_02.cpython-314.pyc
|
||||
data __pycache__/sol_triage_lib.cpython-314.pyc
|
||||
data __pycache__/test_check_provenance.cpython-314.pyc
|
||||
data __pycache__/test_classify_fallback.cpython-314.pyc
|
||||
data __pycache__/verify_sol_triage.cpython-314.pyc
|
||||
data __pycache__/verify_sol_wizard_work_inventory.cpython-314.pyc
|
||||
data __pycache__/verify_troupe_sol_health.cpython-314.pyc
|
||||
data __pycache__/verify_untracked_classify.cpython-314.pyc
|
||||
data _jobboard_triage_registry.json
|
||||
data actual.csv
|
||||
data actual.json
|
||||
data ai-news-triage-2026-11-02.json
|
||||
data class-triage-2026-10-31/classify.tsv
|
||||
data cron-fleet-triage-2026-10-20-refresh.json
|
||||
data cron-fleet-triage-2026-10-22.json
|
||||
data daily-ledger-triage-2026-10-21.json
|
||||
data daily-ledger-triage-2026-10-22.json
|
||||
data daily-ledger-triage-2026-10-24.json
|
||||
data daily-ledger-triage-2026-10-26.json
|
||||
data daily-local-pipe-triage-2026-10-25.json
|
||||
data daily-local-pipe-triage-2026-10-26.json
|
||||
data demands.json
|
||||
data expected.csv
|
||||
data fleet-classify-2026-11-01.json
|
||||
data gold.json
|
||||
data issue-triage.json
|
||||
data library-drop-roster.json
|
||||
data pending-request-triage-2026-09-26.json
|
||||
data probe-retire-trip-2026-10-31.json
|
||||
data q-open-triage-2026-10-28.json
|
||||
data queue-status-index.json
|
||||
data queue_triage.json
|
||||
data search-triage-hermes.json
|
||||
data seed-2026-10-29.json
|
||||
data sol-2026-10-28-183533.json
|
||||
data sol-lane-headline-2026-11-02.tsv
|
||||
data sol-lane-status-2026-10-27.json
|
||||
data sol-lane-status-rederived-2026-10-27.json
|
||||
data sol-lane-status-rederived-2026-10-28.json
|
||||
data sol-lane-triage-2026-10-29.json
|
||||
data sol-lane-triage-2026-11-01.json
|
||||
data sol-lane-triage-2026-11-02.json
|
||||
data sol-lane-triage-seed-2026-10-29.json
|
||||
data sol-lane-triage-seed-2026-11-01.json
|
||||
data sol-lane-triage-seed-2026-11-02.json
|
||||
data sol-profile-file-class-2026-10-27.json
|
||||
data sol-profile-file-class-2026-10-28.json
|
||||
data sol-profile-file-class-2026-10-31.json
|
||||
data sol-profile-file-class-2026-11-02.json
|
||||
data sol-profile-file-class-reverify-2026-10-31.json
|
||||
data sol-profile-health-2026-10-24.json
|
||||
data sol-profile-skill-triage-2026-10-24.json
|
||||
data sol-profile-triage-2026-10-28.json
|
||||
data sol-profile-triage-2026-10-30.json
|
||||
data sol-profile-triage-2026-10-31.json
|
||||
data sol-profile-triage-2026-11-01.json
|
||||
data sol-profile-triage-2026-11-02.json
|
||||
data sol-profile-triage-manifest.json
|
||||
data sol-triage-2026-10-29.verified.json
|
||||
data sol_lane_status_2026-10-27.json
|
||||
data sol_triage_report.json
|
||||
data triage-2026-10-22.json
|
||||
data triage-canonical.json
|
||||
data triage-daily-2026-10-22.json
|
||||
data triage-inbox-2026-09-26.tsv
|
||||
data triage-inbox-2026-09-26/__pycache__/triage_rubric.cpython-314.pyc
|
||||
data triage-inbox-2026-09-26/__pycache__/triage_test.cpython-314.pyc
|
||||
data triage-inbox-2026-09-26/triage_seed_results.json
|
||||
data triage-profile-census-2026-10-26.json
|
||||
data triage-profiles-2026-10-21.json
|
||||
data triage-profiles-20261022110654Z.json
|
||||
data triage-seed-2026-09-26.json
|
||||
data triage-seed-2026-09.json
|
||||
data triage-wizard-work-2026-10-23.json
|
||||
data triage.json
|
||||
data triage_results.json
|
||||
data triage_review_queue.csv
|
||||
data untracked-classify-2026-10-29.json
|
||||
data untracked-classify-2026-10-31.json
|
||||
data untracked-classify-2026-11-02.tsv
|
||||
data untracked-classify.json
|
||||
data untracked-classify.tsv
|
||||
data untracked-file-classify-2026-11-02.json
|
||||
data untracked-file-classify-2026-11-02.tsv
|
||||
data untracked-triage-2026-11-01.json
|
||||
data untracked-triage-2026-11-01.tsv
|
||||
data workqueue-triage.json
|
||||
script CHECK-sol-profile-file-class-2026-11-02.sh
|
||||
script CHECK-sol-profile-triage-2026-11-02.sh
|
||||
script CHECK-sol-triage-seed-2026-09-26.py
|
||||
script Triage-2026-09-28-classify.py
|
||||
script Triage-2026-10-29-reverify.py
|
||||
script _build_triage_seed_manifest.py
|
||||
script _check_library_drop_roster.sh
|
||||
script _check_seed_manifest.py
|
||||
script _cron_fleet_triage_gen_2026-10-20.py
|
||||
script _dump_seed.py
|
||||
script _dump_seed_preview.py
|
||||
script _gen_redrive.py
|
||||
script _gen_sol_triage.py
|
||||
script _gen_untracked_file_classify_2026_11_02.py
|
||||
script _jobboard_triage_verify.py
|
||||
script _measure_probes.py
|
||||
script _probe_credential.py
|
||||
script _probe_untracked_state.py
|
||||
script _render_verified_summary.py
|
||||
script _verify_census.py
|
||||
script _verify_check.py
|
||||
script _verify_daily_triage.py
|
||||
script _verify_independent_2026_11_02.py
|
||||
script _verify_triage_profiles.py
|
||||
script build_daily_triage_2026-10-27.py
|
||||
script build_fleet_classify.py
|
||||
script build_lanes.py
|
||||
script build_manifest.py
|
||||
script build_queue_triage.py
|
||||
script build_sol_lane_status_2026_11_01.py
|
||||
script build_sol_profile_file_class_2026-10-28.py
|
||||
script build_sol_profile_file_class_2026_11_02.py
|
||||
script build_sol_profile_triage.py
|
||||
script build_sol_profile_triage_2026_11_02.py
|
||||
script build_sol_triage_2026_09_26.py
|
||||
script build_sol_wizard_work_inventory.py
|
||||
script build_solo_triage.py
|
||||
script build_triage_2026_10_29.py
|
||||
script build_triage_seed.py
|
||||
script build_untracked_classify.py
|
||||
script build_untracked_triad_2026_11_01.py
|
||||
script build_untracked_triad_2026_11_02.py
|
||||
script build_working_tree_triage_2026_11_02.py
|
||||
script check-triage-wizard-work.py
|
||||
script check-triage.sh
|
||||
script check_2026-10-28_sol_ledger.py
|
||||
script check_lanes.py
|
||||
script check_sol-profile-file-class-reverify-2026-10-31.py
|
||||
script check_sol-profile-triage-2026-11-01.sh
|
||||
script check_sol_lane_status_2026_11_01.sh
|
||||
script check_sol_lane_status_rederived.sh
|
||||
script check_sol_lane_status_redrive_2026-10-28.sh
|
||||
script check_sol_lane_triage.py
|
||||
script check_sol_profile_file_class_2026-10-31.py
|
||||
script check_sol_profile_health.py
|
||||
script check_sol_profile_skill_triage.py
|
||||
script check_sol_profile_triage.py
|
||||
script check_sol_profile_triage.sh
|
||||
script check_sol_profile_triage_2026-11-01.sh
|
||||
script check_sol_profile_triage_2026-11-02.sh
|
||||
script check_sol_profile_triage_2026_10_28.py
|
||||
script check_sol_profile_triage_2026_10_30.py
|
||||
script check_sol_triage.py
|
||||
script check_sol_triage_2026_09_26.py
|
||||
script check_triage.py
|
||||
script check_triage_2026_10_26.py
|
||||
script check_untracked_classify.py
|
||||
script class-triage-2026-10-31/verify_class_triage.py
|
||||
script classifier.py
|
||||
script classify.py
|
||||
script classify_2026_11_01.py
|
||||
script classify_sol_triage.py
|
||||
script classify_triage_2026_10_29.py
|
||||
script cron-fleet-triage-refresh-verify.py
|
||||
script cron-fleet-triage-verify.py
|
||||
script daily-local-pipe-triage-2026-10-25.verify.py
|
||||
script daily-local-pipe-triage-2026-10-26.verify.py
|
||||
script extract_questions.py
|
||||
script gen_and_verify.sh
|
||||
script gen_sol_lane_triage_2026_11_02.py
|
||||
script gen_sol_profile_file_class_2026-10-31.py
|
||||
script gen_sol_profile_triage_2026-11-02.py
|
||||
script gen_sol_profile_triage_2026_10_28.py
|
||||
script gen_triage_2026_10_29.py
|
||||
script gen_triage_2026_10_30.py
|
||||
script gen_untracked_classify_2026_11_02.py
|
||||
script issue-triage-verify.py
|
||||
script library_drop_classify.py
|
||||
script make_probe_retire_manifest.py
|
||||
script probe-retired/.gen_triage_2026_10_29.py
|
||||
script probe-retired/.probe_seed.py
|
||||
script probe-retired/.triage_build.py
|
||||
script probe-retired/.triage_dump.py
|
||||
script probe-retired/.triage_dump_pending.py
|
||||
script probe-retired/.triage_probe.py
|
||||
script q-open-triage-2026-10-28.verify.sh
|
||||
script queue_check_openset.py
|
||||
script rebuild_triage_2026_10_31.py
|
||||
script run_audit.py
|
||||
script sol-lane-triage-gen-2026-10-24.py
|
||||
script sol-profile-file-class-2026-10-27.py
|
||||
script sol-profile-skill-triage.py
|
||||
script sol-profile-triage-verify.py
|
||||
script sol-profile-triage.py
|
||||
script sol_lane_status_check.sh
|
||||
script sol_lane_triage_2026_10_29.py
|
||||
script sol_lane_triage_2026_11_01.py
|
||||
script sol_lane_triage_2026_11_02.py
|
||||
script sol_profile_triage_gen_2026_11_02.py
|
||||
script sol_triage_lib.py
|
||||
script test_check_provenance.py
|
||||
script test_classify_fallback.py
|
||||
script test_triage.py
|
||||
script triage-inbox-2026-09-26/triage_rubric.py
|
||||
script triage-inbox-2026-09-26/triage_test.py
|
||||
script triage_check.py
|
||||
script triage_classify.py
|
||||
script triage_file.py
|
||||
script triage_gen_daily.py
|
||||
script triage_inbox.py
|
||||
script triage_review.py
|
||||
script triage_seed_2026_09_26.check.py
|
||||
script triage_verify_daily.py
|
||||
script triage_work_status.py
|
||||
script untracked-classify.py
|
||||
script verify-2026-10-31.py
|
||||
script verify.sh
|
||||
script verify_classify_audit.py
|
||||
script verify_daily_ledger_triage_check.py
|
||||
script verify_daily_triage_2026-10-27.py
|
||||
script verify_daily_triage_2026-10-27.sh
|
||||
script verify_demands_class_triage_2026_10_31.py
|
||||
script verify_fleet_classify.py
|
||||
script verify_headline_classify_2026_11_02.py
|
||||
script verify_independent_2026-11-02.py
|
||||
script verify_pending_request_triage.py
|
||||
script verify_probe_retire_trip_2026_10_31.py
|
||||
script verify_probe_set_2026_10_31.py
|
||||
script verify_queue_status.sh
|
||||
script verify_queue_triage_check.sh
|
||||
script verify_register.py
|
||||
script verify_reverify.py
|
||||
script verify_sol_daily_ledger_triage_check.py
|
||||
script verify_sol_lane_triage.py
|
||||
script verify_sol_lane_triage_2026_11_01.py
|
||||
script verify_sol_lane_triage_2026_11_02.py
|
||||
script verify_sol_profile_file_class.py
|
||||
script verify_sol_profile_file_class_2026-10-28.py
|
||||
script verify_sol_profile_file_class_2026_10_31.py
|
||||
script verify_sol_profile_file_class_2026_11_02.py
|
||||
script verify_sol_profile_triage.py
|
||||
script verify_sol_profile_triage.sh
|
||||
script verify_sol_profile_triage_2026_10_31.py
|
||||
script verify_sol_profile_triage_check.py
|
||||
script verify_sol_profile_triage_check_2026_11_01.py
|
||||
script verify_sol_profile_triage_check_2026_11_02.py
|
||||
script verify_sol_triage.py
|
||||
script verify_sol_triage.sh
|
||||
script verify_sol_triage_2026_09_26.py
|
||||
script verify_sol_triage_2026_10_31.py
|
||||
script verify_sol_triage_2026_11_02.py
|
||||
script verify_sol_triage_hermes_digest.py
|
||||
script verify_sol_wizard_work_inventory.py
|
||||
script verify_triage.py
|
||||
script verify_triage_2026-10-29.py
|
||||
script verify_triage_2026_10_29.py
|
||||
script verify_triage_2026_10_30.py
|
||||
script verify_triage_2026_10_31_probes.py
|
||||
script verify_triage_2026_11_01.py
|
||||
script verify_triage_queue.py
|
||||
script verify_triage_review.py
|
||||
script verify_troupe_sol_health.py
|
||||
script verify_untracked_classify.py
|
||||
script verify_untracked_classify_2026_11_02.py
|
||||
script verify_untracked_file_classify_2026_11_02.py
|
||||
script verify_untracked_triad_2026_11_01.py
|
||||
script verify_untracked_triad_2026_11_02.py
|
||||
script verify_untracked_triage_2026_11_01.py
|
||||
script verify_working_tree_triage_2026_11_02.py
|
||||
script workqueue_triage.py
|
||||
script workqueue_triage_verify.py
|
||||
text ARTIFACT_SUMMARY.md
|
||||
text CHECK
|
||||
text CHECK-2026-09-28
|
||||
text CHECK-2026-10-30
|
||||
text CHECK-2026-11-02-untracked-triad
|
||||
text CHECK-Sol-Profile-Triage-2026-10-31
|
||||
text CHECK-demands-class-triage-2026-10-31
|
||||
text CHECK-probe-retire-trip-2026-10-31
|
||||
text CHECK-probe-set-verified-2026-10-31
|
||||
text CHECK-sol-l030
|
||||
text CHECK-sol-lane-triage-2026-11-02
|
||||
text CHECK-sol-news-triage
|
||||
text CHECK-sol-profile-file-class-2026-10-31
|
||||
text CHECK-sol-profile-triage-2026-10-30
|
||||
text CHECK-sol-profile-triage-2026-11-02
|
||||
text CHECK-sol-triage-seed-2026-09
|
||||
text CHECK-sols-triage-2026-10-31
|
||||
text CHECK-triage-2026-10-29
|
||||
text CHECK-untracked-file-classify-2026-11-02
|
||||
text CHECK-working-tree-triage-2026-11-02
|
||||
text README.md
|
||||
text SOL-LANE-TRIAGE-2026-11-02.md
|
||||
text SOL-TRIAGE-2026-10-29-verify.md
|
||||
text SOL_LANE_STATUS_2026-10-27.md
|
||||
text Sol-Lane-Status-2026-11-01.md
|
||||
text Sol-Lane-Triage-2026-10-24.md
|
||||
text Sol-Profile-Triage-2026-10-31.md
|
||||
text TRIAGE-2026-09-28.md
|
||||
text TRIAGE-2026-10-29-reverify.md
|
||||
text TRIAGE-2026-11-01.md
|
||||
text TRIAGE-seed-2026-09-26.md
|
||||
text TRIAGE.md
|
||||
text Triage-2026-09-26.md
|
||||
text Triage-2026-10-28-sol-ledger.md
|
||||
text Triage-2026-10-29.md
|
||||
text Triage-2026-10-30.md
|
||||
text Triage-2026-10-31-probes.md
|
||||
text Triage-2026-10-31.md
|
||||
text Triage-2026-11-02.md
|
||||
text Triage-sol-profile-2026-11-02.md
|
||||
text Untracked-Triad-2026-11-02.md
|
||||
text Working-Tree-Triage-2026-11-02.md
|
||||
text _jobboard_triage_registry.md
|
||||
text ai-news-triage-2026-11-02.md
|
||||
text apply-queue-live-state-sweep-2026-10-25.md
|
||||
text check_sol-profile-file-class-re
|
||||
text checksum_verify.txt
|
||||
text class-triage-2026-10-31/classify-summary.md
|
||||
text class-triage-2026-10-31/snapshot.txt
|
||||
text cron-fleet-triage-2026-10-20-refresh.md
|
||||
text cron-fleet-triage-2026-10-20.md
|
||||
text cron-fleet-triage-2026-10-22.md
|
||||
text daily-ledger-triage-2026-10-21.md
|
||||
text daily-ledger-triage-2026-10-22.md
|
||||
text daily-ledger-triage-2026-10-26.md
|
||||
text daily-local-pipe-triage-2026-10-25.md
|
||||
text daily-local-pipe-triage-2026-10-26.md
|
||||
text daily-triage-2026-10-21.md
|
||||
text fleet-classify-2026-11-01.md
|
||||
text human-gates-register.md
|
||||
text inbox-triage-2026-10-20.md
|
||||
text issue-triage.md
|
||||
text library-drop-roster.md
|
||||
text pending-request-triage-2026-09-26.md
|
||||
text probe-retire-trip-2026-10-31.md
|
||||
text probe-set-verification-2026-10-31.md
|
||||
text q-open-triage-2026-10-28.md
|
||||
text queue-state-triage-2026-10-21.md
|
||||
text queue-status-index.md
|
||||
text queue-triage.md
|
||||
text queue_triage.md
|
||||
text repo-file-classification.md
|
||||
text sample_inbox.txt
|
||||
text sol-lane-headline-2026-11-02.md
|
||||
text sol-lane-status-2026-10-27.md
|
||||
text sol-lane-status-rederived-2026-10-27.md
|
||||
text sol-lane-status-rederived-2026-10-28.md
|
||||
text sol-lane-triage-2026-10-25.md
|
||||
text sol-lane-triage-2026-10-27.md
|
||||
text sol-lane-triage-2026-10-29.md
|
||||
text sol-lane-triage-2026-11-02.md
|
||||
text sol-lane-triage-verify-2026-10-29.md
|
||||
text sol-lane-triage-verify-2026-11-02.md
|
||||
text sol-lane-untracked-triage-2026-11-02.md
|
||||
text sol-profile-file-class-2026-10-27.md
|
||||
text sol-profile-file-class-2026-10-28.md
|
||||
text sol-profile-file-class-2026-10-31.md
|
||||
text sol-profile-health-2026-10-24.md
|
||||
text sol-profile-lanes-classify-2026-11-01.md
|
||||
text sol-profile-skill-triage-2026-10-24.md
|
||||
text sol-profile-triage-2026-10-28.md
|
||||
text sol-profile-triage-2026-10-30.md
|
||||
text sol-profile-triage-2026-10-31.md
|
||||
text sol-profile-triage-2026-11-01.md
|
||||
text sol-profile-triage-2026-11-02.md
|
||||
text sol-profile-triage-classify-audit-2026-11-01.md
|
||||
text sol-profile-triage-report.md
|
||||
text sol-queue-status-triage-2026-10-26.md
|
||||
text sol-triage-manifest-2026-10-23.md
|
||||
text sol-wizard-work-inventory-2026-10-27.md
|
||||
text sol_profile_triage_2026_10_28.md
|
||||
text sol_triage_report.md
|
||||
text triage-2026-10-31-verdict.md
|
||||
text triage-ai-agents-2026.md
|
||||
text triage-daily-2026-10-22.md
|
||||
text triage-hero-classify.md
|
||||
text triage-inbox-2026-09-26.md
|
||||
text triage-inbox-2026-09-26/triage_report.md
|
||||
text triage-profile-census-2026-10-26.md
|
||||
text triage-profiles-2026-10-21.md
|
||||
text triage-profiles-20261022110654Z.md
|
||||
text triage-queue-report-2026-10-21.md
|
||||
text triage-queue.md
|
||||
text triage-report-2026-10-26.md
|
||||
text triage-report.md
|
||||
text triage-wizard-work-2026-10-23.md
|
||||
text triage.md
|
||||
text triage_output.txt
|
||||
text triage_report.md
|
||||
text triage_tool_gateway.md
|
||||
text untracked-classify-2026-10-31.md
|
||||
text untracked-classify-2026-11-02.snapshot.txt
|
||||
text untracked-classify-snapshot.txt
|
||||
text untracked-classify-summary.md
|
||||
text untracked-triage-2026-11-01-snapshot.txt
|
||||
text untracked-triage-2026-11-01.md
|
||||
text wizard-work-triage-2026-10-21.md
|
||||
text workqueue-triage.md
|
||||
|
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Independent verifier for the SOL-LANE headline classification (2026-11-02).
|
||||
|
||||
Re-derives every category from the committed sol-lane tree (real filesystem
|
||||
via os.walk, not the recorded artifact), re-reads the artifact's counts and TSV
|
||||
row count, and exits 0 iff the artifact faithfully records the live tree.
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
SRC = Path("/root/troupe-standup/wizard-work/sol")
|
||||
PRIMARY_TSV = Path("/root/.hermes/wizard-outputs/sol/sol-lane-headline-2026-11-02.tsv")
|
||||
COMMIT_TSV = SRC / "sol-lane-headline-2026-11-02.tsv"
|
||||
MD = SRC / "sol-lane-headline-2026-11-02.md"
|
||||
|
||||
RULER = {
|
||||
"md": "text", "txt": "text", "rst": "text", "adoc": "text", "org": "text", "log": "text",
|
||||
"json": "data", "csv": "data", "tsv": "data", "yaml": "data", "yml": "data", "toml": "data", "ipynb": "data",
|
||||
"mp3": "media", "wav": "media", "mp4": "media", "webm": "media", "png": "media", "jpg": "media", "jpeg": "media",
|
||||
"gif": "media", "webp": "media", "svg": "media",
|
||||
"py": "script", "sh": "script", "bash": "script", "zsh": "script", "ps1": "script", "bat": "script",
|
||||
"pdf": "doc", "doc": "doc", "docx": "doc", "ppt": "doc", "pptx": "doc", "xls": "doc", "xlsx": "doc",
|
||||
}
|
||||
|
||||
|
||||
def classify(name):
|
||||
if "." in name:
|
||||
ext = name.rsplit(".", 1)[1].lower()
|
||||
if ext in RULER:
|
||||
return RULER[ext]
|
||||
try:
|
||||
Path(name).read_bytes().decode("utf-8")
|
||||
return "text"
|
||||
except Exception:
|
||||
return "data"
|
||||
|
||||
|
||||
def live_counts():
|
||||
counts = {}
|
||||
total = 0
|
||||
for root, _dirs, files in os.walk(SRC):
|
||||
for f in files:
|
||||
p = Path(root) / f
|
||||
if p.is_file():
|
||||
cat = classify(p.name)
|
||||
counts[cat] = counts.get(cat, 0) + 1
|
||||
total += 1
|
||||
return counts, total
|
||||
|
||||
|
||||
def main():
|
||||
problems = []
|
||||
|
||||
live_counts_actual, total_actual = live_counts()
|
||||
|
||||
# The committed TSV must have one row per live file.
|
||||
tsv_lines = [ln for ln in COMMIT_TSV.read_text().splitlines() if ln.strip()]
|
||||
if len(tsv_lines) != total_actual:
|
||||
problems.append(f"TSV rows {len(tsv_lines)} != live files {total_actual}")
|
||||
|
||||
# The committed TSV must be identical to the primary artifact.
|
||||
if COMMIT_TSV.read_bytes() != PRIMARY_TSV.read_bytes():
|
||||
problems.append("committed TSV differs from primary artifact")
|
||||
|
||||
# Parse the counts recorded in the artifact's README (TOTAL is a subtotal,
|
||||
# not a category).
|
||||
md_text = MD.read_text()
|
||||
recorded = {k: int(v) for k, v in re.findall(r"^ (\w+)\s+(\d+)", md_text, re.M) if k != "TOTAL"}
|
||||
|
||||
if live_counts_actual != recorded:
|
||||
problems.append(f"live {live_counts_actual} != recorded {recorded}")
|
||||
|
||||
if any(k not in live_counts_actual for k in ("text", "data", "script")):
|
||||
problems.append(f"unexpected live category keys {sorted(live_counts_actual)}")
|
||||
|
||||
if problems:
|
||||
print("FAIL")
|
||||
for pr in problems:
|
||||
print(" -", pr)
|
||||
return 1
|
||||
|
||||
print("PASS live=%s recorded=%s total=%d" % (live_counts_actual, recorded, total_actual))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in new issue
Block a user