@yottagraph-app/aether-instructions 1.1.7 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/commands/build_my_app.md +2 -2
  2. package/commands/update_instructions.md +30 -23
  3. package/package.json +1 -1
  4. package/rules/aether.mdc +1 -1
  5. package/rules/api.mdc +10 -15
  6. package/skills/data-model/SKILL.md +58 -0
  7. package/skills/data-model/edgar/DATA_DICTIONARY.md +306 -0
  8. package/skills/data-model/edgar/schema.yaml +1893 -0
  9. package/skills/data-model/fdic/DATA_DICTIONARY.md +243 -0
  10. package/skills/data-model/fdic/schema.yaml +356 -0
  11. package/skills/data-model/fred/DATA_DICTIONARY.md +313 -0
  12. package/skills/data-model/fred/schema.yaml +155 -0
  13. package/skills/data-model/gleif/DATA_DICTIONARY.md +211 -0
  14. package/skills/data-model/gleif/schema.yaml +254 -0
  15. package/skills/data-model/newsdata/schema.yaml +650 -0
  16. package/skills/data-model/overview.md +77 -0
  17. package/skills/data-model/polymarket/DATA_DICTIONARY.md +384 -0
  18. package/skills/data-model/polymarket/schema.yaml +601 -0
  19. package/skills/data-model/sanctions/DATA_DICTIONARY.md +140 -0
  20. package/skills/data-model/sanctions/schema.yaml +153 -0
  21. package/skills/data-model/stocks/DATA_DICTIONARY.md +122 -0
  22. package/skills/data-model/stocks/schema.yaml +131 -0
  23. package/skills/data-model/system_schema.yaml +71 -0
  24. package/skills/data-model/wikipedia/DATA_DICTIONARY.md +185 -0
  25. package/skills/data-model/wikipedia/schema.yaml +255 -0
  26. package/skills/elemental-api/SKILL.md +37 -0
  27. package/skills/elemental-api/articles.md +386 -0
  28. package/skills/elemental-api/entities.md +393 -0
  29. package/skills/elemental-api/events.md +145 -0
  30. package/skills/elemental-api/find.md +279 -0
  31. package/skills/elemental-api/graph.md +239 -0
  32. package/skills/elemental-api/llm.md +18 -0
  33. package/skills/elemental-api/overview.md +51 -0
  34. package/skills/elemental-api/relationships.md +310 -0
  35. package/skills/elemental-api/schema.md +379 -0
  36. package/skills/elemental-api/sentiment.md +93 -0
  37. package/skills/elemental-api/server.md +186 -0
@@ -73,10 +73,10 @@ Then read these files to understand what's available:
73
73
  1. `DESIGN.md` -- project vision and current status
74
74
  2. `broadchurch.yaml` -- project config (name, gateway URL, etc.)
75
75
  3. **The `api` cursor rule** -- this is critical. It describes the Query Server, the platform's primary data source. Build against platform APIs, not external sources.
76
- 4. The **elemental-api skill docs** in `skills/elemental-api/` -- start with `SKILL.md` for API overview, then `entities.md`, `schema.md`, etc.
76
+ 4. **`.cursor/skills/`** Each subdirectory is one skill. List them, open each skill’s entry (usually `SKILL.md`) and follow its structure to learn what is documented (APIs, schemas, helpers, etc.).
77
77
  5. `.cursor/rules/` -- scan rule names to know what other patterns are available
78
78
 
79
- **Important: Use the platform's data.** This app runs on the Lovelace platform, which provides a Query Server with entities, news, filings, sentiment, relationships, events, and more. Read the `api` rule and the skill docs to understand what data is available. Use `getSchema()` to discover entity types and properties at runtime.
79
+ **Important: Use the platform's data.** This app runs on the Lovelace platform, which provides a Query Server with entities, news, filings, sentiment, relationships, events, and more. Read the `api` rule and the skills under `.cursor/skills/` to understand what data is available. Use `getSchema()` to discover entity types and properties at runtime.
80
80
 
81
81
  Key capabilities:
82
82
 
