Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions blueprints/us-equities/catalyst-provenance/access-resolution.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,16 @@ replacement for filing bodies or complete historical availability.
References: [SEC access and contact guidance](https://www.sec.gov/about/webmaster-frequently-asked-questions),
[public APIs and bulk data](https://www.sec.gov/search-filings/edgar-application-programming-interfaces),
[pinned EdgarTools HTTP implementation](https://github.com/dgunning/edgartools/blob/abe44344c56cf4bfb5443e0debca7e39342f6e7a/edgar/httpclient.py).

## New-host observation, 2026-09-24

A second WSL2 host, the Threadripper workstation, ran the same native request
on 2026-09-24. EdgarTools 5.58.0 ran in an isolated runtime whose packages
equal `requirements.lock`. One SEC archive GET was answered 200, and the
request selected 371 8-K/8-K/A index rows. The five selected CIK/accession rows
equal this receipt's five headers. The
[new-host receipt](new-host-native-network-20260924.json) is an added
observation. It does not replace the 2026-09-19 receipt above. It covers only
the native upstream request: the provenance adapter, header bytes and temporal
packets were not run on that host. The committed copy of its output leaves out
the unsalted hash of the private contact.
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
{
"schema_version": 1,
"id": "native-sec-new-host-20260924",
"kind": "native_cli_e2e",
"component_ids": [
"edgartools"
],
"claim": "New-host observation on the WSL2 Threadripper workstation: native EdgarTools 5.58.0, in an isolated runtime whose installed packages equal requirements.lock, completed the bounded get_filings request for 2020-03-02 with one SEC archive GET answered 200, 371 8-K/8-K/A index rows and the same five selected CIK/accession rows as the 2026-09-19 receipt. It adds a host; it does not replace the 2026-09-19 receipt.",
"limitations": [
"One native upstream metadata request (the quarterly form index) on one host at one time. The provenance adapter (catalyst.py acquire and packet) was not run on this host, so no daily index, header bytes or temporal packets are observed here.",
"Unique-accession counts, forms breakdown and the complete compressed source's bytes and gzip validation were measured in 2026-09-19 and are not re-measured by this output, which records only the cohort count and five selected rows.",
"The exact command line was not retained. The output's keys and fields match native_edgar.py's native_network receipt, but that the file came from this repository's native_edgar.py is inferred from its schema, not recorded.",
"The runtime package check (installed packages equal requirements.lock) was made when this receipt was written, after the request; the request-time environment is inferred from it.",
"The contact identity is private. Its unsalted SHA-256 in the private output is withheld from the committed copy, because a guessed contact could be confirmed against it; a matching contact between the two hosts is therefore not shown.",
"Successful access on this host does not establish historical availability, as-known data or a strategy result; 2020 filing dates do not imply this runtime observed the filings then.",
"Not a host_receipts.py receipt: that recorder executes its own commands, so it cannot import an earlier output. No platform_status, landscape verdict or trading gate changes because of this file."
],
"recorded_at_utc": "2026-09-24T15:55:00Z",
"relation_to_earlier": {
"earlier_receipt": "blueprints/us-equities/catalyst-provenance/access-resolution.json",
"earlier_receipt_id": "native-sec-access-resolution-20260919",
"replaces_earlier": false,
"same_cohort_count": true,
"same_five_selected_cik_accessions": true,
"selected": [
"12208-0001193125-20-059087",
"13239-0000013239-20-000002",
"16918-0000016918-20-000035",
"18349-0000018349-20-000014",
"2186-0001654954-20-002156"
]
},
"host": {
"host_class": "WSL2 Threadripper workstation (Linux x86_64 under Windows)",
"platform_id": "linux-wsl2-x86_64",
"cpu_model_at_recording": "AMD Ryzen Threadripper PRO 5975WX 32-Cores (lscpu)",
"new_host_for_this_component": true,
"note": "Named a new host by the recording coordinator. The 2026-09-19 receipt does not record its host hardware, so this file does not itself verify that the two hosts differ. No second_physical_machine claim is made."
},
"native_upstream": {
"package": "edgartools",
"version": "5.58.0",
"source_pin": "abe44344c56cf4bfb5443e0debca7e39342f6e7a",
"runtime": "isolated CPython 3.13.15 environment under the private catalyst runtime; uv pip freeze equals blueprints/us-equities/catalyst-provenance/requirements.lock (42 packages) at recording time",
"requirements_lock_sha256": "5aeadfb5a8f2ca7b26548ca3acaadcf1fe626230aff671011b6a341beeeb61df",
"native_edgar_py_sha256_at_recording": "72af6528dad542842f63fc3c765c3a3c21867d36942126f69f3f03c298983df7",
"documented_recipe_with_this_output_name": ". \"$SEC_CONTACT_ENV\"; export EDGAR_IDENTITY=\"$SEC_USER_AGENT\"; EDGAR_LOCAL_DATA_DIR=\"$CATALYST_RUNTIME/native-cache\" timeout --signal=TERM --kill-after=5s 60s \"$CATALYST_RUNTIME/sdk/bin/python\" blueprints/us-equities/catalyst-provenance/native_edgar.py --out \"$CATALYST_RUNTIME/native-network-20260924.json\"",
"api": "get_filings(2020, 1, form='8-K', amendments=True, filing_date='2020-03-02')",
"status": "complete",
"mode": "native_network",
"http_observations": [
{
"method": "GET",
"status": 200,
"url": "https://www.sec.gov/Archives/edgar/full-index/2020/QTR1/form.gz"
}
],
"automatic_retries": 0,
"cohort_rows": 371,
"selected_context_rows": 5,
"context_truncated": false,
"started_at_utc": "2026-09-24T13:15:14.870379Z",
"finished_at_utc": "2026-09-24T13:15:16.514251Z"
},
"output": {
"private_original": "<private>/catalyst-runtime/native-network-20260924.json",
"private_original_mode": "0600",
"private_original_sha256": "ed92e3406e1fa5d2f230469d9be8b2ea85b7fae060fd79672f19de6bac0bd07e",
"private_original_bytes": 2145,
"private_content_check": "read in full before copying: no email address, host path or contact text; the only identity-derived field is identity_sha256",
"withheld_fields": [
"identity_sha256"
],
"committed_copy_sha256": "8b1720cafc546e03ce35b5730c13e642eb1261125ca50720c38e1564d6c883c4",
"committed_copy_note": "native_output below is the private output with identity_sha256 removed, serialized as native_edgar.py writes it (indent 2, sorted keys); committed_copy_sha256 is over that serialization",
"native_output": {
"automatic_retries": 0,
"cohort_count": 371,
"day": "2020-03-02",
"edgartools": "5.58.0",
"finished_at": "2026-09-24T13:15:16.514251Z",
"first_observed_at": "2026-09-24T13:15:16.509932Z",
"forms": [
"8-K",
"8-K/A"
],
"historical_point_in_time": false,
"http_observations": [
{
"method": "GET",
"status": 200,
"url": "https://www.sec.gov/Archives/edgar/full-index/2020/QTR1/form.gz"
}
],
"method": "get_filings(2020, 1, form='8-K', amendments=True, filing_date='2020-03-02')",
"mode": "native_network",
"native_context": "FILINGS COLLECTION\n\nTotal: 5 filings\nForms: 8-K\nDate Range: 2020-03-02 to 2020-03-02\n\nAVAILABLE ACTIONS:\n - Use .latest() to get most recent filing\n - Use [index] to access specific filing (e.g., filings[0])\n - Use .filter(form='C') to narrow by form type\n - Use .docs for detailed API documentation",
"native_context_truncated": false,
"omitted_empty_proxy_variables": [],
"schema_version": 1,
"selected": [
{
"accession_number": "0001654954-20-002156",
"cik": 2186,
"company": "BK Technologies Corp",
"filing_date": "2020-03-02T00:00:00.000",
"form": "8-K"
},
{
"accession_number": "0001193125-20-059087",
"cik": 12208,
"company": "BIO-RAD LABORATORIES, INC.",
"filing_date": "2020-03-02T00:00:00.000",
"form": "8-K"
},
{
"accession_number": "0000013239-20-000002",
"cik": 13239,
"company": "HEXION INC.",
"filing_date": "2020-03-02T00:00:00.000",
"form": "8-K"
},
{
"accession_number": "0000016918-20-000035",
"cik": 16918,
"company": "CONSTELLATION BRANDS, INC.",
"filing_date": "2020-03-02T00:00:00.000",
"form": "8-K"
},
{
"accession_number": "0000018349-20-000014",
"cik": 18349,
"company": "SYNOVUS FINANCIAL CORP",
"filing_date": "2020-03-02T00:00:00.000",
"form": "8-K"
}
],
"started_at": "2026-09-24T13:15:14.870379Z",
"status": "complete"
}
},
"evidence_class": "native_proven",
"not_run": [
"catalyst.py acquire / packet on this host",
"any SEC request beyond the one recorded GET",
"host_receipts.py record / review"
]
}
16 changes: 11 additions & 5 deletions blueprints/us-equities/data/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,14 @@ named check reports `status: "fail"` despite a "pass" top-level status),
`promotion_gate_mismatch` (hash does not match the current file). `mode=None`
(the `preflight` and `recover` call sites) is unaffected. `--snapshot` must
name an actual bars/universe input file that
was run through `promotion_gate.py` -- this repository does not yet ship a
production bars/universe ingest that produces one; until that ingest exists,
an operator must supply the real file it will produce (or, for the bounded
CSV fixtures used in tests here, `fixtures/good.csv` with
`fixtures/good-gate-result.json`).
was run through `promotion_gate.py`. [`ingest_snapshot.py`](ingest_snapshot.py)
(added in #84) writes one: a bounded, read-only Alpaca daily-bar snapshot of
the adaptive-paper universe plus a receipt of counts and hashes, which
`../adaptive-paper/scheduled_trial.sh` gates before the `paper` command.
Trial `adaptive-20260923g` retained both results in
`../adaptive-paper/trials/20260923g-main-passed/` (`ingest-receipt.json` and
`gate-result.json`: 480 rows, gate `pass`, `input_sha256` equal to the
receipt's `snapshot_sha256`); the snapshot CSV itself was not retained. That
is one real ingest gating one paper trial, not the full production ingest
described earlier in this README. For the bounded CSV fixtures used in
tests here, use `fixtures/good.csv` with `fixtures/good-gate-result.json`.
4 changes: 2 additions & 2 deletions catalogs/us-equities/engines-strategies.json
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@
],
"limitations": [
"Prerelease: 2.0.0 final has not shipped; GitHub's latest non-prerelease is still v1.231.0.",
"SPY/LEAN parity gate G-a (retained-equity-replay): runtime-target.json next_acceptance records reported_execution_blocked_review_incomplete; the retained comparison summary (evidence/artifacts/comparison-progress-20260922/summary.json) records a completed BLOCKED replay of the historical one_zero case with four failed checks, all attributed to the unsupported distributions_and_cash and market_on_open_proxy mappings. A completed blocked comparison is not parity acceptance; the per-check verdict is retained in blueprints/us-equities/engine-nautilus/spy-parity/verdict.json.",
"Closing the parity gate needs an engine-native market-on-open and dividend-cash mechanism or a newly preregistered mapping manifest (gate dividend-sim-module).",
"SPY/LEAN parity gate G-a (retained-equity-replay): established 2026-09-23 for the one_zero case by blueprints/us-equities/engine-nautilus/spy-parity/verdict-v2.json (PASS, 136 checks, 0 failed; gate spy-lean-parity in gates-20260922.json), and runtime-target.json next_acceptance now records spy_lean_parity_passed_one_zero_case. Before that it recorded reported_execution_blocked_review_incomplete: the retained comparison summary (evidence/artifacts/comparison-progress-20260922/summary.json) records a completed BLOCKED replay of the historical one_zero case with four failed checks, all attributed to the unsupported distributions_and_cash and market_on_open_proxy mappings. A completed blocked comparison is not parity acceptance; the per-check verdict is retained in blueprints/us-equities/engine-nautilus/spy-parity/verdict.json.",
"The v1 blockers were closed by the v2 preregistration: native SimulationModule dividend cash and a native OCO open-fill proxy (gate dividend-sim-module, established 2026-09-23); the proxy is not a general market-on-open equivalent when the open equals the prior close, and parity covers one case only.",
"No local simulation, broker session or latency benchmark beyond the synthetic FX quickstart and the September21 AAPL diagnostic was performed.",
"Event semantics shared by backtest/live still require a calibrated data/fill model and recovery tests."
],
Expand Down
25 changes: 14 additions & 11 deletions catalogs/us-equities/engines-strategies.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,21 @@ capacity fixture cited, no live broker fills claimed). The installed skfolio
**1.2.9** acceptance covers its chronological splitter/control study. The earlier
1.231.0 source review is historical, superseded for installation by the
[dated R&D readiness decision](../../docs/foundation-rd-readiness.md). NautilusTrader
remains prerelease: 2.0.0 final has not shipped, and the SPY/LEAN parity gate
**G-a** (`retained-equity-replay`) is recorded as
`reported_execution_blocked_review_incomplete` in
[`runtime-target.json`](runtime-target.json) `next_acceptance`: the retained
remains prerelease: 2.0.0 final has not shipped. The SPY/LEAN parity gate
**G-a** (`retained-equity-replay`, gate `spy-lean-parity`) was established on
2026-09-23 for the one_zero case: `spy-parity/verdict-v2.json` reads PASS with
136 checks and 0 failed, on the sealed v2 preregistration (native
SimulationModule dividend cash and a native OCO open-fill proxy; gate
`dividend-sim-module`), and [`runtime-target.json`](runtime-target.json)
`next_acceptance` now records `spy_lean_parity_passed_one_zero_case`. Before
that it recorded `reported_execution_blocked_review_incomplete`: the retained
[comparison summary](../../evidence/artifacts/comparison-progress-20260922/summary.json)
records a completed **BLOCKED** replay of the historical one_zero case with four
failed checks on the unsupported `distributions_and_cash` and
`market_on_open_proxy` mappings; a completed blocked comparison is not parity
acceptance. The verdict and its 29 checks are on main under
`blueprints/us-equities/engine-nautilus/spy-parity/`; closing the gate needs an
engine-native market-on-open and dividend-cash mechanism or a newly
preregistered mapping manifest (gate `dividend-sim-module`).
records a completed **BLOCKED** v1 replay of the historical one_zero case with
four failed checks on the then-unsupported `distributions_and_cash` and
`market_on_open_proxy` mappings. The v1 verdict and its 29 checks stay on main
under `blueprints/us-equities/engine-nautilus/spy-parity/`. Parity covers one
case, and the open-fill proxy is not a general market-on-open equivalent when
the open equals the prior close.
The current target also records bounded AAPL replay and Alpaca paper evidence;
neither establishes SPY parity, a strategy edge or complete broker recovery.

Expand Down
2 changes: 1 addition & 1 deletion catalogs/us-equities/gates-20260922.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"pointer": "/status",
"equals": "pass"
},
"note": "promotion_gate.py (pandera 0.33.1 in its own venv) passes the good fixture and fails closed on the bad and null-price fixtures (blueprints/us-equities/data/fixtures/*-gate-result.json); runner.validate_preflight refuses paper without a matching passing result. No real snapshot ingest exists yet, so a production paper run is not yet gated end-to-end."
"note": "promotion_gate.py (pandera 0.33.1 in its own venv) passes the good fixture and fails closed on the bad and null-price fixtures (blueprints/us-equities/data/fixtures/*-gate-result.json); runner.validate_preflight refuses paper without a matching passing result. Real ingest, recorded 2026-09-24 (status, evidence_class and receipt_path unchanged; the gate was already established and scripts/trading_gates.py lists no flip candidate): blueprints/us-equities/data/ingest_snapshot.py (#84) is a bounded read-only Alpaca daily-bar ingest for the adaptive-paper universe. Trial adaptive-20260923g (blueprints/us-equities/adaptive-paper/trials/20260923g-main-passed/, run by scheduled_trial.sh from a read-only archive of main 843dc8f) retained its ingest-receipt.json (24 symbols, 20 sessions 2026-08-25 to 2026-09-22, 480 rows, SIP raw 1Day, no coverage problems, snapshot_sha256 75e67c5dc345d67c...) and gate-result.json (status pass, 12 of 12 checks pass, row_count 480, input_sha256 equal to that snapshot hash), and the paper command given that result and snapshot passed (scheduled-trial.log). This is one real ingest gating one paper trial, not the full production ingest blueprints/us-equities/data/README.md describes (entitlements, corporate actions, symbol history, as-of universe); the snapshot CSV itself was not retained, and the gate that ran was 843dc8f's promotion_gate.py, whose bytes differ from the current file. Until 2026-09-23 no real snapshot ingest had gated a paper run."
},
{
"id": "rc5-supply-chain-scan",
Expand Down
Loading
Loading