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 | 921 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 | 916 = 860 fresh + 4 caveat + 52 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 | 918 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. A withdrawn deck is not listed and is named beside the count.Read from content/stock-reports.index.json + content/external-research.json + content/registry.ts |
| Alpha Lab | 891 names · 30 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-12) |
| 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 | 864 | 864 | 864 | 864 | 0 | 830 |
| Held | 52 | 52 | 52 | 27 | 25 | 51 |
| Ended | 5 | 0 | 0 | 0 | 5 | 9 |
| Unpublished | 0 | 0 | 0 | 0 | 0 | 3 |
| Dual-class | 0 | 0 | 0 | 0 | 0 | 3 |
| Excluded | 0 | 0 | 0 | 0 | 0 | 19 |
| Research decks and theses | · | · | 2 | · | · | · |
| Total | 921 | 916 | 918 | 891 | 30 | 915 |
- Today: 921 feed rows = 864 active + 52 held + 5 ended
- Governance: 916 report files = 860 fresh + 4 caveat + 52 exceptions = 864 active + 52 held
- Library: 918 cards = 916 stock reports (864 active + 52 held) + 0 research decks + 2 theses (5 withdrawn research decks not listed)
- Alpha Lab: 891 rows shown = 864 active + 27 held; 30 rows held out = 25 held + 5 ended
- S&P 900: 915 listings = 830 active + 51 held + 9 ended + 3 unpublished + 3 dual-class + 19 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 (864)
- A current report page that states a rating: published by the last run, or published under a reviewed price-data caveat.
- Held (52)
- 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 (3)
- 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 (30)
- 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 921 → Governance 916. 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 921 → Alpha Lab 891 shown. Take away the 30 rows the last run (2026-10-12) 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 916 → Library 918. Every report file has exactly one card. Add 0 externally prepared research decks and 2 long-form theses: 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. Not added: 5 research decks withdrawn and taken off every listing (The SaaSpocalypse & The HALO Trade, withdrawn 2026-10-02; Gold Producers: Bull & Bear Case, withdrawn 2026-10-02; The 2026 Middle East Oil Shock, withdrawn 2026-10-02; ServiceNow: Institutional Investment Research, withdrawn 2026-10-02; Robinhood Markets: Investment Research, withdrawn 2026-10-02). Each keeps its page as a dated record.
- Governance 916 and Alpha Lab 891. 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:and it shows no row without a report file. When the two rules disagree, the names appear here.
The names behind the numbers
- Held (52). The report page stays up and its rating is withheld.
- 27 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, V
- 25 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, GLPI, KNF, L, NLY, OHI, PAYX, PII, PSKY, QRVO, RGLD, SLAB, TECH, TPL, TTMI, TXNM, 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 (30). On the engine’s deferral register with no page; the reason for each is in the Library: ADT, AGNC, AMTM, BA, BE, BF.B, CHRD, CHTR, CORT, CWEN, EMN, FISV, FRPT, KIM, KMX, KRYS, LKQ, LNC, LYV, MOH, MP, MRNA, MSGS, OGN, RDDT, RITM, ROIV, SNDK, VMRK, WBD
- Dual-class (3). FOX is covered as FOXA; GOOG is covered as GOOGL; NWS is covered as NWSA
- Unpublished (3). No report page and no recorded reason: ECHO EchoStar (S&P 500); GHC Graham Holdings (S&P 400); IESC IES Holdings (S&P 400)
- On the deferral register and published (18). The engine’s deferral register lists these names, and each has a report page, so each is counted by its page: 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 (35). AGO, AU, AWI, BFAM, CBRS, CPB, ECG, ENPH, EPAM, ESI, ETSY, FHB, FORM, GTES, HAYW, KRMN, LW, MDU, MHK, MKTX, MRP, PAYC, POOL, POWL, PRIM, QRVO, REYN, RHI, RNG, SNAP, SNDR, SPCX, VIRT, WU, 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 (864)
A, AA, AAL, AAON, AAPL, ABBV, ABNB, ABT, ACGL, ACM, ACN, ADBE, ADC, ADI, ADM, ADP, ADSK, AEE, AEIS, AEP, AFG, AFL, AGCO, AGO, 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, AWI, AWK, AXON, AXP, AXTA, AYI, AZO, BAC, BAH, BALL, BAX, BBWI, BBY, BC, BCO, BDC, BDX, BEN, BFAM, 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, CPB, 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, EAT, EBAY, ECG, ECL, ED, EEFT, EFX, EG, EGP, EHC, EIX, EL, ELAN, ELF, ELS, ELV, EME, EMR, ENPH, ENS, ENSG, ENTG, EOG, EPAM, EPR, EQIX, EQT, ERIE, ES, ESAB, ESI, ESNT, ESS, ETN, ETR, ETSY, 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, FERG, FFIN, FFIV, FHB, FHI, FHN, FIS, FITB, FIVE, FIX, FLEX, FLG, FLR, FLS, FNB, FND, FNF, FORM, FOUR, FOXA, FR, FSLR, FTI, FTNT, FTV, GAP, GBCI, GD, GDDY, GE, GEF, GEHC, GEN, GEV, GGG, GILD, GIS, GL, GLW, GM, GME, GMED, GNRC, GNTX, GOOGL, GPC, GPK, GPN, GRMN, GS, GTES, GWRE, GWW, GXO, H, HAE, HAL, HALO, HAS, HAYW, 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, HUBS, 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, KNSL, KNX, KO, KR, KRC, KRG, KRMN, 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, LW, LYB, M, MA, MAA, MANH, MAR, MAS, MAT, MCD, MCHP, MCK, MCO, MDLZ, MDT, MDU, MEDP, MET, META, MGM, MHK, MIDD, MKC, MKSI, MKTX, MLI, MLM, MMM, MO, MOG-A, MORN, MPC, MPWR, MRK, MRP, 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, OKE, OKTA, OLED, OLLI, OLN, OMC, ON, ONB, ONTO, OPCH, ORCL, ORI, ORLY, OSK, OTIS, OVV, OXY, OZK, P, PAG, PANW, PATH, PAYC, PB, PCAR, PCG, PCTY, PEG, PEGA, PEP, PFE, PFG, PFGC, PG, PGR, PH, PHM, PINS, PK, PKG, PLD, PLNT, PLTR, PM, PNC, PNFP, PNR, PNW, PODD, POOL, POR, POST, POWL, PPC, PPG, PPL, PR, PRI, PRIM, PRU, PSA, PSN, PSX, PTC, PVH, PWR, PYPL, Q, QCOM, QLYS, R, RBA, RBC, RCL, REG, REGN, REXR, REYN, RF, RGA, RGEN, RH, RHI, RJF, RL, RLI, RMBS, RMD, RNG, 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, SNDR, SNPS, SNX, SO, SOLS, SOLV, SON, SPCX, SPG, SPGI, SPXC, SR, SRE, SSB, SSD, ST, STAG, STE, STLD, STRL, STT, STWD, STZ, SUI, 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, TOST, 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, VAL, VC, VEEV, VFC, VIAV, VICI, VICR, VIRT, 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, WU, 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 up916 = 860 + 4 + 52
- Holds: The register’s estate is the set of published report files916 in the register · 916 report files
- Holds: The register lists every caveat and exception it counts4 caveat + 52 exception entries · the sentence says 4 + 52
- 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 921 · this reconciliation counts 921
- Holds: The Library’s own count agrees with this pagethe page counts 918 · this reconciliation counts 918
- Holds: Alpha Lab’s own count agrees with this pagethe page counts 891 · this reconciliation counts 891
- Holds: Alpha Lab’s held-out count agrees with this pagethe page counts 30 · this reconciliation counts 30
- Holds: The pages, the feed and the register are from the same runpages 2026-10-12 · feed 2026-10-12 · register 2026-10-12