{"id":"79a13832-e220-42d9-8d35-e90299ce0de1","flags":[],"phase":"limited-scope pilot","policy":{"publication":"Automated observations only; findings require human review","replication":"Fixed pool; workers are recreated on scheduled runs; no recursive spawning","financialActions":false,"maxDivisionRoles":8,"maxConcurrentWorkers":4},"version":"0.3.0","evidence":[{"id":"treasury-debt","url":"https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v2/accounting/od/debt_to_penny?sort=-record_date&page[size]=2&fields=record_date,tot_pub_debt_out_amt,debt_held_public_amt,intragov_hold_amt","title":"Treasury Fiscal Data: Debt to the Penny","status":"collected","records":[{"date":"2026-11-03","totalDebt":40547403570984.82,"publicDebt":32765330118710.62,"intragovernmentalDebt":7782073452274.2},{"date":"2026-11-02","totalDebt":40502080966097.14,"publicDebt":32719901942674.43,"intragovernmentalDebt":7782179023422.71}],"division":"treasury","collectedAt":"2026-11-05T03:04:27.324Z","limitations":["Published Treasury values are collected, not independently certified. Daily borrowing changes do not establish wrongdoing."],"payloadSha256":"9935e2e0086d2a1f8bcb6923cfeea04f49341f78111c54a3e1d8f84e2d1020a8"},{"id":"gao","url":"https://www.gao.gov/reports-testimonies","error":"HTTP 403","title":"GAO reports and testimonies","status":"unavailable","records":[],"division":"agency","collectedAt":"2026-11-05T03:04:27.324Z","limitations":["Unavailable data is not evidence of a financial irregularity."]},{"id":"fac","url":"https://www.fac.gov/","title":"Federal Audit Clearinghouse","status":"collected","records":[{"title":"The Federal Audit Clearinghouse","publicationLinks":["https://www.fac.gov/assets/agency-contacts/2025-agency-contacts.pdf","https://www.fac.gov/assets/agency-contacts/2025-agency-contacts.pdf"]}],"division":"agency","collectedAt":"2026-11-05T03:04:27.324Z","limitations":["Publication index availability only. Linked reports have not been read, extracted, or audited by this collector."],"payloadSha256":"84529a16c3a599dd9bb9829fbbfd037979c172af49ae8d50d3c0ac78910a03bc"},{"id":"usaspending","url":"https://api.usaspending.gov/api/v2/search/spending_by_category/awarding_agency/","title":"USAspending contract spending by awarding agency","period":{"end":"2026-11-05","start":"2026-10-01"},"status":"collected","records":[{"name":"Department of Energy","amount":5930712547.65,"agencyId":930},{"name":"Department of Veterans Affairs","amount":4752833703.31,"agencyId":561},{"name":"National Aeronautics and Space Administration","amount":936891646.89,"agencyId":862},{"name":"Department of Homeland Security","amount":718055198.3,"agencyId":766},{"name":"Department of Justice","amount":547213735.46,"agencyId":252},{"name":"General Services Administration","amount":497599279.32,"agencyId":614},{"name":"Department of Health and Human Services","amount":487341591.6,"agencyId":806},{"name":"Department of the Treasury","amount":385269560.87,"agencyId":456},{"name":"Department of Agriculture","amount":193019354.4,"agencyId":95},{"name":"Department of Transportation","amount":155137570.43,"agencyId":731}],"division":"contracts","collectedAt":"2026-11-05T03:04:27.324Z","limitations":["Up to ten awarding-agency aggregates, current fiscal year to date. These are obligations, not proof of payment, waste, or fraud."],"payloadSha256":"6fbe49c688297d0bc1e62d072a31b06580b5049103c3fd57ae55626abf1a2d1e"},{"id":"fed-statements","url":"https://www.federalreserve.gov/aboutthefed/audited-annual-financial-statements.htm","title":"Federal Reserve audited annual financial statements","status":"collected","records":[{"title":"Federal Reserve Board - Federal Reserve System Audited Annual Financial Statements","publicationLinks":["https://www.federalreserve.gov/aboutthefed/files/combinedfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/atlantafinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/bostonfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/msllcfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/chicagofinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/clevelandfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/dallasfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/kansascityfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/minneapolisfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/newyorkfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/philadelphiafinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/richmondfinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/sanfranciscofinstmt2025.pdf","https://www.federalreserve.gov/aboutthefed/files/stlouisfinstmt2025.pdf"]}],"division":"fed","collectedAt":"2026-11-05T03:04:27.324Z","limitations":["Publication index availability only. Linked reports have not been read, extracted, or audited by this collector."],"payloadSha256":"ef7c83e4bc45d66d550bf7937590737e7956b9b7be242d1b4766ac6ac8f0c0d7"}],"findings":[],"divisions":[{"id":"treasury","name":"Treasury Reconciliation","scope":"Published federal debt records; data integrity checks, not a completed reconciliation.","status":"operational-limited","summary":"1/1 public sources collected. Published federal debt records; data integrity checks, not a completed reconciliation.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":["treasury-debt"],"evidenceCount":1,"completedAudit":false},{"id":"agency","name":"Agency Audit","scope":"GAO and Federal Audit Clearinghouse publication monitoring; not an agency financial audit.","status":"degraded","summary":"1/2 public sources collected. GAO and Federal Audit Clearinghouse publication monitoring; not an agency financial audit.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":["gao","fac"],"evidenceCount":1,"completedAudit":false},{"id":"contracts","name":"Contract Oversight","scope":"Published federal contract spending by awarding agency; not contract-level fraud detection.","status":"operational-limited","summary":"1/1 public sources collected. Published federal contract spending by awarding agency; not contract-level fraud detection.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":["usaspending"],"evidenceCount":1,"completedAudit":false},{"id":"fed","name":"Federal Reserve Review","scope":"Published audited financial statement availability; not an independent central-bank audit.","status":"operational-limited","summary":"1/1 public sources collected. Published audited financial statement availability; not an independent central-bank audit.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":["fed-statements"],"evidenceCount":1,"completedAudit":false},{"id":"anomaly","name":"Anomaly Detection","scope":"Deterministic source-quality and comparable-record screening; all flags require review.","status":"operational-limited","summary":"0 unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":[],"evidenceCount":0,"completedAudit":false},{"id":"recovery","name":"Recovery Analysis","scope":"Review queue only; no recovery estimate or legal determination without documented evidence and human review.","status":"awaiting-human-review","summary":"Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":[],"evidenceCount":0,"completedAudit":false},{"id":"dashboard","name":"Public Dashboard","scope":"Evidence availability, run history, and unreviewed screening results.","status":"operational-limited","summary":"Run status and evidence records prepared for publication.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":[],"evidenceCount":0,"completedAudit":false},{"id":"education","name":"People’s Truth & Transparency","scope":"Source-linked explanations and uncertainty statements.","status":"operational-limited","summary":"Source descriptions and limitations prepared; no allegations or audited conclusions.","lastRunAt":"2026-11-05T03:04:27.324Z","evidenceIds":[],"evidenceCount":0,"completedAudit":false}],"education":[{"text":"This report records public-source availability and limited automated checks. A collected source is not a completed audit. A screening flag is not evidence of fraud.","title":"What this report establishes"},{"text":"No recoverable amount is asserted. Legal authority and independently reviewed evidence are required before any recovery recommendation.","title":"What recovery means here"}],"executive":{"status":"attention-required","summary":"4/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":1,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"timestamp":"2026-11-05T03:04:27.324Z","generatedAt":"2026-11-05T03:04:27.324Z","previousRunAt":"2026-11-05T02:17:54.059Z","project":"Jubilee","lastRun":"2026-11-05T03:04:27.324Z","nextRun":"2026-11-05T04:00:00.000Z","stale":false,"paused":false,"reports":[{"id":"79a13832-e220-42d9-8d35-e90299ce0de1","createdAt":"2026-11-05T03:04:27.312Z","executive":{"status":"attention-required","summary":"4/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":1,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"url":"/api/reports/79a13832-e220-42d9-8d35-e90299ce0de1"},{"id":"0d24a881-8b0c-4110-ad0b-8e32a15be218","createdAt":"2026-11-05T02:17:54.050Z","executive":{"status":"attention-required","summary":"4/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":1,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"url":"/api/reports/0d24a881-8b0c-4110-ad0b-8e32a15be218"},{"id":"b050d861-8bc6-4fd8-9e57-ea8f3cf45175","createdAt":"2026-11-05T02:17:07.620Z","executive":{"status":"attention-required","summary":"4/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":1,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"url":"/api/reports/b050d861-8bc6-4fd8-9e57-ea8f3cf45175"},{"id":"67dafc88-f68b-4701-b6d4-4891dc0bb062","createdAt":"2026-11-05T02:15:41.303Z","executive":{"status":"attention-required","summary":"3/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore Treasury Fiscal Data: Debt to the Penny: HTTP 400","Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":2,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"url":"/api/reports/67dafc88-f68b-4701-b6d4-4891dc0bb062"},{"id":"b3b31292-ced6-4065-9334-d76962257816","createdAt":"2026-11-05T02:13:55.892Z","executive":{"status":"attention-required","summary":"3/5 sources collected; 0 unreviewed screening flags; 0 verified findings; 0 completed audits.","decision":"Continue limited public-source monitoring. Do not publish flags as verified findings or recovery claims.","nextActions":["Restore Treasury Fiscal Data: Debt to the Penny: HTTP 400","Restore GAO reports and testimonies: HTTP 403"],"completedAudits":0,"reviewQueueCount":0,"verifiedFindings":0,"recoverableAmount":null,"unavailableSources":2,"humanReviewRequired":true,"implementationBacklog":["Full financial statement extraction and reconciliation","Contract-level transaction checks and historical baselines","Independent evidence review and reviewer sign-off","Documented recovery authority assessment"]},"url":"/api/reports/b3b31292-ced6-4065-9334-d76962257816"}],"cloudReview":{"id":"e8960c69-d5d8-4b0c-8130-0a1f89b29fce","model":"grok-4.7","usage":{"calls":9,"inputTokens":94132,"outputTokens":28323},"status":"review-ready","summary":"8/8 division development reviews generated. Draft proposals require testing before implementation.","provider":"xai","executive":{"checks":["Apply only the Treasury patch to a local engine.mjs copy; do not merge the other division diffs in the same change.","Run runAudit with decimal-string debt components that sum exactly and confirm status collected, componentResidualCents \"0\", and no debt-components flag.","Repeat with the public component short by 1.50 and confirm componentResidualCents \"150\", one requires-human-review flag, findings empty, and recoverableAmount null.","Pass a previous audit with the same record_date and a total differing by more than one cent; confirm a debt-revision flag names both evidence ids and does not assert wrongdoing.","Pass the supplied 2026-11-03 and 2026-11-02 rows and confirm zero residuals and no day-change flag when the move is under 1 percent.","Confirm an amount above Number.MAX_SAFE_INTEGER cents fails the schema check instead of being rounded, and that this draft remains untested until those local runs pass."],"status":"draft-unvalidated","summary":"All eight division reviews are draft-unvalidated. None establishes a finding, completed audit, recovery authority, or recovered amount. The live engine already screens Treasury debt with IEEE doubles and does not record a cent residual or same-date revision; that is the only implemented financial identity check and the next change.","proposal":"Prioritize the Treasury proposal only: parse Debt to the Penny amounts to integer cents before Number conversion, store componentResidualCents, flag requires-human-review only when the absolute residual exceeds 100 cents, and add a separate same-date revision flag when a prior collected snapshot total differs. Keep the two-row public fetch and the non-certification limitation. Defer, in order: FAC/GAO PDF href dedupe without access-control bypass; dashboard timestamp, previous-run, and unavailable labeling; education notes built from this run’s evidence; then one combined contract/anomaly screen for duplicate agencies, negative amounts, period bounds, ranking, and empty indexes. Do not apply the overlapping contract and anomaly patches together. Recovery stays a queue with recoverableAmount null and must not treat flag ids as verified evidence.","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@ -22,6 +22,20 @@ const clean = value => String(value ?? '').replace(/<[^>]*>/g, ' ').replace(/\\\n const money = value => value === null || value === undefined || String(value).trim() === '' ? null : Number.isFinite(Number(value)) ? Number(value) : null;\n const dateValid = value => /^\\d{4}-\\d{2}-\\d{2}$/.test(value || '') && !Number.isNaN(Date.parse(value));\n \n+const amountCents = value => {\n+  if (typeof value === 'number') {\n+    if (!Number.isFinite(value)) return null;\n+    const rounded = Math.round(value * 100);\n+    if (!Number.isSafeInteger(rounded) || Math.abs(value * 100 - rounded) > 1e-4) return null;\n+    return BigInt(rounded);\n+  }\n+  const text = String(value ?? '').trim();\n+  if (!/^-?\\d+(?:\\.\\d{1,2})?$/.test(text)) return null;\n+  const neg = text.startsWith('-');\n+  const [whole, frac = ''] = text.slice(neg ? 1 : 0).split('.');\n+  const cents = BigInt(whole) * 100n + BigInt(frac.padEnd(2, '0').slice(0, 2));\n+  return neg ? -cents : cents;\n+};\n+\n async function pooledMap(items, work, concurrency = 4) {\n@@ -49,8 +63,12 @@ async function collect(source, fetcher, now, timeoutMs) {\n     if (source.id === 'treasury-debt') {\n       const data = JSON.parse(body);\n       if (!Array.isArray(data.data) || !data.data.length) throw new Error('No Treasury records returned');\n-      evidence.records = data.data.slice(0, 2).map(row => ({ date: row.record_date, totalDebt: money(row.tot_pub_debt_out_amt), publicDebt: money(row.debt_held_public_amt), intragovernmentalDebt: money(row.intragov_hold_amt) }));\n-      if (evidence.records.some(row => !dateValid(row.date) || row.totalDebt === null || row.publicDebt === null || row.intragovernmentalDebt === null)) throw new Error('Treasury record schema or numeric fields invalid');\n+      evidence.records = data.data.slice(0, 2).map(row => {\n+        const totalCents = amountCents(row.tot_pub_debt_out_amt), publicCents = amountCents(row.debt_held_public_amt), intragovCents = amountCents(row.intragov_hold_amt);\n+        return { date: row.record_date, totalDebt: money(row.tot_pub_debt_out_amt), publicDebt: money(row.debt_held_public_amt), intragovernmentalDebt: money(row.intragov_hold_amt), totalCents: totalCents?.toString() ?? null, componentResidualCents: totalCents === null || publicCents === null || intragovCents === null ? null : (totalCents - publicCents - intragovCents).toString() };\n+      });\n+      if (evidence.records.some(row => !dateValid(row.date) || row.totalDebt === null || row.componentResidualCents === null)) throw new Error('Treasury record schema or numeric fields invalid');\n       evidence.records.sort((a, b) => b.date.localeCompare(a.date));\n       evidence.limitations.push('Published Treasury values are collected, not independently certified. Daily borrowing changes do not establish wrongdoing.');\n+      evidence.limitations.push('componentResidualCents is an automated identity check in cents, not a completed reconciliation.');\n     } else if (source.id === 'usaspending') {\n@@ -86,8 +104,8 @@ export async function runAudit(previous = null, options = {}) {\n   const debt = evidence.find(item => item.id === 'treasury-debt');\n   if (debt.status === 'collected') {\n     for (const row of debt.records) {\n-      const residual = row.totalDebt - row.publicDebt - row.intragovernmentalDebt;\n-      if (Math.abs(residual) > 1) flags.push({ id: `debt-components-${row.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Published debt components differ from the total by $${residual.toFixed(2)} on ${row.date}. Check definitions, rounding, and source data before drawing conclusions.` });\n+      const residual = BigInt(row.componentResidualCents);\n+      if (residual > 100n || residual < -100n) flags.push({ id: `debt-components-${row.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Published debt components differ from the total by ${residual.toString()} cents on ${row.date}. Check definitions, rounding, and source data before drawing conclusions.` });\n     }\n     const latest = debt.records[0];\n     const ageDays = (Date.parse(now.toISOString().slice(0, 10)) - Date.parse(latest.date)) / 86400000;\n@@ -96,6 +114,9 @@ export async function runAudit(previous = null, options = {}) {\n       const change = (debt.records[0].totalDebt - debt.records[1].totalDebt) / debt.records[1].totalDebt;\n       if (Math.abs(change) > 0.01) flags.push({ id: `debt-change-${latest.date}`, division: 'treasury', category: 'screening', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n     }\n+    const prior = previous?.evidence?.find(item => item.id === 'treasury-debt' && item.status === 'collected');\n+    const priorRow = prior?.records?.find(row => row.date === latest.date && row.totalCents);\n+    if (priorRow && latest.totalCents && BigInt(priorRow.totalCents) !== BigInt(latest.totalCents)) flags.push({ id: `debt-revision-${latest.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id, prior.id].filter(Boolean), explanation: `Published total for ${latest.date} differs from the prior collected snapshot. Compare source revisions; this is not a finding or recovery claim.` });\n   }\n   const divisionResults = divisions.map(division => {\n","targetFile":"engine.mjs"},"timestamp":"2026-11-05T02:51:38.944Z","deploymentMode":"Draft code proposals; testing and deployment are not automated by this service.","reviewRevision":"low-effort-v1","divisionReviews":[{"name":"Treasury Reconciliation","checks":["Run runAudit with a fixture whose tot_pub_debt_out_amt, debt_held_public_amt, and intragov_hold_amt are decimal strings that sum exactly, and confirm status collected, componentResidualCents is \"0\", and no debt-components flag.","Repeat with the public component short by 1.50 and confirm componentResidualCents is \"150\" and one requires-human-review flag, with findings still empty and recoverableAmount null.","Pass a previous audit whose latest treasury total for the same date differs by more than one cent and confirm a debt-revision flag names both evidence ids without asserting wrongdoing.","Pass the supplied 2026-11-03 and 2026-11-02 rows and confirm residuals are zero and the day-change flag stays absent because the move is under 1 percent.","Confirm an amount above Number.MAX_SAFE_INTEGER cents fails the schema check instead of being silently rounded."],"status":"draft-unvalidated","summary":"Treasury collection succeeded for two published Debt to the Penny dates, and the supplied rows add exactly in cents. The collector still checks that identity with IEEE doubles and does not record the residual or a same-date revision against the prior run.","proposal":"Keep the existing two-row public fetch and the explicit non-certification limitation. Parse each Treasury amount to integer cents before Number conversion, store componentResidualCents on the collected row, and raise the existing data-quality flag only when the absolute residual exceeds 100 cents. If a prior audit object contains a collected treasury-debt row with the same record_date and a different total, add a separate requires-human-review data-quality flag for a published-figure revision. Do not treat either flag as a finding, reconciliation, or recovery.","divisionId":"treasury","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@ -22,6 +22,16 @@ const clean = value => String(value ?? '').replace(/<[^>]*>/g, ' ').replace(/\\\n const money = value => value === null || value === undefined || String(value).trim() === '' ? null : Number.isFinite(Number(value)) ? Number(value) : null;\n const dateValid = value => /^\\d{4}-\\d{2}-\\d{2}$/.test(value || '') && !Number.isNaN(Date.parse(value));\n \n+const amountCents = value => {\n+  if (typeof value === 'number') {\n+    if (!Number.isFinite(value)) return null;\n+    const rounded = Math.round(value * 100);\n+    if (!Number.isSafeInteger(rounded) || Math.abs(value * 100 - rounded) > 1e-4) return null;\n+    return BigInt(rounded);\n+  }\n+  const text = String(value ?? '').trim();\n+  if (!/^-?\\d+(?:\\.\\d{1,2})?$/.test(text)) return null;\n+  const neg = text.startsWith('-');\n+  const [whole, frac = ''] = text.slice(neg ? 1 : 0).split('.');\n+  const cents = BigInt(whole) * 100n + BigInt(frac.padEnd(2, '0').slice(0, 2));\n+  return neg ? -cents : cents;\n+};\n+\n async function pooledMap(items, work, concurrency = 4) {\n@@ -49,8 +59,10 @@ async function collect(source, fetcher, now, timeoutMs) {\n     if (source.id === 'treasury-debt') {\n       const data = JSON.parse(body);\n       if (!Array.isArray(data.data) || !data.data.length) throw new Error('No Treasury records returned');\n-      evidence.records = data.data.slice(0, 2).map(row => ({ date: row.record_date, totalDebt: money(row.tot_pub_debt_out_amt), publicDebt: money(row.debt_held_public_amt), intragovernmentalDebt: money(row.intragov_hold_amt) }));\n-      if (evidence.records.some(row => !dateValid(row.date) || row.totalDebt === null || row.publicDebt === null || row.intragovernmentalDebt === null)) throw new Error('Treasury record schema or numeric fields invalid');\n+      evidence.records = data.data.slice(0, 2).map(row => {\n+        const totalCents = amountCents(row.tot_pub_debt_out_amt), publicCents = amountCents(row.debt_held_public_amt), intragovCents = amountCents(row.intragov_hold_amt);\n+        return { date: row.record_date, totalDebt: money(row.tot_pub_debt_out_amt), publicDebt: money(row.debt_held_public_amt), intragovernmentalDebt: money(row.intragov_hold_amt), totalCents: totalCents?.toString() ?? null, componentResidualCents: totalCents === null || publicCents === null || intragovCents === null ? null : (totalCents - publicCents - intragovCents).toString() };\n+      });\n+      if (evidence.records.some(row => !dateValid(row.date) || row.totalDebt === null || row.componentResidualCents === null)) throw new Error('Treasury record schema or numeric fields invalid');\n       evidence.records.sort((a, b) => b.date.localeCompare(a.date));\n       evidence.limitations.push('Published Treasury values are collected, not independently certified. Daily borrowing changes do not establish wrongdoing.');\n+      evidence.limitations.push('componentResidualCents is an automated identity check in cents, not a completed reconciliation.');\n     } else if (source.id === 'usaspending') {\n@@ -86,8 +98,8 @@ export async function runAudit(previous = null, options = {}) {\n   const debt = evidence.find(item => item.id === 'treasury-debt');\n   if (debt.status === 'collected') {\n     for (const row of debt.records) {\n-      const residual = row.totalDebt - row.publicDebt - row.intragovernmentalDebt;\n-      if (Math.abs(residual) > 1) flags.push({ id: `debt-components-${row.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Published debt components differ from the total by $${residual.toFixed(2)} on ${row.date}. Check definitions, rounding, and source data before drawing conclusions.` });\n+      const residual = BigInt(row.componentResidualCents);\n+      if (residual > 100n || residual < -100n) flags.push({ id: `debt-components-${row.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Published debt components differ from the total by ${residual.toString()} cents on ${row.date}. Check definitions, rounding, and source data before drawing conclusions.` });\n     }\n     const latest = debt.records[0];\n     const ageDays = (Date.parse(now.toISOString().slice(0, 10)) - Date.parse(latest.date)) / 86400000;\n@@ -96,6 +108,10 @@ export async function runAudit(previous = null, options = {}) {\n       const change = (debt.records[0].totalDebt - debt.records[1].totalDebt) / debt.records[1].totalDebt;\n       if (Math.abs(change) > 0.01) flags.push({ id: `debt-change-${latest.date}`, division: 'treasury', category: 'screening', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n     }\n+    const prior = previous?.evidence?.find(item => item.id === 'treasury-debt' && item.status === 'collected');\n+    const priorRow = prior?.records?.find(row => row.date === latest.date && row.totalCents);\n+    if (priorRow && latest.totalCents && BigInt(priorRow.totalCents) !== BigInt(latest.totalCents)) flags.push({ id: `debt-revision-${latest.date}`, division: 'treasury', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id, prior.id].filter(Boolean), explanation: `Published total for ${latest.date} differs from the prior collected snapshot. Compare source revisions; this is not a finding or recovery claim.` });\n   }\n   const divisionResults = divisions.map(division => {\n","targetFile":"engine.mjs"},{"name":"Agency Audit","checks":["Replay the stored FAC HTML body through the HTML branch and confirm publicationLinks has one entry, https://www.fac.gov/assets/agency-contacts/2025-agency-contacts.pdf, not two.","Feed a fixture with a malformed href, a javascript: PDF-looking href, and two identical relative PDF hrefs; expect only one https URL and status collected, not a thrown URL error.","Replay the GAO HTTP 403 path and confirm status stays unavailable, records stay empty, error remains HTTP 403, and no recoverable amount or verified finding is created.","Confirm a page with a valid title and no PDF hrefs is collected with an empty publicationLinks array and the new no-link limitation."],"status":"draft-unvalidated","summary":"Agency Audit is degraded: GAO reports returned HTTP 403 and FAC collected an index whose two PDF links are the same URL. That is a publication-index quality defect, not a financial finding or completed audit.","proposal":"Keep GAO marked unavailable on HTTP 403; do not spoof a browser or bypass access controls. In the HTML collector used by FAC and GAO, parse PDF hrefs safely, keep only http(s) URLs, dedupe them, and cap at 20 before storing publicationLinks. If none remain, add an explicit limitation that the index was collected but no unique PDF links were extracted. Do not read, extract, or audit linked PDFs in this change.","divisionId":"agency","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@ -88,7 +88,18 @@ async function collect(source, fetcher, now, timeoutMs) {\n       const title = clean(body.match(/<title[^>]*>([\\s\\S]*?)<\\/title>/i)?.[1]);\n       if (!title || !/<(?:html|body|main)[\\s>]/i.test(body) || /access denied|just a moment|captcha/i.test(title)) throw new Error('Expected public publication page was not returned');\n-      evidence.records = [{ title, publicationLinks: [...body.matchAll(/href=[\"']([^\"']+\\.pdf(?:\\?[^\"']*)?)[\"']/gi)].slice(0, 20).map(match => new URL(match[1], source.url).href) }];\n+      const publicationLinks = [];\n+      const seenLinks = new Set();\n+      for (const match of body.matchAll(/href=[\"']([^\"']+\\.pdf(?:\\?[^\"']*)?)[\"']/gi)) {\n+        if (publicationLinks.length >= 20) break;\n+        let parsed;\n+        try { parsed = new URL(match[1], source.url); } catch { continue; }\n+        if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') continue;\n+        if (seenLinks.has(parsed.href)) continue;\n+        seenLinks.add(parsed.href);\n+        publicationLinks.push(parsed.href);\n+      }\n+      evidence.records = [{ title, publicationLinks }];\n+      if (!publicationLinks.length) evidence.limitations.push('Index collected, but no unique http(s) PDF links were extracted. This is not a completed audit.');\n       evidence.limitations.push('Publication index availability only. Linked reports have not been read, extracted, or audited by this collector.');\n     }\n     evidence.status = 'collected';\n","targetFile":"engine.mjs"},{"name":"Contract Oversight","checks":["Run the collector against a fixture whose results match the supplied 10 agency rows and confirm status stays collected, no contract flag is added, and limitations still say obligations are not proof of payment, waste, or fraud.","Feed a collected usaspending fixture with a repeated agencyId and confirm exactly one contracts-duplicates flag with status requires-human-review and evidenceIds [usaspending].","Feed a negative amount, an end date before the start date, and an out-of-order amount list as separate fixtures; confirm one corresponding data-quality flag each and that findings, verifiedFindings, and recoverableAmount stay empty or null.","Confirm an unavailable usaspending source adds no contract flag and that the anomaly summary no longer says screening is limited to Treasury rules when contract flags exist."],"status":"draft-unvalidated","summary":"Contract Oversight collected one USAspending awarding-agency aggregate for FY2026 to date and correctly labels amounts as obligations, not payments, waste, or fraud. The engine accepts that payload without checking duplicate agencies, negative amounts, period bounds, or non-increasing ranking, and the anomaly summary still says screening is Treasury-only.","proposal":"Add untested data-quality screening in runAudit for the collected usaspending evidence only: flag repeated agency id or name, any negative obligation, an invalid or inverted period, and a top-ten list that is not in non-increasing amount order. Keep every flag requires-human-review and explicitly not a fraud or recovery finding. Update the anomaly summary so it no longer claims screening is limited to Treasury rules. Do not add contract-level transaction checks, baselines, or recovery estimates.","divisionId":"contracts","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@\n-      explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n+      explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n     }\n   }\n+  const contracts = evidence.find(item => item.id === 'usaspending');\n+  if (contracts?.status === 'collected') {\n+    const day = now.toISOString().slice(0, 10);\n+    const flag = (suffix, explanation) => flags.push({ id: `contracts-${suffix}-${day}`, division: 'contracts', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [contracts.id], explanation });\n+    const ids = contracts.records.map(row => String(row.agencyId ?? ''));\n+    const names = contracts.records.map(row => row.name);\n+    if (new Set(ids).size !== ids.length || new Set(names).size !== names.length) flag('duplicates', 'Awarding-agency aggregates repeat an agency id or name. Check the source response before comparing obligation totals. This is not a fraud or recovery finding.');\n+    if (contracts.records.some(row => row.amount < 0)) flag('negative-amount', 'At least one awarding-agency obligation amount is negative. Confirm source sign conventions before use. This is not evidence of improper payment.');\n+    const period = contracts.period;\n+    if (!period || !dateValid(period.start) || !dateValid(period.end) || period.end < period.start) flag('period', 'The awarding-agency aggregate period is missing, invalid, or ends before it starts. Do not treat the totals as a verified fiscal-year figure.');\n+    if (contracts.records.some((row, index) => index > 0 && row.amount > contracts.records[index - 1].amount)) flag('ranking', 'Awarding-agency aggregates are not in non-increasing amount order. The API ranking was not independently verified. This is a data-quality screen, not a fraud finding.');\n+  }\n@@\n-    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n+    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury and awarding-agency aggregate integrity rules, not contract-level fraud detection.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n","targetFile":"engine.mjs"},{"name":"Federal Reserve Review","checks":["Run collect against a fixture containing the 14 supplied 2025 statement hrefs and assert latestYear is 2025, missing slugs are empty, status is collected, and no flag is added.","Remove one known slug from the fixture and assert one fed-index-coverage flag with status requires-human-review, while completedAudit stays false and recoverableAmount stays null.","Place more than 20 unrelated PDF hrefs before the statement hrefs and assert the statement links are still retained without any PDF fetch.","Confirm the evidence limitation still states that linked reports were not read, extracted, or audited.","Confirm an HTTP error on the index page still yields unavailable evidence and does not create a coverage flag."],"status":"draft-unvalidated","summary":"Federal Reserve review only confirms the public audited-statement index was collected. Fourteen 2025 PDF links were indexed and hashed as a page payload; none were opened, extracted, or audited. The next change should screen index-link coverage without treating missing links as financial findings.","proposal":"Keep this division limited to publication availability. In engine.mjs, prefer Federal Reserve finstmt PDF hrefs over the first 20 generic PDFs, record the newest filename year and which of the 14 known statement slugs are present, and add a requires-human-review data-quality flag only when an expected slug is absent from that index. Do not fetch PDFs, parse statement amounts, or change completedAudit, verifiedFindings, or recoverableAmount.","divisionId":"fed","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@ -22,6 +22,22 @@ const clean = value => String(value ?? '').replace(/<[^>]*>/g, ' ').replace(/\\\n const money = value => value === null || value === undefined || String(value).trim() === '' ? null : Number.isFinite(Number(value)) ? Number(value) : null;\n const dateValid = value => /^\\d{4}-\\d{2}-\\d{2}$/.test(value || '') && !Number.isNaN(Date.parse(value));\n+const FED_STATEMENT_SLUGS = ['combined','atlanta','boston','msllc','chicago','cleveland','dallas','kansascity','minneapolis','newyork','philadelphia','richmond','sanfrancisco','stlouis'];\n+const fedStatementMatch = href => String(href).match(/\\/([a-z]+)finstmt(\\d{4})\\.pdf(?:\\?|$)/i);\n+function fedIndexCoverage(links) {\n+  const byYear = new Map();\n+  let recognized = 0;\n+  for (const href of links) {\n+    const match = fedStatementMatch(href);\n+    if (!match) continue;\n+    recognized += 1;\n+    const year = match[2];\n+    if (!byYear.has(year)) byYear.set(year, new Set());\n+    byYear.get(year).add(match[1].toLowerCase());\n+  }\n+  const latestYear = [...byYear.keys()].sort().at(-1) || null;\n+  const present = latestYear ? FED_STATEMENT_SLUGS.filter(slug => byYear.get(latestYear).has(slug)) : [];\n+  return { latestYear, present, missing: FED_STATEMENT_SLUGS.filter(slug => !present.includes(slug)), recognized, linkCount: links.length };\n+}\n \n async function pooledMap(items, work, concurrency = 4) {\n@@ -64,7 +80,12 @@ async function collect(source, fetcher, now, timeoutMs) {\n       const title = clean(body.match(/<title[^>]*>([\\s\\S]*?)<\\/title>/i)?.[1]);\n       if (!title || !/<(?:html|body|main)[\\s>]/i.test(body) || /access denied|just a moment|captcha/i.test(title)) throw new Error('Expected public publication page was not returned');\n-      evidence.records = [{ title, publicationLinks: [...body.matchAll(/href=[\"']([^\"']+\\.pdf(?:\\?[^\"']*)?)[\"']/gi)].slice(0, 20).map(match => new URL(match[1], source.url).href) }];\n+      const pdfLinks = [...body.matchAll(/href=[\"']([^\"']+\\.pdf(?:\\?[^\"']*)?)[\"']/gi)].map(match => new URL(match[1], source.url).href);\n+      const statementLinks = pdfLinks.filter(href => fedStatementMatch(href));\n+      const publicationLinks = (statementLinks.length ? statementLinks : pdfLinks).slice(0, 20);\n+      evidence.records = [{ title, publicationLinks }];\n+      if (source.id === 'fed-statements') evidence.indexCoverage = fedIndexCoverage(publicationLinks);\n       evidence.limitations.push('Publication index availability only. Linked reports have not been read, extracted, or audited by this collector.');\n+      if (source.id === 'fed-statements') evidence.limitations.push('Filename coverage is an index-link screen only. Missing or extra links are not a financial finding.');\n     }\n     evidence.status = 'collected';\n   } catch (error) {\n@@ -90,6 +111,10 @@ export async function runAudit(previous = null, options = {}) {\n       if (Math.abs(change) > 0.01) flags.push({ id: `debt-change-${latest.date}`, division: 'treasury', category: 'screening', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n     }\n   }\n+  const fed = evidence.find(item => item.id === 'fed-statements');\n+  if (fed?.status === 'collected' && fed.indexCoverage?.missing?.length) {\n+    flags.push({ id: `fed-index-coverage-${fed.indexCoverage.latestYear || 'unknown'}`, division: 'fed', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [fed.id], explanation: `The collected Federal Reserve statement index does not include expected filename slugs for ${fed.indexCoverage.latestYear || 'a recognized year'}: ${fed.indexCoverage.missing.join(', ')}. This checks link availability only; reports were not read or audited.` });\n+  }\n   const divisionResults = divisions.map(division => {\n","targetFile":"engine.mjs"},{"name":"Anomaly Detection","checks":["Run runAudit with a fixture whose USAspending results repeat one agency id and whose other aggregates are unique; expect exactly one usaspending-duplicate flag, status requires-human-review, evidenceIds ['usaspending'], findings [], and recoverableAmount null.","Run runAudit with unique USAspending rows and an HTML body containing one PDF href; expect neither a duplicate flag nor an empty-index flag.","Run runAudit with a collected publication page that has a valid title and no PDF href; expect one index-links flag for that source id and no completedAudit true.","Run runAudit with Treasury unavailable and a duplicate USAspending page; expect anomaly status blocked, the duplicate flag still tied only to collected contract evidence, and no inference from the missing Treasury source.","Confirm new explanations mention review and source comparison only, and that executive.verifiedFindings and completedAudits remain 0."],"status":"draft-unvalidated","summary":"Anomaly screening only applies Treasury component, freshness, and day-change rules. Collected USAspending aggregates and publication indexes are counted as sources but are not screened for duplicate comparable records or empty link indexes.","proposal":"Extend deterministic screening in runAudit, after the existing Treasury checks, without changing collection, findings, or recovery fields. For a collected USAspending page, flag a repeated agencyId or name once as contracts data-quality requiring human review. For a collected HTML publication index with zero PDF links, flag that source once as source-quality requiring human review. Keep anomaly blocked when Treasury is unavailable, and update its limited-mode summary so it no longer says screening is Treasury-only. Do not treat duplicates, empty indexes, or unavailable sources as fraud or recoverable amounts.","divisionId":"anomaly","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@\n-      if (Math.abs(change) > 0.01) flags.push({ id: `debt-change-${latest.date}`, division: 'treasury', category: 'screening', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n+      if (Math.abs(change) > 0.01) flags.push({ id: `debt-change-${latest.date}`, division: 'treasury', category: 'screening', status: 'requires-human-review', severity: 'review', evidenceIds: [debt.id], explanation: `Debt changed ${(change * 100).toFixed(2)}% between ${debt.records[1].date} and ${latest.date}. A 1% screening threshold was exceeded; borrowing and timing may explain the change.` });\n     }\n   }\n+  for (const item of evidence) {\n+    if (item.status !== 'collected') continue;\n+    if (item.id === 'usaspending') {\n+      const seen = new Set();\n+      for (const row of item.records) {\n+        const key = String(row.agencyId ?? row.name);\n+        if (seen.has(key)) {\n+          const slug = key.replace(/[^A-Za-z0-9_-]/g, '').slice(0, 40) || 'row';\n+          const id = `usaspending-duplicate-${slug}`;\n+          if (!flags.some(flag => flag.id === id)) flags.push({ id, division: 'contracts', category: 'data-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [item.id], explanation: `USAspending aggregate key ${key} appears more than once in the collected page. Compare the source rows before treating the amounts as distinct; duplication is not evidence of fraud.` });\n+        }\n+        seen.add(key);\n+      }\n+    } else if (Array.isArray(item.records[0]?.publicationLinks) && item.records[0].publicationLinks.length === 0) {\n+      flags.push({ id: `index-links-${item.id}`, division: item.division, category: 'source-quality', status: 'requires-human-review', severity: 'review', evidenceIds: [item.id], explanation: `${item.title} was collected but no PDF publication links were extracted. Confirm the page format before treating the index as complete.` });\n+    }\n+  }\n   const divisionResults = divisions.map(division => {\n@@\n-    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n+    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening covers Treasury integrity, duplicate USAspending aggregates, and empty publication indexes; every flag requires review.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n   });\n","targetFile":"engine.mjs"},{"name":"Recovery Analysis","checks":["Run runAudit with a stub fetcher that returns one valid Treasury pair whose components differ by more than $1 and confirm divisions.find(d => d.id === 'recovery') has status awaiting-human-review, completedAudit false, evidenceCount 0, recoverableAmount null, reviewQueueCount equal to flags.length, and reviewQueueIds equal to flags.map(f => f.id).","Run the same path with Treasury unavailable and no flags and confirm reviewQueueCount is 0, reviewQueueIds is empty, summary says the queue is empty, and executive.recoverableAmount remains null.","Confirm the recovery summary never includes a dollar recovery figure and findings stays [].","Do not treat this draft as tested or deployed until those local checks pass."],"status":"draft-unvalidated","summary":"Recovery Analysis stays a review queue: 0 evidence items, 0 flags, recoverableAmount null, and no completed audit. The engine hardcodes that stance and does not attach the current screening-flag queue to the recovery division record.","proposal":"In runAudit, keep recovery status awaiting-human-review and completedAudit false. Add reviewQueueCount and reviewQueueIds copied from existing flags only, set recoverableAmount null on that division record, and replace the static recovery summary with a queue-size and flag-id statement that still forbids any recovery estimate or legal determination. Do not treat flag ids as verified evidence or as evidenceIds.","divisionId":"recovery","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@ -1,1 +1,1 @@\n-      return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n+      return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, ...(division.id === 'recovery' ? { reviewQueueCount: flags.length, reviewQueueIds: flags.map(flag => flag.id), recoverableAmount: null } : {}), summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: `Awaiting human review. Review queue: ${flags.length} unreviewed screening flag(s); ids: ${flags.map(flag => flag.id).slice(0, 12).join(', ') || 'none'}. These ids are not verified evidence. No verified recoverable funds. No recovery estimate or legal determination without documented evidence and human review.`, dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n","targetFile":"engine.mjs"},{"name":"Public Dashboard","checks":["Load a status payload shaped like the engine report (timestamp, previousRunAt, evidence with one status unavailable and HTTP 403, flags empty, executive.reviewQueueCount 0, recoverableAmount null) and confirm Latest audit run shows the timestamp and previous run rather than “No completed run reported”.","Confirm the evidence metric counts only status collected and the subtitle states how many sources are unavailable without calling that a finding.","Confirm each evidence row shows a status pill, the GAO error remains visible as unavailable source text, and executive copy still says 0 verified findings with no dollar recovery.","Confirm an empty flags array plus reviewQueueCount 0 does not render screening results as verified findings, and a non-empty flags array still lists explanations as unreviewed."],"status":"draft-unvalidated","summary":"The public dashboard drops the engine run timestamp and previous-run field, so latest-run history stays blank, and unavailable evidence is not labeled separately from unreviewed screening results.","proposal":"In dashboard.mjs render(), bind the latest-run metric to timestamp or generatedAt, append previousRunAt when present, count non-collected evidence in the evidence metric subtitle, and mark each evidence row with its status. Keep flags labeled unreviewed and do not treat a missing flag list or a GAO HTTP 403 as a verified finding, completed audit, or recovery amount.","divisionId":"dashboard","draftPatch":"--- dashboard.mjs\n+++ dashboard.mjs\n@@\n- put('division-count',divisions.length);put('evidence-count',evidence.filter(e=>e.status==='collected').length);\n- dateMetric(data.lastRun,'last-run','last-run-date','No completed run reported');dateMetric(data.nextRun,'next-run','next-run-date','Schedule not reported');\n+ put('division-count',divisions.length);\n+ const collectedEvidence=evidence.filter(e=>e.status==='collected').length;\n+ const unavailableEvidence=evidence.filter(e=>e.status&&e.status!=='collected').length;\n+ put('evidence-count',collectedEvidence);\n+ byId('evidence-count').nextElementSibling.textContent=unavailableEvidence?unavailableEvidence+' source(s) unavailable · not a verified finding':'Collected records, not verified findings';\n+ dateMetric(data.lastRun||data.timestamp||data.generatedAt,'last-run','last-run-date','No completed run reported');\n+ if(data.previousRunAt){const prev=format(data.previousRunAt);if(prev)byId('last-run-date').textContent+=' · Previous '+prev.toLocaleString();}\n+ dateMetric(data.nextRun,'next-run','next-run-date','Schedule not reported');\n@@\n- const flags=list(data.flags);if(flags.length){ex.append(node('h3','Unreviewed screening flags'));const ul=node('ul',undefined,'rows');flags.forEach(flag=>{const li=node('li');li.append(node('p',flag.explanation||flag.summary||flag.id),node('div','Evidence: '+list(flag.evidenceIds).join(', ')+' · '+(flag.status||'Requires human review'),'sub'));ul.append(li)});ex.append(ul)}\n+ const flags=list(data.flags);ex.append(node('p','Unreviewed screening flags: '+(flags.length||executive.reviewQueueCount||0)+'. Not verified findings.','small'));if(flags.length){const ul=node('ul',undefined,'rows');flags.forEach(flag=>{const li=node('li');li.append(node('p',flag.explanation||flag.summary||flag.id),node('div','Evidence: '+list(flag.evidenceIds).join(', ')+' · '+(flag.status||'Requires human review'),'sub'));ul.append(li)});ex.append(ul)}\n@@\n- evidence.slice(0,16).forEach(e=>{const li=node('li');li.append(node('strong',e.title||e.name||e.source||e.id||'Source check'));li.append(node('p',e.summary||e.description||e.error||e.status||'Record collected; review required.'));appendEvidenceResults(li,e);\n+ evidence.slice(0,16).forEach(e=>{const li=node('li');li.append(pill(e.status||'not reported'));li.append(node('strong',e.title||e.name||e.source||e.id||'Source check'));li.append(node('p',e.error||e.summary||e.description||(e.status==='collected'?'Collected public source; not a completed audit.':'Source not collected. Unavailable data is not a financial finding.')));if(e.status==='collected')appendEvidenceResults(li,e);\n","targetFile":"dashboard.mjs"},{"name":"People’s Truth & Transparency","checks":["Call runAudit with a stub fetch: treasury-debt returns two valid debt rows; gao returns HTTP 403; other sources return minimal valid bodies.","Confirm education length is 2 plus evidence.length, each source note has sourceId, url, and status, and the GAO note quotes HTTP 403 without calling unavailability irregularity.","Confirm executive.recoverableAmount is null, every division.completedAudit is false, and findings remains [].","Confirm a timeout or abort still produces an unavailable education note rather than omitting the source.","Treat this draft as untested until those stub runs pass; do not publish the notes as findings."],"status":"draft-unvalidated","summary":"Education notes are static and not tied to this run’s sources, statuses, or limitations, including the GAO HTTP 403. The division still correctly reports no completed audit and no recovery amount.","proposal":"Build education notes inside runAudit from the evidence already collected. Include one run-level uncertainty statement with collected/total counts and unreviewed flag count, one note per source with id, title, url, status, and that source’s limitations or error, and a recovery statement that asserts no amount and no recovery authority. Keep completedAudit false and recoverableAmount null. Do not describe an HTTP 403 or missing source as concealment or irregularity. Dashboard display of the education array is a separate follow-up after /api/status exposes it.","divisionId":"education","draftPatch":"--- a/engine.mjs\n+++ b/engine.mjs\n@@\n-    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: 'Source descriptions and limitations prepared; no allegations or audited conclusions.' }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n+    return { ...division, status, lastRunAt: now.toISOString(), evidenceCount: collected, evidenceIds: inputs.map(item => item.id), completedAudit: false, summary: derived ? ({ anomaly: debt.status !== 'collected' ? 'Screening blocked: Treasury data is unavailable. No conclusion can be drawn from the absence of flags.' : `${flags.length} unreviewed screening flags. Screening is limited to implemented Treasury integrity rules.`, recovery: 'Awaiting human review. No verified recoverable funds. Human legal and evidentiary review required before any recovery conclusion.', dashboard: 'Run status and evidence records prepared for publication.', education: `${educationNotes.length} source-linked uncertainty statements prepared from this run; no allegations or audited conclusions.` }[division.id]) : `${collected}/${inputs.length} public sources collected. ${division.scope}` };\n@@\n-  const unavailable = evidence.filter(item => item.status !== 'collected').length;\n+  const educationNotes = [\n+    { title: 'What this report establishes', sourceIds: evidence.map(item => item.id), text: `This run collected ${evidence.filter(item => item.status === 'collected').length} of ${evidence.length} configured public sources. A collected source is not a completed audit. ${flags.length} unreviewed screening flag(s) are not findings. Verified findings remain 0.` },\n+    ...evidence.map(item => ({ sourceId: item.id, title: item.title, url: item.url, status: item.status, text: item.status === 'collected' ? `Collected payload only. ${(item.limitations || []).join(' ')}` : `Unavailable (${item.error || 'no error recorded'}). ${(item.limitations || []).join(' ')}` })),\n+    { title: 'What recovery means here', sourceIds: [], text: 'No recoverable amount is asserted. This monitor does not determine recovery authority.' }\n+  ];\n+  const unavailable = evidence.filter(item => item.status !== 'collected').length;\n@@\n- education: [{ title: 'What this report establishes', text: 'This report records public-source availability and limited automated checks. A collected source is not a completed audit. A screening flag is not evidence of fraud.' }, { title: 'What recovery means here', text: 'No recoverable amount is asserted. Legal authority and independently reviewed evidence are required before any recovery recommendation.' }] };\n+ education: educationNotes };\n","targetFile":"engine.mjs"}],"credentialConfigured":true},"auditFindings":0,"mission":"Transparent accounting and evidence-backed debt analysis in service of human and ecological wellbeing."}