KB-4222

80000x · 08 — Agent MARK output template (mark_report.md + coverage_proof.json + determinism_digest.md)

6 min read Revision 1
iu-core80000xagent-mark-output-templatemark_reportcoverage_proofdeterminism_digeststop-messageself-attestationcopy-paste-scaffold

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

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-operational-cut-workflow-mark-review-cut-verify/08-agent-mark-output-template.md