Skip to content

feat(decdn_node): follow decdn v0.2 (self-update off, schema keys, new metrics) - #166

Merged
thiras merged 2 commits into
mainfrom
feat/decdn-v0.2-follow-through
Oct 19, 2026
Merged

thiras merged 2 commits into
mainfrom
feat/decdn-v0.2-follow-through

Conversation

@thiras

@thiras thiras commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Stacked on #165 (the automated pin bump, which only moves the release line); GitHub retargets this to main when #165 merges. This is the semantic re-sync the bump checklist asks for on a new line, against decdn v0.1.0…v0.2.0.

What v0.2 changed that this repo assumes

Upstream Here
New [self_update] check section (CLI-only; the daemon ignores it). The CLI prints a daily "run decdn self-update" line after a command run at a terminal; decdn self-update replaces the running binary in place. gen-schema-keys.py maps the section and now refuses a config struct its STRUCT_PATHS does not map, so the next section upstream adds fails the regeneration instead of dropping out silently (which is what happened here: #165 left schema-keys.txt without self_update.check). The role renders check = false (decdn_self_update_check; ""/null omits it for an exact pin below 0.2), decdn-compose init writes the same and cli sets DECDN_SELF_UPDATE_CHECK=0. Docs say never to run decdn self-update on a managed host: under sudo it replaces /usr/local/bin/decdn outside the signed-release install and the next deploy's --version backstop then fails rather than repairs.
cache.max_blob_size_mb caps the bytes held per blob (ranges of a larger blob are still served); default min(51200, cache_size_mb) Prose in the role, chart, inventory templates and docs/requirements.md; the role's cross-field check uses the real default.
New metrics: decdn_serve_stream_midstream_blob_too_large_total (also in INBOUND_FAILURE_REASONS), decdn_buyer_topup_unresolved, decdn_dht_lookup_dial_timeouts_total; nothing renamed or removed Both "Unattributed stream failures" panels subtract the new reason; the refusal panels chart it; DHT dial timeouts beside the round ceiling; an "Unresolved on-chain holds" panel (openPool + topUp) on the chain dashboard; DecdnBuyerTopupUnresolved (15m, warning) with a promtool unit test.

Checklist step 2 now names the generator's refusal, and a new step 8 covers the monitoring assets (nothing in CI checks the node's metric names).

Verified

  • make lint, make test-scripts, make lint-compose, make lint-cloud-init, make lint-helm (promtool unit tests included), make lint-ansible
  • make molecule SCENARIOS='schema default validation'
  • the real v0.2.0 decdn (via scripts/fetch-decdn-cli.sh): config validate accepts a rendered node.toml with [self_update] check = false and refuses a typo in that table

After merge

  • Republish the deCDN Grafana Cloud folder's dashboards and rules (hand-published copies).
  • Release decdn.node, decdn.publisher and the chart (RELEASING.md).
  • sponsord v0.2 is not released yet; its pending branches change only the onramp-served installers and the decdn dependency, so when it tags v0.2.0 the sponsord checklist is a plain line bump.

🤖 Generated with Claude Code

thiras and others added 2 commits October 19, 2026 20:18
Move the decdn/decdn pin from the line 0.1 (v0.1.0) to v0.2.0
(5c830ea2dae90c99410097192b558b3ac970ccc4): the role default, the onramp's installer line, the chart's
appVersion and Artifact Hub image, AGENTS.md's pinned line, and what names one
release (Compose, the examples, the generated mirrors). The PR body lists anything left.
…w metrics)

The automated pin bump (#165) moved the release line; this is the semantic
re-sync a new line needs.

- schema keys: gen-schema-keys.py maps v0.2's [self_update] section and now
  refuses a config struct its STRUCT_PATHS does not map, so the next section
  upstream adds fails the regeneration instead of dropping out; schema-keys.txt
  regenerated from v0.2.0 (+self_update.check); molecule/schema's table list.
- self-update notice: the CLI's daily "run `decdn self-update`" line is wrong
  advice on a managed host (it would replace the CLI outside the role's
  signed-release install and fail the next deploy's version check). The role
  renders `[self_update] check = false` (decdn_self_update_check, "" / null
  omits it for an exact pin below 0.2), `decdn-compose init` writes the same
  and `cli` sets DECDN_SELF_UPDATE_CHECK=0; the interactive recipes say never
  to run self-update there.
- max_blob_size_mb prose follows v0.2 (a cap on bytes held per blob, ranges of
  a larger blob still served) and the real default, min(51200, cache_size_mb).
- monitoring: the new midstream blob-too-large reason joins both
  "Unattributed stream failures" panels and the refusal panels; DHT lookup
  dial timeouts beside the round ceiling; an "Unresolved on-chain holds" panel
  (openPool and topUp) and a DecdnBuyerTopupUnresolved rule with a promtool
  unit test.
- the bump checklist gains the generator's refusal and a monitoring step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 19, 2026 18:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@thiras
thiras deleted the branch bump/decdn-v0.2.0 October 19, 2026 18:58
@thiras thiras closed this Oct 19, 2026
@thiras thiras reopened this Oct 19, 2026
@thiras
thiras changed the base branch from bump/decdn-v0.2.0 to main October 19, 2026 18:59
@thiras
thiras merged commit 6c6c3c0 into main Oct 19, 2026
101 of 102 checks passed
@thiras
thiras deleted the feat/decdn-v0.2-follow-through branch October 19, 2026 19:20
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.

2 participants