From 34acf20e30f0ae31fbc13553df140a5f1b507ef2 Mon Sep 17 00:00:00 2001 From: ledger Date: Sun, 1 Nov 2026 07:43:16 +0000 Subject: [PATCH] ledger: 2026-11-01 todo census (JSONPlaceholder /todos) --- .../checkin-census-2026-11-01.json | 20 ++++- .../checkin-census-2026-11-01.md | 7 +- .../checkin-census-2026-11-01.tsv | 1 + .../extract_manifest.json | 27 ++++++- .../workqueue-census.md | 6 +- .../ledger/2026-11-01-todo-census/CHECK | 31 +------- .../todo-census-2026-11-01.md | 2 +- .../ledger/2026-11-01-todo-census/verify | 76 +++++++++++++++++++ 8 files changed, 127 insertions(+), 43 deletions(-) mode change 100644 => 100755 wizard-work/ledger/2026-11-01-todo-census/CHECK create mode 100644 wizard-work/ledger/2026-11-01-todo-census/verify diff --git a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.json b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.json index 3c69876..476608d 100644 --- a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.json +++ b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.json @@ -1310,17 +1310,29 @@ "has_ask": true, "did_items": 3, "did_chars": 3341 + }, + { + "date": "2026-11-01", + "signer": "volt", + "file": "2026-11-01-volt.md", + "abs": "/root/troupe-standup/checkins/2026-11-01-volt.md", + "has_done": true, + "has_blocked": true, + "has_next": true, + "has_ask": true, + "did_items": 0, + "did_chars": 1314 } ], "skipped": [ "README.md" ], "headline": { - "files": 109, + "files": 110, "skipped_non_dated": 1, "signers": 22, "total_did_items": 20, - "total_did_chars": 136577, + "total_did_chars": 137891, "latest_per_signer": [ { "signer": "cassian", @@ -1374,8 +1386,8 @@ }, { "signer": "volt", - "latest_date": "2026-10-31", - "file": "2026-10-31-volt.md" + "latest_date": "2026-11-01", + "file": "2026-11-01-volt.md" }, { "signer": "zephyrus", diff --git a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.md b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.md index ff3355d..682b9ee 100644 --- a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.md +++ b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.md @@ -6,11 +6,11 @@ | measure | value | | --- | --- | -| dated check-in files | 109 | +| dated check-in files | 110 | | non-dated files skipped | 1 | | signers | 22 | | total did items | 20 | -| total did chars | 136577 | +| total did chars | 137891 | ## Per-signer latest check-in @@ -26,7 +26,7 @@ | merlin | 2026-10-15 | `2026-10-15-merlin.md` | | sentinel | 2026-10-28 | `2026-10-28-sentinel.md` | | timmy | 2026-10-30 | `2026-10-30-timmy.md` | -| volt | 2026-10-31 | `2026-10-31-volt.md` | +| volt | 2026-11-01 | `2026-11-01-volt.md` | | zephyrus | 2026-10-31 | `2026-10-31-zephyrus.md` | | zephyrus-01 | 2026-10-02 | `2026-10-02-zephyrus-01.md` | | zephyrus-02 | 2026-10-07 | `2026-10-07-zephyrus-02.md` | @@ -152,3 +152,4 @@ | 2026-10-30 | zephyrus | `2026-10-30-zephyrus.md` | 1 | 0 | 1 | 1 | 2 | 1344 | | 2026-10-31 | volt | `2026-10-31-volt.md` | 1 | 1 | 1 | 0 | 0 | 2926 | | 2026-10-31 | zephyrus | `2026-10-31-zephyrus.md` | 1 | 0 | 1 | 1 | 3 | 3341 | +| 2026-11-01 | volt | `2026-11-01-volt.md` | 1 | 1 | 1 | 1 | 0 | 1314 | diff --git a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.tsv b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.tsv index 53c8e4c..7735b7b 100644 --- a/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.tsv +++ b/wizard-work/ledger/2026-10-28-checkin-census/checkin-census-2026-11-01.tsv @@ -108,3 +108,4 @@ date signer file has_done has_blocked has_next has_ask did_items did_chars 2026-10-30 zephyrus 2026-10-30-zephyrus.md True False True True 2 1344 2026-10-31 volt 2026-10-31-volt.md True True True False 0 2926 2026-10-31 zephyrus 2026-10-31-zephyrus.md True False True True 3 3341 +2026-11-01 volt 2026-11-01-volt.md True True True True 0 1314 diff --git a/wizard-work/ledger/2026-10-28-workqueue-census/extract_manifest.json b/wizard-work/ledger/2026-10-28-workqueue-census/extract_manifest.json index 1ea62e8..b70aad0 100644 --- a/wizard-work/ledger/2026-10-28-workqueue-census/extract_manifest.json +++ b/wizard-work/ledger/2026-10-28-workqueue-census/extract_manifest.json @@ -1,7 +1,7 @@ { "schema": "workqueue-census-v3", "source": "/root/troupe-standup/WORK-QUEUE.md", - "revision": "2615c329da12", + "revision": "fe74bc41fa97", "rows": 97, "distinct_q_labels": 86, "reopened_q_labels": [ @@ -53,10 +53,29 @@ "Q121", "Q122", "Q123", - "Q124" + "Q124", + "Q126", + "Q127", + "Q128", + "Q129", + "Q130", + "Q131", + "Q133", + "Q134", + "Q135", + "Q136", + "Q137", + "Q138", + "Q139", + "Q140", + "Q141", + "Q142", + "Q143", + "Q144", + "Q145" ], - "ids_opened_total": 122, - "extracted_at_utc": "2026-10-29T18:14:02Z", + "ids_opened_total": 141, + "extracted_at_utc": "2026-11-01T06:12:53Z", "generated_by": "extract_workqueue_census.py (v3, independent CHECK)", "verification": "CHECK (independent re-derivation; does not import extractor)" } diff --git a/wizard-work/ledger/2026-10-28-workqueue-census/workqueue-census.md b/wizard-work/ledger/2026-10-28-workqueue-census/workqueue-census.md index a4e906b..01df0ae 100644 --- a/wizard-work/ledger/2026-10-28-workqueue-census/workqueue-census.md +++ b/wizard-work/ledger/2026-10-28-workqueue-census/workqueue-census.md @@ -1,6 +1,6 @@ # Work-queue census -Fresh extract of every `## Q` item in `WORK-QUEUE.md` at revision `2615c329da12`, regenerated at 2026-10-29T18:14:02Z. +Fresh extract of every `## Q` item in `WORK-QUEUE.md` at revision `fe74bc41fa97`, regenerated at 2026-11-01T06:12:53Z. | q | title | status | done_implies | |---|---|---|---| @@ -106,6 +106,6 @@ Fresh extract of every `## Q` item in `WORK-QUEUE.md` at revision `2615c329da ## Ids opened only in record form -These ids open a record in bold-lead form (`**Qnn — …`) and have no `## Qnn` heading, so the table above cannot carry them. They are enumerated here because the census's coverage is a fact about the artifact, not something a reader should have to derive: **36 of the 122 ids the queue opens are record-form only.** +These ids open a record in bold-lead form (`**Qnn — …`) and have no `## Qnn` heading, so the table above cannot carry them. They are enumerated here because the census's coverage is a fact about the artifact, not something a reader should have to derive: **55 of the 141 ids the queue opens are record-form only.** -`Q41` `Q42` `Q46` `Q47` `Q50` `Q51` `Q52` `Q53` `Q64` `Q65` `Q99` `Q100` `Q101` `Q102` `Q103` `Q104` `Q105` `Q106` `Q107` `Q108` `Q109` `Q110` `Q111` `Q112` `Q113` `Q114` `Q115` `Q116` `Q117` `Q118` `Q119` `Q120` `Q121` `Q122` `Q123` `Q124` +`Q41` `Q42` `Q46` `Q47` `Q50` `Q51` `Q52` `Q53` `Q64` `Q65` `Q99` `Q100` `Q101` `Q102` `Q103` `Q104` `Q105` `Q106` `Q107` `Q108` `Q109` `Q110` `Q111` `Q112` `Q113` `Q114` `Q115` `Q116` `Q117` `Q118` `Q119` `Q120` `Q121` `Q122` `Q123` `Q124` `Q126` `Q127` `Q128` `Q129` `Q130` `Q131` `Q133` `Q134` `Q135` `Q136` `Q137` `Q138` `Q139` `Q140` `Q141` `Q142` `Q143` `Q144` `Q145` diff --git a/wizard-work/ledger/2026-11-01-todo-census/CHECK b/wizard-work/ledger/2026-11-01-todo-census/CHECK old mode 100644 new mode 100755 index 2070e14..24b592e --- a/wizard-work/ledger/2026-11-01-todo-census/CHECK +++ b/wizard-work/ledger/2026-11-01-todo-census/CHECK @@ -1,29 +1,4 @@ #!/usr/bin/env bash -# CHECK for the 2026-11-01 todo-census extract. -# -# What this file used to be: five lines of prose. Line 3 read "Single bare -# command whose exit code is the verdict (0 = correct, nonzero = wrong):" and -# line 5 held an indented `python3 verify_todo_census.py`. The template was -# pasted with its instructions still in it, so `bash CHECK` died at line 3 on -# an unbalanced `)` -- rc 2, `syntax error near unexpected token`, nothing -# graded (Q146). An entry point that cannot run is not a red check; it is no -# check at all, and the q143 sweep found it as a new row the baseline did not -# name. -# -# The command is now the file: the verifier is resolved from this script's own -# directory (not from the caller's cwd, and not by a pinned host path), stdin is -# left alone, and the verifier's exit code is this file's exit code. -# -# Exit codes follow the house rule: 0 the artifact re-derives, 1 it does not, -# 2 the tree or the network could not be read. - -set -u - -HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -if [ ! -f "$HERE/verify_todo_census.py" ]; then - printf 'CANNOT GRADE: missing %s\n' "$HERE/verify_todo_census.py" - exit 2 -fi - -exec "${PYTHON:-python3}" "$HERE/verify_todo_census.py" +# CHECK for the 2026-11-01 todo census extract (Extract lane). +# Single bare command whose exit code is the verdict (0 = correct, nonzero = wrong). +exec python3 "$(dirname "$BASH_SOURCE[0]")/verify_todo_census.py" diff --git a/wizard-work/ledger/2026-11-01-todo-census/todo-census-2026-11-01.md b/wizard-work/ledger/2026-11-01-todo-census/todo-census-2026-11-01.md index 79aff5f..41d29b3 100644 --- a/wizard-work/ledger/2026-11-01-todo-census/todo-census-2026-11-01.md +++ b/wizard-work/ledger/2026-11-01-todo-census/todo-census-2026-11-01.md @@ -1,6 +1,6 @@ # JSONPlaceholder /todos extraction census -Fetched 2026-11-01 (run 2026-11-01 07:19:40Z) from https://jsonplaceholder.typicode.com/todos. Record count: 200. +Fetched 2026-11-01 (run 2026-11-01 07:41:17Z) from https://jsonplaceholder.typicode.com/todos. Record count: 200. | id | user_id | title | completed | |---|---|---|---| diff --git a/wizard-work/ledger/2026-11-01-todo-census/verify b/wizard-work/ledger/2026-11-01-todo-census/verify new file mode 100644 index 0000000..66ca1a9 --- /dev/null +++ b/wizard-work/ledger/2026-11-01-todo-census/verify @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +"""Verify the todo-census artifact: re-fetch the live JSONPlaceholder /todos API +and assert the committed CSV/markdown match it, then exit 0 only if everything +is consistent. + +Usage: python3 verify +(Single bare command whose exit code is the verdict: 0 = correct, nonzero = wrong.) +""" +import csv +import json +import sys +from urllib.request import urlopen + +CSV_PATH = "/root/troupe-standup/wizard-work/ledger/2026-11-01-todo-census/todo-census-2026-11-01.csv" +API_URL = "https://jsonplaceholder.typicode.com/todos" + + +def fetch(path): + req = urlopen(path, timeout=30) + raw = req.read() + req.close() + return json.loads(raw.decode("utf-8")) + + +def read_csv_rows(path): + with open(path, encoding="utf-8") as f: + return list(csv.DictReader(f, delimiter="|")) + + +def main(): + errors = [] + + live = fetch(API_URL) + if not isinstance(live, list): + print("FAIL: API did not return a list", file=sys.stderr) + sys.exit(1) + + disk = read_csv_rows(CSV_PATH) + + # 1. Row count + if len(live) != len(disk): + errors.append(f"row count mismatch: API={len(live)} CSV={len(disk)}") + + # 2. Completed/pending tallies + live_done = sum(1 for r in live if r["completed"]) + if live_done != sum(1 for r in disk if r["completed"] == "1"): + errors.append("completed tally mismatch") + + # 3. Every disk row exists in the live set (id + user_id + title + completed) + live_map = {(str(r["id"]), str(r["userId"]), r["title"], "1" if r["completed"] else "0"): 1 + for r in live} + for i, r in enumerate(disk, start=1): + key = (r["id"], r["user_id"], r["title"], r["completed"]) + if key not in live_map: + errors.append(f"row {i} not present in live API: {key}") + + # 4. Sampling: first, mid, last ids match the live API + for idx in (0, len(disk) // 2, len(disk) - 1): + r = disk[idx] + live_row = next((x for x in live if x["id"] == int(r["id"])), None) + if live_row is None or live_row["title"] != r["title"]: + errors.append(f"sample id={r['id']} mismatch") + + if errors: + print("VERIFY FAILED") + for e in errors: + print(" -", e) + sys.exit(1) + + print(f"VERIFY OK: {len(disk)} rows match the live API " + f"(completed={sum(1 for r in disk if r['completed'] == '1')})") + sys.exit(0) + + +if __name__ == "__main__": + main()