Skip to content

v1.0.0 — Release Readiness#40

Open
OldCrow wants to merge 10 commits into
mainfrom
feat/v1.0.0-release-readiness
Open

v1.0.0 — Release Readiness#40
OldCrow wants to merge 10 commits into
mainfrom
feat/v1.0.0-release-readiness

Conversation

@OldCrow

@OldCrow OldCrow commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

Implements the v1.0.0 — Release Readiness milestone and folds in the formula-audit follow-ups discovered during implementation.

Closes #26
Closes #27
Closes #28
Closes #29
Closes #37
Closes #38
Closes #39

Changes

#26 — Release docs

  • Added CHANGELOG.md in Keep a Changelog format, backfilled from existing README release history.
  • Added CONTRIBUTING.md covering branch/PR workflow, build/test guidance, style conventions, and the three-layer calculator pattern.
  • Linked both from README.md.

#27 — API docs

  • Added a minimal root Doxyfile for libew/include and ewpresenter/include.
  • Added a docs CI job that runs Doxygen and uploads docs/html/ as an artifact.
  • Added docs/html/ to .gitignore.
  • Documented local API doc generation in README.md.

#28/#29 — Formula references and audit

  • Added docs/formulas.md mapping calculator outputs to equations, sources, assumptions, sign conventions, and unit conventions.
  • Tightened/added formula source comments in all libew/tests/test_*.cpp domain tests.
  • Used exact Adamy/JED citations where available from local source PDFs, including:
    • Dave Adamy, "EW 101 — ES vs. SIGINT — Part 2: Antenna and Range Considerations," JED, Feb 2011, p. 51 for LOS/2-ray intercept range/link-budget algebra.
    • Dave Adamy, "EW 101 — ES vs. SIGINT — Part 3: Receiver Considerations," JED, Mar 2011, p. 58 for receiver sensitivity.
  • Left [OPEN] markers only where exact book equation/page pins remain unavailable.

#37#39 — Formula-audit follow-ups

  • Fixed beamwidth_from_gain() to be the circular/symmetric inverse of gain_from_beamwidth(), using the same 30000 beam-shape constant. Updated antenna docs/tests and docs/formulas.md.
  • Corrected stale partial_band_jamming() header documentation to match the v0.7+ implementation: bandwidth scales by signal_bw * 10^(J/S/10) and is capped only by hop range.
  • Corrected the LPI advantage citation from EW103 to EW102 in radar.h.

Validation

  • Full local CMake build + ctest: 13/13 tests pass.
  • Doxygen generation: pass (docs/html/index.html generated).
  • CI YAML parse: pass.
  • git diff --check: pass.
  • Targeted cppcheck and clang-tidy on touched antenna implementation/test files: no user-code findings reported.

Notes

  • This PR intentionally does not bump to v1.0.0 or create a tag. That should happen after this PR is green and merged, following the same process used for v0.9.0.
  • Doxygen docs are uploaded as CI artifacts only; GitHub Pages publishing is left as a future enhancement.

Artifacts

Plan: ewcalc v1.0.0 — Release Readiness
Conversation

Co-Authored-By: Oz oz-agent@warp.dev

OldCrow and others added 10 commits July 9, 2026 22:59
Add a root Doxyfile documenting libew/include and ewpresenter/include
public headers, a docs CI job that runs doxygen and uploads docs/html
as a workflow artifact, a .gitignore entry for the generated output,
and a README section on building the docs locally.

Closes #27.

Co-Authored-By: Oz <oz-agent@warp.dev>
Backfill CHANGELOG.md in Keep a Changelog format from README's existing
per-version summaries (v0.6.0 through v0.9.0), using real tag dates from
git history. Add CONTRIBUTING.md covering the branch/PR workflow, build
and test instructions (including sanitizer/static-analysis/coverage
builds matching CI), code style, and the three-layer pattern for adding
a new calculator. Link both from README.md.

Closes #26.

Co-Authored-By: Oz <oz-agent@warp.dev>
…nk/receiver

Tighten and verify the // Source: citation comments in test_propagation.cpp,
test_antenna.cpp, test_link.cpp, and test_receiver.cpp for GitHub issues #28+#29
(formula audit, docs/formulas.md source data).

Verified each formula against independently-checkable derivations:
- FSPL, two-ray ground reflection, Fresnel crossover, knife-edge diffraction
  (Lee/ITU-R P.526), earth bulge, and radar horizon all check out analytically.
- Precise page citations added for FSPL, two-ray path loss, one-way link
  budget/effective range, and receiver sensitivity, sourced from Dave Adamy's
  "EW 101 -- ES vs. SIGINT" JED column series (Feb/Mar 2011), whose intercept-
  range and sensitivity formulas match this repo's constants exactly.
- Flagged (not fixed): antenna::beamwidth_from_gain's "11.1" constant does not
  reproduce any standard single-beamwidth gain-directivity relation in degrees,
  and its "Tai & Pereira" attribution is unverified (that reference is a
  two-plane formula). See completion report for full discrepancy detail.
- Remaining precise page/equation numbers not covered by available sources are
  marked [OPEN: page/eq TBD] rather than fabricated.

No implementation logic changed; all 13 ctest targets still pass.

Co-Authored-By: Oz <oz-agent@warp.dev>
…ital

Audit assigned domains (issues #28, #29): jamming and radar test citations
added from scratch; location and digital citations tightened to specific
Adamy EW102 sections/pages verified against the book's table of contents.

No implementation logic changed (libew/src, libew/include untouched).

Discrepancies found (not fixed here, reported separately):
- jamming.h partial-band doc comment describes stale pre-v0.7.0 behavior
  (caps bandwidth at signal_bandwidth for J/S >= 0) that contradicts the
  current implementation and tests (widens bandwidth instead).
- radar.h attributes lpi_advantage to "Adamy EW103, LPI radar chapter",
  but EW103 covers communications EW; LPI radar content is in EW102 Sec 3.9.

Co-Authored-By: Oz <oz-agent@warp.dev>
- Make beamwidth_from_gain the circular inverse of gain_from_beamwidth,
  using the same 30000 beam-shape constant and updating antenna tests
- Correct stale partial-band jamming documentation to match the v0.7+
  implementation behavior
- Correct LPI advantage citation from EW103 to EW102
- Update docs/formulas.md to describe the corrected antenna formula

Closes #37
Closes #38
Closes #39

Co-Authored-By: Oz <oz-agent@warp.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment