Skip to content

Commit 51097e1

Browse files
author
Yen Kha
committed
docs: remove em dashes, fix CHANGELOG tool names and header format, add results provenance
- Replace em dashes with colons, commas, or parentheses across 11 files (METHODOLOGY, CONTRIBUTING, README, CHANGELOG, docs/, schemas/, specs/RFC-001). Follows project em-dash-free prose convention. - Fix CHANGELOG section headers from `: ` to ` - ` (Keep a Changelog standard format). - Update CHANGELOG Added section: MCP tool names corrected from validate_corpus_record/validate_prompt_jsonl/generate_prompt_template/ create_contribution_bundle to check_case/check_prompt/new_prompt/bundle_prompts. - Add Run Provenance section to results/v0.2/README.md documenting the two-SHA split run: openai_fast at 68dd9442 (22:01), quality+production at 8169a5bb (22:38), both on policy_version=v1.0.0 / parser_version=v1.1.0. Explains the methodology.openai_fast.json non-standard filename.
1 parent 5bb167a commit 51097e1

11 files changed

Lines changed: 123 additions & 109 deletions

File tree

CHANGELOG.md

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1111

1212
---
1313

14-
## [0.2.1] 2026-05-27
14+
## [0.2.1] - 2026-05-27
1515

1616
### Fixed
1717
- Repo URL standardised to `github.com/yenk/Dali` across all files (was
@@ -31,8 +31,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3131

3232
### Added
3333
- `dali_mcp/` MCP contributor tools server with four tools:
34-
`validate_corpus_record`, `validate_prompt_jsonl`,
35-
`generate_prompt_template`, `create_contribution_bundle`.
34+
`check_case`, `check_prompt`, `new_prompt`, `bundle_prompts`.
3635
Setup instructions for Claude Desktop, Cursor, and VS Code in
3736
`dali_mcp/README.md`.
3837
- `.github/ISSUE_TEMPLATE/` with three templates: corpus-contribution,
@@ -45,7 +44,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4544
### Changed
4645
- `specs/evidence-json-v1.md` renamed to `specs/RFC-001-evidence-json-v1.md`
4746
to surface the RFC numbering.
48-
- RFC status changed from `ACCEPTED``DRAFT public review open`;
47+
- RFC status changed from `ACCEPTED``DRAFT: public review open`;
4948
§7 reference implementation section updated to reflect actual repo state.
5049
- README `Latest Results` section now discloses Tier 1 corpus size (3
5150
scoring-eligible cases) directly above the v0.2 headline numbers.
@@ -58,37 +57,37 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5857

5958
---
6059

61-
## [0.2.0] 2026-05-26
60+
## [0.2.0] - 2026-05-26
6261

6362
### Added
64-
- **Tier 2 synthetic probe corpus** 150 prompts across 8 categories and
63+
- **Tier 2 synthetic probe corpus**: 150 prompts across 8 categories and
6564
5 jurisdictions (`synthetic/`).
66-
- **First public benchmark run** 450 evaluations across GPT-4o-mini,
65+
- **First public benchmark run**: 450 evaluations across GPT-4o-mini,
6766
GPT-4.1, and GPT-4o, producing 524 citations with deterministic
6867
existence verification and HTTP-status-level fabrication distinction.
69-
- **Cross-jurisdictional results** US, UK/Commonwealth, Brazil (PT),
68+
- **Cross-jurisdictional results**: US, UK/Commonwealth, Brazil (PT),
7069
adversarial traps, and research/policy tracks.
71-
- **`runners/run_synthetic.py`** Tier 2 runner with async model calls,
70+
- **`runners/run_synthetic.py`**: Tier 2 runner with async model calls,
7271
model registry, provider-reliability tracking, and per-run
7372
`methodology.json` output.
74-
- **`runners/model_registry.py`** pinned model alias registry.
75-
- **`runners/export.py`** result export utilities.
76-
- **`scoring/support.py`** LLM-based support scorer with fallback chain.
77-
- **`scoring/verification.py`** URL existence verification with
73+
- **`runners/model_registry.py`**: pinned model alias registry.
74+
- **`runners/export.py`**: result export utilities.
75+
- **`scoring/support.py`**: LLM-based support scorer with fallback chain.
76+
- **`scoring/verification.py`**: URL existence verification with
7877
HTTP-status-level distinction (200/403/404/network).
79-
- **`schemas/`** JSON Schema files for `CitationIntegrityResult`,
78+
- **`schemas/`**: JSON Schema files for `CitationIntegrityResult`,
8079
`EvidenceBundle`, and canonical citation.
81-
- **`schemas/ontology.md`** normative ontology definitions
80+
- **`schemas/ontology.md`**: normative ontology definitions
8281
(AuthorityType, Verdict, ResolutionMethod, JurisdictionHierarchy).
83-
- **`specs/RFC-001-evidence-json-v1.md`** Evidence JSON v1.0 contract
82+
- **`specs/RFC-001-evidence-json-v1.md`**: Evidence JSON v1.0 contract
8483
(EvidenceBundle, CitationIntegrityResult, ReplayState, taxonomies).
85-
- **`docs/policy-versioning.md`** composite policy version schema with
84+
- **`docs/policy-versioning.md`**: composite policy version schema with
8685
five sub-dimensions and cross-version aggregation guard.
8786
- **`docs/faq.md`**, **`docs/examples.md`**, **`docs/roadmap.md`**,
88-
**`docs/architecture.md`** supporting documentation.
89-
- **`results/v0.2/README.md`** full v0.2 results with per-model
87+
**`docs/architecture.md`**, supporting documentation.
88+
- **`results/v0.2/README.md`**: full v0.2 results with per-model
9089
leaderboard, per-jurisdiction breakdown, and methodology notes.
91-
- **`.github/workflows/benchmark-validation.yml`** CI pipeline: Tier 1
90+
- **`.github/workflows/benchmark-validation.yml`**: CI pipeline: Tier 1
9291
evaluator, corpus quality gate, schema validation, JSONL validation.
9392
- **`CITATION.cff`**, **`SECURITY.md`**, **`CODE_OF_CONDUCT.md`**.
9493

@@ -98,7 +97,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9897

9998
---
10099

101-
## [0.1.0] 2026-05-01
100+
## [0.1.0] - 2026-05-01
102101

103102
Initial internal release. Tier 1 canonical case corpus and deterministic
104103
integrity evaluator. Not published publicly.

CONTRIBUTING.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ Contributions are valued across seven tracks:
3636

3737
| Track | What's needed | Where to start |
3838
|---|---|---|
39-
| **Corpus expansion** | Annotated real-world AI citation failure cases especially UK/Commonwealth, Brazil, adversarial | `data/public/citation_failure_cases.json` |
39+
| **Corpus expansion** | Annotated real-world AI citation failure cases: especially UK/Commonwealth, Brazil, adversarial | `data/public/citation_failure_cases.json` |
4040
| **Synthetic prompts** | New Tier 2 probe prompts across legal domains | `synthetic/` + `dali_mcp/` contributor tools |
4141
| **Ontology review** | Legal practitioners reviewing treatment and proposition ontology definitions | [schemas/ontology.md](schemas/ontology.md) + open a discussion issue |
42-
| **Parser coverage** | eyecite wrapper improvements, jurisdiction adapters | Roadmap see [docs/roadmap.md](docs/roadmap.md). `corpus/parsers/` will land with eyecite integration. |
42+
| **Parser coverage** | eyecite wrapper improvements, jurisdiction adapters | Roadmap: see [docs/roadmap.md](docs/roadmap.md). `corpus/parsers/` will land with eyecite integration. |
4343
| **Spec authorship** | Drafting and reviewing changes to schemas and the Evidence JSON contract | `specs/` |
4444
| **Benchmark replication** | Running Tier 2 against new models and sharing results | `runners/run_synthetic.py` |
45-
| **Academic partnerships** | Law schools and court data projects structured dataset contributions, co-authored methodology | Open issue with label `partnership` |
45+
| **Academic partnerships** | Law schools and court data projects: structured dataset contributions, co-authored methodology | Open issue with label `partnership` |
4646

4747
Code contributions are welcome but secondary to corpus quality, ontology
4848
correctness, and specification rigor.
@@ -51,7 +51,7 @@ correctness, and specification rigor.
5151

5252
## Corpus contributions
5353

54-
### Tier 1 Canonical case records
54+
### Tier 1: Canonical case records
5555

5656
Court-documented AI citation failure incidents. These live in:
5757

@@ -89,7 +89,7 @@ from scoring aggregates.
8989
Attorney names must be removed from public records. Run `corpus/anonymizer.py`
9090
if your record contains names from the original filing.
9191

92-
### Tier 2 Synthetic prompt probes
92+
### Tier 2: Synthetic prompt probes
9393

9494
Model-facing prompts for live Tier 2 evaluation. These live in:
9595

@@ -148,7 +148,7 @@ Open a PR adding the output JSON to `results/v0.2/{your-run-date}/`. Include the
148148

149149
## Specification contributions
150150

151-
Schema and ontology changes go through a lightweight proposal open an issue with label `spec-change` describing the motivation, the breaking impact (if any), and a migration note. Documentation and clarification changes do not need a proposal.
151+
Schema and ontology changes go through a lightweight proposal, open an issue with label `spec-change` describing the motivation, the breaking impact (if any), and a migration note. Documentation and clarification changes do not need a proposal.
152152

153153
---
154154

@@ -158,7 +158,7 @@ Schema and ontology changes go through a lightweight proposal — open an issue
158158
- [ ] New corpus records pass `validate_corpus_record`
159159
- [ ] New synthetic prompts pass `validate_prompt_jsonl`
160160
- [ ] Schema changes have an accompanying `spec-change` issue
161-
- [ ] No PII in corpus records run `corpus/anonymizer.py` if needed
161+
- [ ] No PII in corpus records: run `corpus/anonymizer.py` if needed
162162
- [ ] Commit author matches your real identity
163163

164164
---
@@ -189,7 +189,7 @@ We are particularly interested in structured collaborations with:
189189

190190
## Code of conduct
191191

192-
Be direct, be specific, be accurate. This project handles legal information
192+
Be direct, be specific, be accurate. This project handles legal information ,
193193
precision matters more than enthusiasm.
194194

195195
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).

