Agent: fix Status freeze — conchint.textContent destroyed #capn (root cause) #184

Merged
bvandeusen merged 1 commits from dev into main 2026-07-01 20:46:29 -04:00
Owner

The actual root cause of "the Status section doesn't update". CI-green on 0a618db (run 1846).

#capn (the max-concurrency number) was nested inside #conchint. applyStatus() ran both capn.textContent=CAP and conchint.textContent='…max '+CAP every call — and setting conchint.textContent replaces all of conchint's children, destroying the <b id=capn> node. So the first call worked (then deleted capn); every later call threw ReferenceError: capn is not defined on applyStatus's first line and aborted before touching any tile → the Status section froze while /gpu + /logs (which never touch capn) kept updating. Confirmed via the operator's DevTools console.

Fix: remove the redundant nested <b id=capn> and its write (the hint already renders the max via conchint.textContent). Audited every other .textContent= write — this was the only id'd element nested in a rewritten container. VERSION → .10.

Deploy note

Agent runs :latest (main) → re-pull the desktop agent after merge, then hard-refresh the page once. No migrations; web/backend unaffected.

🤖 Generated with Claude Code

The actual root cause of "the Status section doesn't update". CI-green on `0a618db` (run 1846). `#capn` (the max-concurrency number) was nested inside `#conchint`. `applyStatus()` ran both `capn.textContent=CAP` **and** `conchint.textContent='…max '+CAP` every call — and setting `conchint.textContent` replaces all of conchint's children, destroying the `<b id=capn>` node. So the first call worked (then deleted `capn`); every later call threw `ReferenceError: capn is not defined` on applyStatus's first line and aborted before touching any tile → the Status section froze while `/gpu` + `/logs` (which never touch `capn`) kept updating. Confirmed via the operator's DevTools console. Fix: remove the redundant nested `<b id=capn>` and its write (the hint already renders the max via `conchint.textContent`). Audited every other `.textContent=` write — this was the only id'd element nested in a rewritten container. VERSION → .10. ## Deploy note Agent runs `:latest` (main) → re-pull the desktop agent after merge, then hard-refresh the page once. No migrations; web/backend unaffected. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bvandeusen added 1 commit 2026-07-01 20:46:17 -04:00
fix(agent): Status froze after one update — conchint.textContent destroyed #capn
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 17s
CI / backend-lint-and-test (push) Successful in 26s
CI / integration (push) Successful in 3m25s
0a618db10c
THE root cause of "the Status section doesn't update" (chased across several
rounds; the backend was always healthy). `#capn` (the max-concurrency number)
was nested inside `#conchint`:

    <div id=conchint>… · max <b id=capn>8</b></div>

and applyStatus() ran, every call: `capn.textContent=CAP` AND
`conchint.textContent = '…max '+CAP`. Setting conchint.textContent replaces
ALL of conchint's children — destroying the <b id=capn> node. So:
  call 1: capn exists → tiles update → conchint.textContent DELETES capn
  call 2+: `capn.textContent` → "capn is not defined" (ReferenceError) →
           applyStatus throws on its FIRST line → aborts before any tile →
           frozen.
This is exactly the observed "ticks a couple times then freezes", and why
/gpu + /logs (which never touch capn) kept updating fine.

The capn write was redundant anyway — conchint.textContent already renders
the max. Remove the nested <b id=capn> element and the capn.textContent line;
the hint still shows "· max N". VERSION → .10.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
bvandeusen merged commit 1d48770793 into main 2026-07-01 20:46:29 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/FabledCurator#184