Open Issues
Live issues from the Celilo Forgejo tracker.
- #1471 Every top-level e2e/tests suite fails at collection: retiring e2e/package.json (cec004cc) left `@celilo/e2e` unresolvable from that directorycategory:bug e2e-confidence severity:high
- #1469 build-paths.test.ts leaks its scratch dirs, filling the CI runner's PrivateTmp (12 GB / 963k files measured)
- #1468 Withdraw a module's previous public_web route when its path changescategory:bug severity:medium
- #1463 A module's published binaries arrive as right-sized files of pure NUL, and the whole pipeline reports success: ansible installs them changed, the module reads VERIFIED, and the unit crash-loops on Exec format error
- #1462 The module-version gate blocks every Version Packages PR: changesets bumps a module's build-input package.json, and the gate has no release exemption while the changeset check beside it does
- #1461 A `celilo/`-layout module never gets its Ansible role `files/`: the template pipeline knows both layouts and copyAnsibleRoleFilesDirs knows only one, then returns silently
- #1460 The module-version gate only looks at modules/*, so a module built from sibling apps ships stale while the gate passes
- #1459 Nothing tracks the delivery half: a bead closes on merge, but the fix reaches the fleet only via a release, a .deb, or a module republish — and six today are merged and undelivered
- #1457 The console's upstream cache never collapses concurrent reads, so one poll cycle asks celilo for the same roster three or four times
- #1456 The backups page draws an unlabelled grid: row labels are off because "the roster beside the grid" carries the names, and that route never renders a roster
- #1455 The console's alert dock reads UNAVAILABLE while the API returns six alerts: upstream sends ISO strings where the protocol declares epoch ms, and an unchecked type assertion carries them all the way to the browser
- #1454 Session reaping runs on the critical path of every API connection, so connection cost still scales with session count
- #1453 The console's api_dest defaults to a bare hostname that resolves nowhere but celilo-mgr itself, so every /api read 502s while the module reads VERIFIED
- #1452 The console has no authorization gate at all — add a celilo_admin group and require it
- #1451 Two modules provision the same authentik username, so the second one's generated password can never authenticate
- #1450 The hook jail policy varies by invocation path, so the same fleet runs hooks jailed or unjailed depending on who triggers the deploy
- #1447 The module sweep cannot resolve a workspace package the same run just published, so a complete release still reports failure
- #1446 The release never builds or publishes celilo-bootstrap, so nothing in packaging/celilo-bootstrap can ever reach the fleet
- #1444 Nothing establishes host-key trust for the console's ssh transport, so its first connection can never succeed
- #1443 Console SPA posts every verb to the origin root, gets index.html back, and reports it as a parse error
- #1442 Enrolling an API principal never installs its forced-command line, so a self-enrolling module can never connect
- #1440 `celilo api-serve` takes 12s to greet because it dynamic-imports the API graph before saying hello, so the MCP client times out and all 178 fleet tools vanish
- #1439 Every new worktree is untrusted by mise, which silently removes the celilo MCP tools and breaks `bun run setup` — and nothing trusts it on creation
- #1438 The SOCKS proxy binds outbound to eth0 forever, so anything reached over a tunnel works from inside the container and times out through the proxy
- #1436 The greenwave simulator binds every port forward to eth1 by default, which on fw-isp faces away from the internet — so no per-test domain can obtain a certificate
- #1435 Production: 192.168.0.154 is live on briq but absent from the netplan drop-in, so a reboot takes caddy-internal dark and leaves DNAT rules pointing at nothing
- #1434 Nothing establishes whether the firewall converge reads stored interface labels or the live classification, and the two are allowed to disagree
- #1433 `celilo machine list` reports interfaces that no longer exist and zones that are wrong, and nothing says the data is a snapshot
- #1432 Switching git branches orphans your own cele2e kept lock, so the auto-release never fires and the next run is refused with exit 3
- #1430 dns-int logs "internal: command not found" on every boot, from the middle of the readiness path
- #1428 Deploy the internal resolver FIRST in every e2e suite that uses one — deploying it late forces a DNS backfill across every system already up
- #1427 A pebble restart without a website-sim restart bricks the rig: caddy serves a cert from a dead CA and the bake waits 180s for a trust failure that waiting cannot fix
- #1426 IPAM allocates addresses it has never checked are free, so an ingress can land on a system celilo did not provision and silently break both
- #1425 capability-state.test.ts fails on origin/main on a loaded host: `module import ../../modules/namecheap` times out and takes the whole suite red
- #1424 bun.lock on main records @celilo/capabilities ^5.1.1 while package.json says ^6.0.0
- #1423 Stamp the image-freshness fingerprint from the INSTALLED CLI, not from the working tree — it currently certifies a stale image as fresh
- #1422 A jailed hook's browser dies three seconds into navigation, and the cause is still unidentified (two root causes falsified)
- #1421 A hook that fixes a crash-looping unit must clear the systemd start limit, or its restart is silently refused
- #1419 The module sweep can publish manifests the deployed CLI cannot parse: all 39 modules went to celilo_contract 2.0 while the fleet runs a CLI that accepts only 1.0category:bug severity:high
- #1417 external_reachability is never actually measured: it outsources the only external assertion to isitup.org, which times out, and the module still reads VERIFIEDcategory:bug severity:medium
- #1416 The deploy's route-reconcile wait (90s) equals ONE of caddy's three 90s attempts, so a retried reconcile marks a converged module ERROR — and the poll then skips it forevercategory:bug severity:high
- #1415 merge-gate cannot distinguish "this job is not runnable on this host" from "this job did not run", so every branch touching packaging/celilo/** PARTIALs forever
- #1414 An upgrade blocked by a provider that is AHEAD retries forever: the poll calls it a deferral, keeps no record, and nothing alertscategory:bug severity:high
- #1413 One merge's gate poisons the next branch's gate in the same worktree: bun install dies on EEXIST linking wireguard-e2e binaries
- #1412 merge-gate VOIDs every branch that touches the apparmor watched paths: it cannot model a step `if:` that reads another step's output
- #1411 The new require-changeset manifest-bump gate fails on every "chore: version packages" PR, so it blocks every release it is supposed to protect
- #1409 The completion coverage gate reads wrapped help prose as subcommands, and names words that exist nowhere in the code
- #1408 module-deploy's stale-project guard has no refusal test, so nobody has seen it fail (Rule 7.6)
- #1407 The repo-root `bun run test` gate cannot reach apps/celilo/test-integration, so an integration-only break merges green and is found by CI on main