Skip to content

Form 1-Z securitiesClassTitle is lost: text value in a numeric column (595/595 rows) #301

Description

@sroussey

Summary

rega_financial_data.field_value is numeric, but the Form 1-Z suspension block
includes a text field — the title of the securities class being suspended. It
cannot be stored, so it is silently dropped at ingest.

595 of 595 rows carry no value — a 100% loss rate.

 field_name                          | rows | non_null
-------------------------------------+------+----------
 suspension_0_approxRecordHolders    |  585 |      585
 suspension_0_securitiesClassTitle   |  585 |        0
 suspension_1_approxRecordHolders    |    8 |        8
 suspension_1_securitiesClassTitle   |    8 |        0
 suspension_2_approxRecordHolders    |    2 |        2
 suspension_2_securitiesClassTitle   |    2 |        0

The numeric sibling (approxRecordHolders) stores fine at 595/595. Only the text
field is affected.

Where it happens

Produced by sec, not embarc:

  • sec/src/storage/reg-a/RegAFinancialDataSchema.tsfield_value is a nullable
    number; the table is (cik, file_number, accession_number, field_name) -> numeric
  • the row is still written, with field_value null, so the loss leaves a
    well-formed row rather than an error

The EAV shape is right for the ~16 genuine financial figures the 1-A family
reports. Form 1-Z's suspension block is the only place a non-numeric value tries to
use it.

Impact

Low but real. A 1-Z tells you the issuer is suspending reporting for a particular
class of securities
; without the title you know the count of record holders but
not what they hold. For a multi-class issuer (the suspension_1_ / suspension_2_
rows above — 10 filings) you cannot tell the classes apart at all.

No current page renders it, so nothing is visibly broken today. On the embarc Reg A
page these two rows are now hidden outright, and a 1-Z column is marked with an
exit indicator instead — so this issue is about recovering the data, not about
the display.

Options

  1. Add a field_text column to rega_financial_data alongside field_value,
    populated when the source element is non-numeric. Smallest change; leaves the
    table's shape intact and the numeric column still typed. Needs a backfill
    (sec extractor backfill 1-Z) to recover the 595 existing rows.
  2. Move the suspension block out of rega_financial_data into its own
    rega_suspension_class table keyed (cik, accession_number, index) with
    securities_class_title (text) and approx_record_holders (int). It is not
    financial-statement data and arguably never belonged in that table — it
    describes a deregistration event. More correct, more work.
  3. Leave it. The count is stored; the class title is recoverable from the
    filing itself, which remains the body of record.

Leaning toward (2) — the suspension block is an exit disclosure, not a financial
figure, and putting it in its own table would also let the Reg A page surface the
exit properly rather than hiding two rows out of an unrelated pivot.

Reproduce

SELECT field_name, count(*) AS rows, count(field_value) AS non_null
FROM rega_financial_data WHERE field_name LIKE 'suspension%'
GROUP BY 1 ORDER BY 1;

Example filing: Fundrise Equity REIT (CIK 1648956), accession
0001104659-26-061605, Form 1-Z filed 2026-05-15.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions