App

Current

Current

Version 1.00Source on GitHub

OVERVIEW

Current is Qompass AI's self-hosted AI runner in transition: the public repo still carries the upstream GitHub Actions Runner mirror (C#/.NET, `src/Runner.*`), while the Qompass-built product is the new small Rust local check runner in `runner/` — it runs a repo's declared checks on primo one at a time, with hard timeouts and capped logs, and records JSONL results locally with no telemetry. The v1 skeleton's `run` path is real; its `poll` and `sweep` triggers are documented stubs.

HOW IT WORKS

  1. 1Declare a repo's checks in a `.current.toml` manifest at the repo root — each `[[checks]]` entry names a check with a direct `argv` (no shell), a relative `workdir`, an optional `timeout_secs`, and optional `env`.
  2. 2Run `current run <repo> [check] [--results <path>]`: Current resolves the repo (a path, or a bare name under `$CURRENT_REPO_ROOTS`, then `~/.GH/Qompass`, then `~/workspace/repos`), loads its `.current.toml`, and runs the selected checks one at a time, in manifest order.
  3. 3Each check executes directly (no shell) with its workdir required to resolve inside the repo root; stdout/stderr are drained on separate threads with a 1 MiB retention cap per stream (draining continues past the cap; truncation is recorded), and a hard timeout kills and reaps the child.
  4. 4One JSON object per check is appended to the results log (`$CURRENT_RESULTS_LOG` or `~/.local/state/current/results.jsonl`) with verdict, timing, byte totals, truncation flag, and a bounded tail of each stream; nothing is sent anywhere.
  5. 5Read the exit code: 0 = all selected checks passed, 1 = a check failed or timed out, 2 = usage/manifest error.
  6. 6(Upstream mirror path, still in the repo) Configure a self-hosted Actions runner instead with the sample automation: export `RUNNER_CFG_PAT`, then run `scripts/create-latest-svc.sh` to download, register, and install the runner as a systemd/Launchd service.
How it works, step by step — each step as the project's own documentation states it.

CONCEPTS

DECLARED CHECKS — ONE AT A TIME — JSONL LEDGER.current.toml[[checks]] argv · workdir · timeoutRESOLVE REPOpath, or name under repo rootsRUN — ONE AT A TIMEmanifest order · no shellJSONL LEDGERone object per checkEVERY CHECK RUNS BOUNDEDdirect argv — no shell; workdir must resolve inside the repo roothard timeout kills and reaps the childstdout / stderr drained separately — 1 MiB kept per stream, truncation recordedexit 0 — all passedexit 1 — failed or timed outexit 2 — usage / manifest errorRESULTS STAY LOCAL — NO TELEMETRY, NOTHING IS SENT ANYWHERE
Current's check lifecycle — the project's own design, drawn from runner/README.md and the runner source: a repo declares checks in .current.toml, the runner executes them one at a time under hard timeouts and per-stream log caps, and appends one JSON object per check to a local results log. Exit codes: 0 pass, 1 failure or timeout, 2 usage or manifest error.

CONFIGURATION

OptionDefaultWhat it does
[[checks]] name— (required, must be unique)Check identifier used as `current run <repo> [check]` selector
[[checks]] argv— (required)Command as an argv array, executed directly with no shell; max 64 entries, max 4096 bytes per arg
[[checks]] workdir`"."` in the exampleWorking directory, relative only, must resolve inside the repo root
[[checks]] timeout_secs`300` (`TIMEOUT_SECS_DEFAULT`)Per-check hard timeout; allowed range 1..=86400 (24 h max)
[[checks]] env`{ }` in the exampleExtra environment variables for the check process
Manifest size / check count caps`65536` bytes / `32` checksBounded manifest parsing; unknown fields are rejected
Output retention cap1 MiB per streamRetained stdout/stderr per check; draining continues past the cap and truncation is recorded
CURRENT_REPO_ROOTSunset → falls back to `~/.GH/Qompass`, `~/workspace/repos`Colon-separated search roots for resolving a bare repo name
CURRENT_RESULTS_LOG~/.local/state/current/results.jsonlResults-log path override (or `--results <path>` per run)
Example manifest `repo` + checkrepo = "ghost"`; check `flake-qompass-25_05`, `timeout_secs = 3600Inaugural job: Ghost's `qompass-25_05` NixOS VM test via `nix build .#checks.x86_64-linux.x86_64-linux.qompass-25_05`

CONTROLS

ActionControl
Run a repo's checkscurrent run <repo> [check] [--results <path>]
Poll trigger (not implemented)`current poll <repo>` — refuses with exit 2 and a TODO message in the v1 skeleton
Nightly sweep (not implemented)`current sweep` — refuses with exit 2 and a TODO message in the v1 skeleton
Verify the runner itselfcargo fmt --all -- --check`; `cargo clippy --all-targets -- -D warnings`; `cargo test
Create a runner service (upstream mirror)`./create-latest-svc -s scope [-g ghe_domain] [-n name] [-u user] [-l labels]` with `RUNNER_CFG_PAT` exported
Remove a runner service / delete an offline runner (upstream mirror)scripts/remove-svc.sh`; `scripts/delete.sh

NOT COVERED

- Split identity: GitHub `main` and the primo `main` checkout both contain the full upstream actions/runner C# tree (`src/`) plus the Rust `runner/` skeleton (primo log: `108c646 feat(runner): Current v1 skeleton`, `144ddbc fix(runner): …` on top of the mirror tip); the mirror branch `mirror/actions-runner-2.323.0` is preserved locally on primo. Which surface the website should present as “Current” is a product call — this pack documents the Rust runner as the Qompass product and the C# tree as the carried mirror, per `runner/README.md` and the 2026-10-16 decision note (rebuild from scratch; do not carry the fork). - The governing spec (`~/workspace/current-rebuild/SPEC.md` in the estate workspace) is referenced by `runner/README.md` but lives outside the repo and was not read for this pack. - `poll` (git-fetch trigger) and `sweep` (nightly, systemd-timer-driven) are stubs by design; no daemon, schedule, or GitHub control-plane integration exists in the v1 skeleton, and no telemetry path exists in the code (per `runner/README.md`).

REFERENCES

  1. GitHub Actions Runner (upstream)Provenance and compatibility target only: Current's public repo still carries this upstream runner as a mirror, but the runner this page documents is Qompass AI's own Rust design — no external specification establishes it.