harn-stdlib 0.10.152

Embedded Harn standard library source catalog
Documentation
import { CompletionEvidenceSnapshot } from "std/agent/completion_evidence"
import {
  CompletionPrecheckConfig,
  CompletionPrecheckFacts,
  CompletionPrecheckInput,
  CompletionPrecheckRequirement,
  CompletionPrecheckResult,
  completion_precheck,
} from "std/agent/completion_precheck"
import { CompletionRequirementReport } from "std/agent/completion_requirements"

/**
 * Project the owning ledger and verifier without interpreting tool-name prose.
 *
 * @effects: [host, llm.call]
 * @errors: ["fact resolver failure", "invalid evaluation policy"]
 */
pub fn completion_precheck_from_snapshot(
  llm: HarnessLlm,
  config: CompletionPrecheckConfig,
  snapshot: CompletionEvidenceSnapshot,
  ledger: CompletionRequirementReport,
) -> CompletionPrecheckResult {
  const unknown_facts: CompletionPrecheckFacts = {
    commit: {observed: nil, evidence_refs: []},
    pull_request: {observed: nil, evidence_refs: []},
  }
  const facts = if config.facts != nil {
    config.facts(snapshot.session_id, snapshot.evidence_id)
  } else {
    unknown_facts
  }
  let acceptance: list<CompletionPrecheckRequirement> = []
  for row in ledger.rows {
    acceptance = acceptance
      + [
        {
          id: row.requirement_id,
          name: row.name,
          met: if row.status == "met" {
            true
          } else if row.status == "unmet" {
            false
          } else {
            nil
          },
          evidence_refs: row.evidence_refs.map(fn(index) { return "evidence:${index}" }).to_list(),
        },
      ]
  }
  const verification = snapshot.verification
  const input: CompletionPrecheckInput = {
    acceptance: acceptance,
    verification: if verification == nil {
      []
    } else {
      [
        {
          name: verification.command,
          outcome: verification.observed,
          evidence_refs: if verification.observed_at_evidence_index == nil {
            []
          } else {
            ["evidence:${verification.observed_at_evidence_index}"]
          },
        },
      ]
    },
    commit: facts.commit,
    pull_request: facts.pull_request,
    last_claim: snapshot.last_text,
  }
  // The existing full judge owns interpreting an amended goal. Do not veto
  // against a stale acceptance projection while it resolves that amendment.
  if len(snapshot.obligations?.steers ?? []) > 0 || snapshot.obligations?.accepted_stop != nil {
    return {
      action: "full_judge",
      reason: "amended_obligations",
      input_digest: "sha256:" + sha256(json_stringify(input)),
    }
  }
  return completion_precheck(llm, input, config.policy)
}