research-direction-selector · v5.8.0 · 2026-10-04 · sha256 d7c1016de2959053

research-direction-selector v5.8.0A

Immutable. This exact content never changes and is served at /api/v1/blob/d7c1016de2959053.

---
name: research-direction-selector
description: Choose and audit theoretical or empirical research steps with scoped evidence, budgets and authorized execution. Supports proof obligations, experiment comparisons and native research records; domain-specific solvers and scientific evidence are still required.
metadata:
  version: v5.8.0
  engine: rds-cli-v5.8
---

# Research Direction Selector

Agent pseudocode; not an executable language or a new kernel contract.

In a workspace-write sandbox, the CLI automatically records usage under
`<project_root>/.rds/usage/cli-usage.sqlite3` if its default user-state log is
unavailable because of permissions or read-only storage. Help is included. Pass
the intended `--root`; no environment workaround is needed for a successful
fallback. An explicit `RDS_USAGE_DB` remains authoritative. If both locations
are unavailable, `RDS-USAGE-DEGRADED` still preserves the command result; see
[usage logging](docs/cli-usage.md).

```text
DISCOVER: name + description
ON applicable research request:
    LOAD this SKILL.md
    skill_dir := directory containing this file
    project_root := user's research project
    CLI := python -B "<skill_dir>/scripts/rds_cli.py" --root "<project_root>"
    RESOLVE bundled scripts/references/examples relative to skill_dir
    RESOLVE user inputs explicitly; NEVER create .rds in installation/plugin cache
    LOAD supporting resources only when the current decision needs them

    INPUT := user request + current project evidence + authorized resources
    INFER goal, acceptance, evidence, budget FROM INPUT; NEVER invent them
    IF evaluation is missing: define a minimal protocol BEFORE material commitment
    ASK only for an uninferable material goal, method, or resource choice
    KEEP missing evidence = UNKNOWN; preserve existing authorization and gates
    BRANCH via the route table below
    IF the needed capability is outside the quick routes:
        READ docs/command-map.md; SELECT the supported entry and its prerequisites
        CHECK CLI <command path> --help (or the documented helper's --help)
        USE only the capability needed for this task; DO NOT run the whole catalog

    IF new goal-driven campaign:
        FREEZE the actual objective, permitted routes, result readers and budget
               in advisor_policy; see docs/program-owned-advisor.md
        RETAIN serious alternatives/explanations and their distinguishing observations
    IF project has advisor_policy:
        RUN advise --brief FROM the current ledger and owned dependency graph
        READ selection, coverage gaps/errors and the saved report when needed
        RUN project advance --brief FOR at most one program-selected authorized step
        KEEP original receipt + automatic Advisor update; unknown remains UNKNOWN
        IF advisor_policy declares tool_bindings:
            READ tool_utilization FOR obligation applicability, actual calls and decision consumers
            USE only qualified current-input candidates within frozen routes and budget
            KEEP UNKNOWN and unconsumed outputs visible; do not optimize for command counts
            READ docs/owned-tool-consumers.md FOR the finite native application interface
        IF collection failed: recover collection; NEVER repeat completed training
        IF predictive plan is blocked or a method failed:
            READ docs/predictive-feasibility.md and the returned repair_request
            RUN project improve FOR an already authorized code path
            USE receipt diagnostics + source hints TO create/improve a tool
            EDIT candidate; refresh improve; adopt project revise in the same ledger
            REQUIRE fresh bounded pilots + unchanged independent goal verification
            KEEP failed costs, attempts, exposure and original campaign deadline
            IF no authorized viable method remains: REPORT that outcome
        NEVER replace context/graph/choice OR bypass with quick/theory allowance
    ELSE IF substantive research direction choice:
        SUPPLY serious alternatives/explanations + sources + distinguishing observation
        IF project has a saved dependency map: ADD --saved-dependencies TO advise
        READ the returned search.selection_review: basis, flags, relevant next_move
        IF brief output omits decision-critical detail: READ its saved record
        CHECK single direction, missing/overlapping predictions, unknown premises,
              truncated search, and submitted goal/dependency links
        REPAIR consequential gaps OR state the comparison still unresolved
        EXPLAIN why this next step follows from the evidence BEFORE --choose
        RECOMMEND one default + at most one serious alternative
        INCLUDE deciding observation, fair comparison, stop/revision condition
        DO NOT equate a preselected candidate + recording/budget checks with comparison
        DO NOT use a later call to endorse an already executed route
    IF fixed user-requested task OR single proof obligation:
        KEEP the requested scope; DO NOT invent rival experiments
    NOTE: program checks only supplied inputs; omitted dependencies remain unassessed
          review/recording grants no new resources or execution authority

    AFTER campaign-changing command:
        READ project status --brief OR project next
        REBIND printed scripts/rds_cli.py commands TO CLI above; preserve arguments
        FOLLOW ledger-derived next_move within existing authorization
    REPORT actual backend + assurance; unresolved results stay UNKNOWN
    KEEP runner, Lean, RSI optional; Advisor/rule lint remain heuristic
    NEVER infer scientific acceptance FROM exit 0, self-signed success, or call count
```

