Class: Rigor::CLI::SkillDeepProbe

Inherits:
Object
  • Object
show all
Defined in:
lib/rigor/cli/skill_deep_probe.rb

Overview

rigor skill describe --deep — the one part of describe that runs an analysis (issue #148; ADR-73 § "Field-trial follow-ups", the "headline check-awareness" open decision, shape (b)).

The boundary is this file. ADR-73 WD2 makes describe presence-only and side-effect-free, and that guardrail binds the un-flagged command exactly as before: SkillDescribe requires this file only when --deep was passed, so a default rigor skill describe never loads the inference engine, never opens a project source file, and writes nothing. --deep is the opt-in that trades that purity away: it runs a real rigor check over the configured paths using the configured cache and worker count, so it is as slow as rigor check on a cold cache and it WRITES .rigor/cache just like rigor check does.

The routing vocabulary is deliberately the one describe's "For the agent" section already teaches (errors → rigor-baseline-reduce, a proven monkey-patch cluster → rigor-monkeypatch-resolve, an empty RBS environment or a configuration-errorrigor-doctor). --deep makes the headline compute the call the agent would otherwise make from the same evidence; it does not introduce a second taxonomy.

Defined Under Namespace

Classes: Report

Constant Summary collapse

CONFIGURATION_ERROR_RULE =

Diagnostics the engine emits when the setup is broken rather than the code — the rigor-doctor signal.

"configuration-error"
MONKEY_PATCH_CLUSTER_SHARE =

The share of a run's errors that must be proven monkey-patches before the headline routes to rigor-monkeypatch-resolve rather than rigor-baseline-reduce. The agent-prompt vocabulary this reuses says "a monkey-patch cluster", and a cluster is what makes the workflow the right one: pre_eval: clears those sites wholesale, so it is the shortest path only when clearing them materially changes the count. One proven site beside four hundred unrelated errors is a true finding pointing at the wrong workflow — the report says so in the reason line either way, so nothing is lost by leaving the headline on the bigger problem.

Rational(1, 3)

Instance Method Summary collapse

Constructor Details

#initialize(config:, root: Dir.pwd) ⇒ SkillDeepProbe

Returns a new instance of SkillDeepProbe.

Parameters:

  • config (String, nil)

    the config filename the presence probe found, relative to root.

  • root (String) (defaults to: Dir.pwd)

    project root (the analysis itself resolves paths against the process cwd, as rigor check does).



50
51
52
53
# File 'lib/rigor/cli/skill_deep_probe.rb', line 50

def initialize(config:, root: Dir.pwd)
  @config = config
  @root = root
end

Instance Method Details

#runReport

Returns never raises — every failure degrades to a :error/:skipped report whose route is nil, leaving the presence-only headline in charge.

Returns:

  • (Report)

    never raises — every failure degrades to a :error/:skipped report whose route is nil, leaving the presence-only headline in charge.



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/rigor/cli/skill_deep_probe.rb', line 57

def run
  if @config.nil?
    return Report.new(
      status: :skipped, route: nil, reason: nil,
      detail: "skipped — this project has no Rigor configuration, so there is nothing to check yet."
    )
  end

  outcome = CheckInvocation.attempt(config_path: File.join(@root, @config))
  return failed(outcome.error) unless outcome.ran?

  classify(outcome.result)
end