Implement researched Guix package outcome for #174: [Guix packaging] ulab-uiuc/LLMRouter #757

Open
opened 2026-09-21 21:17:57 +00:00 by tay · 2 comments
Owner

Context

This delivery ticket was created from research issue #174 ([Guix packaging] ulab-uiuc/LLMRouter).

The host-validated research finding follows:

Delivery is technically viable for a distinct, ordinary package named llmrouter; the existing channel artifact is only ulab-uiuc-llmrouter-source (source snapshot), not an equivalent installed package. Canonical origin: https://github.com/ulab-uiuc/LLMRouter at fixed revision 3dded2a139fb0c8a3de8f3fc4909e9d35e8f261c. Cloned checkout verified at that revision; recursive git submodule status returned no submodules, so the single MIT origin is sufficient. LICENSE is the complete MIT grant at that revision and pyproject.toml declares license file LICENSE plus MIT classifier; upstream project version is 0.3.1 and distribution name is llmrouter-lib. No equivalent llmrouter package exists in the local guix/tay tree. Define the Guix package as llmrouter in (tay packages llmrouter) with pyproject-build-system and the fixed commit. Populate propagated inputs from all 20 runtime requirements in pyproject.toml, mapping to existing Guix python inputs and the locally defined python-litellm; exclude optional vLLM/openai extras, credentials, and provider/network access from build. Build metadata declares Python >=3.10 and setuptools>=61/wheel; no Guix daemon is available here, so source-buildability is assessed from that declared toolchain, not proven. The installed executable is llmrouter. Its offline deterministic llmrouter list-routers subcommand imports the model registry and prints AVAILABLE ROUTERS plus router entries, without issuing provider requests or needing credentials; use it as the isolated meaningful runtime proof. Acceptance is guix lint, daemon-backed guix build, and the bounded-network-disabled screenshot proof asserting the exact marker.

Acceptance criteria

  • Implement the viable package change identified in the host-validated research finding.
  • Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding.
  • Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure.

Runtime evidence contract

Implementation workflow: guix-package-quality-gates
Reviewed contract file: .goocastle/runtime-evidence-contracts.json
Required proof phase: safe-package-proof; screenshot phase: runtime-screenshot
Evidence adapter: github-issue-comment
Copy this reviewed contract into the named file before running the package proof workflow.

{
  "version": 1,
  "contracts": [
    {
      "issueNumber": 757,
      "packageName": "llmrouter",
      "packageModulePath": "guix/tay/packages/llmrouter.scm",
      "artifactPath": ".goocastle/evidence/issue-757.png",
      "runtime": {
        "executable": "llmrouter",
        "invocation": {
          "file": "llmrouter",
          "args": [
            "list-routers"
          ]
        },
        "successMarker": "AVAILABLE ROUTERS"
      }
    }
  ]
}
<!-- goocastle-implementation-ticket:sequential-reviewer:174:1:implementation-ready --> ## Context This delivery ticket was created from research issue #174 ([Guix packaging] ulab-uiuc/LLMRouter). The host-validated research finding follows: Delivery is technically viable for a distinct, ordinary package named llmrouter; the existing channel artifact is only ulab-uiuc-llmrouter-source (source snapshot), not an equivalent installed package. Canonical origin: https://github.com/ulab-uiuc/LLMRouter at fixed revision 3dded2a139fb0c8a3de8f3fc4909e9d35e8f261c. Cloned checkout verified at that revision; recursive `git submodule status` returned no submodules, so the single MIT origin is sufficient. LICENSE is the complete MIT grant at that revision and pyproject.toml declares license file LICENSE plus MIT classifier; upstream project version is 0.3.1 and distribution name is llmrouter-lib. No equivalent llmrouter package exists in the local guix/tay tree. Define the Guix package as llmrouter in (tay packages llmrouter) with pyproject-build-system and the fixed commit. Populate propagated inputs from all 20 runtime requirements in pyproject.toml, mapping to existing Guix python inputs and the locally defined python-litellm; exclude optional vLLM/openai extras, credentials, and provider/network access from build. Build metadata declares Python >=3.10 and setuptools>=61/wheel; no Guix daemon is available here, so source-buildability is assessed from that declared toolchain, not proven. The installed executable is llmrouter. Its offline deterministic `llmrouter list-routers` subcommand imports the model registry and prints AVAILABLE ROUTERS plus router entries, without issuing provider requests or needing credentials; use it as the isolated meaningful runtime proof. Acceptance is guix lint, daemon-backed guix build, and the bounded-network-disabled screenshot proof asserting the exact marker. ## Acceptance criteria - Implement the viable package change identified in the host-validated research finding. - Preserve Guix source provenance, licensing, and deterministic build requirements recorded in the finding. - Add and pass a package-specific safe smoke proof using isolated HOME/XDG state before closure. <!-- goocastle-runtime-evidence-contract --> ## Runtime evidence contract Implementation workflow: `guix-package-quality-gates` Reviewed contract file: `.goocastle/runtime-evidence-contracts.json` Required proof phase: `safe-package-proof`; screenshot phase: `runtime-screenshot` Evidence adapter: `github-issue-comment` Copy this reviewed contract into the named file before running the package proof workflow. ```json { "version": 1, "contracts": [ { "issueNumber": 757, "packageName": "llmrouter", "packageModulePath": "guix/tay/packages/llmrouter.scm", "artifactPath": ".goocastle/evidence/issue-757.png", "runtime": { "executable": "llmrouter", "invocation": { "file": "llmrouter", "args": [ "list-routers" ] }, "successMarker": "AVAILABLE ROUTERS" } } ] } ``` <!-- goocastle-runtime-evidence-contract-end -->
Author
Owner

Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate.
The failure receipt and task branch provenance remain preserved; inspect the branch and repair the failing gate before retrying.

