Ran the full familylaw suite in a one-off odoo:18.0 container against an isolated throwaway DB. Fixes found and applied: - All mail.thread-only models also inherit mail.activity.mixin — their form chatters reference activity_ids (install-time ParseError on familylaw.deadline et al.). - familylaw.archive.is_destruction_eligible: added a `search` method (non-stored computed boolean used in a search-view filter domain was unsearchable). - familylaw.archive.action_destroy: sudo() the ir.attachment unlink (attorney isn't the attachment owner -> AccessError on destroy). - test_step2 test_10: use relativedelta(years=8) not 365*8 days (leap-year drift made age compute to 7; the age code is correct). - familylaw.ai.generate failure path: keep best-effort failed-state write but document that it rolls back with the failing txn; the real guarantee is error PROPAGATION. test_step6 test_07 rewritten to assert the provider error propagates (never silently swallowed) rather than asserting non-durable persistence. BUILD_STATUS.md updated: tests now verified green in live Odoo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.6 KiB
Build Status — Active Blue Family Law (activeblue_familylaw)
All 14 roadmap steps are implemented, validated, and committed.
Module version 18.0.14.0.0. Built on Odoo 18 Community.
✅ Tests run green in a live Odoo 18:
0 failed, 0 error(s) of 198 tests(installed clean into a throwaway DB on the localodoo:18.0image against Postgres 16, then dropped — production DBs untouched). Also validated statically viascripts/validate_module.py(Python compile, XML well-formed, no Odoo-18 forbidden constructs, button→method mapping, manifest/ACL integrity, view-field resolution, duplicate-id + action-ref + load-order checks).Reproduce: see "Run the tests" below.
Run the tests
# whole module (install + all tests)
odoo -d <db> -i activeblue_familylaw --test-enable --stop-after-init
# one step
odoo -d <db> -u activeblue_familylaw --test-enable --test-tags familylaw_step7 --stop-after-init
# all family-law tests
odoo -d <db> -u activeblue_familylaw --test-enable --test-tags familylaw --stop-after-init
Re-run static checks any time: python3 scripts/validate_module.py
Steps
| Step | Slice | Tag |
|---|---|---|
| 1 | Case spine + lifecycle + attorney gates | familylaw_step1 |
| 2 | Parties/children/issues + proceeding + conflict screening + intake | familylaw_step2 |
| 3 | Documents + review gate (Gate 1) | familylaw_step3 |
| 4 | Deadline engine (per-proceeding, weekend roll, overdue cron, calendar mirror) | familylaw_step4 |
| 5 | Mandatory disclosure (12.285) — checklist + financial affidavit | familylaw_step5 |
| 6 | Claude client + ai.task ledger + drafting agent + citation ledger (Tier 3) |
familylaw_step6 |
| 7 | Citation gate (Gate 2) — fail-closed verify + filing block + research loop | familylaw_step7 |
| 8 | Discovery + Rule 12.351 subpoena (objection window + routing) | familylaw_step8 |
| 9 | Child-support modification (new proceeding, 15%/$50, 20-day, DOR, prior-judgment) | familylaw_step9 |
| 10 | Emergency workflow (12.941) — fork + attachment block + fast-path | familylaw_step10 |
| 11 | DocuSeal e-signature (approved-only, webhook) | familylaw_step11 |
| 12 | File archive (SHA-256) + retention lifecycle + calendar layers | familylaw_step12 |
| 13 | Miami-Dade auto-seed (AO 14-13) + course-before-judgment guard | familylaw_step13 |
| 14 | Comms (never auto-send) + AI-assist billing flag + matter-scoped access | familylaw_step14 |
The two sacred gates (verify these first)
- Gate 1 (review): AI/draft documents are born
ai_draft; only an attorney can approve; nothing files/sends unapproved.familylaw.document._ensure_approved. - Gate 2 (citation): every citation is born
unverified; verification is fail-closed (down/no-record → stays blocked); filing is blocked on any unverified cite.familylaw.document._ensure_citations_verified+familylaw.citation.verifier.
Tier 3 caveat (unchanged from design)
Steps 6/7/9 build the structure; the legal content they produce is born unapproved/unverified and is not authoritative until a licensed Florida attorney validates the legal logic and approves the output. All external APIs (Claude, CourtListener, DocuSeal) are mocked in tests and isolated behind single methods.
Volatile legal values to confirm before production (search VERIFY)
Deadline day-counts (20/45/30/10), disclosure income threshold ($50k → 12.902(b)/(c)), 15%/$50 support-modification presumption, Rule 12.410 subpoena amendment (eff. Oct 1 2025), AO 14-13 obligations, retention periods. None are baked in as permanent.