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.
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'sresolveAutonomy/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.ymldefining autonomy fields that don't exist yet.Verified current state:
packages/loopover-engine/src/ams-policy-spec.ts(the type.loopover-miner.ymlparses into) has no autonomy-level field today, anddecideNextActionnever consultssrc/settings/autonomy.tsin 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",#4885and 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.ymlshould 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 howdecideNextActionshould consultresolveAutonomy/isActingAutonomyLevelwithout 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
decideNextAction, and the.loopover-miner.yml/MinerGoalSpecfield shape.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.