Skip to content

feat(music): live node progress; c0mpute.com songs follow the brief's length; v0.2.85 - #172

Merged
ralyodio merged 1 commit into
masterfrom
feat/music-progress
Nov 9, 2026
Merged

ralyodio merged 1 commit into
masterfrom
feat/music-progress

Conversation

@ralyodio

@ralyodio ralyodio commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator
  • Live node progress. POST /v1/music now accepts an x-request-id header. The gateway records each stage of that request: finding a worker, queued, rendering on a named node (with that node's own ETA), fetching the result, and retrying (with the reason). GET /v1/progress/{id} returns the current stage. The winning bid is now read as soon as it's chosen, not only after a failure.
  • c0mpute.com/chat shows that progress line while a song renders. Infernet relays it as node, and c0mpute.com sanitizes it before display.
  • Bug fix: c0mpute.com's /api/v1/music was setting duration: 30 when none was given. Infernet treated that as the person's explicit choice, so it overrode the length in the brief, and every c0mpute.com song came out 30 s long.

The Infernet side, which sends the id, polls progress and relays it, is a separate PR in InfernetProtocol/infernet-protocol.

Checks: clippy is clean. c0mpute-core lib tests pass 340 of 340, including the new job_progress tests. tsc is clean and bun test for music passes 4 of 4.

🤖 Generated with Claude Code

…he brief's length; v0.2.85

- Gateway: POST /v1/music takes an x-request-id and records each stage of
  that request (finding a worker, queued behind busy workers, rendering on
  node X with the node's own ETA, fetching the result, retrying and why).
  GET /v1/progress/{id} returns it. Reported through a task-local, so the
  shared auction path needs no new arguments; the winning bid is now read as
  soon as it is chosen, not only on failure.
- c0mpute.com/chat shows that line while a song renders (relayed by
  Infernet as `node`, sanitized).
- c0mpute.com's /api/v1/music no longer defaults duration to 30: that was
  sent to Infernet as an explicit choice and overrode the length in the
  brief, so every c0mpute.com song came out 30 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown

ThreatCrush Security Scan

13 finding(s)

HIGH/CRITICAL: 1 | MEDIUM: 8 | LOW: 4

Severity Rule Location
HIGH js-ssrf-outbound-request apps/web/public/sw.js:24
MEDIUM js-unescaped-html-sink apps/web/src/app/blog/[slug]/page.tsx:53
MEDIUM js-unescaped-html-sink apps/web/src/app/layout.tsx:80
MEDIUM sh-remote-script-execution scripts/dev-setup.sh:25
MEDIUM sh-eval-expansion scripts/dev-setup.sh:35
MEDIUM sh-remote-script-execution scripts/install.sh:173
MEDIUM sh-remote-script-execution scripts/install.sh:198
MEDIUM sh-remote-script-execution scripts/install.sh:316
MEDIUM sh-remote-script-execution scripts/install.sh:354
LOW py-ssrf-outbound-request examples/business-strategist-agent/chat.py:37
LOW py-ssrf-outbound-request examples/business-strategist-agent/train.py:54
LOW secret-generic-credential node/crates/c0mpute-core/src/webhook.rs:1165
LOW py-path-traversal node/crates/c0mpute-core/tests/fixtures/fake-infernet-text:29

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 5306d05 into master Nov 9, 2026
14 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