METHODOLOGY.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
# Methodology Dali Citation Integrity Benchmark v0.2
1+
# Methodology: Dali Citation Integrity Benchmark v0.2
22

33
Dali evaluates whether AI-assisted legal citation workflows remain reconstructable, attributable, and defensible under judicial scrutiny.
44

55
The public benchmark repo, `Dali`, defines the standard. Tier 1 is deterministic and runs locally. Tier 2 evaluates live model behavior against the shipped probe corpus.
66

77
---
88

9-
## Tier 1 Canonical Case Corpus Methodology
9+
## Tier 1: Canonical Case Corpus Methodology
1010

1111
### Overview
1212

1313
Tier 1 evaluates real, court-documented AI-assisted citation failures against a workflow-centric defensibility rubric. Each record in the Canonical Case Corpus represents a case where the public court record provides ground truth: the citation was fabricated, wrong, or otherwise integrity-compromised, and a judge documented it.
1414

15-
The scoring premise differs from traditional output-centric evaluations. We do not ask whether the model produced an incorrect citationthe court record already establishes that it did. We already know it did the court record says so. We ask: **at the time this citation was filed, could the workflow that produced it have been audited and defended?**
15+
The scoring premise differs from traditional output-centric evaluations. We do not ask whether the model produced an incorrect citation, the court record already establishes that it did. We already know it did, the court record says so. We ask: **at the time this citation was filed, could the workflow that produced it have been audited and defended?**
1616

