Track unavailable validator decisions in reports and debug records

This commit is contained in:
2026-09-25 11:28:44 +00:00
parent d726ea8f6d
commit 22f0932389
11 changed files with 169 additions and 38 deletions

View File

@@ -11,7 +11,7 @@ With reporting enabled, Audita produces three ordinary files:
- `errors.yml`: affected work units and run-level failures;
- `recoveries.yml`: successful logical model operations with repair, service
retry, or defective-proposal filtering;
retry, or response filtering;
- `report.md`: a concise overview and complete per-chunk matrices.
The YAML documents have Audita-owned schemas `audita-errors` and
@@ -55,6 +55,9 @@ work unit form one error record. `scope: run` instead records phase, safe reason
and message, optional origin, and output path where relevant. It can describe
a fatal error or secondary output-write failure without inventing a failed
model work unit. Raw provider errors and transcript text are absent.
For `validation_decisions_invalid`, proposal indices identify only candidates
whose required decisions were unavailable. Other candidates in the same batch
may still be approved or rejected normally.
Each recovery identifies its work unit and successful operation, with sorted
`reasons`, a safe message, available execution counts, and sorted
@@ -65,6 +68,11 @@ ordinary editorial rejection, and an apply-time conflict caused by an earlier
accepted correction are not filtering recoveries. Failed operations are errors,
not recoveries. The initial chunk identity remains stable even if earlier
modules change its text.
`validation_decisions_filtered` records unexpected validator decision indices
ignored from a successful validation batch. It may accompany repair or service
recovery reasons, but it does not add `filtered_proposals` or increment
`proposal_responses_with_filtering`. A batch with unavailable requested decisions
is an error even when unexpected indices were also ignored.
## Markdown Overview
@@ -91,8 +99,14 @@ These files are diagnostic evidence, not an alternate ordinary report schema.
Each candidate-backed ledger entry includes `proposed_corrected_text`, the
literal replacement span, even when it is `""` for a deletion. Applied entries
also include `applied_corrected_text`, likewise `""` for an applied deletion.
Rejected, skipped, and interrupted entries omit the applied field; a module
Rejected, unavailable, skipped, and interrupted entries omit the applied field; a module
failure without a candidate omits both. These fields are replacement spans,
not full resulting-segment text. Deterministic decision records now identify
the blank-result guard as `non_empty_resulting_segment` (formerly
`non_empty_corrected_text`); its `empty_resulting_segment` reason is unchanged.
Validator decision records carry `disposition`: `approved`, `rejected`, or
`unavailable`. A missing or duplicate required decision is `unavailable`, not
an editorial rejection. The candidate ledger uses the same distinction in its
top-level disposition. Interaction response artifacts retain supplied model
decisions and the reconciliation result, including unavailable and ignored
indices; unexpected indices never create candidate ledger entries.