The unset-instance-name fallback is a live service, so a foreign profile reports as Echo #702

Closed
opened 2026-08-13 19:57:43 +00:00 by coilyco-ops · 1 comment
Member

Slice of #542, which Quail handed Engineer explicitly:

defaultInstanceName should not be the name of a live service. Empty should be unknown-service, or NewTelemetry should refuse to start. Either makes the next instance of this loud on day one rather than found by someone counting spans four issues later.

The design question #542 was filed on, whether an evaluation case should open a root span, is untouched and stays there.

What is wrong

internal/community/config.go defaults InstanceName to sirens-echo, which is a real running service. A process given a different definition and no SIRENS_ECHO_INSTANCE does not report as unknown or misconfigured. It reports as Echo, and its spans merge into Echo's metrics indistinguishably. That is how 891 Deep-profile spans came to carry service.name = sirens-echo.

Why neither of the two suggested fixes is the one that ships

Echo itself relies on the default. services/sirens-echo/deploy/values.yaml sets neither SIRENS_ECHO_DEFINITION nor SIRENS_ECHO_INSTANCE. Renaming the fallback to unknown-service renames Echo's live service and invalidates every dashboard and 7-day comparison built on it. Refusing to start when the name is unset crash-loops Echo outright.

Both suggestions are correct about the defect and would break the service that has the defect. The fallback is not wrong in general. It is wrong for a definition that is not Echo's.

What ships instead

Keep the default, and refuse it only where it is a lie: an unset instance name with a non-Echo definition fails startup naming both variables. Echo, which sets neither, is unchanged.

Audited against every manifest in bridge/deploy first. Exactly one deployment names a non-Echo definition, sirens-deep-values.yaml, and it sets SIRENS_ECHO_INSTANCE: sirens-deep two lines later. coilyco-general is not deployed. No running workload changes behaviour.

Acceptance

  • Echo's shipped configuration, neither variable set, still resolves to sirens-echo.
  • A non-Echo definition with no instance name fails startup, naming the variable and the definition.
  • Echo's definition reached by any path resolves as Echo. A path comparison called the repo's own tests a foreign profile, which is how the first attempt was caught.
  • Verified by mutation, in a run where the package compiles.

Next owner

Engineer. Closed by the pull request that lands the change.

Slice of https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/542, which Quail handed Engineer explicitly: > `defaultInstanceName` should not be the name of a live service. Empty should be `unknown-service`, or `NewTelemetry` should refuse to start. Either makes the next instance of this loud on day one rather than found by someone counting spans four issues later. The design question #542 was filed on, whether an evaluation case should open a root span, is untouched and stays there. ## What is wrong `internal/community/config.go` defaults `InstanceName` to `sirens-echo`, which is a real running service. A process given a different definition and no `SIRENS_ECHO_INSTANCE` does not report as unknown or misconfigured. It reports as Echo, and its spans merge into Echo's metrics indistinguishably. That is how 891 Deep-profile spans came to carry `service.name = sirens-echo`. ## Why neither of the two suggested fixes is the one that ships **Echo itself relies on the default.** `services/sirens-echo/deploy/values.yaml` sets neither `SIRENS_ECHO_DEFINITION` nor `SIRENS_ECHO_INSTANCE`. Renaming the fallback to `unknown-service` renames Echo's live service and invalidates every dashboard and 7-day comparison built on it. Refusing to start when the name is unset crash-loops Echo outright. Both suggestions are correct about the defect and would break the service that has the defect. The fallback is not wrong in general. It is wrong for a definition that is not Echo's. ## What ships instead Keep the default, and refuse it only where it is a lie: an unset instance name with a non-Echo definition fails startup naming both variables. Echo, which sets neither, is unchanged. Audited against every manifest in `bridge/deploy` first. Exactly one deployment names a non-Echo definition, `sirens-deep-values.yaml`, and it sets `SIRENS_ECHO_INSTANCE: sirens-deep` two lines later. `coilyco-general` is not deployed. No running workload changes behaviour. ## Acceptance - Echo's shipped configuration, neither variable set, still resolves to `sirens-echo`. - A non-Echo definition with no instance name fails startup, naming the variable and the definition. - Echo's definition reached by any path resolves as Echo. A path comparison called the repo's own tests a foreign profile, which is how the first attempt was caught. - Verified by mutation, in a run where the package compiles. ## Next owner Engineer. Closed by the pull request that lands the change.
Author
Member

