Skip to content

feat(module): add ntpdate apt module + reconcile ADR-0011/0026 freeze wording - #389

Merged
ycpss91255 merged 1 commit into
mainfrom
auto/tails-ntpdate-adr
Jul 14, 2026
Merged

feat(module): add ntpdate apt module + reconcile ADR-0011/0026 freeze wording#389
ycpss91255 merged 1 commit into
mainfrom
auto/tails-ntpdate-adr

Conversation

@ycpss91255

Copy link
Copy Markdown
Owner

Summary

Two small independent changes:

Task 1 — ntpdate apt module. Adds module/ntpdate.module.sh (optional,
archetype A / module_use_apt_archetype) provisioning the legacy ntpdate
package, plus test/unit/module/ntpdate_spec.bats (54 cases). It satisfies the
10-function module contract (ADR-0002, enforced by
test/unit/module/contract_conformance_spec.bats / #305) and ships a real
doctor()
that goes beyond the dpkg check by verifying the ntpdate binary
resolves on PATH (command -v ntpdate). is_recommended() is always off —
ntpdate is a legacy special-purpose tool, never part of Quick Setup. The en +
zh-TW DESCRIPTION flags that modern systems use systemd-timesyncd but the
dual_system_time_sync one-off tool (ADR-0029) drives ntpdate.
SUPPORTED_UBUNTU=("22.04" "24.04" "26.04"). The dual_system_time_sync
maintainer note now points at setup_ubuntu install ntpdate (the package it
used to install inline is now this module).

Task 2 — ADR-0011 / ADR-0026 freeze-wording reconciliation. ADR-0011's
superseded banner said the freeze machinery "is being retired" while ADR-0026
still said "the ADR-0011 freeze mechanism is retained per module" — a mixed
signal. Both now state accurately that the per-module freeze (frozen_pkgs /
frozen_platform) was never built into a live module, the dead migration/freeze
code was retired in PR #373, and per-module freeze remains a future design
option only.

doc/module/INDEX.md regenerated (90 modules); CHANGELOG updated (Added +
Documentation).

Test plan

Run in Docker via justfile.ci (the CI gate), all blocking-foreground:

  • just -f justfile.ci test-unit — green (full suite; ntpdate spec 54/54).
  • just -f justfile.ci test-integration — green (24/24).
  • just -f justfile.ci coverage — green; ntpdate unit-shard coverage 94.59%
    (AC-17 gate is >= 80%).
  • test-unit contract_conformance (test(module): module-iterating contract conformance meta-test #305) — green (5/5); every module still
    satisfies the 10-function contract.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NX5H2vuMTv4mBmjpPYoS3s

… wording

Task 1 — ntpdate module. module/ntpdate.module.sh is an optional apt-archetype
module (module_use_apt_archetype) for the legacy ntpdate package, satisfying the
10-function contract (ADR-0002, #305) with a real doctor() that probes
`command -v ntpdate` beyond the dpkg check. is_recommended() is always off
(legacy special-purpose tool, never in Quick Setup); en + zh-TW DESCRIPTION
flags that modern systems use systemd-timesyncd but the dual_system_time_sync
one-off tool (ADR-0029) drives ntpdate. Full spec at
test/unit/module/ntpdate_spec.bats (54 cases; 94.59% unit coverage). The
dual_system_time_sync maintainer note now points at
`setup_ubuntu install ntpdate` (the package it dropped is now this module).

Task 2 — ADR-0011/0026 mixed-signal reconciliation. ADR-0011's superseded
banner said the freeze machinery "is being retired" while ADR-0026 still said it
"is retained per module". Both now state accurately that the per-module freeze
(frozen_pkgs / frozen_platform) was never built into a live module, the dead
migration/freeze code was retired in PR #373, and per-module freeze remains a
future design option only.

doc/module/INDEX.md regenerated (90 modules); CHANGELOG updated.

Gates (blocking-foreground, Docker via justfile.ci): test-unit, test-integration
(24/24), coverage, and #305 contract-conformance all green.

Claude-Session: https://claude.ai/code/session_01NX5H2vuMTv4mBmjpPYoS3s

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@ycpss91255
ycpss91255 enabled auto-merge (squash) July 14, 2026 11:20
@ycpss91255
ycpss91255 merged commit bad124f into main Jul 14, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant