NODEDC_1C/docs/HARD_SEMANTIC/probe_matrix.md

64 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.