Constitution v2.0.0: trim domain conventions, add governance principles#3602
Conversation
…principles Constitution 1.1.0 -> 2.0.0 (MAJOR). Removed 5 AetherSDR-domain implementation conventions (formerly II MeterSmoother, III UI Labels, IV BandPlanManager, VI CHAIN Widget, VII Auto-Generated Contributors) — they were "use this class / read from that manager" guidance, not governance invariants. Relocated to AGENTS.md as implementation pointers. Added 5 governance principles in their place: - II The Radio Is Authoritative On Live State - III Radio-Persistable Settings Live On The Radio - IV Every Contribution Is Clean-Room - VI AetherSDR Never Transmits Without Operator Intent - VII Untrusted Input Is Validated At The Boundary Rewrote V from "use nested JSON" into the invariant beneath it (each feature owns its configuration as one self-contained object), the integrity pair to Principle XIV. Net: gapless I-XIV, 14 principles. I, V, and VIII-XIV keep their numerals and meaning; II/III/IV/VI/VII numerals were refilled (a clean renumber is deferred). CONSTITUTION.md and the canonical .specify/memory/constitution.md updated byte-identically. Downstream synced: AGENTS.md / CONTRIBUTING.md / GEMINI.md / copilot-instructions.md counts + domain lists; PR template gains a clean-room checklist item; stale Principle-II/IV citations re-pointed to their conventions. Principle XIII. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Thanks for this, @ten9876 — it's a careful, well-documented governance change. I verified the mechanical claims against the branch and they hold up:
- ✅ Byte-identity —
CONSTITUTION.md≡.specify/memory/constitution.md(cmpclean on the PR branch). - ✅ 14 principles, gapless I–XIV — heading count is 14; AGENTS.md/CONTRIBUTING.md/copilot/GEMINI/README all read "14 principles" consistently. The AGENTS.md domain list enumerates I–VII with no gap.
- ✅ Test change is comment-only —
tests/band_plan_license_filter_test.cpptouches only the header doc-comment (2 lines); the test body is untouched, so no build/behavior risk. Same for theCMakeLists.txtcomment. - ✅ Downstream sync (PR template, copilot, CONTRIBUTING, GEMINI, AGENTS) is internally consistent with the new principle set.
No code-correctness concerns — this is docs/governance, so the AppSettings/RAII/boundary-handling review dimensions are N/A.
One substantive point for maintainer judgment (not a blocker): the numeral refill of II/III/IV/VI/VII. You've disclosed this honestly in the SYNC "Citation note," but it's worth surfacing explicitly: existing citations don't just go stale, they become actively misleading. For example CHANGELOG.md:486 ("Bandplan edge corrected to 21.200 MHz (Principle IV.)") and :491/:496/:1345 all cite the old BandPlanManager principle — under v2.0.0 those Roman numerals now resolve to "Every Contribution Is Clean-Room." A future reader cross-referencing a CHANGELOG entry to the live constitution gets a wrong, plausible-looking match, with nothing flagging the mismatch. Same for :478 (II → was MeterSmoother, now Radio-Authoritative) and :622 (VI → was CHAIN, now Transmit-On-Intent).
The alternative that preserves citation stability would be to append the 5 new principles as XV–XIX and leave I–XIV's meanings fixed (optionally tombstoning the 5 removed ones as "Relocated to AGENTS.md — see Key Implementation Patterns"). That keeps every historical Principle <N> citation valid forever, at the cost of non-contiguous "domain vs. governance" grouping. The refill approach you've taken trades that durability for a clean 1–14 block now plus a deferred renumber later — a reasonable call, but it's the maintainers' to make since they own the citation surface. If you keep the refill, consider whether the deferred "clean renumber" TODO is something this PR should resolve rather than carry forward, since each release that lands citing the refilled numerals deepens the ambiguity.
Minor (description only, nothing committed): the PR body has a leaked template token — "cross-references II ${PR_DIFF} III" — and a couple of stray trailing "Principle XIII."/"Principle XIV" lines. Harmless since they're not in the tree, but worth tidying so the description reads clean.
Overall the change is coherent, verified, and the one real tradeoff is documented. Deferring to the maintainers on the refill-vs-append decision.
🤖 aethersdr-agent · cost: $4.6214 · model: claude-opus-4-8
What
Amends the AetherSDR Constitution 1.1.0 → 2.0.0 (MAJOR). Updates
CONSTITUTION.mdand the canonical.specify/memory/constitution.md(byte-identical) plus all downstream artifacts.Why
Five of the original principles (II MeterSmoother, III UI Labels, IV BandPlanManager, VI CHAIN Widget, VII Auto-Generated Contributors) were AetherSDR-domain implementation conventions — "use this class / read from that manager" guidance — not governance invariants encoding a cross-cutting failure mode. They're better expressed as pointers in
AGENTS.md. In their place we add principles that are governance invariants for a TX-capable, networked, multi-client, AI-built SDR.Principle changes
Removed → relocated to
AGENTS.md(Key Implementation Patterns): MeterSmoother ballistics, UI-label naming, BandPlanManager, CHAIN widget, auto-generated Contributors.Added:
Rewritten: V — from "use nested JSON" guidance into the invariant beneath it: Each Feature Owns Its Configuration As A Single Object (defaultable, versionable, atomically-writable — the integrity pair to XIV).
Unchanged: I (FlexLib Authority), VIII–XIV (Foundry defensive set).
Net result
Gapless I–XIV, 14 principles. I, V, and VIII–XIV keep their numerals and meaning, so their prior
Principle <N>.citations stay valid. II/III/IV/VI/VII numerals were refilled with new principles — old citations to those numerals (git history, CHANGELOG) now denote different principles; a clean renumber is deferred to a later revision and recorded in the SYNC header's Citation note.Downstream sync (in this PR)
AGENTS.md/CONTRIBUTING.md/GEMINI.md/.github/copilot-instructions.md— principle count back to 14, domain-principle list updated, the 5 relocated conventions added asAGENTS.mdpointers, radio-authority section cross-references II & III..github/PULL_REQUEST_TEMPLATE.md— fixed the stale Principle-II example; added a clean-room (Principle IV) checklist item.CMakeLists.txt— dropped an orphaned "Principle III" build comment.tests/band_plan_license_filter_test.cpp— re-pointed the old "Principle IV" comment to the AGENTS.md convention.Constitution mirror verified byte-identical; no stale counts or dangling principle citations remain (CHANGELOG entries left as historical record).
Principle XIII.
🤖 Generated with Claude Code