Enact — project facts, measurements, and skills evidence
- Prepared: 2026-10-25.
- Scope: the Enact project described in
enact-blogpost.md, including original Enact, its successor Reenact, research archives, website, service, and infrastructure. Historical results extend through 2026-10-24; this is not a report of the current live service. - Purpose: self-contained context for another agent about Nick’s work and the skills exercised through the project.
- Format: facts and measured results, with relevant content from the source index’s file and directory references incorporated here. Repeated references are consolidated. No linked file is required to understand this document.
- Attribution: implementation and research were substantially agent-assisted. Project ownership, domain direction, product decisions, and supervision are distinct from personally writing every implementation line.
- Measurement terms: grounded means source identity and quotation/span checks pass; gate pass means the mechanical publication rules pass; parity means specified outputs match a reference; semantic score means agreement with an evaluation rubric. These are separate measurements.
Project and product
| Field | Fact |
|---|---|
| Owner | Nick; the project briefs describe Nick as a Maryland lawyer and the source of domain and product decisions. |
| Subject | Source-grounded regulatory effects and question answering over statutes. |
| Core objects | Parties, duties, prohibitions, permissions, conditions, exceptions, definitions, deadlines, penalties, and amendments, tied to exact source text. |
| Original implementation | Enact: a Rust library with document normalization, legal standards, extraction, querying, storage, versioning, and domain profiles. |
| Successor implementation | Reenact: pinned extraction models, deterministic provision retrieval, evidence packets, configurable writers, quotation verification, and evaluation steps. |
| Main workflow | Recorded statute → entity/relation extraction → provision graph → question-specific rule walk → evidence packet → model answer → mechanical gate → optional semantic judge. |
| Extraction timing | Model extraction runs when a law version is prepared. Each question reuses the recorded extraction; it does not rerun GLiNER. |
| User-facing product | A cited answer, its evidence passages, and the recorded path through the law; separate 2D/3D graph navigation and community questions. |
| Historical hosting | enact.codes, with enact.detello.com redirecting to it; static frontend on nginx, separate question queue, remote GPU execution. |
| Principal case | Firearms sensitive-place laws in Maryland, Hawaii, and New Jersey. |
| Main corpus | 3 law roots plus 24 supporting sections: 27 snapshots and 1,265 provisions in the October 19–20 workflow record. |
| Other cases | S.877/CAN-SPAM; Maryland and Virginia privacy laws; V1 corpora spanning legislation, regulations, contracts, insurance, procurement, specifications, and policy. |
| Stock questions | 4 curated questions plus 3 proposed questions; 7 recorded Phi-4 answers passed the mechanical gate. |
| Community milestone | 4 visitor questions answered by the October 19–20 status record: exemptions, buses, bars/restaurants, and nuclear reactors. |
| Human legal validation | The indexed site answers remained unreviewed; AI-authored evaluation rubrics were not human legal ground truth. |
| Replacement outcome | Local improvements were measured, but none of the 5 correction-course configurations satisfied the registered production-replacement rule. |
Skills exercised: concrete project evidence
These are work areas evidenced by the project, not proficiency ratings or claims that Nick personally authored all code.
| Skill area | Concrete work or decision | Observable evidence |
|---|---|---|
| Legal knowledge modeling | Represent regulatory effects, actors, scope, exceptions, incorporated definitions, amendments, and time. | 13 core fact kinds; exact source citations; temporal and applicability APIs; three-state statutory case. |
| Turning domain expertise into requirements | Select questions that expose practical legal distinctions and require conditions and exceptions in the answer. | Maryland/Hawaii/New Jersey case; medical parking, vehicle travel, permission, locked-car, bus, reactor, exemption, and no-hit questions. |
| Product judgment | Move from graph display to findings, question-led traces, and answers with evidence. | Successive demo, findings, trace, answer, scene, and community briefs and delivery reports. |
| Architecture and scope control | Replace a large compiled model and dispersed tooling with small file-connected steps and saved configurations. | V1 retrospective; 6 initial core steps, optional seventh think step; JSON pipelines; explicit line ceilings. |
| Rust systems engineering exposure | Develop and review typed models, stable IDs, canonical serialization, indexed storage, parsers, and bounded readers. | V1 code, API/guide examples, property laws, standards readers/writers, and storage tests. |
| Data and schema design | Define versioned records, immutable source identities, provenance, ordered evidence, and model/configuration pins. | Graph, case, answer-input, answer, and pipeline formats; /1 historical and /2 newer answer contracts. |
| Information retrieval | Select operative provisions with hierarchy, definitions, cross-references, exceptions, and finite budgets. | Production and research walks; 57 automatic per-law packets; 3 retained retrieval-gap families. |
| NLP and model integration | Package GLiNER span/relation extraction and local GGUF language models. | Pinned GLiNER relex models, retained recordings, native templates/tokenizers, quantization and KV-cache settings. |
| Experimental design | Separate retrieval quality, interpretation, format compliance, and runtime behavior. | Input-only reviews, same-writer supplementation, matched packet/full-source diagnostics, frozen writer matrices, controls. |
| Evaluation engineering | Define claim-level completeness, material conditions, unsupported assertions, abstention, and uncertainty. | Corrected rubrics/scorers; fixed denominators; separate full-source and packet measures; two-pass judge. |
| Research integrity | Preserve rejected candidates, failed runs, missing grades, historical bytes, and protocol qualifications. | Frozen R1/R2 archives; 165 retained R2 outputs; 50/55 accepted question reviews; explicit no-admission decision. |
| Reproducible builds | Pin dependencies and model weights; compose steps as Nix derivations; isolate cache dependencies. | 19-check phase-two receipt; 20-check phase-four receipt; 5/5 CLI scenarios after cache repair. |
| GPU operations | Route CUDA work to a remote VM, manage passthrough and memory, serialize jobs, and retain diagnostics. | VFIO/NixOS configuration; missing-device and out-of-memory guards; per-question resumable thought derivations. |
| Runtime debugging | Distinguish native termination, token limits, parsing, template failures, process cleanup, and infrastructure failures. | Ministral transition audit, Qwen3.5 template repair, continuation-newline audit, deadline/process-group fixes. |
| Verification and testing | Check source hashes, Unicode offsets, quote identity, input/output parity, failure paths, and browser behavior. | Mutation/property tests, 57/57 packet comparisons, 7/7 GPU production parity, HTTP and frontend checks. |
| Web and service engineering | Deliver evidence-first navigation and a queued visitor workflow with authenticated writes and verification before publication. | Static JavaScript/three.js frontend, Python standard-library queue, worker, NixOS modules, deployment script. |
| Agent supervision | Frame bounded briefs, review execution receipts, correct acceptance criteria, and distinguish plans from delivered behavior. | V1 audit, independent implementation reviews, consolidation briefs, steward handoff, and retained failed scenarios. |
| Technical communication | Produce design records, worked guides, research reports, handoffs, acceptance records, and reproducibility documentation. | 48 V1 decision records reported by audit; 57-record epic ledger; frozen experiment reports and source index. |
| Learning from failed approaches | Retire mechanisms whose measured benefit does not justify their cost. | V1 reset; parked source compiler and rank-based entry selection; rejection of unvalidated model rankings and benchmark-specific core machinery. |
V1: size, capabilities, and audit findings
V1 development period: September 4–20, 2026. Audit/reset: October 3. The following size and history numbers are from the retained audit, not a new line-count or test run.
| Metric | Recorded value |
|---|---|
| Rust code | Approximately 153,000 lines |
| Commits | 1,627 |
| Commits outside the almost-entirely-agent-written work | Approximately 25 |
| Merge commits | 821 |
| Branch-sync merges within those merges | 409 |
| Net Rust added September 4–6 | Approximately 76,000 lines |
| Net Rust added September 9–20 | Approximately 73,000 lines |
| Days with a net decrease in Rust | 0 |
| Decision records | 48 in 16 days; 32 in the first 3 days in the audit’s accounting |
| Epic ledger | 57 records; September 13 recount: 26 landed, 14 filed, 17 draft; not 57 demonstrated completed features |
| Flake checks plus workflow gates | 29 |
| Separate crate compiles in a full gate | 9, plus 8 mutation-test rebuilds |
| Serialized full-gate wall time | Approximately 72 minutes |
| Main branch without a green full run | 2 days |
| Property-law names examined | 255; 71 concerned decoding |
| Manifest-pinned recorded documents | 64; all 64 hash-verified in the audit |
| Exact golden quotations verified | 751/751 |
| S.877 snapshot | 65,631 bytes |
| S.877 agent-annotated reference | 270 facts and 233 non-dangling edges |
| Rule extraction before fitting to S.877 | 7/270 facts; reported F1 0.04 |
| Rule extraction after fitting | Reported F1 0.26; obligations 1/44, prohibitions 0/21, entities 0/44 |
| Human-checked expected-output files | 0 identified by the audit |
| Named product users | 0 identified by the audit |
| Daily journal chapters | 2; September 5 and 6 |
| Standards-writer code with no non-test callers | Approximately 3,700 lines |
| Implemented area | Relevant facts from the design, guides, code, and tests |
|---|---|
| Source identity | Immutable snapshots, canonical text, content-derived fact IDs, nonempty citations, half-open spans, and quote verification. V1 citations use canonical-text scalar positions; V2 stores normalized plain text with plain SHA-256 identity. |
| Vocabulary | Entity, obligation, prohibition, permission, condition, trigger, exception, deadline, temporal fact, penalty, definition, amendment, extension. Facts connect to bearers, counterparties, conditions, exceptions, deadlines, and effects. |
| Document structure | Plain-text, HTML, and PDF normalization feed a shared sectioning model; enumerator recognition, stable paths, cross-reference marks, and gap-tiling preserve document text. |
| Standards | Readers/writers for bounded subsets of USLM, Akoma Ntoso, and LegalRuleML; CFR and Federal Register support; recorded fixtures and offline XML-schema validation. Coverage is documented per standard, not a claim of universal conformance. |
| Versions and differences | Declared work/version identity and dates; fact-level added, removed, and changed categories; H.R. 6172 versions provide a recorded example. |
| Amendments and consolidation | Apply resolved edits and fold instruments in effective-date order into new content-addressed snapshots; retain attribution and codification mappings. |
| Time | Parse supported absolute, relative, recurring, and effective-date forms; require anchors for relative values; retain unparseable or alternative dates as unknown. |
| Resolution and definitions | Resolve declared identities and scoped definitions; nested scopes shadow outer scopes; do not merge parties merely because their names match. |
| Queries and storage | Serial stores and an append-only durable store with canonical bytes, deduplication, rebuildable indexes, and indexed kind/source/identity/entity/time access. |
| Subject applicability | Explicit maps of jurisdictions, classifications, roles, integer attributes with units, and statuses; unknown information remains unknown. |
| Registers and calendars | Group obligations by bearer as of a date; retain unknown windows and exact citations. A documented live CAN-SPAM register example reports 31 rows. |
| Domain adapters | Legislative and regulatory profiles; California, New York, and UK legislative adapters; contracts, insurance, procurement, specification, and policy profiles with coverage tables. |
| Developer tools | Extraction, replay, query, corpus, recording, schema, store, API, benchmark, guide, and fidelity utilities. |
| Test machinery | Property/model-based laws, source round trips, no-panic/resource limits, mutation checks, golden comparisons, profile-aware fidelity, and executable guide examples. |
| CI distinction | Later PR gates ran lint and the Rust suite; full guide/checkpoint checks were separate. A green PR did not mean the full checkpoint gate had run. |
| Fidelity distinction | Precision, recall, exact-span rate, and mean IoU had guarded floors; genesis observations were not measured improvements. Agent-curated recordings and fitted goldens limited accuracy claims. |
V1’s retained assets were its grounding contract, regulatory vocabulary, conservative treatment of unknowns, corpus provenance, and documented failure history. The audit found that implementation breadth and passing fixtures had outgrown demonstrated extraction quality.
V2 extraction, graph construction, and case development
| Area | Recorded facts |
|---|---|
| Initial V2 size | 388 lines in the early GLiNER implementation. |
| Configuration | Labels, relation prompts, thresholds, model identities, and pipeline choices are data files. |
| Source manifests | Source URL or supplied-source reason, retrieval date, SHA-256, size, media type, and licence information. |
| Grounding | Half-open Unicode code-point spans; exact re-slicing from stored text; invalid grounding fails the run. |
| Quote-to-span contract | Engines can return a quotation and occurrence index; adapters locate it and reject ambiguity rather than guessing offsets. |
| First GLiNER-small S.877 recording | 105 spans: 70 amendments, 13 entities, 10 definitions, 10 penalties, 1 prohibition, 1 effective date; no obligations, permissions, conditions, exceptions, deadlines, or triggers. |
| Early relex network experiment | 349 facts, 164 typed relation edges across 9 relation types, 24 same-words hubs, 139 isolated facts. |
| Largest early network component | 28/349 facts, or 8.0%, spanning 6 sections. |
| Grounding/endpoint diagnostic | 0 re-slice failures across 1,660 endpoints; 830/830 relation endpoint indices matched offsets. These diagnostics have a different scope from the 164-edge retained graph. |
| Relation accuracy limitation | Early agent inspection estimated only about 1 in 4 edges strictly correct; no human precision estimate was established. |
| Same-words hubs | Connect equal folded quotations; lexical equality does not establish entity identity or legal equivalence. |
| Rejected graph alternatives | Multitask extraction had ambiguous text-keyed heads; ReFinED added an 8.59 GB dependency for 2 newly connected facts; co-occurrence added no cross-section edges; nesting mostly connected fragments inside one citation. |
| Privacy-law comparison | Maryland MODPA and Virginia VCDPA aligned defined terms and definition bodies; recorded comparison includes 22 shared pattern terms and 24 shared runs of at least 8 words. |
| Product research | Agent personas/councils examined comparison views, sanctions/deadlines, and evidence presentation. These were agent simulations, not human usability studies. |
| GPU extraction timing, October 18 | Relex: approximately 1.9 seconds inference plus 5.5 seconds process overhead per document; maximum CPU/GPU score difference 0.00024, within the 0.001 live-check tolerance. |
| Large-model experiment, October 18 | S.877 recall 0.48 → 0.68 and precision 0.32 → 0.39 against the agent reference; Maryland privacy-definition coverage 23 → 34 of 35 regex terms; Maryland gun-definition coverage 5 → 10 of 10. |
| Large-model pin | knowledgator/gliner-relex-large-v1.0; approximately 1.87 GB across 7 pinned files; measured 8–15 seconds per document in that experiment. |
| Later retained extraction corpus | 30 relex recordings with hermetic derivations; includes the firearms case and other retained documents. |
| Provision-aware windows | Pack whole top-level provision trees where possible; split oversized trees along paragraph lines; prefix ancestor chapeaux; discard prefix hits and map body hits back to exact source offsets. |
| Paragraph structure | Preserve repeated labels through parent spans; record continuation paragraphs and their exact preceding sibling spans. Structural annotations are formatting rules. |
| Later S.877 extraction receipt | Anchored precision 198/534 = 0.371; recall 187/270 = 0.693; 237/534 predictions lay inside golden quotes of multiple kinds. Different snapshot/method from the October 18 experiment. |
| Retired exhibit | The separate GLiNER-only S.877 exhibit left the product; its reference material remained useful for extraction diagnostics. |
Retrieval, packets, writers, and mechanical verification
| Component | Implementation facts |
|---|---|
| Production retrieval | Match question words against case subject tags and provision text; select entry provisions; follow recorded dependencies and counterparts within case limits. Historical traces typically contained 30–55 steps. |
| Dependency types | Ancestor/chapeau, defined-term use, cross-reference, enumeration, and cross-law correspondence; rule-created links retain the rule that created them. |
| Research retrieval fixes | General structural lists; scoped exceptions and section references; reverse defined-term use; weighted/plural-aware entries; bounded reference priorities. |
| Reference scheduling | Prioritize conditions before definitions, local conditions before remote references, and direct references before second hops; maximum 2 cross-reference hops. |
| Preserved alternatives | Production master walk and research walk-fixes remain selectable. Consolidation did not invent a third walk or silently repair the recorded gaps. |
| Parked source compiler | Separate source-unit/reference-effect compiler passed component checks but failed fresh positive-context/locator tests; it was not connected as production retrieval. |
| Rank-mode limitation | Reranking/entry selection suffered shared quotas, insufficient depth, and missing governing/list context; it was rejected as the correction course’s entry selector. |
| Packet forms | Historical combined packet; compact per-law packet; later full-law mode containing all non-heading provisions of the law’s root and base documents. |
| Per-law packet inventory | 19 original, exposed-holdout, and paraphrase questions × 3 laws = 57 automatic inputs. |
| Packet parity | 57/57 product inputs match the admitted v6 evidence after excluding benchmark-only top-level metadata; 57/57 rendered requests match archived product bytes. |
| Input review | V6 sealed input-only review covered 15 units, not all 57; coordinator checks covered 109 exact full-source spans and 225 evidence-to-passage mappings. |
| Failed development packets | V2 and V5 remained unadmitted; earlier capacity success did not remove evidence omissions. V4 included a Gemma context overflow of 127 tokens. |
| Production writer | Phi-4 Q6_K via CUDA llama.cpp; 16,384-token context, 2,048-token shared answer cap, q8_0 KV cache, temperature 0, seed 42. |
| Production model bytes | Microsoft Phi-4 GGUF: 14,659,507,200 parameters; weight file 12,030,251,200 bytes; MIT licence. |
| Answer shape | Ordered laws; up to 3 sentences per law; sentence citations and optional exact quotations; per-law settled flag; explicit abstention form. Partial settlement retains supported cited sentences. |
| Writer inputs | Numbered passages, citations, law names, and recorded metadata; model kinds are labelled hints, not evidence. |
| Local adapter | Bounded native generation with pinned weights/template/tokenizer, raw diagnostics, token/termination observations, and unverified answer records. |
| Command adapter | Configured argument array; prompt on stdin, JSON on stdout; supports an external coding agent or hosted-model wrapper. |
| Gate checks | Source hash, span validity, law order and scope, citation existence, sentence citations, exact quote slicing, quote declarations, abstention shape, schema, and runtime eligibility. |
| Failure behavior | Withhold text and expose the named mechanical failure; preserve raw outputs and diagnostics separately. |
| Optional quote declaration | Explicit declare-quotes mode adds only exact quoted fragments already present in cited passages, then reruns the strict gate; records every addition. |
| Semantic boundary | A correct source quote can support a wrong interpretation. Neither span verification nor a passing JSON/quotation gate proves entailment or completeness. |
Native-token capacity maxima over all 57 v6 inputs; all fit the registered 14,336-token prompt bound:
| Writer tokenizer | Largest prompt, tokens |
|---|---|
| Phi-4 | 11,860 |
| Gemma 4 12B | 13,994 |
| Mistral Small 3.2 | 13,356 |
| Qwen2.5 14B | 13,172 |
| Qwen3.5 27B | 13,625 |
First research round: October 18–22
| Item | Recorded result |
|---|---|
| Pre-handoff archive | 33 original Markdown documents, hashes, and tracked-file inventory preserved at the exact earlier revision. |
| Early diagnostics | 17 question-condition exports; 6 packet-only agent answers passed the unchanged gate; 5 full-source agent answers retained. |
| Matched source-access diagnostic | Same Claude Opus model in 4 fresh sessions: bus and nuclear questions, packet-only versus access to 28 frozen snapshot texts, no network. |
| Bus citation inventory | Packet-only answer cited 28 distinct provisions; corpus-access answer cited 134; 115 of the latter were absent from the packet, including 52 root-law provisions. |
| Nuclear citation inventory | Packet-only answer cited 16; corpus-access answer cited 93; 80 of the latter were absent from the packet, including 44 root-law provisions. |
| Diagnostic implication | Original packets omitted operative rules and location-list items; broader source access supplied relevant evidence the writer otherwise lacked. Citation counts are not correctness scores. |
| Same-writer supplementation | 3 Phi-4 question pairs, 6 naturally completed answers; supplementation made 6 previously unavailable required propositions available. |
| Paired completeness | Bus 3/6 → 3/6; reactor 1/3 → 1/3; locked car 3/9 → 3/9. Other conditions/assertions changed; unchanged headline totals do not mean identical answers. |
| Supplied-evidence cohort | 11 eligible writer configurations; 3 hard questions; 33 planned cells. |
| Hard cells | 24 new completions + 3 reused Phi-4 observations + 6 prelaunch context refusals. |
| Common comparison | Reactor and locked car fit all 11 writers; bus fit 5. Refusals were not counted as generated wrong answers. |
| Supplied evidence | 18/18 required main claims supported; 29/30 material conditions fully supplied, with one partial and additional optional gaps. |
| Controls | 22 executions: 21 natural completions and 1 GPT-OSS bar budget cutoff, retained and separately graded as inconclusive. |
| Final writer observations | 49 total: 48 recorded natural completions and 1 inconclusive result, with 6 additional refusals. Later protocol audits qualify affected reasoning observations. |
| Mechanical withholding | 7 hard answers and 2 bar controls. |
| Broad retrieval study | 76 production-retrieval rows held and unattempted. |
| Classification review | 783 deterministic checks passed. |
| Engine-process time | 23,360.780 seconds = 6.489 hours across 135 phases, including prior preflights/diagnostics. |
| Retained weight files | 148,406,211,520 bytes across 15 shards; this is storage, not measured network transfer. |
| Unavailable costs | Exact generated-token totals, subagent-token totals, interrupted-run time, and transferred bytes were not fully available. |
| Historical baseline | 11 reused production answers; later audit found native completion insufficiently established. They are not 11 fresh live-service calls. |
The 11 supplied-evidence configurations were Phi-4, Phi-4-reasoning, Phi-4-reasoning-plus, Gemma 4 12B, Gemma 4 26B, Mistral Small 3.2, Qwen2.5 14B, Qwen3 14B, Qwen3 30B-A3B, Qwen3.5 27B, and GPT-OSS 20B. Settings differed in native template, quantization, context, and reasoning budget; this was not a weights-only comparison.
Correction course: frozen October 22 results
- Scope: 5 writers × 11 questions × 3 laws = 165 law outputs; one fixed comparison, with no post-admission evidence/settings repair or extra seed.
- Finish: 15:25:25 UTC on October 22, 11 hours 27 minutes 34 seconds after start; 32 minutes 26 seconds before cutoff. Final snapshot frozen at 15:32 UTC.
- Semantic review coverage: 50/55 question reviews accepted. The 5 ungraded Qwen3.5 questions were changed-elsewhere, dwelling permission, notaries, exemptions, and bar.
| Writer | Retained law outputs | Gate passes | Completed, withheld | Parse failures | Accepted question reviews | Outer execution total, minutes | Median law attempt, seconds |
|---|---|---|---|---|---|---|---|
| Phi-4 | 33 | 30 | 3 | 0 | 11/11 | 33.51 | 61.60 |
| Gemma 4 12B | 33 | 32 | 1 | 0 | 11/11 | 36.21 | 64.23 |
| Mistral Small 3.2 | 33 | 29 | 4 | 0 | 11/11 | 39.35 | 70.90 |
| Qwen2.5 14B | 33 | 33 | 0 | 0 | 11/11 | 37.87 | 66.56 |
| Qwen3.5 27B | 33 | 22 | 9 | 2 | 6/11 | 346.79 | 630.32 |
| Total | 165 | 146 | 17 | 2 | 50/55 | — | — |
These are original retained classifications. The 2 parse failures reached engine end-of-generation but failed answer assembly/parsing. Six continuation-exposed cells have a separate qualification and overlap these categories.
| Workflow | Supported required points, A2 view | Decisive asserted-error records | Law gates |
|---|---|---|---|
| Historical production Phi-4 | 32/107 | 7 | Not a comparable new-run gate total |
| Revised Phi-4 | 25/107 | 16 | 30/33 |
| Revised Gemma 4 12B | 31/107 | 16 | 32/33 |
| Revised Mistral Small 3.2 | 38/107 | 16 | 29/33 |
| Revised Qwen2.5 14B | 32/107 | 9 | 33/33 |
- The 107 points include controls and abstention expectations. Error records may repeat propositions. Qwen3.5 has no complete-workload semantic total because 5 question reviews are missing.
- Historical production used a shared 2,048-token budget and actual seed 42; revised workflows used 3 per-law calls and configured seed 1. Evidence, rendering, schema, and runtime also differed.
- Errors per supported point was added as a descriptive ratio, undefined at zero support. It does not remove those confounders or replace the registered decision rule.
- Gemma reactor: 2/3 supported required points versus historical 1/3, zero recorded decisive errors, all 3 law gates passed.
- Qwen3.5 bus: 4/9 versus historical 1/9; an assertion error and gate failure remained.
- Qwen3.5 locked car: 6/11 versus historical 2/11; incomplete conditions and a gate failure remained.
- Qwen3.5 reactor: 1/3 with a gate failure. These hard-question observations used zero continuations.
- Registered admission required no lower completeness on any question, strict improvement on bus/reactor/locked car, zero decisive asserted errors, natural completion and gate passage for every law, and faithful no-hit abstention.
- Result: 0/5 admitted replacements under both registered interpretation views. No router, ensemble, or retrospective best-per-question combination was tested.
Three remaining automatic-retrieval gaps
| Question/law | Missing evidence | Engineering consequence |
|---|---|---|
| Vehicle / New Jersey | 2C:58-4.6(d), conditional public-right-of-way branch. | Part of the answer lacks essential source text. |
| Changed-elsewhere / Maryland | Insurance 15-10B-01(g)(1)–(4), health-care-definition details. | Source budget omitted the relevant definition branch. |
| Exemptions / New Jersey | Preserved 2C:39-6 activity exceptions and conditions, plus additional 58-4.6 scope material. | A preservation cross-reference alone does not supply the incorporated activities/conditions. |
Consolidated regression fixtures record these omissions as still open. Other branches can remain partly answerable. A model guessing the omitted rule is not retrieval success.
Runtime, review, and service findings
| Finding | Measured scope / correction |
|---|---|
| Ministral transition failure | 8 attempts reached EOS but the harness expected a nonexistent next-assistant prefix. Classified as protocol failures, not 8 engine crashes or proof of model inability. |
| Other reasoning qualifications | 8 scored Phi reasoning rows and 4 preflights qualified separately. |
| Continuation audit | 165 retained cells scanned; 6 continuation records; 0 scan errors; 21/21 checks matched earlier manual audits. |
| Continuation defect | Two CLI formatting newlines were replayed into the next prompt: 4 boundaries inside reasoning, 2 inside JSON. |
| Affected original outcomes | 3 verified, 1 parsed but schema-withheld, 2 parse failures; 159 zero-continuation cells unaffected by this particular defect. |
| Native runtime repairs | Mandatory schema, reasoning-prefix guards, tokenizer/native token accounting, engine EOG/sample checks, shared deadline, owned process groups, and cleanup. |
| Independent runtime probes | Found and repaired Harmony-prefix bypass, tokenizer descendant cleanup, and late-reaped completion/deadline classification gaps. |
| Review intake | A malformed quote declaration crashed review parsing; a separately versioned review-only adapter preserved original output and frozen scoring. |
| Grade monitoring | Collected/staged reviews but did not dispatch reviewers; terminal GPU coverage did not imply completed semantic review. |
| Final Phi integration smoke | 3 bus-law inputs through native runtime → answer /2 → offline and localhost HTTP service gates; 27 independent artifact checks passed. |
| Smoke timing | 47.481 s staging + 205.291 s outer build + 47.865 s offline gate + 47.421 s HTTP gate = 348.058 s. |
| Nested timing | Runtime 197.976 s and engine 148.056 s were inside the outer build; do not add them again. |
| Integration boundary | Did not establish fully cold startup, a single whole-worker run below 1,200 seconds, every writer’s service behavior, or frontend /2 compatibility. |
Consolidated core and GPU verification
| Measure | Recorded value / behavior |
|---|---|
| Initial core steps | extract, trace, packet, write, gate, grade; optional think added in phase four. |
| File boundaries | Steps exchange files; Nix declares dependencies. No shared application framework or new experiment scheduler was introduced. |
| Initial saved pipelines | production, revised-phi4, revised-qwen25, revised-qwen25-lenient, revised-mistral, revised-qwen35. |
| Seventh pipeline | revised-qwen35-thinking. |
| Initial model pins | 5: Phi-4, Gemma 4 12B, Mistral Small 3.2, Qwen2.5 14B, Qwen3.5 27B. A pin’s presence does not mean a saved pipeline uses it. |
| Front door, phase three | 25 lines; resolves pipeline and case names. A new pipeline is one JSON file. |
| Code/test count, phase three | 2,226 code lines and 895 test lines under the repository’s scoped counter; ceilings 2,600 and 1,000. Not directly comparable to V1’s total Rust line count. |
| Per-area code counts | Extract 697, trace 476, packet 94, write 250, gate 242, grade 135, CLI 25, flake 307. |
| Phase-two CPU acceptance | 19/19 checks passed at b9ca50e. |
| Phase-three scenarios | Initially 4/5; cached-rerun scenario failed. After source-isolation repair at acb193d: 5/5. |
| Scenario coverage | Run individual steps; preserve caches; add one pipeline JSON; external-command writer fixture; measure packet size. |
| Cache behavior after repair | Unrelated edits preserve step paths; a gate edit rebuilds gate and grade only. |
| Scenario evidence size | 109,027 request characters versus 719,262 full-source characters: approximately 15.2%. The command-writer fixture replayed recorded answers. |
| Phase-four CPU acceptance | 20 checks; scenarios 5/5. CPU live-inference check explicitly skips without CUDA. |
| Production GPU verification | At b9ca50e: gate 7/7, parity 7/7, 6 min 17 s writer time. At edaf4d2: 7/7 completed, gate 7/7, parity 7/7; raw outputs byte-identical to the preceding 613112d run. |
| Structural parity fields | Law order, citation sets, exact quotations, and settled flags, including comparison across historical /1 and newer /2 records. |
| October 23 revised GPU pipeline | Gate result over 57 law records | Qualification |
|---|---|---|
| Phi-4 | 50/57 | Informational run; no semantic ranking. |
| Qwen2.5 | 56/57 | One unknown-stop during prompt ingestion. |
| Qwen2.5 with quote declaration | 56/57 | 0 quote amendments; same unknown-stop issue. |
| Mistral Small 3.2 | 56/57 | Informational run. |
| Qwen3.5 | 0/57 | All 57 failed with a Jinja template exception before sampling; writer integration defect. |
| Later repair/result | Fact |
|---|---|
| Qwen3.5 prompt | Writer renders both turns and disables conversation mode; non-thinking variant closes the think block explicitly. |
| Prompt byte fidelity | Replaced --file with --binary-file because the former drops one trailing newline. Phi-4’s prompt bytes were unaffected. |
| GPU guard | Missing CUDA device or GPU allocation failure fails the derivation instead of caching a failed engine run as successful output. |
| Contention incident | An orphan build retained approximately 15.5 GB GPU memory; 4 Phi-4 loads failed; run voided. |
Non-thinking Qwen3.5 at edaf4d2 | 57/57 completed; gate 54/57; 2 uncited-sentence failures, 1 undeclared quote; 4,001 s summed writer wall time; parity 1/7, informational. |
| Two-phase thinking | Thought phase stops at closing tag or 8,192-token budget; answer phase uses a separate greedy grammar-constrained call with the retained thought. |
| Qwen3.5 KV cache | q4_0 for 32,768-token context; other pins retained q8_0 where configured. |
| Resume design | A network failure lost approximately 4 hours from a single large thought derivation; work was split by question, then explicitly chained to prevent parallel GPU allocation. |
Thinking run at 5740cd5 | 33 law cells; 29 thoughts closed, 4 reached budget; 18,470 s thinking; 33/33 answers completed in 2,954 s. |
| Thinking gate result | 28/33 versus non-thinking 30/33 on the same cells; 4 uncited-sentence failures, 1 undeclared quote. |
| Thinking/non-thinking comparison | Same settled flags 23/33; identical citation sets 12/33; no semantic judge run on these thinking records. |
Online writer: pruned packet versus full law, October 24
- Writer: Codex CLI using
gpt-6-astra, high reasoning effort, command adapter; 7 production questions × 3 laws = 21 law cells per condition; one call per cell, no retry. - Pruned condition: production walk, per-law packet. Full condition: all non-heading paragraphs in the root and base documents, 255–752 passages per law.
- Judge: same Codex configuration, using the retained AI-authored round-two rubrics; no human adjudication. Phi-4 and non-thinking Qwen3.5 were reference conditions under this judge.
| Condition | Required claims | Supported | Missing evidence, judge attribution | Writer omitted | Uncertain | Overstated required claims | Decisive errors, including additional assertions |
|---|---|---|---|---|---|---|---|
| Pruned packet, Codex | 61 | 24 | 25 | 8 | 4 | 0 | 0 |
| Full law, Codex | 61 | 25 | 0 | 36 | 0 | 0 | 0 |
| Historical production Phi-4 | 61 | 14 | 26 | 10 | 4 | 7 | 8 |
| Non-thinking Qwen3.5 | 61 | 14 | 2 | 41 | 0 | 4 | 5 |
Required-claim categories sum to 61 per row. The overstated counts are aggregated from the retained per-cell fixed-denominator JSON; the separate decisive-error count also covers additional assertions.
| Measurement | Pruned | Full law |
|---|---|---|
| Writer prompt characters | 123,637 | 1,703,156 |
| Writer wall time | 303 s | 323 s |
| At least one listed source present, excluding 3 corpus-wide control claims | 46/58 = 79% | 58/58 |
| Every listed source present | 28/58 = 48% | 58/58 |
- Character ratio: approximately 7.3%; distinct from the approximately 15.2% CLI-scenario measurement above.
- Pruned/full answers differed on 12/21 law cells; per question, 3 wins each and 1 tie. Three independent assessors recomputed the fixed-denominator results and called for more samples.
- Similar totals, 24/61 and 25/61, did not establish equivalence: missing retrieval and writer omissions differed substantially.
- For 13 of the judge’s 25 pruned “missing evidence” verdicts, a listed source was mechanically present. Retrieval attribution by the judge was therefore unreliable on its own.
- The 1–3-sentence answer limit imposed a structural coverage ceiling: 6 cells needed more than 3 required claims.
- Recorded study defects: original rather than corrected rubrics; judge-context rendering changed during execution; external-command records initially carried the Phi-4 model pin; gate-withheld cells were initially scored as semantic zeros; old arithmetic excluded uncertain claims from denominators.
- Fixed-denominator tables correct the arithmetic, not all study-design defects. One sample per cell and same-family writer/judge remain limitations. Character counts are not exact token usage or dollar cost.
Judge redesign
| Item | Fact |
|---|---|
| Review structure | 5-leader panel; selected a configurable two-pass judge; decision contained 32 trim items. |
| Implementation identity | eba6616e788b3a0e684ff7659adbe94f7f31da03, October 24. |
| Reference pass | Derive required claims from a declared reference; each claim must quote statute text that re-slices from the source. Reject ungrounded claims. |
| Verdict pass | Judge support, contradiction, or omission; supported/contradicted verdicts must carry grounded quotations or become uncertain. |
| Denominator | Every required claim; uncertainty remains visible in the denominator. |
| Retrieval attribution | Determine whether evidence was in the packet mechanically from spans. |
| Reference modes | Full law → completeness; writer packet → faithfulness; provenance-labelled stored rubric → agreement. |
| Configuration | Explicit judge adapter and reference in pipeline data; no implicit judge model. Without a judge, output stays ungraded. |
| Withheld answers | Report as withheld, not a zero semantic score. |
| Removed coupling | Round-two review procedure, rubrics, and benchmark schema removed from the generic core; archive preserves them. |
| One-cell smoke | Locked-car/Maryland full-law reference derived 8 grounded claims, 0 rejected. Pruned-answer verdict: 2 supported, 2 missing with evidence present, 4 missing without, 1 extra unsupported sentence, 0 downgraded. |
| Smoke cost | 2 Codex calls, approximately 45 seconds. |
| Larger test design | Proposed full/packet reference runs, archived-rubric comparison, another judge family, and owner spot checks. The linked test-run document is a plan, not evidence those evaluations finished. |
| Coupling-count discrepancy | Blog index reports 80/123 findings survived; the grouped findings file reports 42 findings across 40 files and 43/123 refuted. Reporting bases are not reconciled here. |
Website, service, deployment, and infrastructure
| Area | Facts expanded from implementation and delivery records |
|---|---|
| Frontend | Static HTML/CSS/JavaScript with three.js; answer-first view, passage cards by law, citation navigation, recorded path, and separate scene page. |
| Scene | Question subset graph; optional full graph of 1,265 provisions; pan/zoom/selection and URL-addressable trace/step state. |
| Evidence display | Signed statements take precedence; verified model text carries model/date/quotation metadata and remains unreviewed; withheld answers expose the failed rule without displaying answer text. |
| Cross-law presentation | Show source words and recorded correspondences; avoid turning lexical similarity or relation-model scores into claims of copying, legal equivalence, or penalty severity. |
| Browser tests | Data integrity, quote verification, withheld-text behavior, navigation, rendering, and community interactions; these are product tests, not legal accuracy measurements. |
| Queue | Python standard library, locked JSON records, one running claim globally, public status/index separated from private state. |
| Authentication | Shared-password scrypt verification, HMAC-signed session identifier, Origin checks on browser writes, bearer credential for worker/owner actions. |
| Trusted publication | Reconstruct trace from immutable source data, rebuild the passage inventory, and run upstream verification before publication; browser rechecks imported data. |
| Promotion/hiding | Promotion depends on a separately signed statement/review; endpoint cannot invent the signature or statement. Hide removes public record and index entry. |
| Worker | Claims a question, invokes pinned trace/answer backends, submits verified artifacts; question text is not interpolated into shell commands. |
| Recovery | Stale claim receives one retry after 30 minutes, then failure; empty authenticated claims update heartbeat. |
| Historical worker modes | NixOS worker timer waits 2 minutes after a run; interim laptop polling loop used a 15-second interval. These are different arrangements. |
| Actual defects fixed | Visitor bundle omitted provision files needed for hints; garbage collection removed unrooted worker/trace packages; roots and resilient polling were added. |
| Hosting | nginx static site, HTTPS/ACME, same-origin /ask proxy to a Unix socket; service and worker exposed through NixOS modules. |
| Deployment script | Exports committed runtime files from a specified revision, verifies the staged site, then atomically switches the served release. |
| GPU infrastructure | NVIDIA RTX 3080 Ti family device passed through with VFIO to a Nix build microVM; host reclaims GPU when VM stops. Historical briefs differ on nominal capacity; no fresh hardware inventory is asserted here. |
| Nix routing | CUDA-tagged builds route to the remote builder; sandbox device exposure, pinned CUDA packages, binary cache, model roots, and serial jobs support local inference. |
| Service migration boundary | Consolidated core was not itself a migrated/deployed service. Community frontend still consumed answer /1; newer compact /2 records require explicit integration. |
| Live-state boundary | Deployment receipts describe historical releases. No current service, credentials, machine health, or remote builder was inspected for this fact sheet. |
Agent-work practices and retained lessons
| Observation | Change expressed in the project |
|---|---|
| V1 builders controlled rules, recorded outputs, goldens, and floors. | Treat replay agreement and fitted scores separately from independently validated extraction. |
| Infrastructure arrived before useful extraction. | Prioritize a working question, exact evidence, and a named reader; reduce generic framework work. |
| Large autonomous briefs rewarded artifact volume. | Use measured per-step ceilings, bounded tasks, precise acceptance output, and ordered work that leaves a usable result. |
| Agent summaries missed execution defects. | Check logs, raw streams, store identities, and exact output bytes. |
| “No network” was interpreted as offline Nix with local builds disabled. | Clarify infrastructure constraints; ordinary build caches and local builds were subsequently allowed. |
| Source scope made documentation edits invalidate expensive GPU work. | Isolate each derivation’s runtime dependencies and prove cache behavior with mutation scenarios. |
| A failed scenario exposed a real flaw. | Preserve the 4/5 result, then record the repair and 5/5 result separately. |
| Strict replacement criteria answered a narrower question than finding any improvement. | Keep local gains, tradeoffs, and production admission as distinct outcomes; preserve named pipelines. |
| Steward instructions also introduced mistakes. | Retain template, cache, and protocol corrections; supervision itself is subject to review. |
| Prototype product reviews were agent-generated. | Label simulated personas/councils as research; do not report them as human user studies. |
Preservation and unresolved work
| Preservation measure | Result |
|---|---|
| First-round supplement | 817 ignored readiness/replay files retained |
| Source/packet links materialized as bytes | 140 |
| Post-commit preservation checks | 293 passed, 0 failed |
| Execution/input/output/grade retention checks | 15,609 passed, 0 failed |
| Relocated regular-file retention checks | 3,790 passed, 0 failed |
| R2 scheduled and terminal cells | 165/165 |
| Accepted R2 grades retained | 50 |
The audit scopes overlap and are not a count of unique tests or legal truths. Hashes establish identity; retained bytes and Git objects establish availability within the audited scope.
| Unfinished or unestablished item | State at the relevant indexed endpoint |
|---|---|
| Three retrieval-gap families | Open, explicitly represented in regression fixtures. |
| Five Qwen3.5 question reviews | Ungraded in frozen R2; unknown is not zero. |
| Faithful continued-generation protocol | R2 continuation defect retained; later core uses separate thought and answer calls. |
| General extraction/retrieval accuracy | No independent broad human-adjudicated validation established. |
| Online pruned/full equivalence | One recorded study exists; insufficient evidence of equivalence. |
| Model ranking or ensemble | No universal winner, admitted replacement, or tested router/ensemble. |
| Full worker and cold start | Not established by the staged integration smoke. |
| Service/frontend migration | Separate work; not completed merely by core GPU parity. |
| Bill history and Git-like legal version views | Proposed branch/version/enactment/blame mapping; not a delivered V2 bill-history product. |
| Larger two-pass-judge validation | Linked plan and one-cell smoke exist; plan acceptance criteria are not completed measurements. |
| Exact overall cost | No complete token, agent-time, download-transfer, or dollar-cost total in the indexed evidence. |
Source scope and historical identities
The input index contains 254 distinct local file/directory targets. Relevant facts from design documents, guides, implementation areas, experiment reports, machine-readable summaries, audits, and deployment records are expanded above. Directory pointers are summarized at the component or experiment level, not represented as a claim to have read every raw run file. Historical plans contribute intended scope only; final receipts control completion claims.
| Source family | Facts incorporated |
|---|---|
| Enact README, changelog, 57-record epics, decisions, guide, source/code/schema/profile/corpus/test directories, fidelity history, journal, flake | V1 capabilities, regulatory vocabulary, test conventions, artifact scale, and distinction between plans, implementations, and evaluated performance. |
| Reenact V1 audit and post-mortem | Measured V1 history, extraction failures, corpus/grounding assets, and agent-supervision lessons. |
| Reenact network, case-study, council, next-generation, roadmap, builder, findings, and comparison/history documents | Extraction/network experiments, privacy comparison, GPU measurements, product changes, and explicitly unimplemented ideas. |
| Demo/many-laws/findings/trace/answer/scene/community/bench briefs | Staged product intent; final site/service/report facts above distinguish delivery from those plans. |
| Core interfaces, workspace/tooling maps, consolidation briefs/reports, steps, models, pipelines, scenarios and regression fixtures | File contracts, code counts, parity, CPU/GPU outcomes, cache isolation, adapter design, open gaps, and migration boundaries. |
| R1 evidence index, 33-document manifest, raw sweep/diagnostic collections, readiness reviews, supplied-evidence settings, final tables/resources | Early model work, retrieval diagnostics, paired tests, 11-writer cohort, refusals, controls, runtime qualifications, and final scope. |
| Replacement README/handoff, independent reviews, source-locator review, manifests and supplement | Parked source compiler, independent failure probes, runtime/service engineering, and artifact preservation. |
| R2 plan/registration, acceptance map, implementation, packets/admission/parity/capacity, writer plan, attempts, grades, worksheet and final report/decision | Frozen 165-cell comparison, settings, final scores, missing reviews, timings, three retrieval gaps, and no-admission result. |
| R2 scorer/protocol/runtime/intake/continuation/service reviews, development/deviation records, queue and coordination tooling | Concrete execution failures, repaired boundaries, retained qualifications, monitor limits, and HTTP integration evidence. |
| Original trace/answer/inference/source/service repositories; frontend tools/tests/reports; NixOS hosting/builder/deployment files | Production-era contracts, graphical/evidence interfaces, queue lifecycle, authentication, packaging, GPU routing, and historical deployment. |
| Local research explainers, closure README/receipt/audit JSON, steward handoff | Owner’s objective, observed tradeoffs, supervisory practices, final closure counts; intermediate totals superseded by final R2 totals. |
| October 24 cached experiment, panel decision/findings, judge test plan | Recorded online pruned/full comparison, evaluation defects, new judge design, one-cell smoke, and pending larger study. |
| Repository / record | Snapshot identity |
|---|---|
| Enact V1 | 4f6bcfb9a205aa3bac6356eef5f2ad3f461d6a1b |
| Reenact phase two | b9ca50e55d62a533f215a6275b1b41c7aea8c1dd |
| Reenact phase three | 5bb180e06809d6e0219c952b71c7beb81203b101 |
| Reenact phase-four tested code | edaf4d2dbbee11e8fddf3a06b6c5fc9c10ca5de6 |
| Phase-four results documentation | cb6fe920f8795597f67ef244fa8d4d3f3dedb25f |
| Two-pass judge implementation | eba6616e788b3a0e684ff7659adbe94f7f31da03 |
| Completed thinking-run documentation | afbac3beb7564e87858db538ea107375edcbde4f |
| Pre-handoff benchmark | 98351226492d2b6db8d53f1fa7999ec17f03e465 |
| Frozen first comparison | 763c7eba94cc366a7d3cd7e63829fdb76199a084 |
| Replacement/audit archive | 29af804689b4c89819af3be4bcbba0f0d49ecbff |
| Frozen correction course | e1bf3d6b10c8828eddf9513d2c206d63c1b2a8be |
| Original production trace | 5ff8ce9f6afcd18c690420ce9d9c83753a5aeff2 |
| Original production answer | 8601a46f63252e7db08ce80d7f5b826609cc4afc |
| Original service | 408e5670b63d055ddba1e0c199405ded041e5be7 |
| Initial replacement runtime | b04f21eb30ec85a03934b0fa9eeec5b7387243b5 |
| Parked source compiler | 5eecb6ff1be4c1137d8f0224b72d774b83e46201 |
| Scene site | de6a1703107990596d6fefe4373147e3517fc429 |
| Community site | eb3d33aced9ff0c4d2e9462130f035c823494c53 |
| Infrastructure | c690b6f6dbf20a0e5a02ee9ec573849325049e45 |
| Correction trace closing revision | 1f4c2a02d84460d0488b69e3bc910a326dee0b64 |
| Correction answer closing revision | 8e8e6a2da048f88700b6757616af2ed1bea978a5 |
| Correction runtime closing revision | 1eb15a42bb906a07ad9723b033bab7778ebd85bb |
| Correction service closing revision | e39648a9f9dfab06005a79bbc0742fb9cef328d5 |
| Source-locator follow-up, still unadmitted | 1096be30b5cdffa2659b43606c134b7af8c217d1 |
- The index’s older statement that no online pruned/full experiment had been recorded is superseded by the October 24 experiment summarized here.
- Its intermediate “15 of 147 withheld” figure is superseded by R2 final accounting: 17 completed/withheld plus 2 parse failures out of 165 retained outputs.
- Its earlier whole-repository cache defect was repaired at
acb193d; the failed scenario remains part of the history. - Phase-four GPU results were documented after the tested
edaf4d2code commit; both tested and reporting identities are distinguished above. - The private local
riley-bins.mdtarget was unavailable during preparation. No unseen content from it is asserted; relevant design direction is independently present in the index and steward handoff. - Later October 25 repository changes are outside these historical result totals. No inference, benchmark, deployment, or live-service test was run to prepare this file.