Skip to content

chore(docs,nix,horismos): delete fabricated-feature docs and repair the NixOS module - #619

Merged
forkwright merged 1 commit into
mainfrom
chore/cleanup-docs-nix
Jul 15, 2026
Merged

chore(docs,nix,horismos): delete fabricated-feature docs and repair the NixOS module#619
forkwright merged 1 commit into
mainfrom
chore/cleanup-docs-nix

Conversation

@forkwright

Copy link
Copy Markdown
Owner

Cleanup sweep.

Closes #604docs/download/irc.md deleted (353 lines of a never-built IRC integration, no code, no tracking issue); docs/media/import-rename.md rewritten to describe the REAL import path (verified against the #613 ImportAdapter + kathodos), dropping every invented field. Straggler refs fixed (README, scanner.md).

Part of #610 — the horismos secrets fix (gate-verified) + module + docs; two acceptance items remain operator-gated:

  • crates/horismos/src/secrets.rs: secrets_path() now honors HARMONIA_SECRETS_PATH (the systemd LoadCredential delivery path), so the module's secrets mechanism actually loads — the core break. 3 new tests (env wins / absent / blank).
  • nix/module.nix: ReadWritePaths extended with ergasia.download_dir + komide.podcast_dir (+ tmpfiles to create them); module-test.nix supplies a valid jwt_secret via the now-working credential path.
  • docs/nix-deployment.md: schema errors fixed (invalid media_type, nonexistent field, required per-library fields).

#610 stays OPEN for the two items that need a nix toolchain / operator action: committing flake.lock (metis has no nix) and adding a nix flake check CI job (an ask-first .github/ workflow). The nix module edits are NOT boot-verified (no nix on metis) — they'll be verified by that CI job once added.

Gate green (full workspace; the horismos change + all docs + deletions are gate-verified).

…he NixOS module

docs (#604):
- delete docs/download/irc.md: a full IRC-announce integration with zero
  implementation anywhere in the workspace and no tracking issue
- rewrite docs/media/import-rename.md to describe the real import path:
  archon::import::ImportAdapter (the only production caller) -> kathodos's
  ImportPipeline, the tags -> DB hints -> filename resolver
  (archon::import::DownloadResolver), the real TemplateEngine/token
  reference/default templates (crates/kathodos/src/import/template.rs), the
  real conflict-resolution contract vs. what the one production caller
  actually exercises, and the haves/wants finalize transaction. Removes the
  invented naming_template/max_conflict_suffix/import_timeout_seconds/
  bulk_rename_concurrency config fields and the never-built dry-run/
  bulk-rename endpoints.
- fix the now-stale cross-reference in docs/media/scanner.md

nix (#610):
- horismos: HARMONIA_SECRETS_PATH env var now honored as an override for the
  secrets.toml path (crates/horismos/src/secrets.rs), taking priority over
  the config-sibling default when set to a non-blank value. This makes the
  NixOS module's LoadCredential delivery actually work -- previously no Rust
  code read that variable. Covered by 3 new tests in
  crates/horismos/src/lib.rs (env override wins, absent falls back, blank
  falls back).
- nix/module.nix: extend ReadWritePaths with ergasia.download_dir and
  komide.podcast_dir (mirroring the Rust compiled-in defaults); add
  systemd.tmpfiles.rules to create both directories, since neither is
  auto-created the way StateDirectory creates dataDir and
  validate_download_dir rejects a missing directory at boot; fix the
  inline `settings` example, which omitted two required LibraryConfig
  fields (poll_interval_seconds, scan_interval_hours) and would have
  failed config parsing.
- nix/tests/module-test.nix: supply a valid secretsFile (32+ byte
  jwt_secret) via the now-functional LoadCredential path instead of an
  empty config that could never pass validation.
- docs/nix-deployment.md: fix the full-configuration example against the
  real schema (horismos::MediaType is music|video|book only -- no
  "audiobook" value; epignosis.musicbrainz_user_agent does not exist and
  deny_unknown_fields would reject it; every LibraryConfig field is
  required); document the HARMONIA_SECRETS_PATH mechanism now being real;
  correct the ReadWritePaths list in the hardening summary.
- docs/architecture/configuration.md: document the HARMONIA_SECRETS_PATH
  override in the secrets-separation section and figment layer-order table.

Not included here (ask-first / unverifiable from metis):
- a .github/workflows/ nix flake-check CI job -- workflow files are
  ask-first; see PR body for the proposed job
- flake.lock -- missing from the tree; metis has no nix toolchain to
  generate it (needs an operator run of `nix flake lock`)
- the module/flake booting a real instance -- unverified; metis cannot run
  nixos-test locally

Closes #604
Closes #610

Gate-Passed: kanon 0.1.6 +stages:fmt,check,clippy,nextest,lint sha:d7209b9fa895b07e58d551c4941ec0350ec9f725
@forkwright
forkwright merged commit 31ed55f into main Jul 15, 2026
12 checks passed
@forkwright
forkwright deleted the chore/cleanup-docs-nix branch July 15, 2026 16:51
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.

docs: irc.md and import-rename.md describe entirely unimplemented features as current behavior

1 participant