Task: Fix unsubstituted {nats_wire_format} placeholder in systemd unit generator
Table of Contents
This page documents a task in the Sprint 24 closure: release notes and demo story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Services with a custom args_template (http.server, telemetry, ore.service, wt.service, all 5 compute.wrapper replicas) start successfully with the correct wire format from ORES_NATS_WIRE_FORMAT instead of crashing on the literal string '{nats_wire_format}'.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Sprint 24 closure: release notes and demo |
| Now | Fixed and verified. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-03 |
Acceptance
_substitute_args()insystemd_generate.pysubstitutes\{nats_wire_format\}with${ORES_NATS_WIRE_FORMAT}, matching the existing\{nats_url\}=/\{nats_prefix\}=/=\{nats_tls_args\}= substitutions.compass services startbrings up all services with a custom args_template without a--nats-wire-formatcrash.
Plan
(Implementation strategy. Written when work starts; key decisions
are distilled into the parent story's * Decisions at close, but the
plan itself stays — it is the historical record of what we did.)
Notes
Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario, run
through the QA Validation Runner panel) that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
PRs
| PR | Title |
|---|---|
Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
Result
Root cause: _substitute_args() replaced \{nats_url\},
\{nats_prefix\}, and \{nats_tls_args\} but never
\{nats_wire_format\}, even though every custom
args_template row in controller_service_definitions_populate.sql
includes --nats-wire-format \{nats_wire_format\} (the SQL's own
comment already warns this is easy to forget). Added the missing
substitution (\{nats_wire_format\} -> ${ORES_NATS_WIRE_FORMAT}),
regenerated and redeployed the units (compass systemd generate,
compass systemd deploy – 9 units updated, exactly the ones with
custom templates), and restarted the previously-crashing services.
All 23 compass-managed services now start and report active
(compass services status). ores.wt.service separately crashes
with a SIGSEGV unrelated to this fix – out of scope, not chased
further.