SPB Git

spb/firc0001_uqo

Public

N5: focus-window coverage of every ledger section (shown fraction, last offset, gate hits shown, plateau, short MD&As)

Items: FIRC0001-EDIT-08 THEO-09 AI_C-06 ECON-05 AI_C-20 DATA-08 THEO-13.
_focus replicated span-exactly on 1,123,098 sections (0 mismatches; 23.4 GB streamed in 585 s); Python gate = DuckDB gate = 703,737.
10-K MD&A: median 9,905 words / 64,194 chars reproduced; median shown 9.3 %, last shown offset at 16 % of the text, 90.5 % of sections shown < 25 %;
62.7 % of all mentions come from sections shown < 25 %; 0 messages cut at 14,000 chars; mentions/section plateau ~1.5 beyond 20k chars.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 5, 2026) parent 906fea1 Browse files

10 changed files +446 −0

added code/audit/a05_focus_coverage.py +165 −0
@@ -0,0 +1,165 @@
1+"""N5 - focus-window coverage: what share of every ledger section the model actually saw (cluster E).
2+
3+Imports _focus / _PROJECT_GATE from the hash-verified snapshot (pure functions). For each of the
4+1,123,098 ledger sections: length, Python gate pass, gate hits, shown characters (replicated span
5+logic, asserted equal to the real _focus output), offset of the last shown character, hits shown,
6+14,000-character message cut, capex vocabulary inside/outside the shown windows. Aggregates by form x
7+item; n_mentions vs length (plateau); <30-word / incorporated-by-reference 10-K MD&As by year;
8+median words of ledger 10-K MD&A (the 9,905 figure). Read-only; per-section features kept on the node.
9+"""
10+from __future__ import annotations
11+import json, re, sys, time
12+from pathlib import Path
13+import multiprocessing as mp
14+sys.path.insert(0, str(Path(__file__).resolve().parent))
15+from common import *
16+sys.path.insert(0, str(Path(__file__).resolve().parent))
17+from spid.extract.llm import _focus # snapshot copy
18+from spid.extract.rules import _PROJECT_GATE # snapshot copy
19+
20+BUDGET = 9000
21+CAPEX = re.compile(r"capital expenditure|liquidity and capital resources|commitment", re.I)
22+
23+def spans_like_focus(text: str, hits):
24+ """Replicates _focus (llm.py:55-80) and returns the chunks [(a,b)] actually emitted."""
25+ L = len(text)
26+ if L <= BUDGET:
27+ return [(0, L)], True
28+ spans = []
29+ for s, e in hits:
30+ spans.append((max(0, s - 220), min(L, e + 380)))
31+ if sum(b - a for a, b in spans) > BUDGET * 1.4:
32+ break
33+ if not spans:
34+ return [(0, BUDGET)], True
35+ spans.sort()
36+ merged = [spans[0]]
37+ for a, b in spans[1:]:
38+ if a <= merged[-1][1]:
39+ merged[-1] = (merged[-1][0], max(merged[-1][1], b))
40+ else:
41+ merged.append((a, b))
42+ chunks, total = [], 0
43+ for a, b in merged:
44+ chunks.append((a, b)); total += b - a
45+ if total >= BUDGET:
46+ break
47+ return chunks, False
48+
49+def feat(item):
50+ sid, text = item
51+ L = len(text)
52+ hits = [(m.start(), m.end()) for m in _PROJECT_GATE.finditer(text)]
53+ nh = len(hits)
54+ chunks, whole = spans_like_focus(text, hits)
55+ shown = sum(b - a for a, b in chunks)
56+ last = chunks[-1][1]
57+ focus = _focus(text)
58+ eq = ("\n...\n".join(text[a:b] for a, b in chunks) == focus)
59+ # hits inside the chunks
60+ hs = 0; ci = 0
61+ for s, _ in hits:
62+ while ci < len(chunks) and s >= chunks[ci][1]:
63+ ci += 1
64+ if ci < len(chunks) and chunks[ci][0] <= s < chunks[ci][1]:
65+ hs += 1
66+ cap_all = 0; cap_in = 0
67+ if L > BUDGET:
68+ for m in CAPEX.finditer(text):
69+ cap_all += 1
70+ s = m.start()
71+ if any(a <= s < b for a, b in chunks):
72+ cap_in += 1
73+ return (sid, L, nh > 0, nh, shown, last, hs, len(focus), eq, cap_all, cap_in, len(chunks))
74+
75+def main():
76+ r = Run("focus")
77+ con = connect(SPID_DB)
78+ con.execute("CREATE TEMP TABLE led AS SELECT section_id FROM extracted_sections")
79+ q = """SELECT s.section_id, s.text FROM src_sections s JOIN led USING (section_id)
80+ UNION ALL SELECT s.section_id, s.text FROM spid_sections s JOIN led USING (section_id)"""
81+ cur = con.execute(q)
82+ rows_out = []; t0 = time.time(); done = 0; chars = 0
83+ ctx = mp.get_context("fork")
84+ with ctx.Pool(4) as pool:
85+ while True:
86+ rows = cur.fetchmany(4000)
87+ if not rows:
88+ break
89+ chars += sum(len(t) for _, t in rows)
90+ rows_out.extend(pool.imap_unordered(feat, rows, chunksize=100))
91+ done += len(rows)
92+ if done % 100000 < 4000:
93+ print(f" {done} sections, {chars/1e9:.2f} GB, {time.time()-t0:.0f}s", flush=True)
94+ r.notes["sections_streamed"] = done; r.notes["chars_streamed"] = chars
95+ import pyarrow as pa, pyarrow.parquet as pq
96+ names = ["section_id", "nchar", "gate_py", "n_hits", "shown_chars", "last_offset", "hits_shown", "focus_len", "replica_eq", "capex_all", "capex_shown", "n_chunks"]
97+ tbl = pa.table({n: [row[i] for row in rows_out] for i, n in enumerate(names)})
98+ pq.write_table(tbl, r.out / "section_features.parquet") # stays on the node
99+ con.register("ft", tbl)
100+ tmin = con.execute("select min(extracted_at) from extracted_sections").fetchone()[0]
101+ con.execute(f"""CREATE TEMP TABLE F AS
102+ SELECT ft.*, e.n_mentions, CASE WHEN e.extracted_at = TIMESTAMP '{tmin}' THEN 'backfilled_june' ELSE 'october' END run,
103+ m.section_name item, m.word_count, f.form_type form, year(f.filing_date) yr,
104+ shown_chars*1.0/nchar AS shown_frac, last_offset*1.0/nchar AS last_frac,
105+ CASE WHEN n_hits > 0 THEN hits_shown*1.0/n_hits END AS hits_frac,
106+ (9 + length(m.section_name) + 2 + focus_len) > 14000 AS msg_truncated,
107+ nchar > {BUDGET} AS over_budget
108+ FROM ft JOIN extracted_sections e USING (section_id)
109+ JOIN (SELECT section_id, section_name, word_count FROM src_sections UNION ALL SELECT section_id, section_name, word_count FROM spid_sections) m USING (section_id)
110+ JOIN src_filings f ON f.accession_number = e.accession_number""")
111+ r.notes["replica_mismatches"] = con.execute("select count(*) from F where not replica_eq").fetchone()[0]
112+ r.notes["gate_py_pass"] = con.execute("select count(*) from F where gate_py").fetchone()[0]
113+ r.notes["gate_py_pass_by_form"] = con.execute("select form, count(*) filter (where gate_py), count(*) from F group by 1 order by 1").fetchall()
114+ r.notes["gate_fail_with_mentions"] = con.execute("select count(*) from F where not gate_py and n_mentions>0").fetchone()[0]
115+ agg = """count(*) n, count(*) FILTER (WHERE gate_py) gate_pass, count(*) FILTER (WHERE over_budget) over_9000_chars, round(100.0*count(*) FILTER (WHERE over_budget)/count(*),2) pct_over_9000,
116+ round(quantile_cont(nchar,0.1)) chars_p10, round(quantile_cont(nchar,0.5)) chars_p50, round(quantile_cont(nchar,0.9)) chars_p90,
117+ round(quantile_cont(shown_frac,0.1),3) shown_p10, round(quantile_cont(shown_frac,0.5),3) shown_p50, round(quantile_cont(shown_frac,0.9),3) shown_p90, round(avg(shown_frac),3) shown_mean,
118+ round(quantile_cont(shown_frac,0.5) FILTER (WHERE over_budget),3) shown_p50_over_budget,
119+ round(quantile_cont(last_frac,0.1),3) last_p10, round(quantile_cont(last_frac,0.5),3) last_p50, round(quantile_cont(last_frac,0.9),3) last_p90,
120+ round(100.0*count(*) FILTER (WHERE shown_frac < 0.25)/count(*),2) pct_shown_lt_25, round(100.0*count(*) FILTER (WHERE last_frac < 0.5)/count(*),2) pct_last_lt_50,
121+ round(100.0*count(*) FILTER (WHERE msg_truncated)/count(*),2) pct_msg_truncated_14k, round(avg(hits_frac),3) hits_shown_mean, round(quantile_cont(hits_frac,0.5),3) hits_shown_p50,
122+ sum(n_mentions) mentions, sum(n_mentions) FILTER (WHERE shown_frac < 0.25) mentions_from_lt25, round(100.0*sum(n_mentions) FILTER (WHERE shown_frac < 0.25)/nullif(sum(n_mentions),0),2) pct_mentions_from_lt25,
123+ round(100.0*sum(capex_shown)/nullif(sum(capex_all),0),2) pct_capex_vocab_shown_over_budget"""
124+ r.dump("focus_coverage_by_form_item.csv", con, f"SELECT form, item, {agg} FROM F GROUP BY 1,2 ORDER BY 1,2")
125+ r.dump("focus_coverage_by_form.csv", con, f"SELECT form, {agg} FROM F GROUP BY 1 ORDER BY 1")
126+ r.dump("focus_coverage_by_form_item_run.csv", con, f"SELECT form, item, run, {agg} FROM F GROUP BY 1,2,3 ORDER BY 1,2,3")
127+ r.dump("focus_coverage_calls_only_by_form_item.csv", con, f"SELECT form, item, {agg} FROM F WHERE gate_py AND word_count >= 30 GROUP BY 1,2 ORDER BY 1,2")
128+ r.dump("mentions_vs_length_by_item.csv", con, """
129+ SELECT form, item, CASE WHEN nchar<3000 THEN 'a<3k' WHEN nchar<6000 THEN 'b3-6k' WHEN nchar<9000 THEN 'c6-9k' WHEN nchar<12000 THEN 'd9-12k' WHEN nchar<20000 THEN 'e12-20k' WHEN nchar<40000 THEN 'f20-40k' WHEN nchar<80000 THEN 'g40-80k' ELSE 'h>=80k' END len_bin,
130+ count(*) n, count(*) FILTER (WHERE gate_py) calls, round(avg(n_mentions),4) mean_mentions, round(avg(n_mentions) FILTER (WHERE gate_py),4) mean_mentions_per_call,
131+ round(100.0*count(*) FILTER (WHERE n_mentions>0)/count(*),2) productive_pct, round(avg(shown_frac),3) shown_mean, round(avg(shown_chars)) shown_chars_mean,
132+ round(1e4*sum(n_mentions)/nullif(sum(shown_chars),0),4) mentions_per_10k_shown_chars
133+ FROM F GROUP BY 1,2,3 ORDER BY 1,2,3""")
134+ r.dump("shown_fraction_bins.csv", con, """
135+ SELECT form, CASE WHEN shown_frac >= 0.9 THEN 'a>=0.9' WHEN shown_frac >= 0.25 THEN 'b0.25-0.9' ELSE 'c<0.25' END bin, count(*) n, count(*) FILTER (WHERE gate_py AND word_count>=30) calls,
136+ count(*) FILTER (WHERE n_mentions>0) with_mentions, sum(n_mentions) mentions FROM F GROUP BY 1,2 ORDER BY 1,2""")
137+ # 10-K MD&A coverage hole by year: all parsed + legacy 10-K md_and_a sections (ledgered or not)
138+ r.dump("mdna_10k_short_by_year.csv", con, """
139+ WITH a AS (SELECT s.section_id, s.word_count, year(f.filing_date) yr, s.section_id IN (SELECT section_id FROM extracted_sections) ledgered,
140+ regexp_matches(left(s.text, 3000), 'incorporated .{0,40}by reference', 'i') incorp_head
141+ FROM src_sections s JOIN src_filings f USING (accession_number) WHERE f.form_type='10-K' AND s.section_name='md_and_a' AND s.accession_number NOT IN (SELECT accession_number FROM spid_sections)
142+ UNION ALL
143+ SELECT s.section_id, s.word_count, year(f.filing_date), TRUE, regexp_matches(left(s.text, 3000), 'incorporated .{0,40}by reference', 'i')
144+ FROM spid_sections s JOIN src_filings f USING (accession_number) WHERE s.section_name='md_and_a')
145+ SELECT yr, count(*) mdna_sections, count(*) FILTER (WHERE word_count < 30) lt30_words, round(100.0*count(*) FILTER (WHERE word_count < 30)/count(*),2) pct_lt30,
146+ count(*) FILTER (WHERE word_count < 300 AND incorp_head) lt300_incorporated_by_ref, count(*) FILTER (WHERE NOT ledgered) not_ledgered, round(median(word_count)) median_words
147+ FROM a GROUP BY 1 ORDER BY 1""")
148+ K = {}
149+ K["ledger_10k_mdna_median_words"] = con.execute("select median(word_count) from F where form='10-K' and item='md_and_a'").fetchone()[0]
150+ K["ledger_10k_mdna_median_chars"] = con.execute("select median(nchar) from F where form='10-K' and item='md_and_a'").fetchone()[0]
151+ K["ledger_10k_mdna_n"] = con.execute("select count(*) from F where form='10-K' and item='md_and_a'").fetchone()[0]
152+ K["ledger_10k_mdna_shown_p50"] = con.execute("select median(shown_frac) from F where form='10-K' and item='md_and_a'").fetchone()[0]
153+ K["ledger_10k_mdna_last_p50"] = con.execute("select median(last_frac) from F where form='10-K' and item='md_and_a'").fetchone()[0]
154+ K["ledger_10k_mdna_pct_shown_lt_25"] = con.execute("select 100.0*count(*) filter (where shown_frac<0.25)/count(*) from F where form='10-K' and item='md_and_a'").fetchone()[0]
155+ K["ledger_sections_over_9000_chars"], K["ledger_sections"] = con.execute("select count(*) filter (where over_budget), count(*) from F").fetchone()
156+ K["calls_over_9000_chars"], K["calls"] = con.execute("select count(*) filter (where over_budget), count(*) from F where gate_py and word_count>=30").fetchone()
157+ K["mentions_from_sections_shown_lt_25"], K["mentions_total"] = con.execute("select sum(n_mentions) filter (where shown_frac<0.25), sum(n_mentions) from F").fetchone()
158+ K["msg_truncated_14k"] = con.execute("select count(*) from F where msg_truncated").fetchone()[0]
159+ K["gate_py_pass_total"] = r.notes["gate_py_pass"]; K["gate_duckdb_pass_total_N1"] = 703737
160+ K["mean_shown_frac_over_budget"] = con.execute("select avg(shown_frac) from F where over_budget").fetchone()[0]
161+ r.write_json("stats_keys.json", K)
162+ r.finish()
163+
164+if __name__ == "__main__":
165+ main()
added results/focus/focus_coverage_by_form.csv +4 −0
@@ -0,0 +1,4 @@
1+form,n,gate_pass,over_9000_chars,pct_over_9000,chars_p10,chars_p50,chars_p90,shown_p10,shown_p50,shown_p90,shown_mean,shown_p50_over_budget,last_p10,last_p50,last_p90,pct_shown_lt_25,pct_last_lt_50,pct_msg_truncated_14k,hits_shown_mean,hits_shown_p50,mentions,mentions_from_lt25,pct_mentions_from_lt25,pct_capex_vocab_shown_over_budget
2+10-K,143704,135310,85179,59.27,924.0,28255.0,110017.0,0.051,0.217,1.0,0.487,0.102,0.078,0.443,1.0,52.12,51.66,0.0,0.53,0.338,81622,68572,84.01,7.44
3+10-Q,578793,363985,205571,35.52,335.0,3503.0,78237.0,0.08,1.0,1.0,0.695,0.115,0.147,1.0,1.0,31.4,28.96,0.0,0.61,0.656,152261,120560,79.18,9.02
4+8-K,400601,204442,35345,8.82,2538.0,3816.0,8528.0,1.0,1.0,1.0,0.94,0.304,1.0,1.0,1.0,3.32,1.14,0.0,0.984,1.0,74594,4284,5.74,51.49
added results/focus/focus_coverage_by_form_item.csv +16 −0
@@ -0,0 +1,16 @@
1+form,item,n,gate_pass,over_9000_chars,pct_over_9000,chars_p10,chars_p50,chars_p90,shown_p10,shown_p50,shown_p90,shown_mean,shown_p50_over_budget,last_p10,last_p50,last_p90,pct_shown_lt_25,pct_last_lt_50,pct_msg_truncated_14k,hits_shown_mean,hits_shown_p50,mentions,mentions_from_lt25,pct_mentions_from_lt25,pct_capex_vocab_shown_over_budget
2+10-K,business,29285,29118,23748,81.09,5587.0,37168.0,100505.0,0.053,0.157,1.0,0.32,0.127,0.076,0.259,1.0,66.62,68.33,0.0,0.423,0.261,30492,26256,86.11,10.03
3+10-K,full_body,1230,1229,1229,99.92,165349.0,304265.0,517545.0,0.011,0.021,0.043,0.027,0.021,0.028,0.064,0.186,99.84,98.94,0.0,0.056,0.041,824,824,100.0,1.72
4+10-K,md_and_a,28919,28050,27175,93.97,26935.0,64194.0,123299.0,0.043,0.093,0.24,0.159,0.089,0.063,0.162,0.573,90.5,87.88,0.0,0.214,0.156,39099,37824,96.74,5.79
5+10-K,properties,28236,25940,1592,5.64,491.0,1255.0,4866.0,1.0,1.0,1.0,0.957,0.217,1.0,1.0,1.0,3.21,2.66,0.0,0.975,1.0,7879,891,11.31,14.03
6+10-K,quantitative_disclosures,26876,22032,3208,11.94,638.0,3354.0,9995.0,0.449,1.0,1.0,0.912,0.28,0.97,1.0,1.0,5.38,4.96,0.0,0.947,1.0,531,176,33.15,8.5
7+10-K,risk_factors,29158,28941,28227,96.81,22943.0,62542.0,156060.0,0.038,0.101,0.277,0.151,0.098,0.051,0.177,0.578,87.93,87.52,0.0,0.25,0.176,2797,2601,92.99,11.49
8+10-Q,controls_and_procedures,92393,20913,1727,1.87,985.0,1710.0,3574.0,1.0,1.0,1.0,0.986,0.162,1.0,1.0,1.0,1.05,0.97,0.0,0.961,1.0,7082,227,3.21,5.81
9+10-Q,financial_statements,91882,90106,88971,96.83,31004.0,64457.0,123191.0,0.053,0.106,0.225,0.146,0.104,0.097,0.239,0.654,92.4,83.74,0.0,0.307,0.234,30159,28422,94.24,9.69
10+10-Q,full_document,241,241,241,100.0,118565.0,348536.0,823174.0,0.008,0.019,0.068,0.03,0.019,0.026,0.143,0.347,100.0,100.0,0.0,0.061,0.046,107,107,100.0,2.48
11+10-Q,legal_proceedings,66998,20043,2219,3.31,232.0,522.0,3847.0,1.0,1.0,1.0,0.976,0.25,1.0,1.0,1.0,1.66,0.87,0.0,0.98,1.0,845,92,10.89,15.22
12+10-Q,md_and_a,91371,90269,86279,94.43,21446.0,47488.0,95664.0,0.057,0.132,0.309,0.192,0.126,0.086,0.24,0.731,84.69,79.65,0.0,0.28,0.211,99305,89215,89.84,8.26
13+10-Q,quantitative_disclosures,83138,46720,4039,4.86,251.0,1510.0,6250.0,1.0,1.0,1.0,0.969,0.36,1.0,1.0,1.0,1.04,0.73,0.0,0.986,1.0,808,62,7.67,30.96
14+10-Q,risk_factors,72560,33826,16590,22.86,197.0,969.0,93477.0,0.067,1.0,1.0,0.807,0.078,0.11,1.0,1.0,17.69,17.8,0.0,0.664,1.0,4420,1894,42.85,10.53
15+10-Q,unregistered_sales,80210,61867,5505,6.86,2253.0,3886.0,7603.0,1.0,1.0,1.0,0.948,0.193,1.0,1.0,1.0,4.28,3.28,0.0,0.984,1.0,9535,541,5.67,11.08
16+8-K,full_body,400601,204442,35345,8.82,2538.0,3816.0,8528.0,1.0,1.0,1.0,0.94,0.304,1.0,1.0,1.0,3.32,1.14,0.0,0.984,1.0,74594,4284,5.74,51.49
added results/focus/focus_coverage_by_form_item_run.csv +29 −0
@@ -0,0 +1,29 @@
1+form,item,run,n,gate_pass,over_9000_chars,pct_over_9000,chars_p10,chars_p50,chars_p90,shown_p10,shown_p50,shown_p90,shown_mean,shown_p50_over_budget,last_p10,last_p50,last_p90,pct_shown_lt_25,pct_last_lt_50,pct_msg_truncated_14k,hits_shown_mean,hits_shown_p50,mentions,mentions_from_lt25,pct_mentions_from_lt25,pct_capex_vocab_shown_over_budget
2+10-K,business,backfilled_june,5545,5542,5257,94.81,14938.0,40344.0,92815.0,0.056,0.146,0.403,0.213,0.138,0.079,0.227,0.81,75.62,78.83,0.0,0.326,0.226,5934,4752,80.08,9.15
3+10-K,business,october,23740,23576,18491,77.89,5212.0,36319.0,102479.0,0.053,0.16,1.0,0.346,0.124,0.075,0.268,1.0,64.52,65.88,0.0,0.445,0.272,24558,21504,87.56,10.38
4+10-K,full_body,backfilled_june,1230,1229,1229,99.92,165349.0,304265.0,517545.0,0.011,0.021,0.043,0.027,0.021,0.028,0.064,0.186,99.84,98.94,0.0,0.056,0.041,824,824,100.0,1.72
5+10-K,md_and_a,backfilled_june,5198,5096,4927,94.79,30305.0,65644.0,135048.0,0.039,0.088,0.214,0.146,0.085,0.056,0.149,0.487,92.32,90.4,0.0,0.195,0.141,6703,6487,96.78,5.8
6+10-K,md_and_a,october,23721,22954,22248,93.79,25898.0,63899.0,120928.0,0.044,0.094,0.248,0.162,0.09,0.065,0.165,0.594,90.11,87.32,0.0,0.218,0.16,32396,31337,96.73,5.78
7+10-K,properties,backfilled_june,5084,4897,216,4.25,608.0,1268.0,4547.0,1.0,1.0,1.0,0.965,0.125,1.0,1.0,1.0,2.97,3.07,0.0,0.971,1.0,1721,123,7.15,6.85
8+10-K,properties,october,23152,21043,1376,5.94,465.0,1253.0,4926.0,1.0,1.0,1.0,0.955,0.228,1.0,1.0,1.0,3.26,2.57,0.0,0.976,1.0,6158,768,12.47,19.14
9+10-K,quantitative_disclosures,backfilled_june,4502,3992,762,16.93,1577.0,4637.0,12451.0,0.338,1.0,1.0,0.878,0.28,0.778,1.0,1.0,7.6,6.6,0.0,0.933,1.0,110,41,37.27,6.74
10+10-K,quantitative_disclosures,october,22374,18040,2446,10.93,466.0,3101.0,9492.0,0.497,1.0,1.0,0.919,0.279,0.998,1.0,1.0,4.94,4.63,0.0,0.951,1.0,421,135,32.07,9.2
11+10-K,risk_factors,backfilled_june,5605,5580,5432,96.91,21076.0,57055.0,120678.0,0.048,0.111,0.304,0.163,0.109,0.068,0.197,0.614,86.03,86.64,0.0,0.269,0.188,495,462,93.33,10.35
12+10-K,risk_factors,october,23553,23361,22795,96.78,23359.0,63934.0,162644.0,0.036,0.098,0.272,0.148,0.095,0.048,0.171,0.566,88.38,87.73,0.0,0.246,0.173,2302,2139,92.92,11.78
13+10-Q,controls_and_procedures,backfilled_june,3567,797,67,1.88,949.0,1537.0,2991.0,1.0,1.0,1.0,0.988,0.44,1.0,1.0,1.0,0.59,0.5,0.0,0.981,1.0,338,5,1.48,6.38
14+10-Q,controls_and_procedures,october,88826,20116,1660,1.87,987.0,1718.0,3587.0,1.0,1.0,1.0,0.986,0.142,1.0,1.0,1.0,1.07,0.99,0.0,0.96,1.0,6744,222,3.29,5.8
15+10-Q,financial_statements,backfilled_june,3594,3507,3442,95.77,27539.0,64649.0,126238.0,0.049,0.1,0.246,0.152,0.097,0.091,0.231,0.666,90.35,84.75,0.0,0.299,0.226,1183,1128,95.35,10.06
16+10-Q,financial_statements,october,88288,86599,85529,96.88,31134.0,64450.0,123134.0,0.053,0.106,0.224,0.146,0.104,0.097,0.239,0.653,92.49,83.7,0.0,0.307,0.235,28976,27294,94.2,9.68
17+10-Q,full_document,october,241,241,241,100.0,118565.0,348536.0,823174.0,0.008,0.019,0.068,0.03,0.019,0.026,0.143,0.347,100.0,100.0,0.0,0.061,0.046,107,107,100.0,2.48
18+10-Q,legal_proceedings,backfilled_june,3024,956,97,3.21,190.0,414.0,3756.0,1.0,1.0,1.0,0.978,0.335,1.0,1.0,1.0,1.03,1.19,0.0,0.971,1.0,20,0,0.0,23.58
19+10-Q,legal_proceedings,october,63974,19087,2122,3.32,235.0,526.0,3853.0,1.0,1.0,1.0,0.976,0.245,1.0,1.0,1.0,1.69,0.86,0.0,0.98,1.0,825,92,11.15,14.88
20+10-Q,md_and_a,backfilled_june,3606,3599,3370,93.46,24110.0,47690.0,90435.0,0.048,0.125,0.292,0.19,0.119,0.065,0.223,0.724,85.55,80.45,0.0,0.28,0.204,3791,3572,94.22,6.82
21+10-Q,md_and_a,october,87765,86670,82909,94.47,21373.0,47480.0,95926.0,0.057,0.132,0.31,0.192,0.126,0.087,0.241,0.732,84.65,79.61,0.0,0.28,0.212,95514,85643,89.67,8.33
22+10-Q,quantitative_disclosures,backfilled_june,3394,1662,105,3.09,191.0,763.0,5332.0,1.0,1.0,1.0,0.979,0.258,1.0,1.0,1.0,1.47,0.29,0.0,0.989,1.0,51,0,0.0,36.8
23+10-Q,quantitative_disclosures,october,79744,45058,3934,4.93,254.0,1536.0,6287.0,1.0,1.0,1.0,0.968,0.361,1.0,1.0,1.0,1.02,0.75,0.0,0.986,1.0,757,62,8.19,30.83
24+10-Q,risk_factors,backfilled_june,3344,1200,550,16.45,157.0,461.0,52830.0,0.132,1.0,1.0,0.862,0.097,0.235,1.0,1.0,13.04,12.74,0.0,0.701,1.0,150,58,38.67,11.06
25+10-Q,risk_factors,october,69216,32626,16040,23.17,199.0,1051.0,96420.0,0.065,1.0,1.0,0.804,0.077,0.107,1.0,1.0,17.91,18.04,0.0,0.662,1.0,4270,1836,43.0,10.51
26+10-Q,unregistered_sales,backfilled_june,3344,2881,259,7.75,2369.0,4027.0,8314.0,1.0,1.0,1.0,0.942,0.262,1.0,1.0,1.0,3.35,3.77,0.0,0.976,1.0,284,6,2.11,34.3
27+10-Q,unregistered_sales,october,76866,58986,5246,6.82,2247.0,3880.0,7558.0,1.0,1.0,1.0,0.948,0.189,1.0,1.0,1.0,4.32,3.26,0.0,0.985,1.0,9251,535,5.78,9.25
28+8-K,full_body,backfilled_june,103927,54360,9952,9.58,2502.0,3963.0,8844.0,1.0,1.0,1.0,0.935,0.315,1.0,1.0,1.0,3.46,1.14,0.0,0.982,1.0,18326,1051,5.74,53.74
29+8-K,full_body,october,296674,150082,25393,8.56,2551.0,3777.0,8403.0,1.0,1.0,1.0,0.941,0.3,1.0,1.0,1.0,3.27,1.14,0.0,0.984,1.0,56268,3233,5.75,50.42
added results/focus/focus_coverage_calls_only_by_form_item.csv +16 −0
@@ -0,0 +1,16 @@
1+form,item,n,gate_pass,over_9000_chars,pct_over_9000,chars_p10,chars_p50,chars_p90,shown_p10,shown_p50,shown_p90,shown_mean,shown_p50_over_budget,last_p10,last_p50,last_p90,pct_shown_lt_25,pct_last_lt_50,pct_msg_truncated_14k,hits_shown_mean,hits_shown_p50,mentions,mentions_from_lt25,pct_mentions_from_lt25,pct_capex_vocab_shown_over_budget
2+10-K,business,29118,29118,23740,81.53,5692.0,37414.0,100781.0,0.053,0.156,1.0,0.317,0.127,0.076,0.257,1.0,67.0,68.72,0.0,0.423,0.261,30492,26256,86.11,10.03
3+10-K,full_body,1229,1229,1229,100.0,165620.0,304421.0,517577.0,0.011,0.021,0.043,0.026,0.021,0.028,0.064,0.186,99.92,99.02,0.0,0.056,0.041,824,824,100.0,1.72
4+10-K,md_and_a,28050,28050,27175,96.88,32291.0,65376.0,124448.0,0.042,0.091,0.203,0.133,0.089,0.062,0.157,0.484,93.31,90.6,0.0,0.214,0.156,39099,37824,96.74,5.79
5+10-K,properties,25940,25940,1584,6.11,543.0,1329.0,5223.0,1.0,1.0,1.0,0.953,0.216,1.0,1.0,1.0,3.49,2.9,0.0,0.975,1.0,7879,891,11.31,14.03
6+10-K,quantitative_disclosures,22032,22032,3204,14.54,1458.0,3906.0,11849.0,0.363,1.0,1.0,0.893,0.279,0.867,1.0,1.0,6.57,6.05,0.0,0.947,1.0,531,176,33.15,8.48
7+10-K,risk_factors,28941,28941,28227,97.53,23748.0,62854.0,156605.0,0.038,0.1,0.268,0.144,0.098,0.051,0.175,0.554,88.59,88.17,0.0,0.25,0.176,2797,2601,92.99,11.49
8+10-Q,controls_and_procedures,20913,20913,1670,7.99,1621.0,2840.0,7778.0,1.0,1.0,1.0,0.939,0.137,1.0,1.0,1.0,4.64,4.25,0.0,0.961,1.0,7082,227,3.21,5.81
9+10-Q,financial_statements,90106,90106,88971,98.74,33182.0,65241.0,123919.0,0.052,0.105,0.212,0.13,0.104,0.096,0.234,0.594,94.23,85.39,0.0,0.307,0.234,30159,28422,94.24,9.69
10+10-Q,full_document,241,241,241,100.0,118565.0,348536.0,823174.0,0.008,0.019,0.068,0.03,0.019,0.026,0.143,0.347,100.0,100.0,0.0,0.061,0.046,107,107,100.0,2.48
11+10-Q,legal_proceedings,20031,20031,2161,10.79,438.0,1940.0,9517.0,0.49,1.0,1.0,0.919,0.242,1.0,1.0,1.0,5.57,2.91,0.0,0.98,1.0,845,92,10.89,15.22
12+10-Q,md_and_a,90269,90269,86279,95.58,22824.0,47840.0,96131.0,0.057,0.13,0.293,0.182,0.126,0.086,0.237,0.694,85.72,80.62,0.0,0.28,0.211,99305,89215,89.84,8.26
13+10-Q,quantitative_disclosures,46720,46720,4024,8.61,990.0,3112.0,8289.0,1.0,1.0,1.0,0.945,0.359,1.0,1.0,1.0,1.85,1.3,0.0,0.986,1.0,808,62,7.67,30.95
14+10-Q,risk_factors,33826,33826,16505,48.79,1110.0,8463.0,170977.0,0.036,1.0,1.0,0.586,0.078,0.052,1.0,1.0,37.94,38.13,0.0,0.664,1.0,4420,1894,42.85,10.52
15+10-Q,unregistered_sales,61867,61867,5236,8.46,2671.0,4220.0,8312.0,1.0,1.0,1.0,0.934,0.184,1.0,1.0,1.0,5.54,4.19,0.0,0.984,1.0,9535,541,5.67,10.67
16+8-K,full_body,204442,204442,34140,16.7,2919.0,4915.0,11170.0,0.338,1.0,1.0,0.883,0.296,0.887,1.0,1.0,6.51,2.22,0.0,0.984,1.0,74594,4284,5.74,51.36
added results/focus/manifest.json +58 −0
@@ -0,0 +1,58 @@
1+{
2+ "package": "focus",
3+ "script": "/Users/simon-pierreboucher/firc0001_review/scripts/a05_focus_coverage.py",
4+ "script_sha256": "fa903dc8721c69533f3d4cf34315c9c047d408699ff7d6284e95aa35b1eb8665",
5+ "started": "2026-11-05T14:31:09",
6+ "ended": "2026-11-05T14:40:54",
7+ "wall_seconds": 584.9,
8+ "node": "m3u96b",
9+ "python": "3.12.15",
10+ "duckdb": "2.0.0",
11+ "threads": 4,
12+ "memory_limit": "24GB",
13+ "seed": 20261105,
14+ "databases": {
15+ "/Users/simon-pierreboucher/UQO_RESEARCH_DB/project-db/data/db/spid.duckdb": {
16+ "bytes": 3155701760,
17+ "mtime": "2026-10-28T12:21:11.091389"
18+ },
19+ "/Users/simon-pierreboucher/UQO_RESEARCH_DB/data/duckdb/edgar_research.duckdb": {
20+ "bytes": 73500995584,
21+ "mtime": "2026-10-27T21:34:46.297884"
22+ }
23+ },
24+ "read_only": true,
25+ "row_counts": {
26+ "focus_coverage_by_form_item.csv": 15,
27+ "focus_coverage_by_form.csv": 3,
28+ "focus_coverage_by_form_item_run.csv": 28,
29+ "focus_coverage_calls_only_by_form_item.csv": 15,
30+ "mentions_vs_length_by_item.csv": 111,
31+ "shown_fraction_bins.csv": 9,
32+ "mdna_10k_short_by_year.csv": 17
33+ },
34+ "notes": {
35+ "sections_streamed": 1123098,
36+ "chars_streamed": 23372396141,
37+ "replica_mismatches": 0,
38+ "gate_py_pass": 703737,
39+ "gate_py_pass_by_form": [
40+ [
41+ "10-K",
42+ 135310,
43+ 143704
44+ ],
45+ [
46+ "10-Q",
47+ 363985,
48+ 578793
49+ ],
50+ [
51+ "8-K",
52+ 204442,
53+ 400601
54+ ]
55+ ],
56+ "gate_fail_with_mentions": 0
57+ }
58+}
\ No newline at end of file
added results/focus/mdna_10k_short_by_year.csv +18 −0
@@ -0,0 +1,18 @@
1+yr,mdna_sections,lt30_words,pct_lt30,lt300_incorporated_by_ref,not_ledgered,median_words
2+2010,1120,18,1.61,39,18,9990.0
3+2011,1185,11,0.93,43,11,10348.0
4+2012,1239,10,0.81,41,10,10555.0
5+2013,1297,10,0.77,39,10,10655.0
6+2014,1375,6,0.44,34,6,11029.0
7+2015,1461,8,0.55,33,8,10966.0
8+2016,1522,8,0.53,26,8,11044.0
9+2017,1567,8,0.51,27,8,11191.0
10+2018,1652,6,0.36,25,6,11155.0
11+2019,1724,6,0.35,23,6,10555.0
12+2020,1841,6,0.33,19,6,9819.0
13+2021,2017,8,0.4,16,8,9981.0
14+2022,2147,9,0.42,14,9,9365.0
15+2023,2185,11,0.5,13,11,9057.0
16+2024,2229,13,0.58,12,13,8677.0
17+2025,2299,14,0.61,12,14,8550.0
18+2026,2228,17,0.76,14,17,8600.0
added results/focus/mentions_vs_length_by_item.csv +112 −0
@@ -0,0 +1,112 @@
1+form,item,len_bin,n,calls,mean_mentions,mean_mentions_per_call,productive_pct,shown_mean,shown_chars_mean,mentions_per_10k_shown_chars
2+10-K,business,a<3k,568,437,0.0158,0.0206,1.58,1.0,1814.0,0.0873
3+10-K,business,b3-6k,2824,2801,0.0602,0.0607,3.33,1.0,4706.0,0.1279
4+10-K,business,c6-9k,2145,2140,0.1552,0.1556,6.81,1.0,7259.0,0.2139
5+10-K,business,d9-12k,787,784,0.3926,0.3941,14.99,0.529,5423.0,0.7239
6+10-K,business,e12-20k,1839,1835,0.8836,0.8856,33.44,0.356,5722.0,1.5443
7+10-K,business,f20-40k,7522,7521,1.1922,1.1924,40.83,0.206,6003.0,1.986
8+10-K,business,g40-80k,8794,8794,1.3041,1.3041,45.92,0.111,6052.0,2.1547
9+10-K,business,h>=80k,4806,4806,1.5834,1.5834,51.54,0.053,6017.0,2.6318
10+10-K,full_body,c6-9k,1,0,0.0,,0.0,1.0,6878.0,0.0
11+10-K,full_body,e12-20k,1,1,0.0,0.0,0.0,0.083,1251.0,0.0
12+10-K,full_body,f20-40k,5,5,0.2,0.2,20.0,0.213,6828.0,0.2929
13+10-K,full_body,g40-80k,28,28,1.0714,1.0714,42.86,0.098,5786.0,1.8518
14+10-K,full_body,h>=80k,1195,1195,0.6636,0.6636,25.36,0.023,6476.0,1.0248
15+10-K,md_and_a,a<3k,1184,328,0.0186,0.0671,1.01,1.0,825.0,0.2253
16+10-K,md_and_a,b3-6k,332,319,0.4096,0.4263,16.57,1.0,4593.0,0.8919
17+10-K,md_and_a,c6-9k,228,228,0.75,0.75,28.95,1.0,7220.0,1.0388
18+10-K,md_and_a,d9-12k,148,148,0.6689,0.6689,28.38,0.477,4983.0,1.3423
19+10-K,md_and_a,e12-20k,409,409,1.0782,1.0782,43.03,0.354,5681.0,1.898
20+10-K,md_and_a,f20-40k,3147,3147,1.5113,1.5113,55.2,0.195,6113.0,2.4722
21+10-K,md_and_a,g40-80k,14194,14194,1.5696,1.5696,55.5,0.106,6092.0,2.5766
22+10-K,md_and_a,h>=80k,9277,9277,1.2067,1.2067,46.56,0.056,6118.0,1.9723
23+10-K,properties,a<3k,23372,21123,0.1518,0.168,9.75,1.0,1206.0,1.2592
24+10-K,properties,b3-6k,2586,2547,0.6906,0.7012,27.57,1.0,4050.0,1.7054
25+10-K,properties,c6-9k,686,686,1.4752,1.4752,43.88,1.0,7269.0,2.0295
26+10-K,properties,d9-12k,346,346,0.7486,0.7486,24.86,0.383,3969.0,1.8858
27+10-K,properties,e12-20k,421,413,0.9382,0.9564,34.68,0.3,4535.0,2.0687
28+10-K,properties,f20-40k,434,434,1.1037,1.1037,43.32,0.212,5680.0,1.9432
29+10-K,properties,g40-80k,214,214,1.229,1.229,52.8,0.113,6045.0,2.0332
30+10-K,properties,h>=80k,177,177,0.7684,0.7684,32.2,0.041,5982.0,1.2845
31+10-K,quantitative_disclosures,a<3k,11994,7807,0.0043,0.0067,0.37,1.0,1545.0,0.0281
32+10-K,quantitative_disclosures,b3-6k,8604,8035,0.0191,0.0204,1.28,1.0,4258.0,0.0448
33+10-K,quantitative_disclosures,c6-9k,3070,2986,0.0267,0.0275,1.69,1.0,7243.0,0.0369
34+10-K,quantitative_disclosures,d9-12k,1035,1033,0.0309,0.031,1.64,0.38,3862.0,0.0801
35+10-K,quantitative_disclosures,e12-20k,874,872,0.0275,0.0275,1.49,0.351,5305.0,0.0518
36+10-K,quantitative_disclosures,f20-40k,367,367,0.0245,0.0245,1.91,0.258,6510.0,0.0377
37+10-K,quantitative_disclosures,g40-80k,92,92,0.3804,0.3804,19.57,0.114,6571.0,0.579
38+10-K,quantitative_disclosures,h>=80k,840,840,0.1583,0.1583,11.19,0.049,7130.0,0.2221
39+10-K,risk_factors,a<3k,461,257,0.0217,0.0389,2.17,1.0,1318.0,0.1646
40+10-K,risk_factors,b3-6k,264,251,0.0379,0.0398,2.65,1.0,4409.0,0.0859
41+10-K,risk_factors,c6-9k,206,206,0.0146,0.0146,0.97,1.0,7203.0,0.0202
42+10-K,risk_factors,d9-12k,213,213,0.1127,0.1127,7.51,0.45,4777.0,0.2359
43+10-K,risk_factors,e12-20k,1217,1217,0.1085,0.1085,6.0,0.364,5862.0,0.185
44+10-K,risk_factors,f20-40k,5294,5294,0.0852,0.0852,4.53,0.209,6221.0,0.1369
45+10-K,risk_factors,g40-80k,11571,11571,0.0924,0.0924,5.32,0.112,6379.0,0.1448
46+10-K,risk_factors,h>=80k,9932,9932,0.1106,0.1106,5.11,0.052,6371.0,0.1735
47+10-Q,controls_and_procedures,a<3k,78712,11221,0.062,0.4348,5.28,1.0,1645.0,0.3768
48+10-Q,controls_and_procedures,b3-6k,10287,6460,0.1367,0.2176,9.68,1.0,3912.0,0.3494
49+10-Q,controls_and_procedures,c6-9k,1667,1562,0.1746,0.1863,10.5,1.0,7207.0,0.2422
50+10-Q,controls_and_procedures,d9-12k,540,516,0.187,0.1957,11.67,0.457,4718.0,0.3964
51+10-Q,controls_and_procedures,e12-20k,300,268,0.6033,0.6754,18.0,0.367,5439.0,1.1092
52+10-Q,controls_and_procedures,f20-40k,84,83,0.2143,0.2169,14.29,0.2,5176.0,0.414
53+10-Q,controls_and_procedures,g40-80k,175,175,0.3829,0.3829,30.29,0.115,6940.0,0.5517
54+10-Q,controls_and_procedures,h>=80k,628,628,0.2213,0.2213,15.29,0.048,6806.0,0.3252
55+10-Q,financial_statements,a<3k,2293,555,0.0279,0.1153,1.61,1.0,869.0,0.3211
56+10-Q,financial_statements,b3-6k,403,368,0.2258,0.2473,11.91,1.0,4313.0,0.5236
57+10-Q,financial_statements,c6-9k,215,212,0.3442,0.3491,19.07,1.0,7290.0,0.4721
58+10-Q,financial_statements,d9-12k,228,228,0.2412,0.2412,15.35,0.399,4167.0,0.5788
59+10-Q,financial_statements,e12-20k,1102,1102,0.4156,0.4156,24.41,0.339,5608.0,0.7411
60+10-Q,financial_statements,f20-40k,12758,12758,0.4176,0.4176,26.98,0.216,6776.0,0.6163
61+10-Q,financial_statements,g40-80k,44583,44583,0.3653,0.3653,22.95,0.121,6922.0,0.5277
62+10-Q,financial_statements,h>=80k,30300,30300,0.2576,0.2576,16.19,0.063,6899.0,0.3733
63+10-Q,full_document,g40-80k,8,8,1.375,1.375,75.0,0.106,6613.0,2.0794
64+10-Q,full_document,h>=80k,233,233,0.412,0.412,13.73,0.028,6715.0,0.6136
65+10-Q,legal_proceedings,a<3k,58328,12572,0.005,0.023,0.45,1.0,697.0,0.0711
66+10-Q,legal_proceedings,b3-6k,4790,3799,0.0436,0.055,3.09,1.0,4215.0,0.1035
67+10-Q,legal_proceedings,c6-9k,1660,1510,0.0705,0.0775,4.7,1.0,7300.0,0.0965
68+10-Q,legal_proceedings,d9-12k,798,764,0.084,0.0877,6.39,0.324,3352.0,0.2505
69+10-Q,legal_proceedings,e12-20k,759,735,0.0883,0.0912,4.74,0.302,4505.0,0.1959
70+10-Q,legal_proceedings,f20-40k,328,328,0.122,0.122,7.93,0.25,6501.0,0.1876
71+10-Q,legal_proceedings,g40-80k,108,108,0.0926,0.0926,8.33,0.116,6063.0,0.1527
72+10-Q,legal_proceedings,h>=80k,227,227,0.2026,0.2026,12.78,0.052,6894.0,0.2939
73+10-Q,md_and_a,a<3k,3162,2149,0.0927,0.1363,7.37,1.0,1353.0,0.6848
74+10-Q,md_and_a,b3-6k,1474,1405,0.2252,0.2363,12.96,1.0,4255.0,0.5294
75+10-Q,md_and_a,c6-9k,456,436,0.4781,0.5,26.54,1.0,7363.0,0.6493
76+10-Q,md_and_a,d9-12k,406,406,0.6872,0.6872,30.05,0.491,5144.0,1.3358
77+10-Q,md_and_a,e12-20k,2696,2696,1.079,1.079,46.88,0.364,6061.0,1.7803
78+10-Q,md_and_a,f20-40k,25258,25258,1.3259,1.3259,51.16,0.21,6401.0,2.0716
79+10-Q,md_and_a,g40-80k,43048,43048,1.1532,1.1532,45.35,0.118,6330.0,1.8219
80+10-Q,md_and_a,h>=80k,14871,14871,0.8165,0.8165,36.41,0.058,6250.0,1.3064
81+10-Q,quantitative_disclosures,a<3k,57596,22443,0.004,0.0104,0.36,1.0,1009.0,0.0401
82+10-Q,quantitative_disclosures,b3-6k,16617,15452,0.0205,0.0221,1.46,1.0,4204.0,0.0488
83+10-Q,quantitative_disclosures,c6-9k,4886,4801,0.0244,0.0248,1.58,1.0,7245.0,0.0336
84+10-Q,quantitative_disclosures,d9-12k,1866,1857,0.0139,0.014,1.18,0.392,4006.0,0.0348
85+10-Q,quantitative_disclosures,e12-20k,1513,1507,0.0145,0.0146,0.73,0.37,5552.0,0.0262
86+10-Q,quantitative_disclosures,f20-40k,527,527,0.0266,0.0266,1.52,0.277,6953.0,0.0382
87+10-Q,quantitative_disclosures,g40-80k,66,66,0.3939,0.3939,15.15,0.124,6607.0,0.5963
88+10-Q,quantitative_disclosures,h>=80k,67,67,0.403,0.403,19.4,0.053,7043.0,0.5722
89+10-Q,risk_factors,a<3k,45276,8173,0.0106,0.0586,0.96,1.0,703.0,0.1504
90+10-Q,risk_factors,b3-6k,7464,6079,0.1101,0.1352,9.11,1.0,4262.0,0.2584
91+10-Q,risk_factors,c6-9k,3229,3068,0.1963,0.2066,14.21,1.0,7322.0,0.2682
92+10-Q,risk_factors,d9-12k,1800,1750,0.1517,0.156,12.72,0.44,4562.0,0.3324
93+10-Q,risk_factors,e12-20k,1908,1886,0.173,0.175,14.52,0.373,5563.0,0.3109
94+10-Q,risk_factors,f20-40k,1526,1514,0.1664,0.1678,11.53,0.233,6452.0,0.258
95+10-Q,risk_factors,g40-80k,3007,3006,0.1217,0.1218,7.15,0.106,6274.0,0.194
96+10-Q,risk_factors,h>=80k,8350,8350,0.1511,0.1511,6.29,0.046,6452.0,0.2343
97+10-Q,unregistered_sales,a<3k,21342,10524,0.0209,0.0424,1.97,1.0,2333.0,0.0896
98+10-Q,unregistered_sales,b3-6k,44577,37930,0.1305,0.1533,10.24,1.0,4186.0,0.3117
99+10-Q,unregistered_sales,c6-9k,8785,8176,0.266,0.2858,17.3,1.0,7117.0,0.3738
100+10-Q,unregistered_sales,d9-12k,2259,2096,0.1284,0.1384,7.97,0.315,3211.0,0.3998
101+10-Q,unregistered_sales,e12-20k,1847,1774,0.1153,0.1201,6.82,0.244,3558.0,0.3241
102+10-Q,unregistered_sales,f20-40k,569,538,0.2074,0.2193,11.42,0.187,4810.0,0.4311
103+10-Q,unregistered_sales,g40-80k,260,260,0.6654,0.6654,27.31,0.113,6399.0,1.0398
104+10-Q,unregistered_sales,h>=80k,571,569,0.2487,0.2496,16.11,0.055,6777.0,0.3669
105+8-K,full_body,a<3k,91457,23244,0.0649,0.2552,6.21,1.0,2546.0,0.2547
106+8-K,full_body,b3-6k,225916,106791,0.1281,0.2709,11.4,1.0,4063.0,0.3152
107+8-K,full_body,c6-9k,47878,40262,0.4634,0.5511,37.21,1.0,7229.0,0.641
108+8-K,full_body,d9-12k,17948,17023,0.3668,0.3868,27.7,0.348,3565.0,1.0289
109+8-K,full_body,e12-20k,12599,12331,0.5425,0.5543,38.92,0.313,4581.0,1.1842
110+8-K,full_body,f20-40k,3859,3847,0.8785,0.8812,54.6,0.24,6209.0,1.4148
111+8-K,full_body,g40-80k,759,759,0.7457,0.7457,44.53,0.136,6933.0,1.0756
112+8-K,full_body,h>=80k,185,185,0.8919,0.8919,45.95,0.048,6668.0,1.3375
added results/focus/shown_fraction_bins.csv +10 −0
@@ -0,0 +1,10 @@
1+form,bin,n,calls,with_mentions,mentions
2+10-K,a>=0.9,58527,50151,3900,7509
3+10-K,b0.25-0.9,10276,10258,2136,5541
4+10-K,c<0.25,74901,74901,24841,68572
5+10-Q,a>=0.9,373347,158886,15093,19490
6+10-Q,b0.25-0.9,23708,23354,5810,12211
7+10-Q,c<0.25,181738,181733,54802,120560
8+8-K,a>=0.9,365776,170302,49247,57058
9+8-K,b0.25-0.9,21524,20839,9537,13252
10+8-K,c<0.25,13301,13301,2864,4284
added results/focus/stats_keys.json +18 −0
@@ -0,0 +1,18 @@
1+{
2+ "ledger_10k_mdna_median_words": 9905.0,
3+ "ledger_10k_mdna_median_chars": 64194.0,
4+ "ledger_10k_mdna_n": 28919,
5+ "ledger_10k_mdna_shown_p50": 0.09323377723039027,
6+ "ledger_10k_mdna_last_p50": 0.16183513990420972,
7+ "ledger_10k_mdna_pct_shown_lt_25": 90.50451260417027,
8+ "ledger_sections_over_9000_chars": 326095,
9+ "ledger_sections": 1123098,
10+ "calls_over_9000_chars": 324386,
11+ "calls": 703725,
12+ "mentions_from_sections_shown_lt_25": 193416,
13+ "mentions_total": 308477,
14+ "msg_truncated_14k": 0,
15+ "gate_py_pass_total": 703737,
16+ "gate_duckdb_pass_total_N1": 703737,
17+ "mean_shown_frac_over_budget": 0.15934812827563005
18+}
\ No newline at end of file
19
Menu

Theme