## Routes

All commands below use `CLI` above. Links load detail on demand.

| Trigger | Command | Detail |
| --- | --- | --- |
| First plain-language request | Follow [quick start](docs/quickstart.md): copyable prompts, first project, `[RDS-REJECT]` recovery | [Project runner](examples/project-runner/README.md) |
| Start locked campaign | `project init --contract <contract.json>`; freeze `advisor_policy` for program-owned selection | [Contract template](docs/project-contract.md), [owned Advisor](docs/program-owned-advisor.md) |
| Advance campaign | `project next` to inspect; `project advance --brief` executes one selected step in a policy-bound project | [Owned Advisor](docs/program-owned-advisor.md), [development loop](docs/development-loop.md) |
| Improve a blocked tool | `project improve --code-path <path> --id <revision>`, then `project revise --proposal <path>` | [Forecasts and tool improvement](docs/predictive-feasibility.md) |
| Choose research direction | Policy-bound: `advise --brief`; legacy: `advise --context <context.json> --graph <graph.json> --brief`, then `--choose <candidate-id> --record <checkpoint-id>` | [Choice review](docs/agent-entry.md#review-the-research-choice), [research discipline](references/research-discipline.md) |
| Audit evidence | `artifacts import --manifest <manifest.json>` | [Agent entry](docs/agent-entry.md) |
| Check mathematical claim | `formal verify --spec <spec.json>`; select a supported tactic when needed | [Formal framework](references/formal_framework.md) |
| Reuse/register local tool | `rsi extract --source <file> --entry <function> --name <id>`; `rsi validate --name <id> --cases <cases.json>`; `rsi register --name <id>` | [Native research](docs/native-research.md) |
| Wrap frozen job | `exec --name <id> --timeout 30 -- <command...>` | [Command wrapper](docs/agent-entry.md#wrap-a-command) |
| Record decision/rejection | `checkpoint save --id <id> --decision <decision.json>` (kind from root); or `reject --reason '<text>' --evidence <file>` (current choice) | [Local decision workflow](docs/lightweight-workflow.md) |

## Visible invocation status

```text
ON actual Skill load, before this task's first CLI call:
    SHOW "RDS | loaded, not invoked"
ON meaningful CLI event:
    dispatch           -> "RDS | {command}: running"
    host/tool error    -> "RDS | {command}: error"
    known nonzero exit -> "RDS | {command}: nonzero exit"
    known zero exit    -> "RDS | {command}: returned"
    unknown result     -> "RDS | {command}: result unknown"
SHOW one short line FROM observed events; OMIT unchanged/host-displayed duplicates
NEVER add calls for display; KEEP existing receipts/record locators, no required hash
session start != Skill loaded != CLI invoked
returned != sufficient comparison != proof != scientific acceptance
```

## Conditional resources

- Program-owned collection, route selection, recovery and CPU example: [owned Advisor](docs/program-owned-advisor.md)
- All public CLI commands, Advisor modes and supported helper entries: [command map](docs/command-map.md)
- Goal links, method limits, theory/experiment acceptance: [agent entry](docs/agent-entry.md)
- Evidence classes, controls, precommitted comparison: [research discipline](references/research-discipline.md)
- Capacity and parallel batches: [resource planning](docs/resource-planning.md)
- Stalled formulation or theory-tool lookup: [theory reformulation](docs/theory-reformulation.md)
- Anti-loop checkpoint review: [local decision workflow](docs/lightweight-workflow.md)
- Formal scope, UNKNOWN, `CERTIFICATE_CHECKED`, `LEAN_KERNEL_CHECKED`: [formal framework](references/formal_framework.md)
- Native objectives, assets, reusable tools: [native research](docs/native-research.md)
- Optional scoped history: [Obelisk](references/obelisk.md)
- Explicitly opted-in preferences only: [optional preferences](references/optional-preferences.md)