Install
$ agentstack add skill-tenureai-phd-zero-run-governor ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Run Governor
Mission
Set and enforce run-level execution policy so research runs stay consistent, auditable, durable across long waits, and mode-aware.
Mode Selection Policy
At the start of a research run, ask the user to choose one mode:
full-auto
- Minimize user interruptions.
- Ask only for hard blockers or major safety risks.
- Keep ownership until compiled success criteria are met, or a true blocker/safety gate requires interruption.
moderate(recommended)
- Confirm during plan finalization.
- Confirm before high-resource actions.
detailed
- Ask when path is unclear.
- Ask before high-resource actions.
Additional rules:
- If the user explicitly asks to switch mode, switch immediately.
- If the user says "just do it" or equivalent, treat as a temporary switch to
full-autobehavior. - If mode selection is pending, keep the run in
pending-confirmationand do not initialize run artifacts. - Never auto-default mode from timeout. A mode must be explicitly confirmed by the user before initialization.
- After mode is selected, do not auto-continue after confirmation timeouts in non-
full-automodes. - While confirmation is pending, read-only intake, code inspection, and evidence gathering are allowed; creating run artifacts or launching jobs is not.
Persistent Completion Policy
When the user expresses persistence or target-seeking intent, compile it into run policy rather than treating it as stylistic wording.
Trigger phrases include examples such as:
- "keep iterating"
- "do not stop"
- "until target"
- "try many iterations"
- "optimize until it works"
- "reach 90%/100%" or similar target metrics
Required policy fields:
execution_intent:single-pass|persistent-optimizationcompletion_policy:normal|until-target-or-hard-blockerdone_guard:normal|forbid_done_if_target_unmetpromotion_gates: ordered thresholds such as "pass 30-case regression before 100-case sweep"non_regression_guards: conditions that must not degrade materiallybackup_policy: when to snapshot best-so-far prompts/configs/code/results
Rules:
full-autocontrols interruption frequency; it does not weaken persistence requirements.- If user intent is
persistent-optimization, one edit/test cycle is never sufficient reason to stop. - In
full-autopluspersistent-optimization, remain in the execution loop until one of these is true:
- compiled hard targets are met
- a true hard blocker remains after reasonable recovery attempts
- a major safety/resource gate requires approval
- the user explicitly stops or changes the objective
- If the target is aspirational but measurable, store both the stretch target and the current promotion gate.
- If the user asked to preserve strong variants, snapshot best-so-far artifacts before higher-risk changes.
Interaction Transport Policy
For user confirmations required by run initialization:
- Route confirmation requests through
human-checkpoint. - In
moderateordetailed, prefer built-in user-question tool (request_user_input). - If built-in tool is unavailable, degrade to concise plain-text questions.
- Record the channel as
interaction_transport=request_user_input|plain-text-fallback.
Execution Target Bootstrap
During run initialization, decide execution target before planning launch steps:
- ask whether this run executes on
localorremote - if
remote, load existing remote fields fromproject-context - ask user whether to reuse stored remote fields for this run
- if not reused or incomplete, collect only missing remote-required fields
- persist the final decision and resolved paths into run manifest and project-context
- if shared-memory retrieval/export is in scope, persist resolved shared repo metadata from
project-contextinto the run manifest
Remote-required fields:
execution.runtime_hostexecution.runtime_project_rootcluster.schedulerwhen scheduler-based launch is selected
Mode rules:
full-auto: if stored remote fields are complete, reuse by default; ask only on hard blockers.moderateanddetailed: explicitly confirm reuse choice.
Mandatory Human Confirmation Gate
Before creating any run files or directories, collect and confirm both fields from the user:
user_confirmed_modein{full-auto|moderate|detailed}user_confirmed_execution_targetin{local|remote}
Hard constraints:
- If either confirmation is missing, mark status
blocked-awaiting-user-confirmation. - While blocked, do not create
run_id, run directories, manifests, policy files, working files, reports, runtime snapshots, or background watchers. moderateis only a recommendation label and cannot be applied unless user-confirmed.- For
moderateordetailed, ask via built-in question tool first; if unavailable, use plain-text fallback. - If user asks to proceed without specifying values, ask a direct clarification question and remain blocked.
- Confirmation collection must be mediated by
human-checkpoint. - Any assumption for mode/target is non-compliant, even when likely.
Memory Bootstrap Gate
Before transitioning from initialization to execution workflow:
- Set
memory_policy=experience-first-continuousunless user explicitly overrides. - Ensure one
memory-managerbootstrap operation is complete:
retrieveorinit-workingfor current project/task context.
- If bootstrap is missing, mark status
blocked-awaiting-memory-bootstrap. - This gate enforces bootstrap plus retrieval policy declaration; ongoing retrieval cadence is enforced by
research-workflowandmemory-manager.
Durable Execution Policy
Treat long waits as first-class runtime state, not as something the model should silently "keep waiting" for.
Classify an action as long_action when any is true:
- expected duration is over 5 minutes
- action launches training, evaluation, inference batches, indexing, or remote jobs
- action uses
sleep, async polling, or scheduler submission - action is high-resource (
L2orL3) - action likely outlives the current model turn
For every long_action, do all of the following before waiting:
- create an action record under
actions/.yaml - persist:
action_idstatuskindcommandcwdexpected_duration_secondspoll_interval_secondslaunch_timelast_heartbeatnext_poll_atsuccess_signalfailure_signalresume_step
- if the command is launched locally, capture
pidand log path - immediately enter
watch mode
- if the current session remains active, use a poll loop (
model chooses sleep -> watch/poll -> inspect state -> model chooses next sleep) - if the action may outlive the current turn, start an external watch loop or automation before ending the turn
- never mark a
long_actiondone without an explicit poll/reconcile step - choose an initial poll interval, but keep control with the model
- scripts may store the chosen interval and suggested next poll time
- scripts must not become the primary owner of polling strategy
- the model may shorten or lengthen the next sleep after each poll
- keep ownership after launch
- launching a job is not sufficient completion
- after every poll, the agent must continue with monitoring, diagnosis, recovery, result collection, or replan
- do not hand the task back to the user only because the job is long-running
Allowed liveness states:
pendingrunningstalledfailedcompletedcancelled
Active Run Registry
Maintain these durable records in /logs/runs//:
actions/index.json
- list of active and historical
action_ids - last sweep time
actions/.yaml
- one persisted record per long action
actions/watch.log
- optional watcher loop output
Registry rules:
- scan the registry before each new planning cycle
- if
next_poll_at -
Prerequisite:
run_idcreation is allowed only afteruser_confirmed_modeanduser_confirmed_execution_targetare present.
Create and maintain:
- Control logs and reports:
/logs/runs//
- Runtime execution outputs:
/runs//
- Project context state:
/.project_local//
Do not mirror heavy runtime artifacts back to local logs by default.
Run Files
Maintain these files in /logs/runs//:
run_policy.yaml
- mode
- execution intent and completion policy
- compiled target gates and non-regression guards
- done guard and backup policy
- high-resource heuristic bands
- safety policy notes
- per-run action allowances
- watch policy
run_manifest.yaml
- local project root
- runtime project root
- runtime output root
- execution target (
local|remote) - runtime host (if remote)
- shared memory repo path/url/branch/sync policy when configured
- optional additional project roots
- output directory mapping
working/state.yaml
- objective, current phase, hypothesis, blockers, next step, active action ids
working/todo.yaml
todo_active,todo_done,todo_blocked
actions/index.json
- active action registry
actions/.yaml
- durable long-action state
reports/index.md
- stage list with status (
done|running|blocked), file paths, and last update time
Multi-Project and New-Topic Policy
- Default to one run bound to one primary project.
- Allow multiple project roots in one run only when they serve the same objective.
- If a user request appears mostly unrelated to the current objective, ask whether to start a new run.
- If user clearly states "new project/topic", ask to switch run.
Safety and Allowance Policy
When a risky action is encountered, provide choices:
- allow once
- allow same action type for this run
- disallow and stop
- user-defined handling
Treat potential large file deletion as major safety risk.
In full-auto, do not interrupt for non-major risks. Continue and record rationale in stage reports.
High-Resource Heuristic
Use approximate decision bands:
L1low: typically under 2 GPU-hours and under 20 USD equivalent.L2medium: roughly 2-10 GPU-hours or 20-100 USD equivalent.L3high: over 10 GPU-hours, over 100 USD equivalent, or long multi-node runs.
Before any L2 or L3 action:
- run targeted memory retrieval for relevant procedures and episodes
- create a long-action record if the job will not finish immediately
- persist a watch plan and a model-selected poll interval
- in
moderateanddetailed, confirm before launch - in
full-auto, proceed unless major safety risk is present - after launch, remain responsible for monitoring and post-poll handling until a true blocker or completion condition exists
Stage Reporting Contract
At each stage completion:
- Save one stage report file under
reports/. - Update
reports/index.mdstatus and timestamp. - In chat, provide a detailed stage summary plus report path.
- Do not require user reply just because a stage report was emitted.
- Include active long-action status when the stage depends on background work.
Required Output for Run-Governor Operations
For each run-governor action, emit:
Run: run_id and active modeAction: initialize, switch-mode, update-policy, new-topic-check, resume, watch-update, or stage-reportDecision: what was chosen and whyExecution: local/remote choice and reuse decisionPaths: affected control/output/context pathsCompletion: execution intent, completion policy, done guard, and active promotion gateNext: next actionable stepConfirmation:user_confirmed_mode,user_confirmed_execution_target, and whether initialization is permitted (YES|NO)Compliance:gate_status=pass|blocked, with blocked reason when applicableInteraction:interaction_transportand optionalfallback_reasonMemory:memory_policyandmemory_bootstrap_done=YES|NOLiveness: active action count, newly launched action ids, and whether reconciliation is clean (YES|NO)Watch:watch_mode=session-loop|external-loop|noneand next poll time when applicablePolling: current interval, next poll time, and whether the model revised the interval this cycleFollowup:continue-watch|collect-results|diagnose-stall|diagnose-failure|replan|checkpoint
Violation Recovery Policy
If initialization occurred before required confirmation:
- Immediately acknowledge non-compliance.
- Ask whether to keep or clean the created artifacts.
- Do not continue execution until user re-confirms
modeandexecution_target. - Record the incident and recovery choice in the next stage report.
If a long action was launched without a persisted action record:
- Stop normal planning.
- Reconstruct and persist the missing action record immediately.
- Reconcile log, pid, and latest output before continuing.
- Record the recovery step in the next stage report.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: TenureAI
- Source: TenureAI/PhD-Zero
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.