# Slot3 Recon Report (2026-03-22)

## Scope

Target hard check:

`posting -> subconto[1..3] -> counterparty / contract / item`

Source artifacts:

- `scripts/recon_slot3_gap.py`
- `logs/slot3_recon_report.json`
- `logs/deep_accounting_mvp_gate.json`

Endpoint:

- `http://localhost/buh_test/odata/standard.odata/`

## Numeric Result

From `logs/slot3_recon_report.json`:

- `sets_with_slot3_fields`: `11`
- `sets_with_data_rows`: `5`
- `sets_with_non_null_slot3`: `0`
- `sets_with_joined_slot3_rows`: `0`
- `rows_with_non_null_slot3_total`: `0`
- `rows_with_joined_slot3_total`: `0`

Recon strategy:

- Baseline sample read (`$top`) for each candidate set.
- Additional targeted reads per slot3 field with `$filter: <slot3_field> ne null`.

Interpretation:

- Metadata contains slot `3` fields in multiple document line entity sets.
- In current sampled data, slot `3` is always empty.
- Because slot `3` has no non-null values, reproducible posting-linked evidence for slot `3` cannot be produced.

## Gate Impact

Hard gate #2 remains `fail` for objective data reasons:

- Slots `1` and `2` are proven.
- Slot `3` is not provable on current OData sample because observed values are null.

This is consistent with:

- `docs/mvp_gate_3_hard_checks_2026-03-22.md`
- `docs/decision_report_odata_vs_deeper_access.md`

## What Must Change To Close Check #2

At least one posted document line is needed where all conditions hold:

1. Slot `3` field is non-null.
2. The line can be joined to accounting posting by:
   - `Ref_Key = Recorder`
   - `Recorder_Type`
   - `LineNumber`
3. The slot `3` value can be categorized into one of required semantic dimensions (`counterparty`, `contract`, `item`) or explicitly mapped as equivalent analytics dimension for the canonical model.

## Next Action

1. Use Universal Tools in test copy to identify document types and posting scenarios that actually fill slot `3`.
2. Reproduce the same scenario through OData extraction and rerun:
   - `scripts/recon_slot3_gap.py`
   - `scripts/deep_probe_accounting_mvp_gate.py`
3. If slot `3` remains opaque in OData despite known non-null data in 1C internals, continue FoxyLink PoC as deeper access closure path.