@@ -10,12 +10,13 @@ This command downloads the latest instructions package and extracts it to your `
10
10
 
11
11
  1. Downloads the latest `@yottagraph-app/aether-instructions` package
12
12
  2. Deletes files listed in the existing manifest
13
- 3. Cleans up any legacy `aether_*` prefixed files from older versions
14
- 4. Extracts fresh files from the package
15
- 5. Writes a new manifest
16
- 6. Commits the changes
13
+ 3. Extracts fresh files from the package
14
+ 4. Writes a new manifest
15
+ 5. Commits the changes
17
16
 
18
- **Your files are safe:** Only files listed in the manifest are touched during updates. If you've created your own rules or commands, they won't be modified.
17
+ **Your files are safe:** Only paths listed in the manifest are removed before reinstall. Other files under `.cursor/` are left alone.
18
+
19
+ **Shell compatibility:** Run the bash snippets below with **`bash`**, not bare `zsh`. An **empty line** in the manifest can make `rm -rf ".cursor/$rel"` delete **all of `.cursor/`** — Step 4 skips blank lines to avoid that.
19
20
 
20
21
  ---
21
22
 
@@ -70,24 +71,17 @@ The extracted content is in `$TEMP_DIR/package/`.
70
71
 
71
72
  ## Step 4: Delete Previously Installed Files
72
73
 
73
- Read the manifest and delete listed files:
74
+ Read the manifest and delete listed paths. **Skip blank lines** — an empty `rel` would run `rm -rf ".cursor/"` and wipe the whole directory.
74
75
 
75
76
  ```bash
76
77
  if [ -f .cursor/.aether-instructions-manifest ]; then
77
- while IFS= read -r rel; do
78
+ while IFS= read -r rel || [ -n "$rel" ]; do
79
+ [ -z "$rel" ] && continue
78
80
  rm -rf ".cursor/$rel"
79
81
  done < .cursor/.aether-instructions-manifest
80
82
  fi
81
83
  ```
82
84
 
83
- Also clean up legacy `aether_*` files from older package versions:
84
-
85
- ```bash
86
- rm -f .cursor/rules/aether_*.mdc
87
- rm -f .cursor/commands/aether_*.md
88
- rm -rf .cursor/skills/aether_*/
89
- ```
90
-
91
85
  ---
92
86
 
93
87
  ## Step 5: Copy New Files
@@ -110,16 +104,18 @@ cp -r "$TEMP_DIR/package/skills/"* .cursor/skills/ 2>/dev/null || true
110
104
 
111
105
  ## Step 6: Write Manifest and Version Marker
112
106
 
113
- Build a manifest of all installed files (one relative path per line):
107
+ Build a manifest of all installed files (one relative path per line). **Do not** build a string with a leading `\n` — that writes a blank first line and breaks Step 4. Prefer one `echo` per line:
114
108
 
115
109
  ```bash
116
- MANIFEST=""
117
- for f in .cursor/rules/*.mdc; do [ -f "$f" ] && MANIFEST="$MANIFEST\nrules/$(basename "$f")"; done
118
- for f in .cursor/commands/*.md; do [ -f "$f" ] && MANIFEST="$MANIFEST\ncommands/$(basename "$f")"; done
119
- for d in .cursor/skills/*/; do [ -d "$d" ] && MANIFEST="$MANIFEST\nskills/$(basename "$d")"; done
120
- echo -e "$MANIFEST" > .cursor/.aether-instructions-manifest
110
+ {
111
+ for f in .cursor/rules/*.mdc; do [ -f "$f" ] && echo "rules/$(basename "$f")"; done
112
+ for f in .cursor/commands/*.md; do [ -f "$f" ] && echo "commands/$(basename "$f")"; done
113
+ for d in .cursor/skills/*/; do [ -d "$d" ] && echo "skills/$(basename "$d")"; done
114
+ } > .cursor/.aether-instructions-manifest
121
115
  ```
122
116
 
117
+ If the repo uses **bash** for this loop and a glob might match nothing, run `shopt -s nullglob` first so the loops don’t treat `*.mdc` as a literal filename.
118
+
123
119
  Write the version marker:
124
120
 
125
121
  ```bash
@@ -161,13 +157,16 @@ Report to user:
161
157
 
162
158
  ## Step 9: Commit Changes
163
159
 
164
- Commit the updated instruction files:
160
+ Commit the updated instruction files. A root `.gitignore` rule like `skills/` can **ignore** `.cursor/skills/`; if `git add .cursor/skills/` reports ignored paths, force-add:
165
161
 
166
162
  ```bash
167
- git add .cursor/rules/ .cursor/commands/ .cursor/skills/ .cursor/.aether-instructions-version .cursor/.aether-instructions-manifest
163
+ git add .cursor/rules/ .cursor/commands/ .cursor/.aether-instructions-version .cursor/.aether-instructions-manifest
164
+ git add -f .cursor/skills/
168
165
  git commit -m "Update instructions to vX.Y.Z"
169
166
  ```
170
167
 
168
+ Use the repo’s commit convention if applicable (e.g. `[Agent commit] Update instructions to vX.Y.Z`).
169
+
171
170
  > Changes committed. Your instructions are now up to date.
172
171
 
173
172
  ---
@@ -193,3 +192,11 @@ If you need to modify a package-provided file:
193
192
  1. Edit it directly — your changes will persist until the next update
