Skip to content

Configuration Surface

Reasoning behavior is configured at four boundaries: the problem specification, the execution policy, the command invocation, and the process environment. Keep all four with a run when reproducibility matters.

Problem specification

The JSON ProblemSpec is the durable input contract. Its constraints object also selects retrieval and evidence behavior:

Constraint Default Effect
needs_retrieval false use the local BM25 runtime when a corpus is available
corpus_path packaged small corpus when retrieval is requested and the fixture is available JSONL corpus used by local retrieval
chunk_chars 800 target chunk size
overlap_chars 120 character overlap between adjacent chunks
bm25_k1 1.2 BM25 term-frequency saturation
bm25_b 0.75 BM25 length normalization
min_supports_per_claim 2 minimum evidence references for a derived claim; values are clamped to at least one
max_citations minimum support count maximum citations selected for a derivation; never lower than the minimum support count

For example:

{
  "description": "Identify the evidence-supported conclusion",
  "constraints": {
    "needs_retrieval": true,
    "corpus_path": "data/corpus.jsonl",
    "chunk_chars": 800,
    "overlap_chars": 120,
    "bm25_k1": 1.2,
    "bm25_b": 0.75,
    "min_supports_per_claim": 2,
    "max_citations": 4
  }
}

Relative corpus paths are resolved from the process working directory. Use a pinned corpus file and record its digest rather than depending on mutable input.

Run and verification controls

The CLI run surface accepts the specification path, preset name, integer seed, artifact root, and --fail-on-verify. The content-derived run identifier includes the specification identifier, preset, seed, and runtime fingerprint; changing any of them intentionally creates a different run identity.

The Python executor additionally accepts ExecutionPolicy. Its defaults are fail_fast=True and min_supports_per_claim=2; a specification constraint can override the latter. Verification accepts strict, audit, or permissive policy mode. Replay has its own --fail-on-diff gate.

Environment controls

Variable Default Meaning
RAR_RETRIEVAL_CORPUS_MAX_BYTES 0 corpus byte ceiling; zero disables the ceiling
RAR_RUN_DISK_QUOTA_BYTES 0 run-directory disk ceiling; zero disables it
RAR_RUN_TIME_BUDGET_SEC 0 elapsed-time budget checked after execution; zero disables it
RAR_RUN_CPU_BUDGET_SEC 0 CPU-time budget checked after execution; zero disables it
RAR_API_TOKEN unset exact token required in x-api-token when configured
RAR_API_RATE_LIMIT 0 process-local request limit; zero disables rate limiting

The resource budgets are read when the run-artifact module is imported. Set them before starting the process. Time and CPU budgets are post-run checks, not preemptive cancellation controls.

The HTTP application accepts an artifact root when it is created; otherwise it uses artifacts/bijux-canon-reason. That root owns both run artifacts and the SQLite item store.