Repository navigation
Description
Outcome
Another developer can prepare and inspect one selected supported installation and demonstrate its truthful lifecycle boundaries.
Next planning checkpoint: Init. This is the earliest scope/review conversation, not an assignment or a promise to finish the whole outcome in that week. Selected work starts at #52.
Remaining acceptance
This consolidates the selected Settings/Rune, CLI/layout/removal, bind, status and PostgreSQL acceptance from #1, #2, #3, #4 and #47.
- Select a named supported profile and exact source/configuration. Reproduce inactive sample edit → validate/load, immutable configuration and useful invalid-input errors.
- Verify init/dry-run, owned layout/storage and preservation; bind/rebind/collision/failure handling; status before/after the relevant stages, alias/JSON and non-mutation.
- Verify database role/migration/transaction behavior needed by that profile with actual PostgreSQL evidence.
- Exercise only supported start/readiness/stop/restart and init → removal → init cases. Record unavailable active-container operations as gaps, not successful lifecycle completion.
- Prove ownership/preservation and the selected Btrfs/fallback/removal cases, with an explicit handoff for unsupported privileged cleanup.
- A second participant reproduces the steps and records failure/recovery plus the remaining boundaries.
The former host-native stop/RefUnit campaign is historical: Core host-native runtime/stop fixtures were retired on 20 October. Start from the current container contract; requalify the current combined source where a fresh occurrence is required. A passing offline suite or old warm-model receipt cannot close the generated installed journey.
Evidence and handoff
Start from current State of Work and its linked source/tests and owning ADRs. The linked original acceptance remains binding unless a named replacement outcome records its disposition. Detailed scope, negative cases and dated campaign evidence are preserved in preserved scope and evidence; historical evidence does not establish current qualification on its own. Any accepted requirement not selected for this profile needs an explicit route in #62 before this issue closes.
Choose one small implementation or verification slice when this outcome is admitted. Record the responsible contributor, exact profile/revision, observed result, failure/unknown boundary and next checkpoint. The founder reviews and approves all code for this campaign; merge and promotion follow CONTRIBUTING.
Activity
zenithruneblade commentedon Oct 15, 2026
Local bootstrap review update: the uncommitted candidate completes a useful real-Qwen task in an isolated native CLI pilot and retains that work across stop/start. Required native failure/refusal tests and repository/documentation checks pass.
The candidate improvement run did not settle within its declared limit, so the overall pilot remains unqualified. Next work is to retain in-flight evidence and exercise the existing bounded cancellation path before completing the comparison and explicitly accepting or rejecting the candidate.
This is limited pilot evidence. No production deployment, autonomous evolution or issue completion is claimed.
zenithruneblade commentedon Nov 6, 2026
Planning reset — 6 November 2026. The original acceptance below remains binding unless a named replacement outcome records its disposition. This is a preserved historical body, not a fresh capability/qualification claim.
Original issue scope and dated evidence before the planning reset
Start the bound installation, verify that it can process work, then stop and restart it safely.
Starting point
CLI operator and two-boot tests exist. Current limits: active-Vessel lifecycle control is not wired; existing boot tests replace model/hardware collaborators.
Checklist
Done when: the managed lifecycle passes on a named host. Final real-model/browser acceptance belongs to #9/#11; reuse existing persistence and worker services.
Completion prerequisite: #3 — owned bindings.
Related: #4 inspection, #6 runtime activation, #8 workflow, #11 conversation.
References: CLI (ADR 19) · Containers (ADR 08) · Workers (ADR 14).
Follow-up: #22 extends worker delivery/recovery; #36 adds correlated observations and #37 verifies security boundaries.
Later operational journeys: #44 coordinated restore, #45 clean-host release-candidate acceptance and #46 controlled update rehearsal. They extend this lifecycle rather than block its first working installation.
Persistence foundation: #47 verifies SQL models, migrations and async transaction boundaries independently of host lifecycle.
Contribution entry: Reproduce one lifecycle step and isolate its first unsupported boundary.
Verification: PostgreSQL lifecycle tests; rootless systemd/Podman host for closure. Shared contribution and touched-docs rules: #52.
Delivery review — 12 October 2026
Published source: a913bff.
The real application factory, disposable PostgreSQL, in-process SAQ and HTTP pass shutdown plus a second-boot recovery receipt. Terminal checkpoint cleanup now preserves required evidence while retaining failed deletion debt and progressing later rows; spaced executable paths pass actual systemd parsing. Active-Vessel CLI control still refuses until its authenticated lifecycle port exists, and full rootless-host startup/drain/stop/restart remains the closure gate.
Delivery evidence · Source/test 1 · Source/test 2
Bootstrap review — 14 October 2026
Review base:
58bbd720. Prioritize one pinned local Qwen/vLLM profile with a staged receipt:Pin the image/model artifacts, command/environment, configuration, served id, source revision, device/driver profile and context/output/concurrency bounds. A capability key and
/modelsresponse do not pin those bytes. Keep personal host material and raw logs outside the public tracker; publish only a redacted structural receipt.Pitfalls: host loopback differs from pod loopback;
base_urldoes not admit a route;dedicated=falsewithholds lifecycle authority and does not adopt a container. LychD leases have no request-capacity limit, so begin with one admitted request and measure two-request queue/cancel behavior before increasing concurrency. Do not run old and replacement GPU services concurrently.Shutdown acceptance: the documented explicit host fallback may prove physical shutdown during a bounded experiment. It cannot complete the missing public
lychd stopcontract at control.py; preserve that blocker until the authenticated lifecycle path is implemented and verified. Contained failure is a truthful failed/blocked outcome, not a successful first-light receipt.Existing deterministic tests do not replace this named-host receipt. Broader #16 policy, parallel Graphs, a public extension SDK and autonomous Evolution are not prerequisites for these stages.
Runnable bootstrap campaign — pass 2, 14 October 2026
The second pass produced a local executable warm-model probe, a corrected inactive generated vLLM sample, and a private inactive managed-Rune candidate with shape/plan validation. Source base remains
58bbd7206d8cec61c228cda32ef33f6babed0a66; modifications are uncommitted.The real model trial is a useful failed contention case: text passed, a harmless tool actually executed, but the final answer exceeded the declared 120-second budget; local leases released. Do not extend the budget afterward and call it stable. A per-capability LychD limit would govern LychD callers, not unrelated clients of an externally operated server.
Actual migration cannot copy an external container recipe blindly: the inspected selected image already supplies
vllm serve; source example previously duplicated it. Same-pod model loopback differs from host loopback. The adapter requests 8 GiB pod shared memory, whose behavior must be qualified against the old host-IPC profile. Existing named Podman cache volumes cannot be transcribed verbatim as the admitted absolute bind mounts; select owned writable cache locations and verify the engine's cache environment. Never activate old and replacement GPU runtimes together.Coverage includes configuration/secrets, source/image, migrations/roles, job settlement/recovery, model/orchestration, local auth/security, text-only artifact boundary, UX/DX, diagnostics/capacity, and separately gated memory/evolution/extensions. Every area has a pass condition or explicit defer; this is not delivery of every Designed feature. Whole-body recovery must precede entrusting valuable data. Detailed public procedure is in the local candidate's
docs/summoning.mdacceptance section; no new umbrella issue was created.Bootstrap passes 3–4 — 15 October 2026
The existing migration, database-authority and production-factory two-boot selection passed 25/25 real PostgreSQL tests. Default Testcontainers first failed before PostgreSQL startup; a bounded Ryuk diagnostic captured Docker-socket permission denial and verified cleanup. No privileged/relabel workaround was applied.
A process-local no-Ryuk runner preserved those test oracles and verified exact owned cleanup. Separately, the new joined warm-Qwen test passed with production factory, real Dispatcher/Graph/Context/SAQ and disposable PostgreSQL: one streamed structured reply, identical settled turns/model history across two in-process lifespans, no second-boot inference, no lifecycle calls, and verified removal/unpublication. It used one cached pinned PostgreSQL container with loopback publication and explicit resource limits. Neither result qualifies the default Ryuk profile, independent process restart, crash recovery, installed Vessel or managed model lifecycle. Sanitized candidate receipt and freshness checks retain these boundaries; source remains local/uncommitted.
Next lifecycle boundary: preserve active-Vessel refusal. Before adding a port, settle authenticated installation-scoped admission and host-owned binding-generation revalidation through hand-off; process-cycle fencing is not an assumed requirement. Client Basic authentication, reflected generation or InvocationID alone does not establish server identity. The required strength must follow the accepted local threat model; compare a bounded identity-discriminator experiment before adopting a new mechanism. Reuse existing lifespan shutdown and prove Vessel-first ordering while DB/model remain available, bounded failure, no blind fallback/replay, and developer-fixture refusal. First light may record the published explicit host fallback; supported public stop/daily operation needs the settled contract and real-host receipt.
Lifecycle candidate — passes 5–9, 15 October 2026
Local uncommitted candidate on
58bbd720; public active completion remains disconnected. The installation-scoped machine route admits an inert signed request/reply without Basic credential disclosure, Sigil assignment, lifecycle-lock acquisition or host effects. Protocol revision 2 requires signednative-owned-lifespan@1and role tags@2; authentic v1, unknown/missing profiles and mismatched replies refuse. Only the captured native production entrypoint arms it; direct ASGI, publication alone, developer and caged entrypoints cannot. Withdrawal precedes signals/cancellation/worker-retirement awaits. Host control requires the exact owned native Vessel before admission; caged/mixed ownership refuses.The owned explicit application lifespan around embedded Granian propagates startup/close failure and waits for Python ASGI callbacks, including post-response work. Seven actual inert native TCP cases remain green. The closed native grammar and fixed image listener share that runner; no rebuilt caged image is qualified.
Actual generated-unit trial found the remaining blocker. Under one fresh exclusive delegated cgroup and private manager, the unchanged real native unit compiler/argv, explicit inert factory, real Scribe ownership/inventory/controller and signed HTTP exchange ran required-close failure before clean closure. The adverse case passed: exit-code/status 1, zero current PIDs, no restart/jobs, dependencies active and no dependent stop. The clean launcher closed, but systemd collected its unreferenced inactive unit before the next query; the reloaded object had ExecMainCode 0 and no invocation/execution timestamps. The strict controller correctly refused dependent stop. Both case cleanup and independently checked outer unit/cgroup cleanup passed; 21 critical source hashes were unchanged. Required clean qualification failed; no public wiring or weaker oracle was adopted.
Bind deliberately does not enable units;
[Install] WantedByalone creates no retention edge. A test-only Wants/enablement would hide the production gap. Pinned systemd explicitly rejectssystemctl --wait stop. Next bounded candidate: a production-owned persistent full-user-bus RefUnit reference through stop and strict terminal property capture, plus an isolated full-bus proof harness. One-shot busctl drops sender tracking; the current private peer socket cannot supply it. Retain CLD_EXITED=1/status0, Result=success, inactive/dead/zero PIDs, unchanged ownership and no jobs. Then rerun adverse/clean and connection-loss refusal before connecting public completion.Private bus/HOME alone did not isolate cgroups. The shared test helper now verifies an exact exclusive delegated outer service before any nested manager; installed units/shared cgroups are untouched. Actual native defaults stayed 90s stop timeout, control-group killing, SIGTERM, Restart=on-failure. No test tuning or new dependency in pass9.
Validation: profile243 focused tests, root483 architecture/CLI/operator tests; final ordinary
make check N=05,142 passed, 12 explicit optional skips, 237 container deselections; lint/format/strict types and clean docs passed. The native required case is one ordinary opt-in skip and its separate actual clean failure remains a blocker. Earlier full-gate harness failures (128-task exhaustion and protected~/.codexfixture data) are retained; corrected delegated gate used fresh ordinary /tmp data, effective512 tasks/peak310/no limit hits, unchanged50 candidate files and exact cleanup. No product oracle was relaxed.Actual warm-Qwen joined and independent-process receipts were refreshed once after source freeze: 44/45 selected source hashes, 21 dependency versions, one POST then zero after restart, retained history, no lifecycle calls and owned PostgreSQL cleanup. TestClient/refusing-actuator and deployed-body limits remain explicit.
No commit, push, image promotion, installed-unit/model lifecycle change, or issue closure.
[-]Lifecycle — start, readiness, stop & restart[/-][+]Runtime — reproduce one supported installation and lifecycle journey[/+]Stabilize Server provisioning and persistent filesystem ownership
Stabilize Server provisioning and persistent filesystem ownership (#148)