80000x · 08 — Agent MARK output template (mark_report.md + coverage_proof.json + determinism_digest.md)
08 — Agent MARK output template
Copy-paste this scaffold; fill every field. Leave a field blank only if an
uncertainty_flags[]entry explains the omission.
1. Files to emit
<out-dir>/
├── manifest.json # the cut_manifest, schema in 03
├── mark_report.md # this template, filled in
├── coverage_proof.json # requested vs. delivered articles
└── determinism_digest.md # the manifest_digest + the inputs that determined it
2. mark_report.md template
# MARK report — <doc_code> · <comma-separated article labels>
```yaml
phase: MARK
status: ready_for_review # never: cut_done | iu_created | applied
self_advance: PROHIBITED
no_db_write: true
no_kb_write_outside_out_dir: true
manifest_id: <ulid|uuid>
manifest_digest: <sha256>
agent_identity: <e.g., codex-mark-r1>
created_at: <ISO-8601 UTC>
1. Request
- User-supplied articles: <comma-separated list>
- Per-article sources:
- Điều 37: <URL or file>
- Điều 38: <URL or file>
- Điều 39: <URL or file>
- doc_code: <e.g., LUAT-XYZ-2024>
2. Source identity (per article)
| Article | Source | retrieved_at | source_hash | source_bytes |
|---|---|---|---|---|
| Điều 37 | … | … | … | … |
| Điều 38 | … | … | … | … |
| Điều 39 | … | … | … | … |
3. Boundary (per article)
| Article | method | start_quote (first 80 chars) | end_quote (last 80 chars) |
|---|---|---|---|
| Điều 37 | regex_label_match | … | … |
| Điều 38 | regex_label_match | … | … |
| Điều 39 | regex_label_match | … | … |
4. Piece segmentation summary
| Article | pieces | depth distribution | section_types | uncertainty_flags |
|---|---|---|---|---|
| Điều 37 | 4 | {0:1,1:1,2:2} | {article,paragraph,definition} | [] |
| Điều 38 | 2 | {0:1,1:1} | {article,paragraph} | [] |
| Điều 39 | 5 | {0:1,1:2,2:2} | {article,paragraph,definition} | ["dieu-39:cross_reference_inline"] |
5. Three-axis draft (sample row per article)
(Full per-piece detail lives in manifest.json. This table is for human eyeballing.)
| local_piece_id | source_pos | depth | parent | unit_kind | section_type | piece_role | tags |
|---|---|---|---|---|---|---|---|
| lp-001-title | 1 | 0 | null | law_unit | article | title | [legal_document=luat-xyz-2024] |
| lp-002-… | 2 | 1 | lp-001-title | law_unit | paragraph | clause | […] |
| … | … | … | … | … | … | … | … |
6. Reconstruction preview (per article)
For each article, the Agent confirms:
reconstruction:
method: concat_by_source_position_then_normalize_v1
expected_digest_eq_hash: true # else STOP
rerun_byte_identical: true
preview_first_400_chars: |
<copy of preview start>
If any article's expected_digest_eq_hash is false → the Agent did NOT emit a manifest. Instead, it emits a BLOCKED report with the diff and stops.
7. Uncertainty flags
Aggregate list with one-line rationale each:
dieu-39:cross_reference_inline— paragraph 2 references "Điều 22"; kept inside the paragraph piece per default policy; reviewer may split.- (add others as needed; empty list is OK)
8. Forbidden checks (self-attestation)
forbidden_actions_performed: false
no_db_writes: true
no_fn_iu_create_calls: true
no_fn_iu_compose_calls: true
no_fn_iu_collection_add_piece_calls: true
no_KB_writes_outside_<out-dir>: true
no_self_advance_to_CUT: true
no_claim_of_cut_done_or_iu_created: true
If any line above were false, the Agent must STOP, emit a BLOCKED report, and revoke the manifest. The reviewer treats any false entry as automatic REJECT.
9. Next step
MARK_PROPOSAL_READY_FOR_REVIEW
manifest_path: <KB or local path>
manifest_digest: <sha256>
articles_proposed: <N>
total_pieces: <M>
uncertainty_flags: [<labels>]
next_step: operator_review_per_04_review_approval_checklist
## 3. `coverage_proof.json` template
```json
{
"requested_articles": ["Điều 37", "Điều 38", "Điều 39"],
"articles_in_manifest": ["Điều 37", "Điều 38", "Điều 39"],
"missing": [],
"extra": [],
"coverage_closed": true
}
4. determinism_digest.md template
# Determinism digest — <manifest_id>
```yaml
manifest_digest: <sha256>
canonical_json_bytes: <int>
inputs:
source_hash_per_article:
Điều 37: <sha256>
Điều 38: <sha256>
Điều 39: <sha256>
agent_identity: <id>
normalization_rule: whitespace_collapse_v1
reconstruction_rule: concat_by_source_position_then_normalize_v1
rerun_byte_identical: true
If you re-run MARK with the same inputs (same source bodies, same Agent identity, same rules), the resulting manifest_digest MUST be byte-identical to this one. If not, the Agent has a non-determinism bug; STOP and report.
## 5. STOP message at end of MARK
Copy-paste this exact form to the operator channel:
```text
MARK_PROPOSAL_READY_FOR_REVIEW
manifest_path: <KB or local path>
manifest_digest: <sha256>
articles_proposed: <N>
total_pieces: <M>
uncertainty_flags: [<labels>]
next_step: operator_review_per_04_review_approval_checklist
Then stop. Do not begin CUT. Do not say "applied". Do not say "IU created".