# Phase 68 — expanded source checks and lag/precision diagnostics

**Phase69 update:** The residual counts below are preserved. All LEV/SIZE residuals are numerically explained by a post-hoc observed-bound clipping candidate; original construction provenance is still unverified. See [RESIDUAL_AUDIT_V69.md](RESIDUAL_AUDIT_V69.md).

## Deployment verified

On October 26, 2026, the production service returned HTTP200 for `/api/health`, `/SOURCE_RECONCILIATION_V67.md`, `/data/processed/source_reconciliation_v67.json`, and `/read/corporate-tax-and-benefits`. The JSON reported version67 and the article contained the phase67 update. These observations verify the requested phase67 deployment, not a complete UI regression test.

## Revised interpretation of phase66

The phase66 result of zero LEV matches tested current liabilities/current assets at a strict numeric tolerance. It should not be interpreted as evidence that all leverage data are wrong. Exploratory testing now finds much stronger compatibility with prior-year fields and with numeric rounding sensitivity. Neither the precise construction nor the original preprocessing has been independently established for every row.

| Candidate identity | Matches at rtol 1e-6 | Matches at rtol 1e-5 | Remaining mismatches at 1e-5 |
|---|---:|---:|---:|
| SIZE = log(current assets) | 2 | 25 | 12,628 |
| SIZE = log(prior assets) | 12,473 | 12,473 | 180 |
| LEV = current liabilities/current assets | 0 | 1 | 12,652 |
| LEV = prior liabilities/prior assets | 7,232 | 12,518 | 135 |
| ROA = net income/prior assets | 9,090 | 12,512 | 141 |
| ROE = net income/prior equity | 9,329 | 12,560 | 93 |
| CFO = operating cash flow/prior assets | 8,874 | 12,479 | 174 |

All checks use 12,653 rows and atol1e-8. Finite values are required. The sensitivity tolerance was selected after exploration, not preregistered, and must not be treated as a source-certified rounding rule. No formula is approved by maximizing fit, and no supplied values have been overwritten. Current/prior-year alternatives are the stated diagnostic candidates; residual mismatches are not automatically relabeled as winsorization.

## Calendar-year consistency

For the 10,024 issuer-year records with a released record for exactly the previous calendar year, lag_asset, lag_liab and lag_equit each match that prior record in all 10,024 comparisons at rtol1e-5, atol1e-8. Gaps are not bridged and issuers are not mixed. The other 2,629 records lack such a released predecessor; this does not establish whether their lag values are missing in the original source. This confirms internal lag consistency on available pairs, not underlying statement accuracy.

## Six original-filing cases

All annual columns in the two phase67 separate-statement filings were included: Samsung 2016–2018 and Hyundai 2017–2019. This choice was recorded before expanded comparisons, but after prior diagnostics; it is a purposive large-issuer sample, with no claim of representation across company sizes. Source references, units, column locators and checksums are in `data/metadata/validation_plan_v68.json`.

Across all six issuer-years:

- Five monetary accounting fields (assets, liabilities, equity, pretax income, net income) pass: 30/30 comparisons.
- GETR and CETR reproduce from public tax expense and cash tax payments: 12/12 comparisons.
- The raw tax-as-cash-tax hypothesis fails: 0/6 comparisons.

Monetary source comparisons retain phase67 rtol5e-6, atol1KRW after converting million KRW; annual-rate source checks retain rtol1e-6, atol1e-8. These are different from the within-panel formula sensitivity above. Reference facts were manually transcribed from original public filings, not extracted by an automated financial-report parser. The amended Hyundai filing and preliminary-notice caveat from phase67 continue to apply.

Primary filings: [Samsung DART receipt20190401004781](https://englishdart.fss.or.kr/dsbh002/viewer.do?rcpNo=20190401004781), [Hyundai DART receipt20220217001012](https://englishdart.fss.or.kr/dsbh002/viewer.do?rcpNo=20220217001012). Only bounded public reference facts and diagnostic booleans are distributed; licensed panel rows remain excluded.

## Supplementary archive inspection

The original [Zenodo record17149808](https://doi.org/10.5281/zenodo.17149808) archive was downloaded and verified against MD5 bd1444de104ed8697ceff500066abfd1. Documentation, the prediction data processor and the embedded CSV were inspected as text/data; no external Python code was executed.

The prediction processor contains downstream target clipping and feature scaling, but this is not a verified recipe for constructing the released raw accounting ratios. Do not infer the exact original LEV/SIZE clipping procedure from that code. The embedded CSV has the same 12,653-by-65 shape, column order and ordered stock/year keys, but one numeric cell differs: lag_equit is nonnumeric/missing in the embedded copy. Numeric comparison uses rtol/atol1e-10 and does not compare names. Different file hashes alone are not presented as a substantive version difference. The main phase65 file remains the pinned input; no cells are patched from the embedded copy. Archive and entry SHA256 values are recorded in the output.

## Reproduce and next work

1. Run phase65 acquisition and phase67 source acquisition first.
2. Run `python scripts/validate_preprocessing_v68.py --download`.
3. Inspect `data/processed/preprocessing_validation_v68.json`.
4. Run `python -m unittest discover -s calibration -p 'test_*v6*.py'`.

Next prioritize residual mismatch diagnostics: examine boundary concentration and year/size patterns in the 135 leverage and 180 size exceptions, then test a frozen set of preprocessing hypotheses without replacing source data. Add smaller issuers through separately verified public filings before broad descriptive claims. No full-panel descriptive approval, causal interpretation or fiscal calibration is granted; the dataset license/version conflict remains unresolved.
