Files
adolf/extensions/open-prose/skills/prose/lib/inspector.prose
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

197 lines
5.3 KiB
Plaintext

# Post-Run Inspector
# Analyzes completed .prose runs for runtime fidelity and task effectiveness
#
# Usage:
# prose run @openprose/lib/inspector
#
# Inputs:
# run_path: Path to the run to inspect (e.g., .prose/runs/20260119-100000-abc123)
# depth: light | deep
# target: vm | task | all
#
# Compounding: Each inspection builds on prior inspections via persistent index agent.
# The index agent uses `persist: user` so inspection history spans all projects.
input run_path: "Path to the run to inspect (e.g., .prose/runs/20260119-100000-abc123)"
input depth: "Inspection depth: light or deep"
input target: "Evaluation target: vm, task, or all"
# ============================================================
# Agents
# ============================================================
agent index:
model: haiku
persist: user
prompt: """
You maintain the inspection registry across all projects.
Track: target_run_id, depth, target, timestamp, verdict.
Return JSON when queried. Store compactly.
"""
agent extractor:
model: sonnet
prompt: """
You extract structured data from .prose run artifacts.
Read state.md, bindings/, and logs carefully.
Return clean JSON.
"""
agent evaluator:
model: opus
prompt: """
You evaluate .prose runs with intelligent judgment.
Rate 1-10 with specific rationale. Be concrete.
"""
agent synthesizer:
model: sonnet
prompt: """
You produce clear reports in requested formats.
"""
# ============================================================
# Phase 0: Check Prior Work
# ============================================================
let prior = resume: index
prompt: """
Any prior inspections for: {run_path}?
Return JSON: { "inspections": [...], "has_light": bool, "has_deep": bool }
"""
# ============================================================
# Phase 1: Extraction
# ============================================================
let extraction = session: extractor
prompt: """
Extract from run at: {run_path}
Depth: {depth}
Prior work: {prior}
ALWAYS get:
- run_id (from path)
- completed (did state.md show completion?)
- error_count (failures in state.md)
- binding_names (list all bindings/)
- output_names (bindings with kind: output)
IF depth=deep AND no prior deep inspection:
- program_source (contents of program.prose)
- execution_summary (key statements from state.md)
- binding_previews (first 300 chars of each binding)
IF prior deep exists, skip deep extraction and note "using cached".
Return JSON.
"""
context: prior
# ============================================================
# Phase 2: Evaluation
# ============================================================
let evaluation = session: evaluator
prompt: """
Evaluate this run.
Target: {target}
Depth: {depth}
Data: {extraction}
Prior findings: {prior}
FOR vm (if target=vm or all):
- completion (1-10): Clean finish?
- binding_integrity (1-10): Expected outputs exist with content?
- vm_verdict: pass/partial/fail
- vm_notes: 1-2 sentences
FOR task (if target=task or all):
- output_substance (1-10): Outputs look real, not empty/error?
- goal_alignment (1-10): Based on program name, does output fit?
- task_verdict: pass/partial/fail
- task_notes: 1-2 sentences
IF depth=deep, add:
- fidelity (1-10): Execution trace matches program structure?
- efficiency (1-10): Reasonable number of steps for the job?
Return JSON with all applicable fields.
"""
context: extraction
# ============================================================
# Phase 3: Synthesis
# ============================================================
parallel:
verdict = session: synthesizer
prompt: """
Machine-readable verdict as JSON:
{
"run_id": "...",
"depth": "{depth}",
"target": "{target}",
"vm": { "verdict": "...", "scores": {...} },
"task": { "verdict": "...", "scores": {...} },
"flags": []
}
Data: {evaluation}
"""
context: evaluation
diagram = session: synthesizer
prompt: """
Simple mermaid flowchart of the run.
Show: inputs -> key steps -> outputs.
Use execution_summary if available, else infer from bindings.
Output only the mermaid code.
Data: {extraction}
"""
context: extraction
report = session: synthesizer
prompt: """
2-paragraph markdown summary:
1. What was inspected, key metrics
2. Findings and any recommendations
Data: {extraction}, {evaluation}
"""
context: { extraction, evaluation }
# ============================================================
# Phase 4: Register
# ============================================================
resume: index
prompt: """
Register this inspection:
run_path: {run_path}
depth: {depth}
target: {target}
verdict: {verdict}
Update your memory with this entry.
"""
context: verdict
# ============================================================
# Output
# ============================================================
output inspection = session: synthesizer
prompt: """
Combine into final output structure:
verdict_json: {verdict}
mermaid: {diagram}
summary: {report}
Return as JSON with these three fields.
"""
context: { verdict, diagram, report }