← Public Equity InvestingCONTENT HISTORY

Update to Public Equity Investing

Snapshot Sep 30, 2026 · 23:19 UTC · version 0.1.31

Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED · RULE-BASED ANALYSIS

Supporting file metadata differs

Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Supporting files

Before

[{"relative_path":"assets/icon.svg","size_in_bytes":456},{"relative_path":"references/integration-guide.md","size_in_bytes":2786},{"relative_path":"references/line-item-taxonomy.md","size_in_bytes":7552},{"relative_path":"references/line...

After

[{"relative_path":"agents/openai.yaml","size_in_bytes":301},{"relative_path":"assets/icon.svg","size_in_bytes":456},{"relative_path":"references/integration-guide.md","size_in_bytes":2786},{"relative_path":"references/line-item-taxonomy....

Compare saved observations

Download comparison JSON
Full technical diff · 1 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "assets/icon.svg",
    "size_in_bytes": 456
  },
  {
    "relative_path": "references/integration-guide.md",
    "size_in_bytes": 2786
  },
  {
    "relative_path": "references/line-item-taxonomy.md",
    "size_in_bytes": 7552
  },
  {
    "relative_path": "references/line_item_aliases.csv",
    "size_in_bytes": 1647
  },
  {
    "relative_path": "references/normalization-schema.md",
    "size_in_bytes": 9186
  },
  {
    "relative_path": "references/qa-rules.md",
    "size_in_bytes": 6495
  },
  {
    "relative_path": "references/source-protocol.md",
    "size_in_bytes": 6869
  },
  {
    "relative_path": "scripts/build_source_index.py",
    "size_in_bytes": 2488
  },
  {
    "relative_path": "scripts/normalize_extracted_financials.py",
    "size_in_bytes": 23037
  },
  {
    "relative_path": "scripts/validate_normalized_financials.py",
    "size_in_bytes": 4785
  }
]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 301
  },
  {
    "relative_path": "assets/icon.svg",
    "size_in_bytes": 456
  },
  {
    "relative_path": "references/integration-guide.md",
    "size_in_bytes": 2786
  },
  {
    "relative_path": "references/line-item-taxonomy.md",
    "size_in_bytes": 7552
  },
  {
    "relative_path": "references/line_item_aliases.csv",
    "size_in_bytes": 1647
  },
  {
    "relative_path": "references/normalization-schema.md",
    "size_in_bytes": 9186
  },
  {
    "relative_path": "references/qa-rules.md",
    "size_in_bytes": 6495
  },
  {
    "relative_path": "references/source-protocol.md",
    "size_in_bytes": 6869
  },
  {
    "relative_path": "scripts/build_source_index.py",
    "size_in_bytes": 2488
  },
  {
    "relative_path": "scripts/normalize_extracted_financials.py",
    "size_in_bytes": 23037
  },
  {
    "relative_path": "scripts/validate_normalized_financials.py",
    "size_in_bytes": 4785
  }
]
Full snapshot data
{
  "name": "financials-normalizer",
  "description": "Use when normalizing public-company financials from source materials. Do not use for private data rooms or non-financial cleanup.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 301
    },
    {
      "relative_path": "assets/icon.svg",
      "size_in_bytes": 456
    },
    {
      "relative_path": "references/integration-guide.md",
      "size_in_bytes": 2786
    },
    {
      "relative_path": "references/line-item-taxonomy.md",
      "size_in_bytes": 7552
    },
    {
      "relative_path": "references/line_item_aliases.csv",
      "size_in_bytes": 1647
    },
    {
      "relative_path": "references/normalization-schema.md",
      "size_in_bytes": 9186
    },
    {
      "relative_path": "references/qa-rules.md",
      "size_in_bytes": 6495
    },
    {
      "relative_path": "references/source-protocol.md",
      "size_in_bytes": 6869
    },
    {
      "relative_path": "scripts/build_source_index.py",
      "size_in_bytes": 2488
    },
    {
      "relative_path": "scripts/normalize_extracted_financials.py",
      "size_in_bytes": 23037
    },
    {
      "relative_path": "scripts/validate_normalized_financials.py",
      "size_in_bytes": 4785
    }
  ],
  "skill_md_contents": "---\nname: financials-normalizer\ndescription: Use when normalizing public-company financials from source materials. Do not use for private data rooms or non-financial cleanup.\n---\n\n# Financials Normalizer\n\n## Skill Configuration\n\n### Common Skill Instructions\n\nMANDATORY: Before searching connectors, retrieving evidence, or drafting output, read and apply the shared runtime contract in `../public-equity-investing/SKILL.md## Cross-Skill Runtime Contract`. Then check the router skill map and `../../shared/plugin-routing-playbook.md` for adjacent skills that should be sequenced with this workflow. Do not run user-context setup or inspection during ordinary workflow work; route only explicit saved-context, source-setup, onboarding, or automation-setup requests to `../user-context/SKILL.md`.\n\n### Source Resolution\n\nLoad `../../shared/workflow-source-resolution.md`. Resolve only the categories needed for this workflow: `company_filings_ir`, `earnings_transcripts_presentations`, `internal_research`, `portfolio_models_trackers`, and `market_data_estimates`. Use the shared runtime contract to map each attempted category to an available app, connector, file, export, or user-provided input.\n\n## Relevant Dependency Categories\n\nThese are the source categories most likely to matter for this workflow. Use the router contract to resolve only the categories the task actually needs, prefer user-named sources first, and state any material source limitation.\n\n- `Company Filings & IR`\n- `Portfolio Models & Trackers`\n- `Market Data & Estimates`\n\n## Deliverable Intake\n\nWhen invoked as support for an owning workflow, inherit its resolved deliverable preferences and do not re-prompt. Only when this skill independently owns a new substantive standalone normalization deliverable should it, before source gathering, analysis, or rendering, load `../../shared/deliverable-intake-policy.md` and perform its adaptive `request_user_input` preflight for materially unresolved preferences.\n\n## Purpose\n\nLoad `shared/equity-research-support-standard.md` and `shared/support-layer-routing-contract.md` before substantial source, data, QA, or style work.\n\n\nTurn messy public-company source financials into auditable, model-ready normalized statements, KPI schedules, consensus/guidance inputs, segment schedules, share-count support, net-debt and capital-allocation support, source citations, assumptions, conflicts, and QA flags for downstream Public Equity Investing workflows.\n\nBoundary: shipped scripts create `Source_Index.csv`, `Normalized_Financials_Long.csv`, and `Normalization_Issues.csv`. Wide statements, KPI schedules, adjustment logs, conflict logs, assumption registers, and workbook/deck-ready tabs are instruction-led unless explicitly built from staging data.\n\nFor a standalone request for **model-ready normalized financials**, do not treat a long-form staging CSV alone as the analyst deliverable. Create a model-loading package from the staged rows: full-scope wide schedules relevant to the supplied financials, a disclosure/comparability bridge when definitions or presentation changed, material QA flags, and logged validation checks. Use XLSX when the user requests a workbook or will load/review the output in a workbook; otherwise a clearly organized CSV package plus a concise review summary is appropriate. This is a data-first skill; do not force an HTML artifact unless the user requests one.\n\n## Embedded Support Routing\n\nThis is an embedded service under the owning workflow unless the user explicitly asks for standalone normalization. Preserve the `owning_workflow` internally, such as `equity-model-update`, `dcf-model-builder`, `three-statement-model-builder`, `comps-valuation`, `earnings-preview`, `earnings-deep-dive`, `memo-builder`, `thesis-tracker`, `scenario-sensitivity-generator`, `portfolio-risk-management`, or `dashboard-builder`.\n\nFor substantial embedded work, preserve `decision_impact`, `readiness_effect`, `artifact_role`, and `hidden_unless_requested` in internal context or support artifacts. Do not print those internal field names in the owning workflow's user-facing artifact. Do not own the valuation, memo, earnings, or recommendation; state in natural language how normalization issues change estimate confidence, valuation support, target support, sizing, model readiness, or circulation readiness. `Source_Index.csv`, `Normalized_Financials_Long.csv`, `Normalization_Issues.csv`, run logs, manifests, and support notes are secondary/support artifacts when invoked by an owning workflow.\n\n## Non-Negotiables\n\n- Preserve raw/source materials.\n- Prefer user files/context, callable runtime apps/connectors when actually available, primary public sources, user-provided provider exports, then labeled assumptions. Never imply live provider access when it is unavailable.\n- Never invent missing financials; mark unavailable values as `missing_required_source`.\n- Keep normalized values traceable to source ID, source name/location, retrieved-at date, period, units, currency, and evidence label.\n- Missing `source_id` must remain visible as `SRC-UNSPECIFIED`, produce a QA flag, and block decision-grade handoff.\n- Retain conflicts rather than silently choosing values.\n- Flag stale, preliminary, unaudited, OCR-derived, or low-confidence data.\n- Do not infer fiscal period-end dates from quarter labels alone; use an explicit source date or mark the date missing and flag it.\n- Keep issuer outlook or guidance in `kpi_schedule` with `issuer_management_claim`; reserve `consensus_estimate` with `estimate_consensus` for externally sourced consensus estimates.\n- When a segment, KPI, non-GAAP definition, or balance-sheet presentation changes, preserve both bases and create a comparability bridge before calling any series model-loadable.\n- Apply comparability status at the affected series or line-item level. A changed cash presentation does not recast unrelated balance-sheet rows.\n- Use `comparable_rounded` when an unchanged reported series is comparable across periods but only available in rounded narrative units; disclose that it is unsuitable for exact tie-out.\n- Do not backsolve an undisclosed comparable value from rounded amounts or percentage growth for model loading. A labeled directional calculation may appear separately only when useful.\n- Material open exceptions must be surfaced in `QA_Flags` and in the readiness summary; an empty technical `Normalization_Issues` file does not mean the financials are clear for downstream use.\n\n## Workflow\n\n1. **Classify job.** Public-equity issuer financials, earnings/model update, consensus/provider export, ETF/index constituent support, portfolio/market-data support, or equity-risk debt/liquidity context.\n2. **Build source index.** Capture source ID, name/type, owner/provider, period, as-of date, retrieved-at date, location, source rank, freshness, and notes.\n3. **Extract long-form staging.** Use `Normalized_Financials_Long` before wide statements; preserve original line labels beside canonical labels.\n4. **Normalize periods, scale, currency, signs, and labels.** Keep reported, adjusted, pro forma, provider-standardized, estimated, and analyst-adjusted values separate.\n5. **Reconcile disclosure changes.** Identify renamed, regrouped, newly introduced, discontinued, recast, or definition-changed segments/KPIs/non-GAAP lines; preserve legacy and new bases; create a disclosure/comparability bridge with model treatment.\n6. **Reconcile and QA.** Check subtotals, roll-forwards, balance sheet balance, cash flow bridge, units/currency, duplicate periods, missing sources, stale/conflicting values, signs, unsupported KPIs, and completeness of the intended model-loading scope. Log performed checks and results; do not claim a check count that is not preserved in an output.\n7. **Produce package.** For standalone model-ready work, produce loadable wide schedules plus `QA_Flags` and `Validation_Checks` from the audited staging layer; include a disclosure/comparability bridge whenever presentation changed. For narrower extraction/support work, return only the deterministic CSV outputs or instruction-led tabs actually created.\n8. **Hand off.** State what is loadable, what is audit-only, and what remains partial or blocked before routing to models, earnings, comps, memo, thesis, scenario, risk, ETF/index, or deck/report skills. Route covenant/recovery/debt-security normalization to Credit Markets.\n\n## Sub-agent decomposition\n\nFor complex medium/large requests, use sub-agents where available; otherwise emulate the split as named workstreams. Suggested lanes: source inventory, line-item mapping, period/unit normalization, conflict log, and QA. Keep this skill as the lead: reconcile conflicts, source labels, assumptions, open items, final QA, and the user-facing answer.\n\nWhen embedded in a broader workflow, \"lead\" means lead for normalization only; the owning workflow remains the investment-artifact owner.\n\n\n## Evidence Labels\n\nUse exact labels from `references/normalization-schema.md`, including `fact_source_reported`, `fact_provider_standardized`, `derived_calculation`, `issuer_management_claim`, `management_adjusted`, `analyst_adjusted`, `analyst_interpretation`, `assumption_user_provided`, `assumption_inferred`, `estimate_consensus`, `stale_source`, `contradicted_source`, `missing_required_source`, and `unknown`.\n\nConfidence labels are `high`, `medium`, or `low`.\n\n## Scripts\n\n```bash\npython scripts/normalize_extracted_financials.py path/to/input.csv --output-dir output\npython scripts/validate_normalized_financials.py output/Normalized_Financials_Long.csv\n```\n\nFor workbook inputs, first extract the relevant tab/range with spreadsheet tools into a table/CSV; scripts must not destructively modify workbooks.\n\n## Final Response\n\nReturn:\n\n1. what was normalized: entity, sources, periods, units, currency, scope;\n2. outputs created;\n3. what can be loaded into a model and what remains audit-only, partial, or blocked;\n4. material QA findings and disclosure/comparability breaks;\n5. fact versus assumption summary and validation checks actually performed;\n6. recommended next step or missing source.\n\n## Reference Map\n\n- `references/source-protocol.md`: hierarchy, stale data, citations, conflicts.\n- `references/normalization-schema.md`: output schema, signs, scales, labels.\n- `references/line-item-taxonomy.md`: statement/KPI mappings.\n- `references/qa-rules.md`: reconciliation tests and red flags.\n- `references/integration-guide.md`: downstream Public Equity Investing handoffs.\n"
}

SHA-256: 5ff03694c9b35e64603755e79072a85aff85f17fefe0123c856be08dd19bc0cd