Example structure of an artifact package
End-to-end case: termination of a lease
An appendix to the minimum team artifact standard v0.1.
End-to-end example: a lawyer in a municipal property department prepares an opinion on the lawfulness of terminating a lease. Extended level of the package.
1. Directory tree
MAT-2026-0042-arenda-rozirvannya/
├── README.md # package passport: what it is, for whom, status
├── metadata.yaml # package envelope (matter_id, versions, level)
├── final/
│ └── vysnovok.md # final opinion (the document as interface)
├── sources/
│ ├── source-registry.json # registry of sources
│ ├── evidence-pack.jsonl # extracted fragments with anchors
│ └── originals/ # copies of primary sources (or stable links)
│ ├── dogovir-orendy-2023.pdf
│ └── lyst-orendarya-2026-05.pdf
├── research/
│ ├── questions.md # research questions
│ ├── queries.jsonl # executed queries to registries/case law
│ ├── timeline.md # legally relevant dates
│ └── issue-map.md # human-readable map of issues
├── analysis/
│ ├── fact-matrix.json # facts with statuses
│ ├── rules-matrix.json # rules with editions as of the required dates
│ ├── issue-tree.json # tree of issues with conclusions
│ ├── critique-pack.json # weak points and counterarguments
│ └── reasoning-graph.mmd # Mermaid graph of links
├── verification/
│ ├── citation-check.json # result of the citation check
│ ├── date-check.json # result of the edition/date check
│ ├── redaction-check.json # sensitive-data check
│ └── unresolved-issues.md # open questions
├── handoff/
│ └── handoff.json # handoff package to the head of the department
└── logs/
├── decision-log.json # key decisions and confirmations
└── activity.jsonl # activity log (audit level)
2. Fragments of the key artifacts
metadata.yaml
package: legal-work-package
schema_version: "0.1"
matter_id: MAT-2026-0042
title: "Termination of a municipal property lease: legal opinion"
level: extended # basic | extended | audit
language: uk
created_by: { actor: "О. Шевченко", actor_type: joint, agent_env: "claude-code 2.x" }
handoff_to: "head of the department"
status: human_review_pending
versions: { fact_matrix: 4, rules_matrix: 2, issue_tree: 3, critique_pack: 2 }
sources/source-registry.json (fragment)
{
"artifact_type": "source_registry",
"matter_id": "MAT-2026-0042",
"version": 2,
"sources": [
{
"source_id": "SRC-001",
"type": "legislation",
"title": "Civil Code of Ukraine, Article 651",
"identifier": "435-15",
"url": "https://zakon.rada.gov.ua/laws/show/435-15",
"edition_date": "2026-05-01",
"verified_at": "2026-07-08",
"status": "verified"
},
{
"source_id": "SRC-007",
"type": "case_law",
"title": "Ruling of the Commercial Court of Cassation (Supreme Court) of 12.03.2025 in case No. 910/1234/24",
"url": "https://reyestr.court.gov.ua/Review/123456789",
"verified_at": "2026-07-08",
"status": "verified"
},
{
"source_id": "SRC-010",
"type": "matter_document",
"title": "Lease agreement No. 15/2023 of 01.02.2023",
"location": "originals/dogovir-orendy-2023.pdf",
"status": "original_on_file"
}
]
}
analysis/fact-matrix.json (fragment)
{
"artifact_type": "fact_matrix",
"version": 4,
"facts": [
{
"fact_id": "F-003",
"statement": "The tenant did not pay rent from January to May 2026",
"status": "established",
"evidence_ids": ["EV-004", "EV-005"],
"confirmed_by": "О. Шевченко",
"confirmed_at": "2026-07-09"
},
{
"fact_id": "F-006",
"statement": "The tenant invokes force majeure circumstances",
"status": "alleged",
"evidence_ids": ["EV-009"],
"note": "The Chamber of Commerce and Industry certificate was not provided — the status cannot be established"
}
]
}
analysis/critique-pack.json (fragment)
{
"artifact_type": "critique_pack",
"version": 2,
"items": [
{
"critique_id": "CR-001",
"target": "conclusion:C-001",
"type": "counterargument",
"statement": "The court may find the breach immaterial if the debt was partially repaid before the claim was filed",
"supporting_sources": ["SRC-008"],
"severity": "medium",
"response": "Section 4 of the opinion adds a risk analysis and an alternative scenario"
}
]
}
handoff/handoff.json (fragment)
{
"artifact_type": "handoff_package",
"version": 1,
"from": "О. Шевченко (legal_analyst)",
"to": "head of the department (senior_reviewer)",
"depends_on": ["fact_matrix@4", "rules_matrix@2", "issue_tree@3", "critique_pack@2"],
"done": ["Analyzed the grounds for termination under Article 651 of the Civil Code of Ukraine", "Reviewed Commercial Court of Cassation (Supreme Court) case law 2024–2026"],
"verified": ["citation-check: passed", "date-check: passed", "redaction-check: passed"],
"disputed": ["Assessment of the materiality of the breach (see CR-001)"],
"next_steps": ["Confirm the position on CR-001", "Decide on filing the claim"],
"human_confirmation_required": true
}
analysis/reasoning-graph.mmd
graph LR
SRC001["SRC-001<br/>Civil Code of Ukraine, Art. 651"] --> R001["R-001<br/>Ground for termination:<br/>material breach"]
SRC010["SRC-010<br/>Lease agreement"] --> EV004["EV-004<br/>clause 3.2: payment term"]
SRC011["SRC-011<br/>Treasury statements"] --> EV005["EV-005<br/>absence of payments"]
EV004 --> F003["F-003 (established)<br/>Non-payment for 5 months"]
EV005 --> F003
F003 --> I001["I-001<br/>Is the breach material?"]
R001 --> I001
SRC007["SRC-007<br/>Ruling of the Commercial Court of Cassation (SC)"] --> I001
I001 --> C001["C-001<br/>Grounds for termination exist"]
CR001["CR-001<br/>Counterargument:<br/>partial repayment"] -.-> C001
C001 --> D001["D-001<br/>Decision: file a claim<br/>⏳ human confirmation"]
The graph reads left to right: the sources (SRC-001, SRC-010, SRC-011, SRC-007) feed the evidence (EV-004, EV-005) and rule R-001; the evidence consolidates into the established fact F-003, which together with the rule and the case law forms issue I-001; the issue leads to conclusion C-001, against which counterargument CR-001 is directed (the dashed link), and the conclusion leads to decision D-001, which awaits human confirmation.
3. What the recipient sees
The head of the department opens the README and handoff.json — two minutes to understand what was done, what was checked automatically, where the single disputed point is (CR-001), and what requires their decision. Their agent runs schema validation, the chain check, and the citation check in seconds. Review has turned from repeating the research into auditing a single disputed point.
A year later, the same package will be found by another lawyer's agent in a similar matter: it will reuse the source registry, check whether Article 651 of the Civil Code of Ukraine and Supreme Court case law have changed, and build an updated version flagged with exactly what changed.
Note: the example is synthetic; the case and document details are fictitious. Machine-readable examples of all eight artifacts are maintained in the VeriLex object-model repository. The entire package is created and verified with the standard tooling of ready agent environments (Claude Code in this example): no purpose-built software is used.
Explore a live version of this package in the interactive demo.