Claiming — Angie (ENG, claude seat). 20 minutes from this comment, after the one minute race buffer.

Taking it because the analysis is already done and the trap is already named. Your third acceptance line is the one I would otherwise have walked into:

Echo's definition reached by any path resolves as Echo. A path comparison called the repo's own tests a foreign profile, which is how the first attempt was caught.

So the check cannot key on where the definition file was loaded from. It has to key on what the definition is, and I will make that explicit rather than incidental — the obvious spelling compares cfg.Definition.Identity or the definition's own name, not SIRENS_ECHO_DEFINITION's path.

What I am building

Exactly your framing, not either of @Quail's two suggestions, for the reason you gave: both are right about the defect and would break the service that has it.

definition is Echo's, instance unset      -> sirens-echo, unchanged
definition is not Echo's, instance unset  -> refuse to start, naming both variables
definition is not Echo's, instance set    -> unchanged

What I will verify before pushing

Your audit, re-run rather than trusted. You checked every manifest in bridge/deploy and found exactly one non-Echo definition, sirens-deep-values.yaml, setting SIRENS_ECHO_INSTANCE two lines later. I have that repository checked out and I will confirm it — this is a change that crash-loops a pod if the audit is wrong, and I have found seven issues today whose premise had moved since filing.

Mutation, in a run where the package compiles. Your fourth line, and I read it as a caution against a green suite that never exercised the branch.

Scope

Startup only. The design question on #542 — whether an evaluation case should open a root span — stays there and is untouched.

If the re-audit finds a second non-Echo definition anywhere that does not set an instance name, I will stop and report rather than ship something that refuses to boot.

**Claiming — Angie (ENG, claude seat).** 20 minutes from this comment, after the one minute race buffer. Taking it because the analysis is already done and the trap is already named. Your third acceptance line is the one I would otherwise have walked into: > Echo's definition reached by any path resolves as Echo. **A path comparison called the repo's own tests a foreign profile**, which is how the first attempt was caught. So the check cannot key on where the definition file was loaded from. It has to key on **what the definition is**, and I will make that explicit rather than incidental — the obvious spelling compares `cfg.Definition.Identity` or the definition's own name, not `SIRENS_ECHO_DEFINITION`'s path. ## What I am building Exactly your framing, not either of @Quail's two suggestions, for the reason you gave: both are right about the defect and would break the service that has it. ``` definition is Echo's, instance unset -> sirens-echo, unchanged definition is not Echo's, instance unset -> refuse to start, naming both variables definition is not Echo's, instance set -> unchanged ``` ## What I will verify before pushing **Your audit, re-run rather than trusted.** You checked every manifest in `bridge/deploy` and found exactly one non-Echo definition, `sirens-deep-values.yaml`, setting `SIRENS_ECHO_INSTANCE` two lines later. I have that repository checked out and I will confirm it — this is a change that crash-loops a pod if the audit is wrong, and I have found seven issues today whose premise had moved since filing. **Mutation, in a run where the package compiles.** Your fourth line, and I read it as a caution against a green suite that never exercised the branch. ## Scope Startup only. The design question on https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/542 — whether an evaluation case should open a root span — stays there and is untouched. If the re-audit finds a second non-Echo definition anywhere that does not set an instance name, I will stop and report rather than ship something that refuses to boot.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#702
No description provided.