# probe_matrix ## Probe Context - Date: `2026-03-22` - Endpoint: `http://localhost/buh_test/odata/standard.odata/` - Source files: - `logs/probe_report.json` - `logs/sample_links.json` - `logs/metadata.xml` - `logs/deep_subconto_join_probe.json` ## Chain Status Matrix | Chain | Description | Status | Evidence summary | |---|---|---|---| | A | `Document_Реализация -> Posting -> Account -> Subconto` | `derivable` | Proven by join: document lines (`Ref_Key + LineNumber`) to posting rows (`Recorder + LineNumber`), with account match and `Subconto_Type` present. | | B | `Document_Поступление -> Posting -> Accounts` | `derivable` | Document rows are readable; account keys restored via `Recorder` bridge to accounting register. | | C | `Counterparty -> Contract -> Documents -> Movements` | `derivable` | `Owner_Key`, `Контрагент_Key`, `ДоговорКонтрагента_Key` are available; movement path is derivable through recorder-based joins. | | D | `Bank docs -> BankAccount -> Movements` | `derivable` | Bank documents and bank account keys are readable; movements are joinable via register records. | | E | `Document_ОперацияБух -> AccountingRegister -> Explainability` | `derivable` | Manual operation docs and accounting register records are readable with stable account/recorder fields. | | F | `ChartOfAccounts -> SubcontoType -> Posting` | `derivable` | Derivable in data-driven mode (posting account + linked document-line `Subconto_Type`), even though direct normative mapping from ChartOfAccounts fields is not exposed. | ## Relation-Level Status (core) | Relation | Status | Evidence type | |---|---|---| | `Document -> Posting` | `derivable` | key-based join (`Ref_Key` <-> `Recorder`) plus `LineNumber` | | `Posting -> debitAccount` | `direct` | `AccountDr_Key` in `AccountingRegister_Хозрасчетный_RecordType` | | `Posting -> creditAccount` | `direct` | `AccountCr_Key` in `AccountingRegister_Хозрасчетный_RecordType` | | `Posting -> Organization` | `direct` | `Организация_Key` in `AccountingRegister_Хозрасчетный_RecordType` | | `Document -> Counterparty` | `direct` | `Контрагент_Key` in document entity sets | | `Document -> Contract` | `direct` | `ДоговорКонтрагента_Key` in document entity sets | | `Counterparty -> Contract` | `direct` | `Owner_Key` in `Catalog_ДоговорыКонтрагентов` | | `Organization -> BankAccount` | `direct` | `ОсновнойБанковскийСчет_Key` / `СчетОрганизации_Key` | | `Posting -> SubcontoType` | `derivable` | Proven in `logs/deep_subconto_join_probe.json` with joined rows and stable `Subconto_Type` extraction | ## Evidence Snapshot For Deep Subconto Probe - Tested document key: `b8661088-b0f2-11e4-9980-5404a6c12c2c` - Posting rows for document: `108` - Document line rows: `36` - Joined rows: `36` - Account match in joined sample: `true` - Chain A status in deep probe: `derivable` - Chain F status in deep probe: `derivable` ## Caveat (important) - `ChartOfAccounts -> SubcontoType` is currently reconstructed from observed data (`Posting + Line Subconto_Type`), not from an explicit normative field map exposed by OData metadata. - For strict compliance scenarios, keep this caveat in model governance notes. - Hard-gate check `posting -> subconto[1..3] -> counterparty/contract/item` is still incomplete: slots `1` and `2` are proven, slot `3` is not yet reproducibly proven (`logs/deep_accounting_mvp_gate.json`). - Slot `3` recon artifact confirms this is a data/evidence gap on current sample (`logs/slot3_recon_report.json`): slot3 fields exist in metadata, but non-null slot3 values were not observed in sampled rows. ## Security Check (write deny) Transport-level check on `$metadata`: - `POST` -> `405` - `PATCH` -> `405` - `DELETE` -> `405` Role-level read-only should still be audited in 1C permissions.