1717
### Scoring pipeline
1818

@@ -30,9 +30,9 @@ The rubric is workflow-centric, not output-centric. Two records can have the sam
3030

3131
| Risk level | Criteria |
3232
|---|---|
33-
| `critical` | Nonexistent authority **and** workflow gaps (no verification step, source chain incomplete, reconstructability failure) would fail Rule 11 scrutiny if undetected at filing |
33+
| `critical` | Nonexistent authority **and** workflow gaps (no verification step, source chain incomplete, reconstructability failure): would fail Rule 11 scrutiny if undetected at filing |
3434
| `high` | Material citation misrepresentation recoverable only through manual investigation; or nonexistent authority without critical workflow gaps |
35-
| `medium` | Citation mutation (reporter swap, page drift, year drift) with reconstructable lineage automatic verification tools can detect |
35+
| `medium` | Citation mutation (reporter swap, page drift, year drift) with reconstructable lineage: automatic verification tools can detect |
3636
| `low` | Formatting or non-material drift; full provenance intact |
3737

3838
### Verification recoverability
@@ -78,15 +78,15 @@ Lineage resolution walks the `parent_incident_id` chain to produce a `mutation_l
7878

7979
---
8080

81-
## Tier 2 Synthetic Probes Methodology
81+
## Tier 2: Synthetic Probes Methodology
8282

8383
Tier 2 is the public/supporting synthetic track for the benchmark standard.
8484

8585
Tier 1 records are canonical cases, such as Mata v. Avianca, stored as structured corpus records. Tier 2 records are prompt probes stored under `synthetic/` and used to test model or retrieval behavior against controlled citation tasks.
8686

8787
## Overview
8888

89-
Tier 2 evaluates live citation-generation behavior under controlled synthetic conditions. Unlike Tier 1, which operates from court-documented ground truth, Tier 2 measures how models and retrieval systems perform against mutation and verification stress tests in real time. The existence and support dimensions here are probabilistic they depend on live model output and source reachability at run time, rather than established judicial record.
89+
Tier 2 evaluates live citation-generation behavior under controlled synthetic conditions. Unlike Tier 1, which operates from court-documented ground truth, Tier 2 measures how models and retrieval systems perform against mutation and verification stress tests in real time. The existence and support dimensions here are probabilistic, they depend on live model output and source reachability at run time, rather than established judicial record.
9090

9191
This section describes the exact scoring methodology used for Tier-2 synthetic probes. It is intended to allow independent reproduction and peer review.
9292

@@ -159,9 +159,9 @@ A zero existence score does not mean the cited URL was fabricated. Aggregate res
159159

160160
| HTTP status | Likely meaning | Counts as fabrication? |
161161
|---|---|---|
162-
| `404` | URL path does not exist | **Yes** confirmed fabrication or wrong path |
163-
| `403` | Source server blocked verification | **No** URL likely real but anti-scraper protection prevents verification (common on `supreme.justia.com`, `supremecourt.gov`, `stf.jus.br`) |
164-
| `0` / network error | Connection failed | Indeterminate could be DNS, timeout, geo-block |
162+
| `404` | URL path does not exist | **Yes**: confirmed fabrication or wrong path |
163+
| `403` | Source server blocked verification | **No**: URL likely real but anti-scraper protection prevents verification (common on `supreme.justia.com`, `supremecourt.gov`, `stf.jus.br`) |
164+
| `0` / network error | Connection failed | Indeterminate: could be DNS, timeout, geo-block |
165165

166166
When reporting an aggregate "fabrication rate" externally, distinguish:
167167

@@ -172,7 +172,7 @@ When reporting an aggregate "fabrication rate" externally, distinguish:
172172

173173
A claim like *"X% of citations were fabricated"* without this breakdown is overclaiming. The Dali result schema preserves `http_status` per citation so any aggregation can be re-derived from the raw artifact.
174174

175-
The longer-term mitigation for 403 blocking is content-addressable archival (Wayback Machine, archive.is, or first-party snapshots stored under content hashes) planned for a future release.
175+
The longer-term mitigation for 403 blocking is content-addressable archival (Wayback Machine, archive.is, or first-party snapshots stored under content hashes), planned for a future release.
176176

177177
---
178178

@@ -186,7 +186,7 @@ System prompt (exact):
186186

187187
> You are a citation integrity auditor. Given a legal or factual CLAIM and the SOURCE TEXT it is supposed to be grounded in, evaluate whether the source actually supports the claim.
188188
>
189-
> Respond with JSON only no preamble, no explanation outside the JSON object.
189+
> Respond with JSON only, no preamble, no explanation outside the JSON object.
190190
>
191191
> Response schema: `{"score": float 0.0–1.0, "verdict": "supported"|"partial"|"unsupported"|"unverifiable", "reasoning": "one sentence"}`
192192
@@ -201,7 +201,7 @@ The `claim_text` passed to the scorer is the sentence or clause from the model o
201201
| ≥ 0.6 | `supported` |
202202
| 0.3–0.59 | `partial` |
203203
| < 0.3 | `unsupported` |
204-
| | `unverifiable` |
204+
|: | `unverifiable` |
205205

206206
---
207207

@@ -274,5 +274,5 @@ The current benchmark is a credible, well-scoped public standard. A few methodol
274274

275275
- **Corpus size.** Tier 1 results at the current corpus size should be treated as exploratory rather than population-level. Aggregate claims should stay tied to corpus size and the versioned methodology.
276276
- **Scorer overlap.** When the support scorer and the subject model are from the same model family, support scores should be interpreted with self-evaluation bias in mind. Future versions will use an independent scorer.
277-
- **Confidence reporting.** Aggregate summaries do not yet carry explicit confidence intervals. This is intentional at v0.2 corpus size re-introducing them is part of the v0.3 / v1 roadmap as the corpus expands.
278-
- **URL reachability drift.** Tier 2 source-URL fetching is live. Source reachability can drift over time independently of the benchmark versioned snapshots are the longer-term path.
277+
- **Confidence reporting.** Aggregate summaries do not yet carry explicit confidence intervals. This is intentional at v0.2 corpus size: re-introducing them is part of the v0.3 / v1 roadmap as the corpus expands.
278+
- **URL reachability drift.** Tier 2 source-URL fetching is live. Source reachability can drift over time independently of the benchmark: versioned snapshots are the longer-term path.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Tier 1 is the benchmark standard. Tier 2 extends evaluation to model-facing prom
5252

5353
**450 prompt evaluations across 3 OpenAI models produced 524 citations in aggregate, evaluated under a deterministic, policy-versioned verification pipeline.**
5454

55-
> **Tier 1 corpus (canonical standard): 3 scoring-eligible cases** (Mata v. Avianca, US v. Cohen, Park v. Kim). Expanding this corpus is the highest-priority contribution track see [CONTRIBUTING.md](CONTRIBUTING.md). The 524-citation figures above are Tier 2 synthetic probe results.
55+
> **Tier 1 corpus (canonical standard): 3 scoring-eligible cases** (Mata v. Avianca, US v. Cohen, Park v. Kim). Expanding this corpus is the highest-priority contribution track, see [CONTRIBUTING.md](CONTRIBUTING.md). The 524-citation figures above are Tier 2 synthetic probe results.
5656
5757
### The model that cited most willingly also fabricated most often
5858

docs/examples.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ What this does:
6666
| Classification | Meaning | Interpretation |
6767
|---|---|---|
6868
| `refusal` | Model explicitly declined to cite ("I'm not confident about recent cases…") | Often the right behavior on adversarial prompts |
69-
| `no_citations_generated` | Model answered but didn't include any citations | Neutral answered without making things up |
69+
| `no_citations_generated` | Model answered but didn't include any citations | Neutral: answered without making things up |
7070
| `citations_found` | Model produced citations that the extractor parsed | Now we check existence and support |
7171

7272
**Existence and support scoring:**
@@ -92,7 +92,7 @@ What this does:
9292
└──────────────────────────┘
9393
```
9494

95-
`unverifiable` means the URL fetched but the scorer couldn't determine support e.g. the page was a PDF that didn't extract, the source was blocked, or the content didn't contain the prompt's topic. It is a legitimate verdict, not a scorer error.
95+
`unverifiable` means the URL fetched but the scorer couldn't determine support, e.g. the page was a PDF that didn't extract, the source was blocked, or the content didn't contain the prompt's topic. It is a legitimate verdict, not a scorer error.
9696

9797
## 4. Run your own prompt set
9898

0 commit comments

Comments
 (0)