From debf8482cd52925167d45b4819e5cf51aac11462 Mon Sep 17 00:00:00 2001 From: sol Date: Mon, 2 Nov 2026 21:22:43 +0000 Subject: [PATCH] sol: sol-lane headline triage 2026-11-02 (manifest + independent verifier) --- .../sol/sol-lane-headline-2026-11-02.md | 18 + .../sol/sol-lane-headline-2026-11-02.tsv | 419 ++++++++++++++++++ .../verify_headline_classify_2026_11_02.py | 90 ++++ 3 files changed, 527 insertions(+) create mode 100644 wizard-work/sol/sol-lane-headline-2026-11-02.md create mode 100644 wizard-work/sol/sol-lane-headline-2026-11-02.tsv create mode 100644 wizard-work/sol/verify_headline_classify_2026_11_02.py diff --git a/wizard-work/sol/sol-lane-headline-2026-11-02.md b/wizard-work/sol/sol-lane-headline-2026-11-02.md new file mode 100644 index 0000000..138eaa9 --- /dev/null +++ b/wizard-work/sol/sol-lane-headline-2026-11-02.md @@ -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/ \ No newline at end of file diff --git a/wizard-work/sol/sol-lane-headline-2026-11-02.tsv b/wizard-work/sol/sol-lane-headline-2026-11-02.tsv new file mode 100644 index 0000000..8f5abff --- /dev/null +++ b/wizard-work/sol/sol-lane-headline-2026-11-02.tsv @@ -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 diff --git a/wizard-work/sol/verify_headline_classify_2026_11_02.py b/wizard-work/sol/verify_headline_classify_2026_11_02.py new file mode 100644 index 0000000..14688b6 --- /dev/null +++ b/wizard-work/sol/verify_headline_classify_2026_11_02.py @@ -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())