194
193
  2. To preserve changes across updates, copy it to a new name first
195
194
  3. Remove the original's entry from `.cursor/.aether-instructions-manifest` so it won't be deleted on update
195
+
196
+ ### Blank line in manifest deleted `.cursor/`
197
+
198
+ Regenerate the manifest with Step 6 (echo-per-line form). Ensure Step 4 skips empty lines.
199
+
200
+ ### `git add` says `.cursor/skills` is ignored
201
+
202
+ Use `git add -f .cursor/skills/` as in Step 9, or narrow `.gitignore` so `skills/` only ignores the project `skills/` folder (e.g. `/skills/` at repo root) instead of every `skills` path.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yottagraph-app/aether-instructions",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "description": "Cursor rules, commands, and skills for Aether development",
5
5
  "files": [
6
6
  "rules",
package/rules/aether.mdc CHANGED
@@ -8,7 +8,7 @@ alwaysApply: true
8
8
 
9
9
  **Structure:** `pages/` (file-based routing), `components/`, `composables/`, `server/api/`, `agents/` (Python ADK), `mcp-servers/` (Python FastMCP).
10
10
 
11
- **Data:** The Query Server (Elemental API) is the primary data source -- entities, news, filings, sentiment, relationships, events. Use `useElementalClient()` from `@yottagraph-app/elemental-api/client`. Do NOT call external APIs for data the platform provides. Discovery-first: use `getSchema()` to discover entity types and properties at runtime. Skill docs in `skills/elemental-api/` (run `npm install` if empty). Lovelace MCP servers may also be configured (see `api` rule) but are optional — check your tool list before assuming they're available.
11
+ **Data:** The Query Server (Elemental API) is the primary data source -- entities, news, filings, sentiment, relationships, events. Use `useElementalClient()` from `@yottagraph-app/elemental-api/client`. Do NOT call external APIs for data the platform provides. Discovery-first: use `getSchema()` to discover entity types and properties at runtime. Skill docs: `skills/elemental-api/` (API endpoints) and `skills/data-model/` (Lovelace entity types, properties, relationships, YAML schemas per fetch source; `SKILL.md` first). Run `npm install` if those directories are empty. Lovelace MCP servers may also be configured (see `api` rule) but are optional — check your tool list before assuming they're available.
12
12
 
13
13
  **Storage:** KV (Upstash Redis) for preferences and lightweight state via `Pref<T>` from `usePrefsStore()`. Supabase for relational data if connected (check `.env`).
14
14
 
package/rules/api.mdc CHANGED
@@ -16,21 +16,16 @@ regularly — use the discovery-first pattern to find what's available.
16
16
 
17
17
  ## Skill Documentation
18
18
 
19
- For full endpoint documentation, read the **elemental-api skill** in
20
- `skills/elemental-api/`. Start with `SKILL.md`, then `overview.md`.
21
- These files are copied from `@yottagraph-app/elemental-api-skill` during
22
- `npm install` (postinstall step) — if the directory is empty, run
23
- `npm install` first. The skill docs contain detailed response shapes and
24
- edge cases that go beyond this rule's quick reference **run `npm install`
25
- early** to make them available during initial exploration.
26
-
27
- Key files:
28
- - `entities.md` entity search, details, and properties
29
- - `find.md` — expression language for searching by type, property, and relationships
30
- - `schema.md` — entity types (flavors), properties (PIDs), and schema endpoints
31
- - `relationships.md` — entity connections
32
- - `events.md` — events involving entities
33
- - `articles.md` — news mentions and article content
19
+ For endpoint reference, response shapes, and edge cases, **read the
20
+ elemental-api skill** in `skills/elemental-api/` (start with `SKILL.md` and
21
+ follow the skill’s own structure). Files are copied from
22
+ `@yottagraph-app/elemental-api-skill` during `npm install` (see
23
+ `skill-packages.json`); if the directory is empty, run `npm install` first —
24
+ **run it early** during initial exploration so the skill is available.
25
+
26
+ ## Data model skill
27
+
28
+ For Lovelace **entity types, properties, relationships, and per-source schemas** (EDGAR, FRED, FDIC, etc.), read the **data-model skill** in `skills/data-model/`. Start with `SKILL.md`, then `overview.md` and the source-specific folders. These files are copied from `@yottagraph-app/data-model-skill` during `npm install` (same postinstall; both skills are listed in `skill-packages.json`).
34
29
 
35
30
  ## Client Usage
36
31
 
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: data-model
3
+ description: Understand the Lovelace data model - entity types, properties, relationships, and schemas from fetch sources like EDGAR, FRED, FDIC, and more.
4
+ ---
5
+
6
+ # Data Model Skill
7
+
8
+ This skill provides documentation for the Lovelace data model, describing the entity types, properties, and relationships that each fetch source contributes to the knowledge graph.
9
+
10
+ ## When to Use This Skill
11
+
12
+ Use this skill when you need to:
13
+ - Understand what entity types exist (organizations, people, filings, etc.)
14
+ - Know what properties are available on entities
15
+ - Understand relationships between entity types
16
+ - Look up the schema definition for a data source
17
+
18
+ ## Quick Start
19
+
20
+ 1. **Identify the source**: Determine which data source is relevant (EDGAR for SEC filings, FRED for economic data, etc.)
21
+ 2. **Read the DATA_DICTIONARY.md**: Get human-readable documentation of entities, properties, and relationships
22
+ 3. **Check schema.yaml**: For machine-readable schema definitions including flavors, properties, and extraction rules
23
+
24
+ ## Available Sources
25
+
26
+ | Source | Description | Files |
27
+ |--------|-------------|-------|
28
+ | [edgar](edgar/) | SEC EDGAR filings - 10-K, 10-Q, 8-K, ownership forms, institutional holdings | DATA_DICTIONARY.md, schema.yaml |
29
+ | [fdic](fdic/) | FDIC BankFind Suite - insured institutions, branch data, failures | DATA_DICTIONARY.md, schema.yaml |
30
+ | [fred](fred/) | Federal Reserve Economic Data - GDP, employment, inflation, rates | DATA_DICTIONARY.md, schema.yaml |
31
+ | [gleif](gleif/) | Global Legal Entity Identifier Foundation - LEI records, corporate ownership | DATA_DICTIONARY.md, schema.yaml |
32
+ | [newsdata](newsdata/) | News articles and press releases with LLM extraction | schema.yaml |
33
+ | [polymarket](polymarket/) | Polymarket prediction markets via Gamma API | DATA_DICTIONARY.md, schema.yaml |
34
+ | [sanctions](sanctions/) | OpenSanctions - OFAC, EU, UN, HM Treasury sanctions lists | DATA_DICTIONARY.md, schema.yaml |
35
+ | [stocks](stocks/) | US equity OHLCV price data from Alpha Vantage (NYSE, NASDAQ, AMEX) | DATA_DICTIONARY.md, schema.yaml |
36
+ | [wikipedia](wikipedia/) | People, locations, and organizations from English Wikipedia | DATA_DICTIONARY.md, schema.yaml |
37
+
38
+ ## File Types
39
+
40
+ ### DATA_DICTIONARY.md
41
+
42
+ Human-readable documentation containing:
43
+ - **Source Overview**: What the source is and how data flows through the pipeline
44
+ - **Entity Types**: What flavors (entity types) this source creates, with primary keys and resolver behavior
45
+ - **Properties**: Field definitions with examples and derivation notes
46
+ - **Relationships**: How entities connect to each other
47
+
48
+ ### schema.yaml
49
+
50
+ Machine-readable schema definition containing:
51
+ - **flavors**: Entity type definitions with mergeability and strong ID properties
52
+ - **properties**: Field definitions with types, descriptions, and domain flavors
53
+ - **relationships**: Link definitions with domain and target flavors
54
+ - **extraction**: Whether the schema is open or closed for each category
55
+
56
+ ## See Also
57
+
58
+ - [overview.md](overview.md) - Core concepts and how to navigate the documentation
@@ -0,0 +1,306 @@
1
+ # Data Dictionary: EDGAR
2
+
3
+ ## Source Overview
4
+
5
+ SEC EDGAR (Electronic Data Gathering, Analysis, and Retrieval) filings via two pipelines:
6
+ - **Company facts / XBRL**: structured financial data from `companyfacts.zip` and `submissions.zip` bulk APIs
7
+ - **Form parsing**: regulatory forms (10-K, 10-Q, 20-F, 8-K, Form 3/4, SC 13D/G, 13F-HR, DEF 14A) parsed from HTML, XML, and SGML documents
8
+
9
+ Financial figures from XBRL may be computed fallbacks when a company does not file the authoritative tag. Not all companies report all fields.
10
+
11
+ | Pipeline | `Record.Source` |
12
+ |----------|----------------|
13
+ | Company facts / XBRL / submissions | `edgar` |
14
+ | 10-K annual report | `edgar_10k` |
15
+ | 10-Q quarterly report | `edgar_10q` |
16
+ | 20-F foreign issuer annual report | `edgar_20f` |
17
+ | 8-K current report | `edgar_8k` |
18
+ | Form 3 initial ownership | `edgar_3` |
19
+ | Form 4 ownership changes | `edgar_4` |
20
+ | SC 13D beneficial ownership (active) | `edgar_sc_13d` |
21
+ | SC 13G beneficial ownership (passive) | `edgar_sc_13g` |
22
+ | Co-registrant / subsidiary | `edgar_coregistrant` |
23
+ | 13F-HR institutional holdings | `edgar_13fhr` |
24
+ | DEF 14A proxy statement | `edgar_def_14a` |
25
+
26
+ ---
27
+
28
+ ## Entity Types
29
+
30
+ ### `organization`
31
+
32
+ A public company, institutional investor, or corporate filer registered with the SEC.
33
+
34
+ - Primary key: `company_cik` (10-digit zero-padded CIK)
35
+ - Entity resolver: named entity. Strong ID = `company_cik`. Disambiguation via company name, city, state, SIC description, EIN. Ticker and former names as aliases.
36
+ - Financial metrics from XBRL are dual-homed on both the filing document and the organization, with a `filing_period` attribute (`FY`, `Q1`, `Q2`, `Q3`) to distinguish annual from quarterly values.
37
+
38
+ ### SEC Filing Types (namespace: `sec`)
39
+
40
+ Each SEC form type is a separate flavor, namespaced under `sec`. All share the same strong ID (`accession_number`) and are not mergeable.
41
+
42
+ | Flavor | Display Name | Description |
43
+ |--------|-------------|-------------|
44
+ | `sec::10_k` | 10-K | Annual report |
45
+ | `sec::10_q` | 10-Q | Quarterly report |
46
+ | `sec::20_f` | 20-F | Foreign private issuer annual report |
47
+ | `sec::8_k` | 8-K | Current report (material events) |
48
+ | `sec::form_3` | Form 3 | Initial statement of beneficial ownership |
49
+ | `sec::form_4` | Form 4 | Statement of changes in beneficial ownership |
50
+ | `sec::sc_13d` | SC 13D | Beneficial ownership report (activist) |
51
+ | `sec::sc_13g` | SC 13G | Beneficial ownership report (passive) |
52
+ | `sec::13f_hr` | 13F-HR | Institutional investment manager holdings |
53
+ | `sec::def_14a` | DEF 14A | Definitive proxy statement |
54
+
55
+ Sub-records (8-K events, Form 4 transactions, Form 3 holdings) use their parent filing's flavor.
56
+
57
+ ### `person`
58
+
59
+ A corporate insider (officer, director, or significant owner) from Form 3 or Form 4.
60
+
61
+ - Primary key: `person_cik` when available; otherwise named entity resolution.
62
+ - Entity resolver: named entity, mergeable. Strong ID = `person_cik` when present.
63
+
64
+ ### `financial_instrument`
65
+
66
+ A tradeable security identified by CUSIP, from 13F-HR filings.
67
+
68
+ - Primary key: `cusip_number`
69
+ - Entity resolver: named entity. Strong ID = `cusip_number`.
70
+
71
+ ---
72
+
73
+ ## Properties
74
+
75
+ ### Organization Properties
76
+
77
+ #### Identity and Registration (source: `edgar`)
78
+
79
+ Data source: `https://data.sec.gov/submissions/CIK{cik}.json`
80
+
81
+ * `company_cik`
82
+ * Definition: SEC Central Index Key, 10-digit zero-padded.
83
+ * Examples: `"0000320193"` (Apple), `"0000789019"` (Microsoft)
84
+ * Derivation: `cik` field from submissions API, zero-padded.
85
+
86
+ * `ticker`
87
+ * Definition: Primary stock ticker symbol. Only set for listed companies.
88
+ * Examples: `"AAPL"`, `"MSFT"`, `"BRK-A"`
89
+ * Derivation: first entry from `tickers` array.
90
+
91
+ * `exchange`
92
+ * Definition: Securities exchange listing.
93
+ * Examples: `"Nasdaq"`, `"NYSE"`, `"OTC"`
94
+ * Derivation: first entry from `exchanges` array.
95
+
96
+ * `sic_code`
97
+ * Definition: Four-digit Standard Industrial Classification code.
98
+ * Examples: `"3571"`, `"6022"`
99
+ * Derivation: `sic` field.
100
+
101
+ * `sic_description`
102
+ * Definition: Human-readable SIC code description.
103
+ * Examples: `"Electronic Computers"`, `"State Commercial Banks"`
104
+ * Derivation: `sicDescription` field.
105
+
106
+ * `state_of_incorporation`
107
+ * Definition: Two-letter US state or country code of incorporation.
108
+ * Examples: `"CA"`, `"DE"`, `"NY"`
109
+ * Derivation: `stateOfIncorporation` field.
110
+
111
+ * `fiscal_year_end`
112
+ * Definition: Fiscal year end as MMDD string.
113
+ * Examples: `"0930"`, `"1231"`
114
+ * Derivation: `fiscalYearEnd` field.
115
+
116
+ * `ein`
117
+ * Definition: IRS Employer Identification Number (9 digits). Known bogus EINs filtered.
118
+ * Example: `"942404110"`
119
+ * Derivation: `ein` field, validated against bogus list.
120
+
121
+ * `business_phone`
122
+ * Definition: Primary business phone number.
123
+ * Example: `"4089961010"`
124
+ * Derivation: `addresses.business.phone` field.
125
+
126
+ * `filer_category`
127
+ * Definition: SEC filer size category.
128
+ * Examples: `"Large accelerated filer"`, `"Non-accelerated filer"`
129
+ * Derivation: `category` field.
130
+
131
+ * `physical_address`
132
+ * Definition: Business address as formatted string.
133
+ * Example: `"One Apple Park Way, Cupertino, CA 95014"`
134
+ * Derivation: `addresses.business` fields concatenated.
135
+
136
+ * `mailing_address`
137
+ * Definition: Mailing address as formatted string. May differ from physical address.
138
+ * Derivation: `addresses.mailing` fields concatenated.
139
+
140
+ * `former_name`
141
+ * Definition: Previous legal name. One value per entry in former names list.
142
+ * Example: `"Apple Computer, Inc."`
143
+ * Derivation: `formerNames` array. Also used as aliases for entity resolution.
144
+
145
+ #### Financial Data (source: `edgar_10k`, `edgar_10q`, `edgar_20f`)
146
+
147
+ Data source: iXBRL inline financial statements. All values USD unless noted.
148
+ The six core financial properties appear on both the **organization** and its **document** (filing) entity so that revenue/income/balance-sheet values are queryable on the company directly.
149
+
150
+ * `total_revenue` — Total revenues. Unit: USD. On: organization + document
151
+ * `net_income` — Net income or loss. Unit: USD. On: organization + document
152
+ * `total_assets` — Sum of all balance sheet assets. Unit: USD. On: organization + document
153
+ * `total_liabilities` — Sum of all liabilities. May be computed fallback. Unit: USD. On: organization + document
154
+ * `shareholders_equity` — Total stockholders' equity. Unit: USD. On: organization + document
155
+ * `shares_outstanding` — Common shares outstanding. Unit: shares. On: organization + document
156
+ * `eps_basic` — Basic earnings per share (10-K only). Unit: USD. On: document only
157
+ * `eps_diluted` — Diluted earnings per share (10-K only). Unit: USD. On: document only
158
+ * `entity_shell_company` — Whether the entity is a shell company. Values: `"true"`, `"false"`. On: organization only
159
+ * `reporting_currency` — ISO 4217 currency code (20-F only). Examples: `"JPY"`, `"EUR"`. On: document only
160
+ * `country_of_incorporation` — Country of incorporation (20-F only). Examples: `"Japan"`, `"Israel"`. On: document only
161
+
162
+ #### 8-K Corporate Events (source: `edgar_8k`)
163
+
164
+ Data source: 8-K current report filings. Properties on document sub-records.
165
+
166
+ * `form_8k_event` — Snake_case event identifier. Examples: `"material_agreement"`, `"officer_director_change"`
167
+ * `form_8k_item_code` — Raw SEC item number. Examples: `"1.01"`, `"5.02"`
168
+ * `category` — Sub-classification of Item 8.01 Other Events. Examples: `"cybersecurity_incident"`
169
+
170
+ #### Beneficial Ownership (source: `edgar_sc_13d`, `edgar_sc_13g`)
171
+
172
+ Data source: SC 13D/G XML filings. Properties on the filer organization.
173
+
174
+ * `owns_stake_in` — Relationship: filer → issuer whose shares are held
175
+ * `group_shares_declared` — Total shares owned by the filing group. Unit: shares
176
+ * `group_ownership_percent` — Percentage of share class owned by the group
177
+ * `is_group_filing` — Float: `1.0` = group filing, `0.0` = single filer
178
+ * `shares_declared` — Shares by individual group member. Unit: shares
179
+ * `ownership_percent` — Percentage by individual member or SC 13G filer
180
+ * `investment_purpose` — Stated purpose from Item 4. Examples: `"Investment"`, `"Strategic investment"`
181
+ * `is_passive_investor` — Always `1.0` on SC 13G records
182
+ * `aggregate_amount_beneficially_owned` — Total shares beneficially owned. Unit: shares
183
+ * `sole_voting_power` / `shared_voting_power` — Sole/shared voting authority. Unit: shares
184
+ * `sole_dispositive_power` / `shared_dispositive_power` — Sole/shared dispositive power. Unit: shares
185
+ * `type_of_reporting_person` — SEC entity code. Examples: `"CO"`, `"IN"`, `"IA"`
186
+ * `citizenship_or_state_of_organization` — Jurisdiction. Examples: `"Delaware"`, `"Cayman Islands"`
187
+ * `source_of_funds` — Acquisition fund source. Examples: `"WC"`, `"OO"`, `"BK"`
188
+ * `cusip_number` — CUSIP of the subject securities. Example: `"037833100"`
189
+
190
+ #### Subsidiary Relationships (source: `edgar_coregistrant`, `edgar_10k`)
191
+
192
+ Data source: co-registrant entries and EX-21 exhibit subsidiary tables.
193
+
194
+ * `has_subsidiary` — Relationship: parent → subsidiary
195
+ * `is_part_of` — Relationship: subsidiary → parent
196
+ * `citizenship_or_state_of_organization` — Subsidiary jurisdiction (EX-21 only)
197
+
198
+ ### Document Properties
199
+
200
+ #### Filing Metadata (all pipelines)
201
+
202
+ * `accession_number` — SEC accession number. Example: `"0000320193-24-000123"`
203
+ * `form_type` — Normalized form type. Examples: `"10-K"`, `"SC 13D"`, `"4"`
204
+ * `filing_date` — Submission date (YYYY-MM-DD)
205
+ * `issued_by` — Relationship: filing → company the filing pertains to. For annual/quarterly/current reports, this is the filer. For ownership forms (Form 3/4, SC 13D/G), this is the issuer company whose securities are the subject of the filing.
206
+ * Derivation (ownership forms): XML `<issuerCik>` / `<issuerName>` elements, with fallback to SEC submissions API index metadata for Forms 3/4/5 or the SGML header `<SUBJECT-COMPANY>` section for SC 13D/G. Omitted when no reliable issuer data is available.
207
+ * `refers_to` — Relationship: filing → company the document is about. Same derivation as `issued_by` for ownership forms.
208
+
209
+ #### XBRL Financial Facts (source: `edgar`)
210
+
211
+ Data source: `https://data.sec.gov/api/xbrl/companyfacts/CIK{cik}.json`. ~75 XBRL properties tracked across US-GAAP, DEI, and IFRS taxonomies. Atom timestamp = XBRL period end date, not filing date. Computed fallbacks carry `"Computed from ..."` citation.
212
+
213
+ Key US-GAAP properties: `us_gaap:assets`, `us_gaap:liabilities`, `us_gaap:stockholders_equity`, `us_gaap:revenues`, `us_gaap:net_income_loss`, `us_gaap:operating_income_loss`, `us_gaap:operating_cash_flow`, `us_gaap:investing_cash_flow`, `us_gaap:financing_cash_flow`, `us_gaap:gross_profit`, `us_gaap:long_term_debt`, `us_gaap:common_shares_outstanding`, `us_gaap:goodwill`, `us_gaap:pp_and_e_net`, `us_gaap:operating_expenses`, `us_gaap:sg_and_a`, `us_gaap:research_and_development`, `us_gaap:income_tax_expense`, `us_gaap:eps_basic_xbrl`, `us_gaap:eps_diluted_xbrl`, `us_gaap:weighted_avg_shares_basic`, `us_gaap:weighted_avg_shares_diluted`, `us_gaap:share_repurchases`, `us_gaap:dividends_common`, `us_gaap:debt_repayments`, `us_gaap:acquisition_payments`, `us_gaap:comprehensive_income`, `us_gaap:asset_impairment`, `us_gaap:goodwill_impairment`, `us_gaap:number_of_segments`.
214
+
215
+ DEI properties: `dei:public_float`, `dei:common_shares_outstanding`, `dei:number_of_employees`.
216
+
217
+ IFRS properties (foreign private issuers): `ifrs:assets`, `ifrs:cash_and_cash_equivalents`, `ifrs:equity`, `ifrs:profit_loss`, `ifrs:operating_cash_flow`, `ifrs:current_assets`, `ifrs:current_liabilities`, `ifrs:liabilities`, `ifrs:revenue`.
218
+
219
+ Full mapping in `XBRLConceptMappings`.
220
+
221
+ #### SC 13D on Document (source: `edgar_sc_13d`)
222
+
223
+ * `filer` — Relationship: document → beneficial owner
224
+ * `group_member` — Relationship: document → group members (excluding primary filer)
225
+ * `group_shares_declared`, `group_ownership_percent`, `is_group_filing` — Filing-level ownership facts
226
+
227
+ ### Person Properties
228
+
229
+ #### Insider Identity (source: `edgar_3`, `edgar_4`)
230
+
231
+ Data source: Form 3/4 XML.
232
+
233
+ * `person_cik` — SEC CIK for the reporting person (10-digit zero-padded). From `<rptOwnerCik>`.
234
+ * `job_title` — Officer title. Examples: `"Chief Executive Officer"`, `"Director"`. From `<officerTitle>`.
235
+ * `is_officer` — Relationship: person → organization (when `<isOfficer>1`)
236
+ * `is_director` — Relationship: person → organization (when `<isDirector>1`)
237
+ * `is_ten_percent_owner` — Relationship: person → organization (when `<isTenPercentOwner>1`)
238
+ * `works_at` — Relationship: person → issuer company
239
+ * `filing_reference` — Relationship: person → source Form 3/4 document
240
+
241
+ #### Form 4 Transactions (source: `edgar_4`)
242
+
243
+ Properties on document sub-records, one per transaction.
244
+
245
+ * `transaction_type` — Human-readable code description. Examples: `"Open market or private purchase"`, `"Grant, award, or other acquisition"`
246
+ * `transaction_date` — Transaction date (YYYY-MM-DD)
247
+ * `acquired_disposed_code` — `"A"` (acquired) or `"D"` (disposed)
248
+ * `security_type` — Security class. Examples: `"Common Stock"`, `"Stock Option (Right to Buy)"`
249
+ * `shares_transacted` — Shares transferred. Unit: shares
250
+ * `price_per_share` — Transaction price. Unit: USD
251
+ * `shares_owned_after` — Post-transaction shares. Unit: shares
252
+ * `exercise_price` — Derivative exercise price (USD, derivatives only)
253
+ * `direct_or_indirect_ownership` — `"Direct"` or `"Indirect"`
254
+ * `is_10b5_1_plan` — `"true"` when under a Rule 10b5-1 plan
255
+
256
+ #### DEF 14A Proxy (source: `edgar_def_14a`)
257
+
258
+ * `board_committee` — Committee membership. Examples: `"Audit"`, `"Compensation"`
259
+ * `is_independent` — Independence classification. Values: `"true"`, `"false"`
260
+ * `director_since` — Year. Example: `"2018"`
261
+ * `total_compensation` — Summary Compensation Table total. Unit: USD
262
+ * `board_size` — Number of directors (also on document)
263
+ * `compares_to` — Relationship: document → peer companies
264
+ * `auditor` — Accounting firm name. Example: `"Ernst & Young LLP"`
265
+ * `audit_fees` — Auditor fees. Unit: USD
266
+
267
+ ### Financial Instrument Properties
268
+
269
+ #### 13F-HR Holdings (source: `edgar_13fhr`)
270
+
271
+ Data source: 13F-HR XML information table.
272
+
273
+ * `cusip_number` — CUSIP identifier. Example: `"037833100"`
274
+ * `security_type` — Security class. Examples: `"COM"`, `"SHS"`, `"COM CL A"`
275
+ * `position_value` — Market value (USD)
276
+ * `shares_held` — Shares or principal amount held
277
+ * `instrument_type` — `"SH"` (shares) or `"PRN"` (principal amount)
278
+ * `put_call` — `"PUT"`, `"CALL"`, or empty for equity
279
+ * `voting_authority_sole` / `voting_authority_shared` / `voting_authority_none` — Voting authority breakdown. Unit: shares
280
+ * `investment_discretion` — `"SOLE"`, `"DFND"`, or `"OTR"` (on organization)
281
+ * `holds_position` — Relationship: investment manager → financial instrument
282
+
283
+ ---
284
+
285
+ ## Entity Relationships
286
+
287
+ ```
288
+ organization ──[filed]────────────────────→ document
289
+ organization ──[filing_reference]─────────→ document
290
+ organization ──[owns_stake_in]────────────→ organization (SC 13D/G)
291
+ organization ──[has_subsidiary]───────────→ organization (co-registrant, EX-21)
292
+ organization ──[is_part_of]───────────────→ organization (subsidiary → parent)
293
+ organization ──[holds_position]───────────→ financial_instrument (13F-HR)
294
+ document ──[issued_by]────────────────→ organization
295
+ document ──[refers_to]────────────────→ organization
296
+ document ──[filer]────────────────────→ organization (SC 13D/G)
297
+ document ──[group_member]─────────────→ organization (SC 13D)
298
+ document ──[compares_to]──────────────→ organization (DEF 14A)
299
+ document ──[filed]────────────────────→ document (sub-record → parent)
300
+ person ──[is_officer]───────────────→ organization
301
+ person ──[is_director]──────────────→ organization
302
+ person ──[is_ten_percent_owner]─────→ organization
303
+ person ──[works_at]─────────────────→ organization
304
+ person ──[filing_reference]─────────→ document
305
+ financial_instrument ──[filing_reference]─────────→ document
306
+ ```