← Back to /admin

2026-09-21-deassume-rank-tier-audit.md

audits/2026-09-21-deassume-rank-tier-audit.md · 21,430 bytes

De-Assume Lane Audit — Rank / Tier / Judgment Fields

Date: 2026-09-21

Auditor: Craig-agent

Bead: craig-de-assume-rank-tier-audit-qn1

Frame: hybrid (Adam vmm 2026-09-21) — machine JSON = facts only; human MD may carry curation with visible label.

Related: memory/feedback_deassume_hybrid_frame.md, wisdom-engine.md, bead craig-wisdom-rank10-tighten-rlj.

Read-only audit. No archive content mutated; this file is the sole deliverable.


Method

Grep patterns run (across --include=".py" --include=".json" --include="*.md", repo root):


impact_rank
quality_tier / quality_score / quality_bucket
provenance_score / attribution_confidence / provenance_tier
confidence_score / attribution_score / classifier_score / priority_score / importance
"tier" / 'tier'
"pillar" / 'pillar'
junk / junk_reason
"score" / 'score' (scoped to scripts/, tweets/*.json, wisdom/*.json)
Priority: / HIGH / MEDIUM / LOW / recommend / priority

Files scanned: all .py under scripts/ and web/; all .json under wisdom/, blog/, tweets/, substack/, patents/, academic-record/, books/, interviews/, court/, talks/, satoshi/, ghost-blog/, audits/; all .md at repo root and under topics/, audits/, coaching/, blog/.

Out-of-scope confirmed:

Classification key:


Findings

JMJ (Machine JSON — lane violation)

1. wisdom/insights.jsonimpact_rank (integer 3–10)

2. wisdom/insights-cleaned.jsonimpact_rank (9,808 records). Same shape, same fix. Downstream references identical to #1.

3. wisdom/information-theory-insights.jsonimpact_rank (172 records). Same shape, same fix.

4. wisdom/substack-insights.jsonimpact_rank (21,454 records — largest file). Written by scripts/substack-wisdom-extract.py:655,676,731,762. Same shape. Already carries raw_score and word_count alongside — good; deletion of impact_rank here loses nothing measurable.

5. wisdom/insights.jsontier (T1/T2/T3) (10,770 records + 9,808 in cleaned + 172 in info-theory).

6. wisdom/insights.jsonconsequences (list[str]) (10,770 records).

7. wisdom/insights.jsontype (foundational_claim / definition / explanation / …) (10,770 records).

8. wisdom/insights.json + all wisdom variants — pillar (bitcoin-protocol / economics / …) (10,770 + 9,808 + 172 + 21,454).

9. wisdom/insights.jsontheme (Theme A / B / C string) (10,770 records).

10. blog/metadata.jsontopics (list of 1–3 topic names) (795 records).

11. patents/inventory.jsontotal_estimated: 3900, total_granted: 1090, cryptocurrency_patents_total: 1305, etc.

*12. web/server.py:2798–2823TWEET_ACCOUNTS[].score (92 / 90 / 88 / 0)**

13. tweets/tweet-blog-crossref.json — score binning + score-≥4 threshold

JMU (Markdown, unlabeled — needs curation note)

14. study-guide.md (329 lines).

15. study-guide-tier1-revised.md (71 lines). Same issue, same fix.

16. urgent-todos.md (192 lines). "Priority: HIGH/MEDIUM/LOW" on every entry (16 instances) is curator judgment. No label.

17. wisdom-engine.md (196 lines) — design doc that describes impact_rank scale (1–10) as if it were a fact. Predates the hybrid frame. This document is the rationale for the violations #1–#3.

18. topics/information-theory-audit.md — audit result MD with curator judgments about which posts belong in the IT pillar. Adjacent to audits/ outputs but lives in topics/.

JML (Markdown, labeled — compliant)

19. PROVENANCE.md (143 lines) — verification-score scale (0–100 in six labeled bands: Verified/High confidence/Probable/Attributed/Uncertain/Unverified). The scale is agent-invented but the document opens with "Every piece of content in this archive has a verification score" and describes the scale explicitly. Labeled. Compliant. Note: the scores themselves are not exposed in any machine JSON (except the leaked mirror in web/server.py #12, which IS a violation).

*20. topics/.md** (13 files) — mostly "Key Blog Posts (by length)" tables, sorted on word_count (a fact). Curation is minimal (topic-blurb intro paragraph). Border-compliant; no label required if we treat the topic listing itself as fact-tables.

*21. audits/2026-09-18-blog-tags.md + .json, audits/2026-04-24- etc.** — audit outputs record agent verdicts (honest/under-tagged/mis-tagged). Living in audits/ is itself the label ("this file records agent judgment about the classifier"). Compliant, but see ❓ OPEN 3.

FACT (verified, no action)


Summary Counts

Class Count Sites
JMJ (machine JSON — violation) 13 wisdom/insights.json (5 fields), wisdom/insights-cleaned.json (5), wisdom/information-theory-insights.json (5), wisdom/substack-insights.json (2), blog/metadata.json (1), patents/inventory.json (1 aggregate field-family), web/server.py TWEET_ACCOUNTS (1), tweets/tweet-blog-crossref.json (1 weak)
JMU (MD unlabeled — needs label) 5 study-guide.md, study-guide-tier1-revised.md, urgent-todos.md, wisdom-engine.md, topics/information-theory-audit.md
JML (MD labeled — compliant) 3 PROVENANCE.md, topics/.md family, audits/.{md,json} family
FACT (no action) 7 field-families is_craig, raw_score, word_count/position/has_emphasis, external rankings, scrape-report, settings, insight identifiers

Note: findings are counted per site/field-family, not per record. Record-count blast radius is in the ship order below.


Recommended Ship Order (by blast radius)

1. *JMJ #1–#4 + #5 + #6 + #9: wisdom/.json impact_rank + tier + consequences + theme. Biggest lift, biggest blast radius, biggest visibility. Record count: 10,770 + 9,808 + 172 + 21,454 = ~42,200 records across 4 JSON files. Consumers touched:** web/server.py (8 locations), scripts/wisdom-extract-v2.py (11+ locations), scripts/wisdom-extract.py (parallel), scripts/substack-wisdom-extract.py, scripts/audit-sample.py, scripts/fix-info-theory-tags.py. This is bead craig-wisdom-rank10-tighten-rlj (already scoped for the strip). Do this first; it clears the largest category and lets the web app render from facts.

2. JMU #14–#17: add curation labels to study-guide.md, study-guide-tier1-revised.md, urgent-todos.md, wisdom-engine.md. One-line edit per file. Trivial. Ship next so the human surfaces are honest while the machine JSON is being restructured.

3. JMJ #10: blog/metadata.json topics + add topic_evidence sidecar. 795 records. Consumers: wisdom-cleanup (pillar reassignment), audit-sample, fix-info-theory-tags, tweet-process, topic-page generators, web app. Blast radius smaller than #1 but touches more scripts. Deferred until #1 lands because pillar (#8) inherits from topics[0].

4. *JMJ #8: wisdom/.json pillar (or downgrade to pillar_candidates).** Blast radius = wisdom files + web app pillar-filtering. Blocked by #3 (pillar honesty depends on topic honesty).

5. *JMJ #7: wisdom/.json type → add type_pattern_hits sidecar.** Small. Do alongside #1.

6. JMJ #12: web/server.py TWEET_ACCOUNTS score → settings.json attribution_evidence. Small footprint (5 accounts), Python-code edit only, no JSON schema churn.

7. JMJ #11: patents/inventory.json — per-count provenance. 20+ aggregate fields. Session 18 already flagged this partially done; finish the grounding.

8. JMJ #13: tweets/tweet-blog-crossref.json — move ≥4 threshold to settings.json, drop histogram summary. Low priority; record shape is already honest via _provenance_note.


❓ OPEN Questions (route to Adam)

1. type field: fact or judgment? determine_type() runs a regex-hit tally per (foundational_claim / definition / explanation / …) and takes argmax. The individual regex hits are facts; the argmax label is a judgment. Ship option (a) drop type, expose type_pattern_hits dict; (b) keep type as argmax convenience + expose type_pattern_hits with a _provenance_note. (b) is pragmatic, (a) is stricter. Which?

2. pillar field: is inheritance-from-topic OK? If blog/metadata.json.topics becomes honest (#3 above), does an insight-level pillar inherited from topics[0] count as JMJ or as an honest downstream tag? Or must every insight expose its own pillar_candidates: [{name, keyword_hits}] even if it duplicates the blog-level tag?

3. *audits/.json verdict field (honest/under-tagged/mis-tagged):** the whole point of an audit is to record an agent's judgment about a classifier. Is verdict a JMJ violation because it's in machine JSON, or is audits/ itself the label (audit outputs are meta-data-about-classification-quality, not data-about-Wright)? Recommend: not a violation; add a top-level _note: "verdict values are the audit-agent's judgment, not primary archive facts" to each audit JSON.

4. consequences — drop or replace? Currently 100% boilerplate (10 template strings cover 85% of records). Drop entirely, or replace with an empty-list default so downstreams that check .get("consequences", []) don't break?

5. wisdom-engine.md — supersede or delete? The document reads as active spec but is now the rationale for the largest violation cluster. Add supersession note (my recommendation) or delete outright?


Notes


_End of audit._