Skip to content

Decide AMS's own autonomy-level dial for iterate-policy.ts's decideNextAction #6060

Description

@JSONbored

Problem

packages/loopover-engine/src/miner/iterate-policy.ts's own header documents an explicitly deferred design gap: decideNextAction (the policy governing whether an iteration continues, hands off for auto-submission, or abandons) is "autonomy-level-agnostic today." The header names the intended reusable primitive — src/settings/autonomy.ts's resolveAutonomy/isActingAutonomyLevel, the existing deny-by-default pattern ORB already uses to gate maintainer actions — but says wiring it in is "explicitly left to a later phase," pending .loopover-miner.yml defining autonomy fields that don't exist yet.

Verified current state: packages/loopover-engine/src/ams-policy-spec.ts (the type .loopover-miner.yml parses into) has no autonomy-level field today, and decideNextAction never consults src/settings/autonomy.ts in any form.

Area

packages/loopover-engine/src/miner/iterate-policy.ts (the policy), packages/loopover-engine/src/ams-policy-spec.ts (the config surface that would need a new field), src/settings/autonomy.ts (the existing pattern to reuse). Adjacent to the Miner Wave 5 / Rent-a-Loop per-tenant autonomy work (#4782 "Third-party autonomy & security governance spec", #4885 and siblings) and the general contributor-vs-maintainer write-action boundary this repo already treats as maintainer-reviewed-design-first.

Proposal

Decide what an autonomy-level field on MinerGoalSpec/.loopover-miner.yml should mean for the miner's OWN self-directed loop (as distinct from Rent-a-Loop's customer-facing autonomy dial, which is a separate, already-tracked design question under #4782/Wave 5 — this issue is scoped to AMS's own single-operator self-hosted loop, not the hosted multi-tenant product): what levels exist, what each gates (does a lower level force "abandon" instead of "handoff" regardless of a clean predicted-gate pass? does it cap iteration count or write-action scope?), and how decideNextAction should consult resolveAutonomy/isActingAutonomyLevel without breaking today's deny-by-default posture (a repo with no autonomy field configured must behave exactly as it does today — default-OFF, byte-identical, per this repo's own house convention for every new knob).

Deliverables

  • A short ADR-style decision doc: the autonomy-level vocabulary for AMS's self-hosted loop, what each level actually gates in decideNextAction, and the .loopover-miner.yml/MinerGoalSpec field shape.
  • Once decided, this can be decomposed into concrete contributor-eligible implementation sub-issues (the wiring itself, once the shape is fixed, is a clear-precedent mechanical task like most of Miner Wave 4's work) — do not decompose before this decision lands.

Resources

  • packages/loopover-engine/src/miner/iterate-policy.ts (header's "AUTONOMY DIAL (not yet wired)" section, decideNextAction)
  • src/settings/autonomy.ts (resolveAutonomy/isActingAutonomyLevel, the pattern to reuse)
  • packages/loopover-engine/src/ams-policy-spec.ts (current config surface, no autonomy field yet)
  • #4782 (Third-party autonomy & security governance spec — the adjacent but distinct Rent-a-Loop customer-facing question)

Boundaries

This is a maintainer design decision, not a contributor implementation task: it touches the loop's own autonomous-write-action boundary (a trust/safety-critical control the "what's safe to unleash" framework reserves for maintainer-reviewed design first) and requires picking a config-surface shape with no existing precedent to follow mechanically. Do not decompose into contributor-open sub-issues until this decision is made.

maintainer-only — planning/decision issue, not itself a build task.

Metadata

Metadata

Assignees

No one assigned

    Labels

    maintainer-onlyOwner-only work — yields no Gittensor points.roadmapOn the Wave-2 agent-layer roadmap board (project 9)

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions