{
  "format": "portfolio-lab-project-data-registry",
  "version": "1.3.3",
  "updated_date": "2026-10-21",
  "market_cutoff": "2026-10-16",
  "scope": "Persistent source map for active financial inputs, historical monthly universe, accepted breadth research, archive references and reproducible website projections. No credentials or private Library identifiers.",
  "versions": {
    "financial_release": "0.5.1",
    "financial_engine": "0.5.0-rc.2",
    "financial_data_version": "f04fde3fb10a9fa455a92548be25ec0f3580898db7e6c76180a16913cf132b1f",
    "monthly_universe_release": "1.0.0",
    "breadth_research_release": "1.3.0",
    "index_history_data_version": "278de29d6802eddfe24337f4e7946d41347da9db69b8ef1621ff89f9cc202179",
    "breadth_data_version": "5a61a8075492412909804e2cc0c95ab7ab8aedcd9e9bb07c6ef5010bf68955ac",
    "ui_version_source": "public/ui-version.json",
    "allocation_engine": "1.0.1",
    "current_ui_version": "0.13.0",
    "allocation_data_version": "13afdf89a8914f7c95c52481d7c9769caefddfb9c988035917cc5279ce07de7b",
    "breadth_indicator_release": "1.3.1"
  },
  "status_vocabulary": {
    "verified_current_bytes": "Physical SHA-256, SQLite integrity, foreign keys and rows checked on 2026-10-19 without modifying source bytes.",
    "accepted_reference": "Accepted hash or coverage from retained earlier source; not revalidated as a whole in this inventory.",
    "metadata_only": "Current saved-file metadata observed; content, lineage and compatibility not verified.",
    "derived": "Reproducible output, not a canonical source backup.",
    "temporary": "Disposable fixture; do not treat as canonical backup."
  },
  "datasets": [
    {
      "id": "financial-active",
      "role": "active canonical financial input",
      "data_release": "0.5.1",
      "status": "verified_current_bytes",
      "local_destination": "work/financial-input-0.5.1.sqlite",
      "archive_member": "PortfolioLab_Financial_0_5_1/PortfolioLab_Financial_0_5_1.sqlite",
      "sha256": "d4a69da49bf4905735407087b78e337b3235fef6fe1a705302664ca60fcee96f",
      "size_bytes": 308666368,
      "table_count": 33,
      "table_rows": {
        "candle_archive": 240191,
        "corporate_actions": 11,
        "distribution_evidence": 2112,
        "distributions": 1312,
        "dividend_annual_control": 1592,
        "dividend_currency_facts": 19,
        "event_aliases": 1345,
        "event_evidence": 2100,
        "event_exclusions": 12,
        "event_reviews": 56,
        "event_timing": 1312,
        "fund_policy": 15,
        "index_members": 228786,
        "instrument_aliases": 32,
        "instruments": 290,
        "metadata": 33,
        "model_parameters": 1,
        "prices": 487931,
        "primary_annual_coverage": 14,
        "primary_dividend_facts": 18,
        "quality_issues": 72,
        "reference_observations": 45804,
        "return_coverage": 127,
        "runs": 0,
        "security_code_changes": 2,
        "series": 777473,
        "source_revision_reviews": 43,
        "sources": 14522,
        "synthetic_artifacts": 111,
        "synthetic_inputs": 54866,
        "synthetic_models": 9,
        "synthetic_points": 43871,
        "trading_calendar": 7277
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "archive_sha256": null,
      "restore_command": "python3 -I scripts/build_financial_0_5_1.py work/financial-input-0.5.0.sqlite db/corrections-0.5.1.json control/evidence_0_5_1 work/financial-input-0.5.1.sqlite control/financial_0_5_1_build_report.json",
      "verify_command": "python3 -I scripts/verify_financial_0_5_1.py work/financial-input-0.5.0.sqlite work/financial-input-0.5.1.sqlite db/corrections-0.5.1.json control/evidence_0_5_1 control/financial_0_5_1_verification.json",
      "coverage": {
        "from": "1997-09-22",
        "to": "2026-10-16",
        "calendar_observations": 7277,
        "catalog_records": 290,
        "series_rows": 777473
      },
      "data_version": "f04fde3fb10a9fa455a92548be25ec0f3580898db7e6c76180a16913cf132b1f",
      "data_release_label": "0.5.1-corrections-2026-10-21",
      "previous_release": "0.5.0-synthetic9-2026-10-18",
      "previous_data_version": "e43569f364946b14372157f5faff0dafafdb2a265929d6d278bc139e60ad83f1",
      "corrections": {
        "file": "db/corrections-0.5.1.json",
        "sha256": "32ee34411daf3aa8cf08f33a476448af80d2cda8f6ff291cd0b902639f3a55a9",
        "builder": "scripts/build_financial_0_5_1.py",
        "builder_sha256": "cd97398f100cd4c37f6213293d2c1f105fa6f2871b9d1e3dd111364402c4db16",
        "summary": "add_corporate_action=1; add_event=3; amend_amount=4; confirm_unchanged=3; disclose=1; remove_event=11",
        "verification": "control/financial_0_5_1_verification.json (16/16 PASS)"
      },
      "source_archive": "PortfolioLab_Financial_0_5_1_Control_2026-10-21.zip",
      "saved_source_note": "Saved with the 0.5.1 launch package; Library identity is recorded only in the private registry."
    },
    {
      "id": "financial-0.5.0",
      "role": "retained predecessor of financial 0.5.1; corrections applied on top of these bytes",
      "data_release": "0.5.0",
      "status": "verified_current_bytes",
      "local_destination": "work/financial-input-0.5.0.sqlite",
      "archive_member": "PortfolioLab_0_5_0/engine/data/portfolio.sqlite",
      "sha256": "060537796eea286f9ea7e051ba04a4cf56ead1340398da422128d2904bb2b634",
      "size_bytes": 311996416,
      "table_count": 33,
      "table_rows": {
        "candle_archive": 240191,
        "corporate_actions": 10,
        "distribution_evidence": 2109,
        "distributions": 1320,
        "dividend_annual_control": 1592,
        "dividend_currency_facts": 19,
        "event_aliases": 1353,
        "event_evidence": 2108,
        "event_exclusions": 1,
        "event_reviews": 49,
        "event_timing": 1320,
        "fund_policy": 15,
        "index_members": 228786,
        "instrument_aliases": 32,
        "instruments": 290,
        "metadata": 25,
        "model_parameters": 1,
        "prices": 487931,
        "primary_annual_coverage": 14,
        "primary_dividend_facts": 18,
        "quality_issues": 70,
        "reference_observations": 45804,
        "return_coverage": 127,
        "runs": 0,
        "security_code_changes": 2,
        "series": 777473,
        "source_revision_reviews": 43,
        "sources": 14495,
        "synthetic_artifacts": 111,
        "synthetic_inputs": 54866,
        "synthetic_models": 9,
        "synthetic_points": 43871,
        "trading_calendar": 7277
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "archive_sha256": "9ba53b4fd5d712c57cbe231f800a0c3ed847c72673fb7e4d8f3e3debbfa40e0b",
      "restore_command": "python3 scripts/restore_control_inputs.py /path/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
      "verify_command": "python3 scripts/reproduce.py --structure-only",
      "coverage": {
        "from": "1997-09-22",
        "to": "2026-10-16",
        "calendar_observations": 7277,
        "catalog_records": 290,
        "series_rows": 777473
      },
      "data_version": "e43569f364946b14372157f5faff0dafafdb2a265929d6d278bc139e60ad83f1",
      "saved_source": {
        "name": "PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "version_id": "1",
        "size_bytes": 114095763
      },
      "superseded_by": "0.5.1",
      "superseded_date": "2026-10-21"
    },
    {
      "id": "money-market",
      "role": "active canonical money subdatabase",
      "data_release": "0.3.0 in accepted 0.4.3 control input",
      "status": "verified_current_bytes",
      "local_destination": "work/policy-rates-input-0.4.3.sqlite",
      "archive_member": "PortfolioLab_v0_4_3_2026-10-18/engine/data/policy_rates/policy_rates.sqlite",
      "sha256": "8503520e609df312e89f8ff614fa14575ea8e71b745bf26be3812d983b0d7795",
      "size_bytes": 8294400,
      "table_count": 9,
      "table_rows": {
        "fund_model": 1,
        "lqdt_action": 1,
        "lqdt_quote": 1687,
        "metadata": 14,
        "model_daily": 12709,
        "rate_daily": 17487,
        "rate_event": 205,
        "rate_observation": 3281,
        "source_artifact": 28
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "archive_sha256": "9ba53b4fd5d712c57cbe231f800a0c3ed847c72673fb7e4d8f3e3debbfa40e0b",
      "restore_command": "python3 scripts/restore_control_inputs.py /path/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
      "verify_command": "python3 scripts/reproduce.py --structure-only",
      "coverage": {
        "rate_from": "1992-01-01",
        "key_rate_from": "2013-09-16",
        "model_seed": "1991-12-31",
        "model_first_accrual": "1992-01-01",
        "lqdt_first": "2020-01-20",
        "to": "2026-10-16"
      },
      "data_version": "ab91056ad0e576b94b90a3de72111b7565e0c0ab383b47cc09dbc76f8abc13b4",
      "saved_source": {
        "name": "PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "version_id": "1",
        "size_bytes": 114095763
      }
    },
    {
      "id": "financial-baseline-0.4.3",
      "role": "frozen predecessor used to rebuild synthetic models",
      "data_release": "0.4.3",
      "status": "verified_current_bytes",
      "local_destination": "work/financial-input-0.4.3.sqlite",
      "archive_member": "PortfolioLab_v0_4_3_2026-10-18/engine/data/portfolio.sqlite",
      "sha256": "2ca71c53ba46939392048cfee52ed3afe88e12c27be8196f17883a7a034fd9c7",
      "size_bytes": 269606912,
      "table_count": 29,
      "table_rows": {
        "candle_archive": 240191,
        "corporate_actions": 10,
        "distribution_evidence": 2109,
        "distributions": 1320,
        "dividend_annual_control": 1592,
        "dividend_currency_facts": 19,
        "event_aliases": 1353,
        "event_evidence": 2108,
        "event_exclusions": 1,
        "event_reviews": 49,
        "event_timing": 1320,
        "fund_policy": 15,
        "index_members": 228786,
        "instrument_aliases": 32,
        "instruments": 281,
        "metadata": 20,
        "model_parameters": 1,
        "prices": 446666,
        "primary_annual_coverage": 14,
        "primary_dividend_facts": 18,
        "quality_issues": 70,
        "reference_observations": 45804,
        "return_coverage": 127,
        "runs": 0,
        "security_code_changes": 2,
        "series": 736208,
        "source_revision_reviews": 43,
        "sources": 14374,
        "trading_calendar": 7277
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "archive_sha256": "9ba53b4fd5d712c57cbe231f800a0c3ed847c72673fb7e4d8f3e3debbfa40e0b",
      "restore_command": "python3 scripts/restore_control_inputs.py /path/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
      "verify_command": "python3 scripts/reproduce.py --structure-only",
      "data_version": "06b98526d89f7ba9b03bede3b9fc5b796bdb5b5a66341fad44435c3f04246368",
      "saved_source": {
        "name": "PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "version_id": "1",
        "size_bytes": 114095763
      }
    },
    {
      "id": "synthetic-raw",
      "role": "frozen source payloads for nine calculated series",
      "status": "verified_current_bytes",
      "archive_directory": "synthetic_sources/",
      "source_manifest": "db/synthetic-source-manifest.json",
      "source_manifest_sha256": "4c313e90cfe9702fee8e6b33165aff025c9e61a1e7fa8694e10398ae2fb867b7",
      "artifact_count": 111,
      "rebuild_command": "python3 tests/synthetic-models.py --rebuild",
      "verify_command": "python3 scripts/verify_database.py",
      "saved_source": {
        "name": "PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_Synthetic9_Control_0_5_0_2026-10-18.zip",
        "version_id": "1",
        "size_bytes": 114095763
      }
    },
    {
      "id": "monthly-universe",
      "role": "canonical historical monthly stock universe and official archived composition",
      "status": "verified_current_bytes",
      "data_release": "1.0.0",
      "local_destination": "work/index-history-input/MOEX_Monthly_Equities_1997_2026.sqlite",
      "archive_member": "PortfolioLab_MOEX_Monthly/outputs/MOEX_Monthly_Equities_1997_2026.sqlite",
      "archive_sha256": "cb4503d0854c9357c8123d8380ba36d6e960ab5551cc67eb6c16f79127d41f05",
      "sha256": "52e7f6bf102e0f1dc4ff0f0b3e1a9d2967a0d3c29e0cf9443208e35194424081",
      "size_bytes": 689049600,
      "table_count": 19,
      "table_rows": {
        "code_change": 639,
        "collection_control": 2623,
        "current_quote": 261,
        "daily": 1978753,
        "excluded_listing": 2190,
        "fx_observation": 37231,
        "index_daily": 228786,
        "index_snapshot": 6454,
        "issuer_monthly": 84706,
        "listing_interval": 4972,
        "metadata": 8,
        "metric_dictionary": 56,
        "monthly": 112165,
        "monthly_coverage": 355,
        "monthly_period": 355,
        "quality_issue": 1,
        "security": 2207,
        "source": 11135,
        "trading_calendar": 7402
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "coverage": {
        "monthly_from": "1997-04-01",
        "monthly_to": "2026-10-01",
        "monthly_periods": 355,
        "monthly_rows": 112165,
        "securities": 2207,
        "distinct_isins": 1726,
        "daily_from": "1997-03-25",
        "daily_to": "2026-10-16",
        "daily_rows": 1978753,
        "first_confirmed_monthly_composition": "2001-02-01"
      },
      "restore_and_export_command": "python3 scripts/export_index_history.py --archive /path/PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
      "verify_command": "python3 tests/index-history.py --archive /path/PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
      "full_source_rebuild": "Use build.py, audit.py and deliver.py from the monthly archive in their own module, with retained raw inputs; website export is not a full source rebuild.",
      "saved_source": {
        "name": "PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
        "path": "/PortfolioLab/MOEX_Monthly_Universe/PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
        "version_id": null,
        "size_bytes": 292977255
      }
    },
    {
      "id": "monthly-universe-gzip",
      "role": "alternate database-only saved copy",
      "status": "accepted_reference",
      "decompressed_filename": "MOEX_Monthly_Equities_1997_2026.sqlite",
      "decompressed_sha256": "52e7f6bf102e0f1dc4ff0f0b3e1a9d2967a0d3c29e0cf9443208e35194424081",
      "compressed_sha256": null,
      "restore_command": "gzip -dk /path/MOEX_Monthly_Equities_1997_2026.sqlite.gz",
      "verify_commands": [
        "sha256sum /path/MOEX_Monthly_Equities_1997_2026.sqlite",
        "sqlite3 /path/MOEX_Monthly_Equities_1997_2026.sqlite \"PRAGMA integrity_check; PRAGMA foreign_key_check;\""
      ],
      "note": "Compressed metadata observed now; uncompressed bytes independently verified from full archive.",
      "saved_source": {
        "name": "MOEX_Monthly_Equities_1997_2026.sqlite.gz",
        "path": "/PortfolioLab/MOEX_Monthly_Universe/MOEX_Monthly_Equities_1997_2026.sqlite.gz",
        "version_id": null,
        "size_bytes": 123553886
      }
    },
    {
      "id": "breadth-research",
      "role": "canonical accepted frozen research and reproduction controls",
      "status": "verified_current_bytes",
      "research_release": "1.3.0",
      "archive_sha256": "e3ee5e471b1bd26ac3941e47bc80c0d3490d848fa2c760f34837d45574841624",
      "archive_size_bytes": 49465573,
      "archive_directory": "sma200_breadth/",
      "frozen_input_manifest": "sma200_breadth/inputs/manifest.json",
      "calculation_reference_files": 15,
      "frozen_inputs": 28,
      "accepted_numeric_outputs": 21,
      "coverage": {
        "diagnostic_monthly_from": "2008-01-01",
        "diagnostic_monthly_to": "2026-10-01",
        "diagnostic_months": 226,
        "constituent_rows": 9413,
        "strategy_from": "2015-01-05",
        "strategy_to": "2026-10-16",
        "strategy_sessions": 2965,
        "strategy_signals": 142
      },
      "restore_command": "python3 -m zipfile -e /path/PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip /path/restored-breadth",
      "verify_commands": [
        "cd /path/restored-breadth/sma200_breadth",
        "python3 reproduce.py --mode preflight",
        "python3 reproduce.py --mode rebuild"
      ],
      "strategy_rule": {
        "breadth": "(above + equal) / all historical constituents",
        "cash": "max(0,1-breadth-0.20)",
        "equity": "1-cash",
        "cash_threshold": 0.2,
        "equity_exposure": "MCFTR",
        "cash_model": "MM_CBR",
        "signal_frequency": "monthly previous session close",
        "no_individual_stock_selection": true
      },
      "retained_prior_releases": [
        "archive/v1_1_0",
        "archive/v1_2_0"
      ],
      "current_check": "Original preflight and isolated rebuild passed; 21 accepted numeric output hashes match. This does not re-fetch issuer publications. Indicator 1.3.1 (2026-10-21) is a documented correction overlay for financial 0.5.1; the archive itself is unchanged. Indicator 1.3.1 (2026-10-21) is a documented correction overlay for financial 0.5.1; the archive itself is unchanged.",
      "saved_source": {
        "name": "PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
        "path": "/PortfolioLab/SMA200_Breadth_Backtest/PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
        "version_id": "4",
        "size_bytes": 49465573
      }
    },
    {
      "id": "breadth-analysis-sqlite",
      "role": "accepted derived analytics database; not raw source replacement",
      "status": "verified_current_bytes",
      "research_release": "1.3.0",
      "archive_filename": "PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
      "archive_member": "sma200_breadth/outputs/PortfolioLab_SMA200_Analysis_2026-10-18.sqlite",
      "local_destination": "work/breadth-input/sma200_breadth/outputs/PortfolioLab_SMA200_Analysis_2026-10-18.sqlite",
      "sha256": "3c4c4682aa8374282460fd930c3913868f0df831c962c99d4ac2b5fda550c031",
      "size_bytes": 3461120,
      "table_count": 16,
      "table_rows": {
        "all_constituent_sma200": 9413,
        "annual_returns": 12,
        "daily_comparison": 2965,
        "daily_source_only": 2965,
        "holdings": 852,
        "latest_breadth": 44,
        "latest_portfolio": 2,
        "metadata": 4,
        "mm_fund_model": 1,
        "mm_model_daily": 12709,
        "mm_rate_event": 205,
        "monthly_returns": 142,
        "monthly_signals": 142,
        "monthly_signals_all_history": 226,
        "performance": 6,
        "trades": 406
      },
      "integrity_check": "ok",
      "foreign_key_errors": 0,
      "restore_command": "Extract the exact archive member or use the separately saved SQLite with the same decompressed hash.",
      "verify_command": "python3 tests/market-breadth.py --archive /path/PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
      "saved_source": {
        "name": "PortfolioLab_SMA200_Analysis_2026-10-18.sqlite",
        "path": "/PortfolioLab/SMA200_Breadth_Backtest/PortfolioLab_SMA200_Analysis_2026-10-18.sqlite",
        "version_id": "3",
        "size_bytes": 3461120
      }
    },
    {
      "id": "archive-warehouse-0.4.3",
      "role": "archived full SQL warehouse, distinct from the website financial baseline",
      "status": "accepted_reference",
      "decompressed_filename": "PortfolioLab_All_Data_0_4_3.sqlite",
      "decompressed_sha256": "495133edd5ca35b470c6ba0330e15a2c9391a69633c0b1c1131a9f41e14acc92",
      "compressed_sha256": null,
      "decompressed_size_bytes": null,
      "table_count": null,
      "row_count": null,
      "restore_command": "gzip -dk /path/PortfolioLab_All_Data_0_4_3.sqlite.gz",
      "verify_commands": [
        "sha256sum /path/PortfolioLab_All_Data_0_4_3.sqlite",
        "sqlite3 /path/PortfolioLab_All_Data_0_4_3.sqlite \"PRAGMA integrity_check; PRAGMA foreign_key_check;\""
      ],
      "hash_evidence": "Accepted source snapshot in SMA200 inputs/base/manifest.json and saved SQL Site Connection report. Warehouse not materialized during this inventory.",
      "saved_source": {
        "name": "PortfolioLab_All_Data_0_4_3.sqlite.gz",
        "path": "/PortfolioLab/PortfolioLab_All_Data_0_4_3.sqlite.gz",
        "version_id": null,
        "size_bytes": 451392447
      }
    },
    {
      "id": "archive-warehouse-sql-dump",
      "role": "alternate archived SQL warehouse dump",
      "status": "metadata_only",
      "sha256": null,
      "row_count": null,
      "restore_command": "Decompress the gzip SQL text and import into a new empty SQLite. Never overwrite active inputs.",
      "verify_command": "Compare reconstructed warehouse content with its own source manifest and integrity/foreign-key checks; do not assume physical SQLite byte identity from a SQL dump.",
      "saved_source": {
        "name": "PortfolioLab_All_Data_0_4_3.sql.gz",
        "path": "/PortfolioLab/PortfolioLab_All_Data_0_4_3.sql.gz",
        "version_id": null,
        "size_bytes": 441259598
      }
    },
    {
      "id": "archive-full-project-0.4.3",
      "role": "full prior source/raw archive for baseline source rebuilding",
      "status": "metadata_only",
      "release": "0.4.3",
      "sha256": null,
      "restore_command": "python3 -m zipfile -e /path/PortfolioLab_0_4_3_2026-10-18.zip /path/restored-0.4.3",
      "verify_command": "Run tools/control.py --full from its own extracted source root after validating its retained manifests.",
      "note": "Current smaller synthetic control archive does not duplicate all prior raw files.",
      "saved_source": {
        "name": "PortfolioLab_0_4_3_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_0_4_3_2026-10-18.zip",
        "version_id": null,
        "size_bytes": 502534917
      }
    },
    {
      "id": "archive-lowvol50",
      "role": "prior stock-selection research, retained as historical work",
      "status": "metadata_only",
      "release": "1.0.0",
      "sha256": null,
      "coverage": null,
      "restore_command": "python3 -m zipfile -e /path/PortfolioLab_LowVol50_Backtest_v1_0_0_2026-10-18.zip /path/restored-lowvol",
      "verify_command": "Read its own frozen methods/manifests and reproduce in an isolated module. Do not replace accepted MCFTR breadth strategy with LowVol.",
      "saved_source": {
        "name": "PortfolioLab_LowVol50_Backtest_v1_0_0_2026-10-18.zip",
        "path": "/PortfolioLab/LowVol50_Backtest/PortfolioLab_LowVol50_Backtest_v1_0_0_2026-10-18.zip",
        "version_id": null,
        "size_bytes": 31190842
      }
    },
    {
      "id": "archive-project-0.2",
      "role": "retained prior project release; not current input",
      "status": "metadata_only",
      "release": "0.2",
      "sha256": null,
      "restore_command": "Extract in a new isolated directory.",
      "verify_command": "Use the release-specific manifests and controls; current-engine compatibility unverified.",
      "saved_source": {
        "name": "PortfolioLab_0_2_2026-10-17.zip",
        "path": "/PortfolioLab_0_2_2026-10-17.zip",
        "version_id": null,
        "size_bytes": 131784742
      }
    },
    {
      "id": "archive-project-0.3",
      "role": "retained prior project release; not current input",
      "status": "metadata_only",
      "release": "0.3",
      "sha256": null,
      "restore_command": "Extract in a new isolated directory.",
      "verify_command": "Use the release-specific manifests and controls; current-engine compatibility unverified.",
      "saved_source": {
        "name": "PortfolioLab_0_3_2026-10-17.zip",
        "path": "/PortfolioLab_0_3_2026-10-17.zip",
        "version_id": null,
        "size_bytes": 148410896
      }
    },
    {
      "id": "archive-project-0.4",
      "role": "retained prior project release; not current input",
      "status": "metadata_only",
      "release": "0.4",
      "sha256": null,
      "restore_command": "Extract in a new isolated directory.",
      "verify_command": "Use the release-specific manifests and controls; current-engine compatibility unverified.",
      "saved_source": {
        "name": "PortfolioLab_0_4_2026-10-17.zip",
        "path": "/PortfolioLab/PortfolioLab_0_4_2026-10-17.zip",
        "version_id": null,
        "size_bytes": 335842213
      }
    },
    {
      "id": "archive-project-0.4.2",
      "role": "retained prior project release; not current input",
      "status": "metadata_only",
      "release": "0.4.2",
      "sha256": null,
      "restore_command": "Extract in a new isolated directory.",
      "verify_command": "Use the release-specific manifests and controls; current-engine compatibility unverified.",
      "saved_source": {
        "name": "PortfolioLab_0_4_2_2026-10-18.zip",
        "path": "/PortfolioLab/PortfolioLab_0_4_2_2026-10-18.zip",
        "version_id": null,
        "size_bytes": 356432769
      }
    },
    {
      "id": "archive-money-standalone",
      "role": "earlier standalone money-market database",
      "status": "metadata_only",
      "release": "0.3",
      "sha256": null,
      "note": "Same saved byte size as active money subdatabase does not prove identical bytes. Use the verified control-archive member for current reproduction.",
      "saved_source": {
        "name": "PortfolioLab_Money_Market_0_3.sqlite",
        "path": "/PortfolioLab_Money_Market_0_3.sqlite",
        "version_id": null,
        "size_bytes": 8294400
      }
    },
    {
      "id": "legacy-portfolio-v2",
      "role": "legacy saved database reference; canonical lineage not established",
      "status": "metadata_only",
      "sha256": null,
      "release": null,
      "row_count": null,
      "restore_command": "Materialize separately and open read-only.",
      "verify_command": "Establish origin and release-specific physical/logical hashes before relying on financial values. Do not use as fallback for current inputs.",
      "saved_source": {
        "name": "Portfolio_Lab_Database_v2_2026-09-11.sqlite",
        "path": "/Portfolio_Lab_Database_v2_2026-09-11.sqlite",
        "version_id": null,
        "size_bytes": 87965696
      }
    },
    {
      "id": "legacy-portfolio-sqlite",
      "role": "legacy saved database reference; canonical lineage not established",
      "status": "metadata_only",
      "sha256": null,
      "release": null,
      "row_count": null,
      "restore_command": "Materialize separately and open read-only.",
      "verify_command": "Establish origin and release-specific physical/logical hashes before relying on financial values. Do not use as fallback for current inputs.",
      "saved_source": {
        "name": "portfolio.sqlite",
        "path": "/portfolio.sqlite",
        "version_id": null,
        "size_bytes": 87965696
      }
    },
    {
      "id": "website-financial-d1",
      "role": "derived sealed production projection",
      "status": "derived",
      "source_datasets": [
        "financial-active",
        "money-market"
      ],
      "namespace": "rf04fde3f_",
      "logical_financial_tables": 42,
      "logical_rows": 1946772,
      "verified_chunks": 541,
      "logical_data_version": "f04fde3fb10a9fa455a92548be25ec0f3580898db7e6c76180a16913cf132b1f",
      "manifest": "db/runtime-manifest.json",
      "restore_command": "Use the release-specific schema and controlled import protocol for a new staging release. Never re-import into ready sealed production tables for a local reproduction.",
      "verify_command": "Read-only API/table checks against db/runtime-manifest.json; local numeric controls use restored canonical inputs.",
      "service_tables": "Operational tables and views are documented separately; not counted as source financial tables.",
      "manifest_sha256": "e3b149a186765e2e9f6e8863be129ee1626f8e968728af27febcecd562f73551",
      "source_warehouse_sha256": "fc60eab7a94e14b8954eac5ae93b3ba2ed70c2ce5e9bce1729ef8618f86acaf4",
      "migration": "drizzle/0003_financial_0_5_1.sql",
      "previous_namespaces": [
        "re43569f3_ (0.5.0, sealed)",
        "r06b98526_ (0.4.3, sealed)"
      ],
      "previous_manifest": "db/releases/runtime-manifest-0.5.0.json",
      "state_note": "Prepared for staged import; production state is ready only after the live import protocol in docs/LAUNCH_RUNBOOK_0_5_1_RU.md."
    },
    {
      "id": "website-index-history",
      "role": "derived read-only timelapse export",
      "status": "derived",
      "source_datasets": [
        "monthly-universe",
        "financial-active"
      ],
      "data_version": "278de29d6802eddfe24337f4e7946d41347da9db69b8ef1621ff89f9cc202179",
      "paths": [
        "public/index-history/timelapse.json",
        "public/index-history/provenance.json",
        "public/index-history/composition.csv",
        "public/index-history/changes.csv",
        "public/index-history/methodology.html",
        "public/index-history/validation.json"
      ],
      "coverage": {
        "from": "2001-02-01",
        "to": "2026-10-01",
        "snapshots": 309,
        "member_rows": 10946,
        "unique_issues": 137,
        "unique_historical_symbols": 154,
        "secid_only_issues": [
          "SECID:BKBK",
          "SECID:INUR",
          "SECID:NKEL",
          "SECID:UMAS"
        ],
        "secid_only_member_rows": 53,
        "missing_weights": 2,
        "missing_weight_snapshots": [
          "2003-10-01",
          "2011-11-01"
        ],
        "composition_unavailable_months": 46,
        "composition_unavailable_from": "1997-04-01",
        "composition_unavailable_to": "2001-01-01",
        "price_index_snapshots": 309,
        "total_return_snapshots": 262,
        "changes": 292,
        "source_files": 519,
        "composition_source_files": 492,
        "identity_source_files": 27
      },
      "rebuild_command": "python3 scripts/export_index_history.py --archive /path/PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
      "verify_command": "python3 tests/index-history.py --archive /path/PortfolioLab_MOEX_Monthly_1997_2026_v1_0_0_2026-10-18.zip",
      "previous_data_version": "faf79a3fe0a03a28b9450699b77512c2ab1efc7ba73196b7b8ec83b20552b0d8",
      "refresh_command": "python3 scripts/refresh_index_history_provenance.py",
      "refresh_note": "Only financial provenance fields changed; snapshots, memberships, weights and levels are byte-identical."
    },
    {
      "id": "website-market-breadth",
      "role": "derived monthly indicator joined exactly to timelapse; no new financial database",
      "status": "derived",
      "source_datasets": [
        "breadth-research",
        "breadth-analysis-sqlite",
        "website-index-history"
      ],
      "research_release": "1.3.0",
      "data_version": "5a61a8075492412909804e2cc0c95ab7ab8aedcd9e9bb07c6ef5010bf68955ac",
      "paths": [
        "public/market-breadth/report.json",
        "public/market-breadth/provenance.json",
        "public/market-breadth/monthly.csv",
        "public/market-breadth/constituents.csv",
        "public/market-breadth/strategy-daily.csv",
        "public/market-breadth/methodology.html",
        "public/market-breadth/corrections-1.3.1.json",
        "public/market-breadth/archive-1.3.0/report.json",
        "public/market-breadth/archive-1.3.0/monthly.csv",
        "public/market-breadth/archive-1.3.0/constituents.csv",
        "public/market-breadth/corrections-1.3.1.json",
        "public/market-breadth/archive-1.3.0/report.json",
        "public/market-breadth/archive-1.3.0/monthly.csv",
        "public/market-breadth/archive-1.3.0/constituents.csv"
      ],
      "coverage": {
        "before_coverage_policy": "Unavailable; no backfill before 2008-01",
        "constituent_set_mismatch_dates": [
          "2011-06-01",
          "2011-07-01",
          "2011-08-01"
        ],
        "constituent_sets_matched_months": 223,
        "diagnostic_months": 226,
        "from": "2008-01-01",
        "identity_vintage_difference_months": 37,
        "identity_vintage_difference_rows": 49,
        "member_count_mismatch_dates": [],
        "member_rows": 9413,
        "missing_reasons": {
          "fewer_than_200_contiguous_levels": 266,
          "no_actual_quote_at_signal_close": 13,
          "unsupported_total_return": 1089
        },
        "missing_signal_rows": 1368,
        "timelapse_frames": 309,
        "timelapse_frames_without_breadth": 83,
        "to": "2026-10-01"
      },
      "rebuild_command": "python3 scripts/export_market_breadth.py --archive /path/PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
      "verify_command": "python3 tests/market-breadth.py --archive /path/PortfolioLab_SMA200_Breadth_Backtest_2026-10-18.zip",
      "validation_report": "work/market-breadth-validation.json",
      "new_sqlite_created": false,
      "indicator_release": "1.3.1",
      "previous_data_version": "6d2209103569dfe296fd3d5da6bc2d3d059574b66a72e4f28199c5f210d258ca",
      "correction_command": "python3 -I scripts/correct_market_breadth.py --before work/financial-input-0.5.0.sqlite --after work/financial-input-0.5.1.sqlite --corrections db/corrections-0.5.1.json"
    },
    {
      "id": "launch-api-fixture",
      "role": "disposable local server/API test database",
      "status": "temporary",
      "local_destination": "work/launch-api.sqlite",
      "canonical": false,
      "backup": false,
      "restore_command": "python3 tests/prepare-launch-database.py",
      "verify_command": "node tests/launch-api.mjs",
      "note": "Do not preserve instead of source databases. Recreate before each applicable API suite."
    },
    {
      "id": "breadth-allocation-projection",
      "role": "deterministic standalone dynamic allocation input; prior breadth indicator and current financial asset series remain separately versioned",
      "status": "derived",
      "format": "PortfolioLab.BreadthAllocation.Input",
      "version": "1.0.0",
      "data_version": "13afdf89a8914f7c95c52481d7c9769caefddfb9c988035917cc5279ce07de7b",
      "path": "public/breadth-strategy/data.json",
      "sha256": "4ab3dda55d98b656a53310a4894639474675f10a653ec27f5cab94a6af468cef",
      "size_bytes": 1204063,
      "provenance_path": "public/breadth-strategy/provenance.json",
      "provenance_sha256": "81a62aff80770c741e4eaf2ceea19b84cd6c14a62385caca39d918181a20e841",
      "source_datasets": [
        "financial-active",
        "website-market-breadth"
      ],
      "coverage": {
        "from": "2015-01-05",
        "through": "2026-10-16",
        "sessions": 2965,
        "signal_months": 226,
        "asset_count": 18,
        "symbols": [
          "MCFTR",
          "MM_CBR",
          "IMOEX_FUND_PROXY",
          "SBMX",
          "SBGB",
          "LQDT",
          "GOLD",
          "TGLD",
          "MM_RUONIA",
          "MM_RUSFAR",
          "OFZ_FUND_PROXY",
          "CORP_FUND_PROXY",
          "USD_MM_RUB",
          "FX_BASKET_RUB",
          "GOLD_RUB",
          "USD_RUB",
          "EUR_RUB",
          "CNY_RUB"
        ]
      },
      "defaults": {
        "costBps": 10,
        "defensive": "MM_CBR",
        "end": "2026-10-16",
        "initialCapital": 1000000,
        "primary": "MCFTR",
        "start": "2015-01-05",
        "threshold": 0
      },
      "engine_version": "breadth-allocation-1.0.1",
      "calculation_location": "client",
      "rebuild_command": "python3 scripts/export_breadth_allocation.py",
      "verify_commands": [
        "node tests/breadth-allocation.mjs",
        "python3 tests/breadth-allocation.py",
        "node tests/breadth-strategy-view.mjs",
        "node tests/backtest-execution.mjs",
        "node tests/backtest-causality.mjs"
      ],
      "scope_note": "Stored in the exact published source commit and reproducible from saved financial SQLite plus unchanged accepted breadth JSON. Not a new canonical database or a rewrite of research1.3.0. Engine1.0.1 adds exact normalized execution levels, units and price basis without changing inputs or prior economic results. Historical publication timing/PIT remains uncertified.",
      "breadth_indicator_release": "1.3.1"
    }
  ],
  "control_rules": [
    "Current user instruction overrides previous assumptions. Preserve frozen prior releases.",
    "Financial file 0.5.1 (as 0.5.0) contains 33 tables; nine separate money tables form the 42-table server projection.",
    "Source file hash, compressed archive hash, decompressed file hash, logical manifest hash and semantic data_version are distinct values.",
    "Do not overwrite a ready server release or replace expected hashes to suppress FAIL.",
    "Do not convert unknown values to zero or fill before accepted coverage. Retrospective data do not certify original publication-time availability.",
    "Use exact historical membership and previous close; retain original symbol, historical identity and source dates.",
    "Breadth is an equal-vote share of all historical index securities with TR >= SMA200; unknown remains in denominator.",
    "Current standalone allocation: defensive=max(0,1-breadth-tau), primary=1-defensive; user chooses tau and both assets; tau defaults to0. The old fixed20pp MCFTR/MM_CBR calculation is an archived1.3.0 scenario.",
    "Research 1.3.0 uses MCFTR/MM_CBR, no individual-stock selection. Daily strategy history does not imply daily breadth observations.",
    "Portfolio/model interface and financial/research releases have independent versions.",
    "Do not expose Library identifiers, signed download links, tokens or credentials in public exports.",
    "A memory passport is a registry, not database bytes. A planned archive is not saved until the write has succeeded.",
    "Gold, FX and funds are defensive choices, not automatically cash or cash equivalents.",
    "Current timelapse shows breadth only. Standalone allocation/backtest inputs and method are independently versioned.",
    "Execution ledger uses exact normalized total-return levels; these are not literal RUB fund quotes or guaranteed closing-auction fills. New weights earn returns only after the eligible common close.",
    "Causality controls and historical data availability are separate. Historical publication timestamps and corporate-action vintages remain uncertified; do not claim a fully PIT-certified backtest.",
    "Financial 0.5.1 is a correction release on top of 0.5.0: every changed row is listed in db/corrections-0.5.1.json with SHA-256 pinned evidence; the upstream equity archive needed for a full source rebuild is not part of this environment."
  ],
  "verification_evidence": [
    "control/database/verification.json",
    "control/reproduction.json",
    "public/index-history/validation.json",
    "work/market-breadth-validation.json",
    "work/breadth-controls/sma200_breadth/outputs/reproduction_audit.json",
    "work/project-memory-update/local-database-verification.json",
    "work/breadth-allocation-validation.json",
    "work/breadth-allocation-independent-validation.json",
    "control/financial_0_5_1_verification.json",
    "control/financial_0_5_1_build_report.json",
    "public/market-breadth/corrections-1.3.1.json"
  ],
  "limitations": [
    "Retrospective sources; original publication-time timestamps and complete PIT history not certified.",
    "Legacy saved files marked metadata_only were not materialized or content-audited during this task.",
    "Issuer source references and document hashes are retained; full external issuer reports are not bundled in SMA200.",
    "Preservation of accepted files does not schedule future data updates.",
    "Browser acceptance and public capacity require their own evidence.",
    "MSTT: spin-off of АО «Дороги и Мосты» (record 12.10.2020, 1:1) is not valued in TRI; returns after that date may be understated."
  ],
  "archive_scope_note": "Registry includes all grounded PortfolioLab canonical inputs and known saved releases. Standalone unrelated financial strategy databases are not assumed to belong to this site."
}
