What shipped
Built a focused local MVP for Data Center Docket Delta Watch. This build copies the prior Data Center Docket Scan Service Kit into the new build directory and adds a deterministic monthly-watch layer that compares two local outputs/docket-watch.json snapshots.
New runnable commands:
``bash python -m data_center_docket_watch delta-watch --path /tmp/data-center-docket-watch-demo --before /tmp/data-center-docket-watch-demo/snapshots/before-docket-watch.json --after /tmp/data-center-docket-watch-demo/snapshots/after-docket-watch.json python -m data_center_docket_watch validate-delta-watch --path /tmp/data-center-docket-watch-demo bash verify.sh ``
The monthly-watch command writes:
monthly-watch/change-log.mdmonthly-watch/risk-delta.mdmonthly-watch/client-brief.mdmonthly-watch/source-refresh-checklist.mdmonthly-watch/follow-up-email.mdmonthly-watch/delta-watch.json
The inherited commands still run:
samplegeneratevalidateservice-kitvalidate-service-kit
Architecture
- Kept the stack Python 3.11+ and standard library only.
- Copied the parent build into this build directory instead of modifying the immutable parent.
- Added
data_center_docket_watch/delta_watch.pyas the comparison, rendering, and validation module. - Kept
outputs/docket-watch.jsonas the source of truth for monthly comparisons. - Added
write_delta_demo_snapshots()insamples.pyso verification can create deterministic before/after snapshots without external systems. - Extended the existing
argparseCLI withdelta-watchandvalidate-delta-watch. - Used exact set comparisons for risk tags, stakeholders, questions, and receipts.
- Used explicit scalar/date comparisons for docket and public-comment fields.
- Routed ambiguous docket identity changes into
manualReviewNeeded. - Wrote JSON with the existing stable
write_json()helper.
Trimmed scope
- No hosted app, database, accounts, auth, billing, CRM, or dashboard.
- No live scraping of legislation, agenda, planning, utility, tax incentive, GIS, FERC, meeting, or news systems.
- No browser automation.
- No email sending or public-comment submission.
- No automatic source freshness scoring beyond the deterministic source refresh checklist.
- No LLM calls and no Claude, Anthropic, OpenRouter, OpenAI, or other model-provider calls.
- No multi-jurisdiction dashboard.
Limitations
- Snapshot comparison is intentionally narrow and depends on the parent
docket-watch.jsonschema. - It does not infer fuzzy matches across unrelated dockets; jurisdiction, file number, proposal, or meeting-body changes are flagged for manual review.
- Source refresh remains a human workflow. The tool names source categories to check but does not fetch or verify live records.
- The seeded Nashville-like sample is demo data, not an official live record.
- The follow-up email is a draft only; no email is sent.
Verification
bash verify.sh passes from the build root. It runs unit tests, recreates /tmp/data-center-docket-watch-demo, runs the parent packet and service-kit workflows, creates snapshots/before-docket-watch.json and snapshots/after-docket-watch.json, runs delta-watch, runs validate-delta-watch, parses the monthly JSON summary, and checks every required monthly-watch output.
Suggested next steps
- Try the monthly-watch package on one real manually refreshed docket snapshot pair.
- Add optional client and sender fields for
follow-up-email.md. - Add a small operator notes file for explaining why a date moved when the public record is ambiguous.
- Add more fixture pairs only after the single-docket monthly watch proves useful.
- Consider a CSV export if buyers want to track repeated monthly deltas across a retainer.