Repository navigation
docs: rewrite CLAUDE.md for delta-v microservice architecture - #395
Conversation
Replace the inherited upstream-Horizon guidance (Karaf/OSGi, JAXB config, ActiveMQ, the bin/opennms monolith, CircleCI, JIRA, fictional module trees) with the conventions that actually govern delta-v, and add a Delta-V Architecture & Conventions (CRITICAL) section distilling the project's load-bearing invariants: - No Karaf/OSGi — Spring Boot 4 daemon microservices (core/daemon-boot-*) - No events table/Eventd/EventBus — events flow through Kafka - Minion-mandatory I/O; gRPC only for minion-gateway<->Minion - RPC timeouts never create outages/fault events - No ActiveMQ/Newts/webapp; Prometheus/VictoriaMetrics + ClickHouse - DB identity is `deltav` (values only; org.opennms.* package/env KEYS stay) - org.deltav.* packages; Jackson XmlMapper not JAXB; Conventional Commits + GitHub issues not JIRA; branch+PR; horizon consumed as pre-built JARs Also corrects Module Organization (slim ~34-module reactor: core/, deploy/, tools/, components/, docs/ — no features/container/ui/dependencies/opennms-*), Runtime Architecture, the tech-stack table, Testing, Branching, Key Conventions, and CI/CD (GitHub Actions, not CircleCI) to match the repo. Claude-Session: https://claude.ai/code/session_01XgRQL9QZcghyiLFXM9ZUnW
indigo423
left a comment
There was a problem hiding this comment.
Frontend topic might be a bit misleading
| | Database | PostgreSQL 16 (db `deltav`), Liquibase schema via `db-init` | | ||
| | REST | Apache CXF / JAX-RS | | ||
| | Config serialization | **Jackson `XmlMapper`** for daemon config (not JAXB) | | ||
| | Frontend | Vue 3 + TypeScript + Vite + Pinia, Feather Design System | |
There was a problem hiding this comment.
All the frontend stack is gone
Review suggestions — CLAUDE.md rewrite (non-blocking, your call)Net assessment: strong, net-positive rewrite. It removes genuinely misleading upstream-Horizon guidance (Karaf, JAXB, ActiveMQ, I verified the load-bearing claims against the tree and most check out: Spring Boot 4.0.3 ✓, PostgreSQL 16 ✓, db identity Four things to consider, ranked. Take or leave any of them. 1. (Most impactful) The
|
Corrects the factual errors and misleading sections flagged in PR #395 review (indigo423), all re-verified against the tree: - Frontend: the stack is GONE, not relocated. Removed the Vue/Vite/Pinia tech-stack row and rewrote the section to state delta-v has no frontend (no ui/ module, no Vue/Vite/Pinia anywhere); operator surface is Grafana + per-daemon Spring Boot Actuator. - Version: dropped the bogus "inherits Horizon's 36.0.0-SNAPSHOT" claim (zero occurrences in pom.xml). Reactor + images share delta-v's 1.x line (parent 1.3.0); horizon consumed as JARs at deltav.horizon.version (1.0.19). - Module list: reactor is exactly 33 modules (not ~34); added the three omitted modules (poller-service-catalog, poller-timeseries-common, prometheus-writer) and softened "every delta-v module". - Removed the dangling "legacy guidance further down" reference — this PR deletes those sections, so it pointed at nothing. Claude-Session: https://claude.ai/code/session_01XgRQL9QZcghyiLFXM9ZUnW
|
Thanks for the careful review, @indigo423 — you were right on all four, and I re-verified each against the tree before fixing. Pushed in the follow-up commit:
On your suggestion #4 (duplication): I deliberately kept the intentional restatements. In a CLAUDE.md that's read in fragments, a self-contained invariant in each section is more robust than a single definition + cross-references — and the risk of copies drifting is low for hard invariants like "no Karaf". Happy to tighten if you feel strongly. |
Why
The repo's
CLAUDE.mdwas inherited largely intact from upstream OpenNMS Horizon and described an architecture delta-v no longer has — Apache Karaf/OSGi, JAXB config, ActiveMQ, thebin/opennmsmonolith, CircleCI, JIRA conventions, and module trees (features/,container/,ui/,dependencies/,opennms-*) that do not exist in this slim reactor. That makes it actively misleading guidance for both humans and Claude Code.This PR rewrites it to describe delta-v as it actually is, and promotes the project's load-bearing invariants (previously only living in a personal Claude memory store) into the checked-in file so every contributor shares them.
What changed
core/daemon-boot-*)deltav(values only —org.opennms.*packages and env/property KEYS keep their names)org.deltav.*packages; JacksonXmlMappernot JAXB; Conventional Commits + GitHub issues not JIRA; branch + PR; horizon consumed as pre-built JARscore/,deploy/,tools/,components/,docs/), Runtime Architecture, the tech-stack table, Testing, Branching Model, Key Conventions, and CI/CD (GitHub Actions, not CircleCI).OpenNMS/*) is untouched.Docs-only; no code or build changes.
https://claude.ai/code/session_01XgRQL9QZcghyiLFXM9ZUnW