Estate reconciliation
Four pages count the research estate, and each counts something different. Today counts rows in the decision feed, Governance counts published report files, the Library counts cards, and Alpha Lab counts only the rows the last run refreshed. This page states what each unit is, then breaks every count into the same six states, name by name, from the files those pages read.
Four counts, four units
These are not four measurements of one thing. A difference between two of them means something only through the bridges further down, which name every item that moves.
| Page | Prints | One unit is |
|---|---|---|
| Today | 886 names now | A decision-feed row. One row per ticker in the Research OS decision feed, whatever date the row was last refreshed. The feed keeps a row for a name whose report page has since been withdrawn.Read from public/research/data/ros-feed.json |
| Governance | 881 = 830 fresh + 4 caveat + 47 exceptions | A published report file. One report file per covered name at the last run: the estate the exception register is computed over. Every file is fresh, published under a caveat, or an exception.Read from content/stock-reports/ (via the exception register in public/research/data/governance.json) |
| Library | 888 reports | A library card. One card per research artefact the Library lists: a stock report, an externally prepared research deck, or a long-form thesis. Research decks and theses are not companies and carry no state.Read from content/stock-reports.index.json + content/external-research.json + content/registry.ts |
| Alpha Lab | 834 names · 52 held out | A refreshed decision-feed row. The decision-feed rows the last run refreshed: a row is shown when its date equals the feed’s date (owner rule, 2026-08-25). A row the run did not refresh is held out, and the raw feed keeps it.Read from public/research/data/ros-feed.json (rows dated 2026-10-02) |
| S&P 900 frame | not printed | An index listing. One listing per ticker in the S&P 500 and S&P 400 membership files the engine carries. No page prints this count; it is the frame for the dual-class, excluded and unpublished names.Read from content/sp500_matrix.json + content/sp400_matrix.json |
What each count is made of
Each column is one count in its own unit, split into the six states defined below. A zero is often structural: a report file cannot be ended, and only the S&P 900 frame holds names with no page.
| State | Today feed rows | Governance report files | Library cards | Alpha Lab rows shown | Alpha Lab rows held out | S&P 900 listings |
|---|---|---|---|---|---|---|
| Active | 834 | 834 | 834 | 834 | 0 | 828 |
| Held | 47 | 47 | 47 | 0 | 47 | 47 |
| Ended | 5 | 0 | 0 | 0 | 5 | 9 |
| Unpublished | 0 | 0 | 0 | 0 | 0 | 4 |
| Dual-class | 0 | 0 | 0 | 0 | 0 | 3 |
| Excluded | 0 | 0 | 0 | 0 | 0 | 12 |
| Research decks and theses | · | · | 7 | · | · | · |
| Total | 886 | 881 | 888 | 834 | 52 | 903 |
- Today: 886 feed rows = 834 active + 47 held + 5 ended
- Governance: 881 report files = 830 fresh + 4 caveat + 47 exceptions = 834 active + 47 held
- Library: 888 cards = 881 stock reports (834 active + 47 held) + 5 research decks + 2 theses
- Alpha Lab: 834 rows shown = 834 active + 0 held; 52 rows held out = 47 held + 5 ended
- S&P 900: 903 listings = 828 active + 47 held + 9 ended + 4 unpublished + 3 dual-class + 12 excluded
The six states
Every name is in exactly one state. Publication decides first: a name with a current page is active or held, whatever else a register says about it.
- Active (834)
- A current report page that states a rating: published by the last run, or published under a reviewed price-data caveat.
- Held (47)
- A current report page whose rating is withheld, by an owner rating suspension, an analyst review, a pending acquisition, or a publish gate that kept the previous page.
- Ended (9)
- A report page withdrawn from current coverage and kept as part of the research record. It is not a Library card and is not in the exception register.
- Unpublished (4)
- A listing in the S&P 900 membership files, or a row in the decision feed, with no report page and no recorded reason.
- Dual-class (3)
- A second share class of an issuer that is covered through its primary listing.
- Excluded (12)
- On the engine’s deferral register with no report page: the engine declines to model it on the data it has.
From one count to another
- Today 886 → Governance 881. Take away the feed rows that have no current report page:Spelled differently but one issuer: BRK.B in the feed is BRK-B on its page. This page counts each once.
- Today 886 → Alpha Lab 834 shown. Take away the 52 rows the last run (2026-10-02) did not refresh:The ended rows belong to withdrawn pages. They are not under coverage and are not in the exception register, whose estate is the report files.
- Governance 881 → Library 888. Every report file has exactly one card. Add 5 externally prepared research decks and 2 long-form theses: The SaaSpocalypse & The HALO Trade; Gold Producers: Bull & Bear Case; The 2026 Middle East Oil Shock; ServiceNow: Institutional Investment Research; Robinhood Markets: Investment Research; Twenty years of gold, silver & copper — and the ten-year theses that follow; AAPL: a real growth inflection — but the stock has already paid for it. These are not companies, so they have no state.
- Governance 881 and Alpha Lab 834. These are different units, so a difference between them is not a derivation. Alpha Lab admits a row by its date; the register classes a file by its publication. On this build the report files Alpha Lab does not show are:
- 21 held at publish, previous page kept: AES, APP, BHF, CPT, CTVA, CYTK, FICO, FRT, GATX, L, NLY, PAYX, PII, PK, RGLD, SLAB, TECH, TTMI, TXNM, VIAV, VNO
- 26 rating suspended by owner decision: APG, APPF, ARWR, AVGO, BTSG, CAVA, CF, CRBG, DOCN, EQH, FN, G, HIMS, INCY, MMS, MOS, MU, MZTI, NOVT, ORA, PBF, PEN, ROKU, SITM, STX, TTWO
The names behind the numbers
- Held (47). The report page stays up and its rating is withheld.
- 26 rating suspended by owner decision — OWNER-decided rating suspension (D-376) — the name publishes, the verdict does not: APG, APPF, ARWR, AVGO, BTSG, CAVA, CF, CRBG, DOCN, EQH, FN, G, HIMS, INCY, MMS, MOS, MU, MZTI, NOVT, ORA, PBF, PEN, ROKU, SITM, STX, TTWO
- 21 held at publish, previous page kept — held by a publish gate (price anomaly / QA-3xx / quality gate): AES, APP, BHF, CPT, CTVA, CYTK, FICO, FRT, GATX, L, NLY, PAYX, PII, PK, RGLD, SLAB, TECH, TTMI, TXNM, VIAV, VNO
- Active under a caveat (4). Counted active: the rating is published, with the caveat on the page.
- Ended (9). Withdrawn pages, kept at their addresses as part of the record.
- Excluded (12). On the engine’s deferral register with no page; the recorded reason for each is in the Library: BA, BF.B, CHRD, CHTR, FISV, KIM, LYV, MP, MRNA, ROIV, SNDK, WBD
- Dual-class (3). FOX is covered as FOXA; GOOG is covered as GOOGL; NWS is covered as NWSA
- Unpublished (4). No report page and no recorded reason: BLD TopBuild Corp. (S&P 400); ECHO EchoStar (S&P 500); GHC Graham Holdings (S&P 400); JHG Janus Henderson (S&P 400)
- On the deferral register and published (19). The engine’s deferral register lists these names, and each has a report page, so each is counted by its page: 1 active (DUOL); 18 held (APPF, ARWR, BHF, BTSG, CAVA, CRBG, CYTK, DOCN, EQH, HIMS, MU, MZTI, ORA, PEN, ROKU, SITM, STX, TTMI)
- Covered outside the S&P 900 membership files (6). AU, CBRS, HONA, SNAP, SPCX, ZS
- Spelled differently across sources (2). BRK-B: BRK.B in the feed, BRK.B in the membership files; MOG-A: MOG.A in the membership files. Tickers are compared after normalising the share-class separator.
Active (834)
A, AA, AAL, AAON, AAPL, ABBV, ABNB, ABT, ACGL, ACM, ACN, ADBE, ADC, ADI, ADM, ADP, ADSK, AEE, AEIS, AEP, AFG, AFL, AGCO, AHR, AIG, AIT, AIZ, AJG, AKAM, ALB, ALGM, ALGN, ALK, ALL, ALLE, ALLY, ALSN, ALV, AM, AMAT, AMCR, AMD, AME, AMG, AMGN, AMH, AMKR, AMP, AMT, AMZN, AN, ANET, ANF, AON, AOS, APA, APD, APO, APTV, AR, ARE, ARES, ARMK, ARW, ASB, ASH, ATI, ATO, ATR, AU, AVAV, AVNT, AVT, AVTR, AVY, AWK, AXON, AXP, AXTA, AYI, AZO, BAC, BAH, BALL, BAX, BBWI, BBY, BC, BCO, BDC, BDX, BEN, BG, BIIB, BILL, BIO, BJ, BKH, BKNG, BKR, BLDR, BLK, BMRN, BMY, BNY, BR, BRK-B, BRKR, BRO, BROS, BRX, BSX, BSY, BURL, BWA, BWXT, BX, BXP, BYD, C, CACI, CAG, CAH, CAR, CARR, CART, CASY, CAT, CB, CBOE, CBRE, CBRS, CBSH, CBT, CCI, CCK, CCL, CDE, CDNS, CDP, CDW, CEG, CELH, CFG, CFR, CG, CGNX, CHD, CHDN, CHE, CHH, CHRW, CHWY, CI, CIEN, CINF, CL, CLF, CLH, CLX, CMC, CMCSA, CME, CMG, CMI, CMS, CNC, CNH, CNM, CNO, CNP, CNX, COF, COHR, COIN, COKE, COLB, COLM, COO, COP, COR, COST, CPAY, CPRI, CPRT, CR, CRH, CRL, CRM, CROX, CRS, CRUS, CRWD, CSCO, CSGP, CSL, CSX, CTAS, CTRE, CTSH, CUBE, CUZ, CVLT, CVNA, CVS, CVX, CW, CXT, D, DAL, DAR, DASH, DBX, DCI, DD, DDOG, DE, DECK, DELL, DG, DGX, DHI, DHR, DINO, DIS, DKS, DLB, DLR, DLTR, DOC, DOCS, DOCU, DOV, DOW, DPZ, DRI, DT, DTE, DTM, DUK, DUOL, DVA, DVN, DXCM, DY, EBAY, ECL, ED, EEFT, EFX, EG, EGP, EHC, EIX, EL, ELAN, ELF, ELS, ELV, EME, EMR, ENS, ENSG, ENTG, EOG, EPR, EQIX, EQT, ERIE, ES, ESAB, ESNT, ESS, ETN, ETR, EVR, EVRG, EW, EWBC, EXC, EXE, EXEL, EXLS, EXP, EXPD, EXPE, EXPO, EXR, F, FAF, FANG, FAST, FBIN, FCFS, FCN, FCX, FDS, FDX, FDXF, FE, FFIN, FFIV, FHI, FHN, FIS, FITB, FIVE, FIX, FLEX, FLG, FLR, FLS, FNB, FND, FNF, FOUR, FOXA, FR, FSLR, FTI, FTNT, FTV, GAP, GBCI, GD, GDDY, GE, GEF, GEHC, GEN, GEV, GGG, GILD, GIS, GL, GLPI, GLW, GM, GME, GMED, GNRC, GNTX, GOOGL, GPC, GPK, GPN, GRMN, GS, GWRE, GWW, GXO, H, HAE, HAL, HALO, HAS, HBAN, HCA, HD, HGV, HIG, HII, HL, HLI, HLNE, HLT, HOG, HOMB, HON, HONA, HOOD, HPE, HPQ, HQY, HR, HRB, HRL, HSIC, HST, HSY, HUBB, HUM, HWC, HWM, HXL, IBKR, IBM, IBOC, ICE, IDA, IDCC, IDXX, IEX, IFF, ILMN, INGR, INTC, INTU, INVH, IP, IPGP, IQV, IR, IRM, IRT, ISRG, IT, ITT, ITW, IVZ, J, JAZZ, JBHT, JBL, JCI, JEF, JKHY, JLL, JNJ, JPM, KBH, KBR, KD, KDP, KEX, KEY, KEYS, KHC, KKR, KLAC, KMB, KMI, KNF, KNSL, KNX, KO, KR, KRC, KRG, KTOS, KVUE, LAD, LAMR, LDOS, LEA, LECO, LEN, LFUS, LH, LHX, LII, LIN, LITE, LIVN, LLY, LMT, LNT, LNTH, LOPE, LOW, LPX, LRCX, LSCC, LSTR, LULU, LUV, LVS, LYB, M, MA, MAA, MANH, MAR, MAS, MAT, MCD, MCHP, MCK, MCO, MDLZ, MDT, MEDP, MET, META, MGM, MIDD, MKC, MKSI, MLI, MLM, MMM, MO, MOG-A, MORN, MPC, MPWR, MRK, MRSH, MRVL, MS, MSA, MSCI, MSFT, MSI, MSM, MTB, MTD, MTDR, MTG, MTN, MTSI, MTZ, MUR, MUSA, NBIX, NCLH, NDAQ, NDSN, NEE, NEM, NEU, NFG, NFLX, NI, NJR, NKE, NNN, NOC, NOV, NOW, NRG, NSC, NTAP, NTNX, NTRS, NUE, NVDA, NVR, NVST, NVT, NWE, NWSA, NXPI, NXST, NXT, NYT, O, OC, ODFL, OGE, OGS, OHI, OKE, OKTA, OLED, OLLI, OLN, OMC, ON, ONB, ONTO, OPCH, ORCL, ORI, ORLY, OSK, OTIS, OVV, OXY, OZK, P, PAG, PANW, PATH, PB, PCAR, PCG, PCTY, PEG, PEGA, PEP, PFE, PFG, PFGC, PG, PGR, PH, PHM, PINS, PKG, PLD, PLNT, PLTR, PM, PNC, PNFP, PNR, PNW, PODD, POR, POST, PPC, PPG, PPL, PR, PRI, PRU, PSA, PSKY, PSN, PSX, PTC, PVH, PWR, PYPL, Q, QCOM, QLYS, R, RBA, RBC, RCL, REG, REGN, REXR, RF, RGA, RGEN, RH, RJF, RL, RLI, RMBS, RMD, RNR, ROK, ROL, ROP, ROST, RPM, RRC, RRX, RS, RSG, RTX, RVTY, RYAN, RYN, SAIA, SAIC, SAM, SANM, SARO, SBAC, SBRA, SBUX, SCHW, SCI, SEIC, SF, SFM, SGI, SHC, SHW, SIGI, SIRI, SJM, SLB, SLGN, SLM, SMCI, SMG, SMTC, SN, SNA, SNAP, SNPS, SNX, SO, SOLS, SOLV, SON, SPCX, SPG, SPGI, SPXC, SR, SRE, SSB, SSD, ST, STAG, STE, STLD, STRL, STT, STWD, STZ, SW, SWK, SWKS, SWX, SYF, SYK, SYNA, SYY, T, TAP, TCBI, TDG, TDY, TEL, TER, TEX, TFC, TGT, THC, THG, THO, TJX, TKO, TKR, TLN, TMO, TMUS, TNL, TOL, TPL, TPR, TREX, TRGP, TRMB, TROW, TRU, TRV, TSCO, TSLA, TSN, TT, TTC, TTD, TTEK, TWLO, TXN, TXRH, TXT, TYL, UAL, UBER, UBSI, UDR, UFPI, UGI, UHS, ULS, ULTA, UMBF, UNH, UNM, UNP, UPS, URI, USB, USFD, UTHR, V, VAL, VC, VEEV, VFC, VICI, VICR, VLO, VLTO, VLY, VMC, VMI, VNOM, VNT, VOYA, VRSK, VRSN, VRT, VRTX, VST, VTR, VTRS, VVV, VZ, WAB, WAL, WAT, WCC, WDAY, WDC, WEC, WELL, WEX, WFC, WFRD, WH, WHR, WING, WLK, WM, WMB, WMG, WMS, WMT, WPC, WRB, WSM, WSO, WST, WTFC, WTRG, WTS, WTW, WWD, WY, WYNN, XEL, XOM, XPO, XRAY, XYL, XYZ, YETI, YUM, ZBH, ZBRA, ZION, ZS, ZTS
Checks
Each check compares two sources written by different producers. A sum over one list is not a check, so none is listed.
- Holds: The exception register’s sentence adds up881 = 830 + 4 + 47
- Holds: The register’s estate is the set of published report files881 in the register · 881 report files
- Holds: The register lists every caveat and exception it counts4 caveat + 47 exception entries · the sentence says 4 + 47
- Holds: Every name in the register has a published report file
- Holds: The register’s class and each card agree on whether the rating is withheld
- Holds: The Library’s stock cards and Governance’s report files are the same names
- Holds: Every current report page has a decision-feed row
- Holds: No name appears twice in the feed or the index once spellings are normalised
- Holds: Every register class maps to a state
- Holds: Today’s own count agrees with this pagethe page counts 886 · this reconciliation counts 886
- Holds: The Library’s own count agrees with this pagethe page counts 888 · this reconciliation counts 888
- Holds: Alpha Lab’s own count agrees with this pagethe page counts 834 · this reconciliation counts 834
- Holds: Alpha Lab’s held-out count agrees with this pagethe page counts 52 · this reconciliation counts 52
- Holds: The pages, the feed and the register are from the same runpages 2026-10-02 · feed 2026-10-02 · register 2026-10-02