Bounded failure evidence:
Failed command: node /opt/goocastle/bin/guix-package-proof.mjs '--package-name' llmrouter '--module-path' guix/tay/packages/llmrouter.scm '--runtime-json' '{"executable":"llmrouter","invocation":{"file":"llmrouter","args":["list-routers"]},"successMarker":"AVAILABLE ROUTERS"}'
Exit status: 1
Final failure lines:
[stderr] Guix package proof failed: target module is missing or not a regular file: /workspace/guix/tay/packages/llmrouter.scm

<!-- goocastle-repair-blocked:757:safe-package-proof --> Goocastle blocked this ticket after the bounded repair budget was exhausted for the required command gate. The failure receipt and task branch provenance remain preserved; inspect the branch and repair the failing gate before retrying. Bounded failure evidence: Failed command: node /opt/goocastle/bin/guix-package-proof.mjs '--package-name' llmrouter '--module-path' guix/tay/packages/llmrouter.scm '--runtime-json' '{"executable":"llmrouter","invocation":{"file":"llmrouter","args":["list-routers"]},"successMarker":"AVAILABLE ROUTERS"}' Exit status: 1 Final failure lines: [stderr] Guix package proof failed: target module is missing or not a regular file: /workspace/guix/tay/packages/llmrouter.scm
Author
Owner

OMP work update: source implementation and dependency work are in progress, but this delivery is NOT proved or closed. Local one-core builds were externally terminated with SIGTERM under severe memory/swap pressure; the exact killer remains unconfirmed because /var/log/earlyoom.log requires sudo (noninteractive sudo was denied). Live earlyoom configuration and full swap make userspace memory protection the leading explanation, not a compiler error. The user chose to continue lighter issues first. No memory protection, vault state, host service or installed profile changes were made. Successful prerequisite builds do not substitute for this package’s full build/reproducibility/isolated runtime/screenshot acceptance.

OMP work update: source implementation and dependency work are in progress, but this delivery is NOT proved or closed. Local one-core builds were externally terminated with SIGTERM under severe memory/swap pressure; the exact killer remains unconfirmed because /var/log/earlyoom.log requires sudo (noninteractive sudo was denied). Live earlyoom configuration and full swap make userspace memory protection the leading explanation, not a compiler error. The user chose to continue lighter issues first. No memory protection, vault state, host service or installed profile changes were made. Successful prerequisite builds do not substitute for this package’s full build/reproducibility/isolated runtime/screenshot acceptance.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#757
No description provided.