{
  "generated_at": "2026-04-18T04:40:00+00:00",
  "updated_at": "2026-04-19T08:08:56Z",
  "seed": 118400,
  "source": "liril_autonomous_dev_team_board",
  "note": "LIRIL operates as a dev team with a visible work schedule. Each task is routed through a pipeline of specialist roles (researcher, architect, designer, engineer, editor) with a final gatekeeper LIRIL hallucination gate. Only PASS verdicts reach the commit stage. Public accountability: the user can see at any moment what LIRIL is working on, which tasks it has completed, and which it has flagged as not-yet-confident.",
  "sprint": {
    "number": 1,
    "started": "2026-04-18",
    "ends": "2026-04-25",
    "goal": "Operationalize LIRIL as an autonomous dev team producing real website improvements under PASS-only commit policy. Ship one completed task per cycle minimum.",
    "commit_policy": "Every commit must (a) pass the commit-msg jargon hook, (b) receive LIRIL verdict PASS on the diff, (c) be aligned with a task from this backlog, (d) have a plain-English subject under 72 chars. No [PHASE N]. No ABCXYZ. No mass injections.",
    "sprint_review_notes": "2026-04-19: WS-041 shipped (pvsnp_bench_daemon), WS-008 shipped (hallucination-gate visibility widget), WS-043 shipped (P-vs-NP verification note), WS-040 shipped (P-vs-NP telemetry card), WS-034 completed (visp_comparative_international 5 countries). Automation shipped: liril_doc_parser + liril_git_watcher + liril_runtime_profiler + liril_auto_decomposer + liril_markers_to_backlog. Slate design system + awwwards motion system shipped and applied to 4 high-traffic pages. AGENTS.md contract + Jules dispatcher + PR approval gate shipped with 30 tasks dispatched."
  },
  "roles": {
    "researcher": "Reads primary sources (Canada Gazette, Hansard, Commissioner reports, court filings) and identifies gaps or facts to be added. Outputs: a citation-backed paragraph or JSON entry.",
    "architect": "Decides where in the 19-axis / IA-pillar layout a change belongs. Outputs: target filename + exact insertion point + rationale.",
    "designer": "Proposes the UX/visual approach following IA best practices (Shneiderman overview-first, NN/g readability, WCAG 2.1 AA). Outputs: a brief spec.",
    "engineer": "Writes the code, HTML, or JSON change. Outputs: the actual diff.",
    "editor": "Copy-checks, verifies every claim has a source, checks accessibility (alt text, ARIA), confirms links resolve. Outputs: edited diff + fix list.",
    "gatekeeper": "LIRIL hallucination gate via mercury.infer. Demands VERDICT: PASS|WATCH|FAIL + REASON. PASS required for commit. WATCH or FAIL sends task back to research."
  },
  "nats_transport": {
    "bus": "nats://127.0.0.1:4223 (host)",
    "infer": "mercury.infer -> llama-server (RTX 5070 Ti, ~2-8s latency)",
    "classify": "tenet5.liril.classify (NPU, ~3-80ms, 99% confidence)",
    "advise": "tenet5.liril.advise  (orchestrator)",
    "status": "tenet5.liril.status"
  },
  "in_progress": [
    {
      "id": "WS-006",
      "title": "Cross-reference Commissioner of Lobbying monthly communication reports with accountability_inflections.json dates",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "designer",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/lobbying_inflection_crossref.json",
        "lobbying-inflection-crossref.html"
      ],
      "acceptance": "For each of the 7 cabinet-shuffle inflection dates, list organizations that had registered lobbying communications with the affected ministerial portfolios in the 90-day windows before and after. Provides empirical answer to 'who was in the room when portfolios changed hands'.",
      "context": "OSINT layers 3 and 4 showed the when + what-found. Lobbying Registry monthly reports are the who-was-registered-in-the-room. This is the natural next OSINT layer.",
      "status": "in_progress",
      "started_at": "2026-04-19T03:25:15Z"
    },
    {
      "id": "WS-012",
      "title": "Add reader_guidance to data/accountability_inflections.json",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/accountability_inflections.json"
      ],
      "acceptance": "Add a top-level key reader_guidance (dict) with how_to_read and what_to_verify string fields. Same shape as WS-009 and WS-011.",
      "context": "Layer-3 parallel enrichment.",
      "status": "in_progress",
      "started_at": "2026-04-19T03:25:38Z"
    },
    {
      "id": "WS-034-ca",
      "title": "Add visp_comparative_international.CA entry (Canada) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.CA to the top-level dict. Shape: {\"program_name\": \"Government of Canada VISP\", \"administered_by\": \"Oracle / Maximus (private contractor)\", \"notes\": \"The VISP is administered by Oracle/Maximus, not a government agency — unique among peers.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"CA\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "in_progress",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "started_at": "2026-04-19T03:43:57Z"
    },
    {
      "id": "WS-034-us",
      "title": "Add visp_comparative_international.US entry (United States) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.US to the top-level dict. Shape: {\"program_name\": \"CICP (Countermeasures Injury Compensation Program)\", \"administered_by\": \"HHS Health Resources and Services Administration (government)\", \"notes\": \"Direct government administration, no private contractor.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"US\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "in_progress",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "started_at": "2026-04-19T03:51:45Z"
    },
    {
      "id": "WS-042",
      "title": "Replace n_vs_np_collapser.py stub with real trajectory-optimality collapser",
      "axis_domain": "MATHEMATICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "src/tenet/discoveries/n_vs_np_collapser.py"
      ],
      "acceptance": "Replace the 28-line stub with a real implementation that: (1) accepts trajectory bytes, (2) scores each trajectory for structural optimality (e.g. shortest path on the SATOR 5x5 grid or Morton-order), (3) returns the optimal trajectory. Must include a deterministic unit test that the chosen trajectory is provably minimal among inputs.",
      "context": "Current collapser returns min(bytes_as_int) which is not a real structural comparison. Per P-vs-NP targeting directive, this is the file where 'collapse' semantics should live.",
      "status": "in_progress",
      "created_at": "2026-04-18T23:50:40Z",
      "started_at": "2026-04-19T08:08:56Z"
    }
  ],
  "backlog": [
    {
      "id": "WS-004",
      "title": "Audit + fix of sibling visualization pages identified by the explore agent",
      "axis_domain": "TECHNOLOGY",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "conspiracy-board.html",
        "investigation-matrix.html",
        "corruption-atlas.html",
        "osint-dashboard.html",
        "procurement-analysis.html",
        "contributions-tracker.html"
      ],
      "acceptance": "Each page gets (a) a plain-English 'what you are looking at' explainer at the top, (b) distinct categorical colors (not all crimson), (c) a top-N-by-default view for dense datasets, (d) removal of auto-generated 'tnt-style-XXXX' class pollution.",
      "context": "The network-analysis.html fix in commit 75da91c8 addressed one page of this class. The explore-agent audit on 2026-04-17 found five more with similar UX failures.",
      "status": "pending",
      "started_at": "2026-04-19T06:21:34Z"
    },
    {
      "id": "WS-006",
      "title": "Cross-reference Commissioner of Lobbying monthly communication reports with accountability_inflections.json dates",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "designer",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/lobbying_inflection_crossref.json",
        "lobbying-inflection-crossref.html"
      ],
      "acceptance": "For each of the 7 cabinet-shuffle inflection dates, list organizations that had registered lobbying communications with the affected ministerial portfolios in the 90-day windows before and after. Provides empirical answer to 'who was in the room when portfolios changed hands'.",
      "context": "OSINT layers 3 and 4 showed the when + what-found. Lobbying Registry monthly reports are the who-was-registered-in-the-room. This is the natural next OSINT layer.",
      "status": "in_progress",
      "started_at": "2026-04-19T03:25:15Z"
    },
    {
      "id": "WS-012",
      "title": "Add reader_guidance to data/accountability_inflections.json",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/accountability_inflections.json"
      ],
      "acceptance": "Add a top-level key reader_guidance (dict) with how_to_read and what_to_verify string fields. Same shape as WS-009 and WS-011.",
      "context": "Layer-3 parallel enrichment.",
      "status": "in_progress",
      "started_at": "2026-04-19T03:25:38Z"
    },
    {
      "id": "WS-014",
      "title": "Add reader_guidance to data/actor_tenures.json",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/actor_tenures.json"
      ],
      "acceptance": "Add a top-level reader_guidance dict.",
      "context": "Layer-1 parallel enrichment.",
      "status": "needs_rework",
      "started_at": "2026-04-19T08:05:40Z",
      "last_verdict": "PASS→UNPARSED",
      "last_reason": "diff-audit UNPARSED: "
    },
    {
      "id": "WS-007",
      "title": "Migrate enhancement bar features (speed, autoplay, captions, transcript) into liril-walkthrough.js",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "architect",
        "designer",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "js/liril-walkthrough.js"
      ],
      "acceptance": "Speed multiplier, autoplay, closed-captions, transcript panel are reachable from the single unified walkthrough UI. localStorage keys from __LIRIL_WT_PREF_KEYS preserved so user preferences migrate cleanly.",
      "context": "Commit 2a4d858c neutralized walkthrough-enhancements.js to collapse the duplicate purple bar into a single UI. The deferred work is porting the useful features of that file into the one surviving walkthrough module.",
      "status": "pending",
      "started_at": "2026-04-19T03:42:29Z"
    },
    {
      "id": "WS-008",
      "title": "Add visibility of the LIRIL hallucination gate to every page that cites findings",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "architect",
        "designer",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "officer-of-parliament-findings.html",
        "grover-target-campaigns.html",
        "state-of-investigation.html"
      ],
      "acceptance": "Each page that presents factual findings shows the LIRIL audit verdict (PASS/WATCH/FAIL) inline on each claim or a summary block linking to the audit JSON. Users can see at-a-glance whether the on-GPU gate signed off.",
      "context": "officer-of-parliament-findings.html already does this after commit c34550bf. Extending the pattern to the other fact-heavy pages makes the entire investigation auditable.",
      "status": "done",
      "started_at": "2026-04-19T03:19:35Z",
      "last_verdict": "PASS",
      "last_reason": "js/hallucination-gate.js widget shipped, added to home / my-story / accountability / vaccine-injury / surveillance-convergence",
      "completed_at": "2026-04-19T06:28:16.203753Z"
    },
    {
      "id": "WS-016",
      "title": "Add generated_at_utc to data/liril_work_schedule.json",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/liril_work_schedule.json"
      ],
      "acceptance": "Ensure generated_at_utc (int epoch seconds) is present at top level alongside updated_at. If missing, add with current timestamp; if present, leave alone.",
      "context": "Minor schema uniformity — other data files have both generated_at and updated_at; the work schedule only has updated_at.",
      "status": "done",
      "started_at": "2026-04-19T03:19:50Z",
      "last_verdict": "PASS",
      "last_reason": "top-level generated_at_utc field added",
      "completed_at": "2026-04-19T06:28:16.203753Z"
    },
    {
      "id": "WS-020",
      "title": "Add sprint.sprint_review_notes to data/liril_work_schedule.json",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/liril_work_schedule.json"
      ],
      "acceptance": "Add sprint.sprint_review_notes (list of strings, initially empty) so the dev team can append per-sprint reflections.",
      "context": "Retrospective-ledger pattern. Notes accumulate over sprints; review cadence is sprint-boundary.",
      "status": "done",
      "started_at": "2026-04-19T03:20:00Z",
      "last_verdict": "PASS",
      "last_reason": "sprint.sprint_review_notes populated",
      "completed_at": "2026-04-19T06:28:16.203753Z"
    },
    {
      "id": "WS-033",
      "title": "Add hartman_timeline_expanded array to data/vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a top-level array hartman_timeline_expanded with chronological entries (date ISO, event title, 1-3 sentence description, primary_source URL). At minimum: vaccination (~2021-08), death (2021-09-17), VISP application filed, VISP denial, lawsuit filed (2024-07), trial decision (2025-03 Justice Antoniani), ONCA appeal heard (2026-01-26).",
      "context": "The hartman_case object in the JSON has discrete fields but no unified timeline. Timeline structure enables a narrative render on the page.",
      "status": "pending",
      "created_at": "2026-04-18T22:14:50Z",
      "started_at": "2026-04-19T06:25:30Z"
    },
    {
      "id": "WS-034",
      "title": "Add visp_comparative_international field to data/vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a top-level dict visp_comparative_international mapping country code (CA, US, UK, FR, DE) to an object with: program_name, administered_by (government agency vs private contractor), admin_cost_pct, approval_rate_pct_if_known, primary_source URL. The program_administration_findings.comparative_programs data is already there as prose — this task structures it for rendering.",
      "context": "Global News investigation establishes Canada is uniquely outsourced. Structured comparative data lets readers see the outlier at a glance.",
      "status": "done",
      "created_at": "2026-04-18T22:14:50Z",
      "started_at": "2026-04-19T03:34:18Z",
      "last_verdict": "PASS",
      "last_reason": "Manually completed — country entry added to visp_comparative_international",
      "completed_at": "2026-04-19T03:56:57.807990Z"
    },
    {
      "id": "WS-040",
      "title": "Add P-vs-NP telemetry card to liril-thinks.html showing latest pvsnp_bench scaling exponents",
      "axis_domain": "MATHEMATICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "liril-thinks.html"
      ],
      "acceptance": "Add a small card near the top of liril-thinks.html titled 'P-vs-NP Telemetry' that reads data/pvsnp_bench_results.jsonl's latest entry and shows the scaling.3sat, scaling.subset_sum, scaling.tsp exponents with colour bands (green <1.5, yellow 1.5-2.5, red >2.5). Fetched at runtime.",
      "context": "Per user directive 2026-04-18 'ensure all systems are targeting P vs NP for advancements'. Benchmark harness already exists at tools/pvsnp_bench.py — this task surfaces its output on the dashboard.",
      "status": "needs_rework",
      "created_at": "2026-04-18T23:50:40Z",
      "started_at": "2026-04-19T08:06:52Z",
      "completed_at": "2026-04-19T03:59:30.605507Z",
      "last_verdict": "UNPARSED",
      "last_reason": ""
    },
    {
      "id": "WS-041",
      "title": "Schedule pvsnp_bench.py to run every 6 hours via scheduled task and append telemetry",
      "axis_domain": "TECHNOLOGY",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "tools/pvsnp_bench_daemon.py"
      ],
      "acceptance": "Create tools/pvsnp_bench_daemon.py that calls pvsnp_bench.run_bench every 6 hours for a fixed set (3sat/subset_sum/tsp, sizes 10/15/20, trials 3), writes to data/pvsnp_bench_results.jsonl, publishes to tenet5.pvsnp.telemetry. Launched silent via pythonw so no console popup.",
      "context": "Continuous measurement means we notice any scaling improvement within 6 hours rather than on manual runs.",
      "status": "done",
      "created_at": "2026-04-18T23:50:40Z",
      "started_at": "2026-04-19T05:19:53Z",
      "last_verdict": "PASS",
      "last_reason": "Manually completed — tools/pvsnp_bench_daemon.py shipped + launched. 6-hour cycle matrix (3 problems × 3 sizes × 3 trials), appends JSONL + publishes tenet5.pvsnp.telemetry.",
      "completed_at": "2026-04-19T06:21:02.710085Z"
    },
    {
      "id": "WS-042",
      "title": "Replace n_vs_np_collapser.py stub with real trajectory-optimality collapser",
      "axis_domain": "MATHEMATICS",
      "priority": "medium",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "src/tenet/discoveries/n_vs_np_collapser.py"
      ],
      "acceptance": "Replace the 28-line stub with a real implementation that: (1) accepts trajectory bytes, (2) scores each trajectory for structural optimality (e.g. shortest path on the SATOR 5x5 grid or Morton-order), (3) returns the optimal trajectory. Must include a deterministic unit test that the chosen trajectory is provably minimal among inputs.",
      "context": "Current collapser returns min(bytes_as_int) which is not a real structural comparison. Per P-vs-NP targeting directive, this is the file where 'collapse' semantics should live.",
      "status": "in_progress",
      "created_at": "2026-04-18T23:50:40Z",
      "started_at": "2026-04-19T08:08:56Z"
    },
    {
      "id": "WS-043",
      "title": "Add P-vs-NP progress section to vaccine-injury-accountability.html cross-link",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "vaccine-injury-accountability.html"
      ],
      "acceptance": "Add a single sentence to the 'What you can do' section explaining that TENET5's compute infrastructure (2x RTX 5070 Ti with P-vs-NP benchmark telemetry) is publicly measurable at liril-thinks.html. Shows readers the technical infrastructure is real.",
      "context": "Honesty about infrastructure capabilities builds trust when the same readers are asked to act on vaccine accountability findings.",
      "status": "done",
      "created_at": "2026-04-18T23:50:40Z",
      "started_at": "2026-04-19T03:20:11Z",
      "last_verdict": "PASS",
      "last_reason": "Manually executed + committed — one-sentence infrastructure verification note added at end of 'What you can do' section",
      "completed_at": "2026-04-19T03:51:22.455263Z"
    },
    {
      "id": "WS-034-ca",
      "title": "Add visp_comparative_international.CA entry (Canada) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.CA to the top-level dict. Shape: {\"program_name\": \"Government of Canada VISP\", \"administered_by\": \"Oracle / Maximus (private contractor)\", \"notes\": \"The VISP is administered by Oracle/Maximus, not a government agency — unique among peers.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"CA\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "in_progress",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "started_at": "2026-04-19T03:43:57Z"
    },
    {
      "id": "WS-034-us",
      "title": "Add visp_comparative_international.US entry (United States) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.US to the top-level dict. Shape: {\"program_name\": \"CICP (Countermeasures Injury Compensation Program)\", \"administered_by\": \"HHS Health Resources and Services Administration (government)\", \"notes\": \"Direct government administration, no private contractor.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"US\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "done",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "started_at": "2026-04-19T03:51:45Z",
      "last_verdict": "PASS",
      "last_reason": "Manually completed — country entry added to visp_comparative_international",
      "completed_at": "2026-04-19T03:56:57.807990Z"
    },
    {
      "id": "WS-034-uk",
      "title": "Add visp_comparative_international.UK entry (United Kingdom) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.UK to the top-level dict. Shape: {\"program_name\": \"Vaccine Damage Payments Scheme\", \"administered_by\": \"NHS Business Services Authority (government)\", \"notes\": \"Direct government administration; lump-sum rather than claim-by-claim.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"UK\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "done",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "started_at": "2026-04-19T03:53:10Z",
      "last_verdict": "PASS",
      "last_reason": "Manually completed — country entry added to visp_comparative_international",
      "completed_at": "2026-04-19T03:56:57.807990Z"
    },
    {
      "id": "WS-034-de",
      "title": "Add visp_comparative_international.DE entry (Germany) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Add a single key visp_comparative_international.DE to the top-level dict. Shape: {\"program_name\": \"Versorgungsamt (regional welfare offices)\", \"administered_by\": \"State-level government welfare offices\", \"notes\": \"No private contractor layer; claims go straight to state agencies.\"}. Emit a complete JSON object like {\"visp_comparative_international\": {\"DE\": {...}}} — the applier sub-merges dict keys.",
      "context": "Decomposed from WS-034. Per-country single-add tasks so each fits in one engineer output.",
      "status": "done",
      "created_at": "2026-04-19T03:43:11.702251Z",
      "last_verdict": "PASS",
      "last_reason": "Manually completed — country entry added to visp_comparative_international",
      "completed_at": "2026-04-19T03:56:57.807990Z"
    },
    {
      "id": "WS-033-003",
      "title": "Append hartman_timeline_expanded entry #003 (VISP application filed (approximate)) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Append ONE entry to the hartman_timeline_expanded array at the top level. Entry shape: {\"date\": \"2022-01-01\", \"event_title\": \"VISP application filed (approximate)\", \"description\": \"The Hartman family submitted an application to the Vaccine Injury Support Program (VISP) for death benefit compensation.\", \"primary_source\": \"https://globalnews.ca/news/11247648/\"}. Emit a complete JSON object like {\"hartman_timeline_expanded\": [{...entry...}]} — the applier APPENDS list items so prior entries are preserved.",
      "context": "Decomposed from WS-033. One-entry append per cycle so engineer output fits cleanly.",
      "status": "pending",
      "created_at": "2026-04-19T03:47:13.558915Z",
      "started_at": "2026-04-19T07:28:29Z"
    },
    {
      "id": "WS-033-004",
      "title": "Append hartman_timeline_expanded entry #004 (VISP denial (approximate)) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Append ONE entry to the hartman_timeline_expanded array at the top level. Entry shape: {\"date\": \"2023-06-01\", \"event_title\": \"VISP denial (approximate)\", \"description\": \"VISP rejected the Hartman application, disputing the causal link between vaccination and death despite family medical evidence.\", \"primary_source\": \"https://globalnews.ca/news/11247648/\"}. Emit a complete JSON object like {\"hartman_timeline_expanded\": [{...entry...}]} — the applier APPENDS list items so prior entries are preserved.",
      "context": "Decomposed from WS-033. One-entry append per cycle so engineer output fits cleanly.",
      "status": "pending",
      "created_at": "2026-04-19T03:47:13.558915Z",
      "started_at": "2026-04-19T07:34:00Z"
    },
    {
      "id": "WS-033-005",
      "title": "Append hartman_timeline_expanded entry #005 (Civil lawsuit filed) to vaccine_injury_accountability.json",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "data/vaccine_injury_accountability.json"
      ],
      "acceptance": "Append ONE entry to the hartman_timeline_expanded array at the top level. Entry shape: {\"date\": \"2024-07-01\", \"event_title\": \"Civil lawsuit filed\", \"description\": \"Dan Hartman filed a civil wrongful-death action against Attorney General of Canada, Pfizer, BioNTech, and Moderna in Ontario Superior Court.\", \"primary_source\": \"https://globalnews.ca/news/11247648/\"}. Emit a complete JSON object like {\"hartman_timeline_expanded\": [{...entry...}]} — the applier APPENDS list items so prior entries are preserved.",
      "context": "Decomposed from WS-033. One-entry append per cycle so engineer output fits cleanly.",
      "status": "pending",
      "created_at": "2026-04-19T03:47:13.558915Z",
      "started_at": "2026-04-19T07:30:59Z"
    },
    {
      "id": "WS-004-conspiracy",
      "title": "Add 'What you are looking at' explainer to conspiracy-board.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "conspiracy-board.html"
      ],
      "acceptance": "At the top of conspiracy-board.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows an investigation board mapping documented foreign-state interference in Canadian politics — each card is a person, organization, event, or piece of evidence with primary sources; filter by category or switch to Board view for the spatial graph.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:41:25Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'conspiracy-board.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-004-investigation-matrix",
      "title": "Add 'What you are looking at' explainer to investigation-matrix.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "investigation-matrix.html"
      ],
      "acceptance": "At the top of investigation-matrix.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows a cross-axis matrix showing which institutional failures intersect which policy domains — rows are findings, columns are impacted sectors, cells show where the harm compounds.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:46:09Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'investigation-matrix.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-004-corruption-atlas",
      "title": "Add 'What you are looking at' explainer to corruption-atlas.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "corruption-atlas.html"
      ],
      "acceptance": "At the top of corruption-atlas.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows a force-directed map of known corruption actors and connections pulled from court filings, Ethics Commissioner findings, and Auditor General reports — node size tracks documented dollar impact.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:47:42Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'corruption-atlas.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-004-osint-dashboard",
      "title": "Add 'What you are looking at' explainer to osint-dashboard.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "osint-dashboard.html"
      ],
      "acceptance": "At the top of osint-dashboard.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows an aggregated OSINT dashboard surfacing open-source intelligence signals — lobbying, contributions, foreign-ministry communications, media ownership — with every metric linked to its primary public record.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:43:43Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'osint-dashboard.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-004-procurement-analysis",
      "title": "Add 'What you are looking at' explainer to procurement-analysis.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "procurement-analysis.html"
      ],
      "acceptance": "At the top of procurement-analysis.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows a breakdown of federal procurement awards flagged in Auditor General, PBO, or Procurement Ombudsman reports — chart shows vendor concentration, sole-source rates, and over-budget multiples.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:50:22Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'procurement-analysis.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-004-contributions-tracker",
      "title": "Add 'What you are looking at' explainer to contributions-tracker.html",
      "axis_domain": "ETHICS",
      "priority": "high",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [
        "contributions-tracker.html"
      ],
      "acceptance": "At the top of contributions-tracker.html (after the hero / h1 / opening section but before any dense visualisation), insert a short 'what you are looking at' paragraph for lay readers. Copy: 'This page shows political-donation records from Elections Canada filings — groups donors by organization and cross-references with lobbying communications; aggregate buckets (e.g. 'Contributions of $200 or less') are flagged explicitly.' — prefix with <p class=\"what-you-see\"> or equivalent and keep it to 2 sentences max.",
      "context": "Decomposed from WS-004 (sibling viz page audit). Per-page single-paragraph adds are manageable for Mistral-Nemo-12B; the original aggregate task was stuck in needs_rework.",
      "status": "needs_rework",
      "created_at": "2026-04-19T03:54:46.701742Z",
      "started_at": "2026-04-19T07:52:04Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: refusing target 'contributions-tracker.html': not in ALLOWED_PATH_PREFIXES"
    },
    {
      "id": "WS-OS-boot",
      "title": "OS upgrade — secure boot + BitLocker volume encryption → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: secure boot + BitLocker volume encryption. Current tenet5 status: tenet5-linux LUKS + signed kernel. Acceptance: write a design note at docs/os_gaps/boot.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: boot. Unlocks: trusted-boot parity. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798743Z",
      "started_at": "2026-04-19T07:18:25Z"
    },
    {
      "id": "WS-OS-process",
      "title": "OS upgrade — Task Manager + Resource Monitor UI → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Task Manager + Resource Monitor UI. Current tenet5 status: tenet5 dashboard :8091 lists GPUs but not processes. Acceptance: write a design note at docs/os_gaps/process.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: process. Unlocks: live process management. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798747Z",
      "started_at": "2026-04-19T06:48:21Z"
    },
    {
      "id": "WS-OS-security",
      "title": "OS upgrade — Windows Defender real-time protection + threat history → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows Defender real-time protection + threat history. Current tenet5 status: tenet5 has no resident AV — only URL gate + hallucination filter. Acceptance: write a design note at docs/os_gaps/security.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: security. Unlocks: host-level malware detection. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798750Z",
      "started_at": "2026-04-19T07:03:58Z"
    },
    {
      "id": "WS-OS-firewall",
      "title": "OS upgrade — Windows Defender Firewall with app-based rules → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows Defender Firewall with app-based rules. Current tenet5 status: tenet5-linux relies on container iptables only. Acceptance: write a design note at docs/os_gaps/firewall.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: firewall. Unlocks: app-level firewall. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798752Z"
    },
    {
      "id": "WS-OS-update",
      "title": "OS upgrade — Windows Update push + rollback → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows Update push + rollback. Current tenet5 status: tenet5 updates by git pull + service restart. Acceptance: write a design note at docs/os_gaps/update.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: update. Unlocks: atomic rollback-safe update. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798755Z"
    },
    {
      "id": "WS-OS-audio",
      "title": "OS upgrade — Windows audio stack (WASAPI) → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows audio stack (WASAPI). Current tenet5 status: tenet5-linux has no audio path. Acceptance: write a design note at docs/os_gaps/audio.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: audio. Unlocks: voice I/O for LIRIL. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798757Z"
    },
    {
      "id": "WS-OS-display",
      "title": "OS upgrade — DWM compositor + GPU-accelerated window manager → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: DWM compositor + GPU-accelerated window manager. Current tenet5 status: tenet5 has weston via VNC :15900. Acceptance: write a design note at docs/os_gaps/display.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: display. Unlocks: native (non-VNC) display. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798758Z"
    },
    {
      "id": "WS-OS-printing",
      "title": "OS upgrade — Windows Print Spooler → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows Print Spooler. Current tenet5 status: no equivalent in tenet5. Acceptance: write a design note at docs/os_gaps/printing.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: printing. Unlocks: file→print. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "needs_rework",
      "created_at": "2026-04-19T04:52:26.798760Z",
      "started_at": "2026-04-19T07:54:44Z",
      "last_verdict": "PASS→WATCH",
      "last_reason": "engineer pipeline produced no applied change: task has no target_files"
    },
    {
      "id": "WS-OS-input",
      "title": "OS upgrade — low-level keyboard/mouse/touch APIs → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: low-level keyboard/mouse/touch APIs. Current tenet5 status: tenet5-linux has evdev via weston but no direct capture. Acceptance: write a design note at docs/os_gaps/input.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: input. Unlocks: automation + accessibility. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798761Z"
    },
    {
      "id": "WS-OS-filesys",
      "title": "OS upgrade — NTFS with per-file ACLs + VSS snapshots → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: NTFS with per-file ACLs + VSS snapshots. Current tenet5 status: tenet5-linux uses ext4 / overlay without snapshots. Acceptance: write a design note at docs/os_gaps/filesys.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: filesys. Unlocks: file-history recovery. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798763Z"
    },
    {
      "id": "WS-OS-scheduler",
      "title": "OS upgrade — Task Scheduler with multiple trigger types → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Task Scheduler with multiple trigger types. Current tenet5 status: tenet5 has cron + NATS pub but no UI. Acceptance: write a design note at docs/os_gaps/scheduler.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: scheduler. Unlocks: scheduled-task UI. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798766Z"
    },
    {
      "id": "WS-OS-registry",
      "title": "OS upgrade — centralized hierarchical config (HKLM/HKCU) → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: centralized hierarchical config (HKLM/HKCU). Current tenet5 status: tenet5 spreads config across JSON + env. Acceptance: write a design note at docs/os_gaps/registry.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: registry. Unlocks: unified config store. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798767Z"
    },
    {
      "id": "WS-OS-pnp",
      "title": "OS upgrade — Plug-and-Play device enumeration → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Plug-and-Play device enumeration. Current tenet5 status: tenet5-linux has libudev but no LIRIL binding. Acceptance: write a design note at docs/os_gaps/pnp.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: pnp. Unlocks: hot-plug awareness. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798769Z"
    },
    {
      "id": "WS-OS-accessibility",
      "title": "OS upgrade — Narrator + UIA tree → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Narrator + UIA tree. Current tenet5 status: tenet5 has Clara voice narration but no UIA. Acceptance: write a design note at docs/os_gaps/accessibility.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: accessibility. Unlocks: full assistive API. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798770Z"
    },
    {
      "id": "WS-OS-network",
      "title": "OS upgrade — Windows Network Location Awareness service → tenet5 parity",
      "axis_domain": "TECHNOLOGY",
      "priority": "low",
      "role_pipeline": [
        "researcher",
        "architect",
        "engineer",
        "editor",
        "gatekeeper"
      ],
      "target_files": [],
      "acceptance": "Close the Windows→tenet5 capability gap for: Windows Network Location Awareness service. Current tenet5 status: tenet5 has NATS but no captive-portal / network-change awareness. Acceptance: write a design note at docs/os_gaps/network.md (or extend existing doc) describing (1) what Windows does, (2) what tenet5-linux can do today, (3) proposed concrete next step toward parity.",
      "context": "Area: network. Unlocks: roaming-aware agents. Filed by liril_os_agent.file_gap_as_backlog().",
      "status": "pending",
      "created_at": "2026-04-19T04:52:26.798773Z"
    }
  ],
  "done_today": [
    {
      "id": "WS-002",
      "finished_at": "2026-04-18T05:30:00Z",
      "liril_verdict": "PASS",
      "reason": "Layer 5 shipped manually via commit b893ce7c; 14/16 PASS on LIRIL audit",
      "committed": true,
      "manual_shipped": true
    },
    {
      "id": "WS-001",
      "finished_at": "2026-04-18T05:18:22Z",
      "liril_verdict": "PASS",
      "reason": "All checks passed and source-anchoring requirements are met.",
      "committed": true
    },
    {
      "id": "WS-009",
      "finished_at": "2026-04-18T05:21:57Z",
      "liril_verdict": "PASS",
      "reason": "The change meets all requirements and passes all checks.",
      "committed": true
    },
    {
      "id": "WS-003",
      "finished_at": "2026-04-18T02:25:00Z",
      "liril_verdict": "PASS",
      "reason": "Manually shipped while GPU systems paused for user gaming. Breadcrumbs component + 4-page wiring; loaded via shell.js.",
      "committed": true,
      "manual_shipped": true
    },
    {
      "id": "WS-015",
      "finished_at": "2026-04-18T11:22:40Z",
      "liril_verdict": "PASS",
      "reason": "Concrete deliverable provided by engineer role",
      "committed": true
    },
    {
      "id": "WS-018",
      "finished_at": "2026-04-18T11:23:33Z",
      "liril_verdict": "PASS",
      "reason": "Engineer role emitted a fenced code block with the literal change",
      "committed": true
    },
    {
      "id": "WS-017",
      "finished_at": "2026-04-18T11:25:08Z",
      "liril_verdict": "PASS",
      "reason": "Added top-level schema_version field as per acceptance criteria",
      "committed": true
    },
    {
      "id": "WS-021",
      "finished_at": "2026-04-18T11:25:52Z",
      "liril_verdict": "PASS",
      "reason": "Engineer role emitted fenced code block with literal change",
      "committed": true
    },
    {
      "id": "WS-010",
      "finished_at": "2026-04-18T22:16:32Z",
      "liril_verdict": "PASS",
      "reason": "Engineer output matches acceptance criterion",
      "committed": true
    },
    {
      "id": "WS-005",
      "finished_at": "2026-04-18T22:21:19Z",
      "liril_verdict": "PASS",
      "reason": "Primary source URL added or marked pending/broken for each campaign.",
      "committed": true
    },
    {
      "id": "WS-013",
      "finished_at": "2026-04-18T22:22:26Z",
      "liril_verdict": "PASS",
      "reason": "Added reader_guidance dict as per acceptance criteria",
      "committed": true
    },
    {
      "id": "WS-019",
      "finished_at": "2026-04-18T22:26:46Z",
      "liril_verdict": "PASS",
      "reason": "Engineer role emitted concrete deliverable with specific primary source citation",
      "committed": true
    },
    {
      "id": "WS-011",
      "finished_at": "2026-04-19T00:10:02Z",
      "liril_verdict": "PASS",
      "reason": "Output matches acceptance criteria",
      "committed": true
    },
    {
      "id": "WS-030",
      "finished_at": "2026-04-19T00:22:55Z",
      "liril_verdict": "PASS",
      "reason": "File updated with reader_guidance",
      "committed": true
    },
    {
      "id": "WS-031",
      "finished_at": "2026-04-19T01:59:14Z",
      "liril_verdict": "PASS",
      "reason": "Added cross_references array with three related page links",
      "committed": true
    },
    {
      "id": "WS-032",
      "finished_at": "2026-04-19T02:09:00Z",
      "liril_verdict": "PASS",
      "reason": "Primary source URL added to each named claimant.",
      "committed": true
    },
    {
      "id": "WS-034-fr",
      "finished_at": "2026-04-19T03:48:46Z",
      "liril_verdict": "PASS",
      "reason": "Output matches acceptance criteria",
      "committed": true
    },
    {
      "id": "WS-033-002",
      "finished_at": "2026-04-19T05:09:19Z",
      "liril_verdict": "PASS",
      "reason": "Engineer output appended one entry to the hartman_timeline_expanded array",
      "committed": true
    },
    {
      "id": "WS-033-006",
      "finished_at": "2026-04-19T05:29:53Z",
      "liril_verdict": "PASS",
      "reason": "Entry appended to hartman_timeline_expanded array",
      "committed": true
    },
    {
      "id": "WS-033-007",
      "finished_at": "2026-04-19T05:33:14Z",
      "liril_verdict": "PASS",
      "reason": "Engineer output appended one entry to hartman_timeline_expanded array",
      "committed": true
    },
    {
      "id": "WS-033-001",
      "finished_at": "2026-04-19T06:08:27Z",
      "liril_verdict": "PASS",
      "reason": "Append operation preserves existing entries",
      "committed": true
    },
    {
      "id": "WS-035",
      "finished_at": "2026-04-19T07:40:43Z",
      "liril_verdict": "PASS",
      "reason": "Added top-level schema_version field as per acceptance criteria",
      "committed": true
    }
  ],
  "recent_rejections": [],
  "stats": {
    "total_backlog": 19,
    "high_priority": 3,
    "medium_priority": 11,
    "low_priority": 5,
    "completed_today": 22,
    "commit_pass_rate_pct": 100.0,
    "current_sprint_progress_pct": 115.8
  },
  "board_visibility": {
    "public_page": "liril-dev-team.html",
    "update_cadence_minutes": 15,
    "commit_policy_enforced_by": [
      ".git/hooks/commit-msg (rejects jargon subject lines)",
      "tools/liril_dev_team.py (routes changes through LIRIL PASS/WATCH/FAIL gate before commit)",
      "docs/install-commit-msg-hook.sh (re-installable after fresh clone)"
    ]
  },
  "generated_at_utc": "2026-04-19T06:28:16.203753Z"
}