-
-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy path.loopover-ams.yml.example
More file actions
73 lines (66 loc) · 3.52 KB
/
Copy path.loopover-ams.yml.example
File metadata and controls
73 lines (66 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# ============================================================================
# .loopover-ams.yml - operator execution policy (EXAMPLE)
# ============================================================================
# This is the OPERATOR's own execution-risk policy for their autonomous miner
# (AMS) -- a deliberate structural sibling to `.loopover-miner.yml`
# (MinerGoalSpec), but answering a different question. MinerGoalSpec is what a
# TARGET REPO wants from being mined (paths, labels, whether it's minable at
# all). This file is how aggressive the OPERATOR wants their own agent to be
# (submission mode, slop threshold, per-attempt budget/turn/time ceilings). No
# field here ever lets a target repo loosen what an operator's agent is
# willing to do -- see below for why.
#
# OPERATOR-LOCAL ONLY: the miner reads this file from the operator's local
# loopover-miner config dir. It intentionally does not fetch a target repo's
# checked-in AMS policy, because untrusted repo content must not loosen
# operator-side budget, turn, slop, or submission controls.
#
# Every field is OPTIONAL and has a safe, deny-by-default default (shown as
# "Default: X" below). The file is parsed tolerantly: an unknown key is
# ignored, and a single malformed field falls back to its default with a
# warning.
#
# Copy to `.loopover-ams.yml` and edit. YAML or JSON are both accepted.
# Whether a real attempt is allowed to actually submit (open a PR), or only
# compute + log its decision. "observe" still runs every real signal/decision
# for real, it just never lets the result become a real write -- the safe
# default for calibrating against live traffic before trusting it.
# Values: observe | enforce. Default: observe.
submissionMode: observe
# The strictest self-review slop band still allowed to reach submission.
# Lower is stricter: "clean" only lets the cleanest band through.
# Values: clean | low | elevated | high. Default: low.
slopThreshold: low
# Governor cap ceilings for one attempt (budget-cap.ts). `budget` may be
# fractional (e.g. a dollar cost); `turns` is a whole-count ceiling;
# `elapsedMs` is a termination ceiling in milliseconds.
# Default: { budget: 5, turns: 20, elapsedMs: 1800000 } (30 minutes).
capLimits:
budget: 5
turns: 20
elapsedMs: 1800000
# Non-convergence detector thresholds (non-convergence.ts): streak lengths at
# which a still-unfinished portfolio-queue item reads non-convergent.
# Default: { maxConsecutiveFailures: 3, maxReenqueues: 3 }.
convergenceThresholds:
maxConsecutiveFailures: 3
maxReenqueues: 3
# Hard ceiling on the iterate loop's own iteration count for one attempt.
# A non-integer is floored; 0 abandons before the first driver invocation.
# Default: 3.
maxIterations: 3
# Per-iteration turn budget passed to the coding-agent driver.
# A non-integer is floored. Default: 6.
maxTurnsPerIteration: 6
# Network-egress allowlist additions (#7857) for the sandboxed coding-agent
# execution environment, on top of the always-on defaults (OS package
# registries, GitHub -- the target repo's own git remote). Enforced deny-by-
# default: an attempt can reach exactly these hosts plus the always-on
# defaults, nothing else. `ecosystems` picks whole registry categories (their
# real hostnames are resolved internally, e.g. `npm` -> registry.npmjs.org);
# `extraHosts` allows specific additional hostnames (e.g. a project's own
# third-party API). Values for ecosystems: npm | pypi | crates | go |
# rubygems | packagist | maven | nuget. Default: { ecosystems: [], extraHosts: [] }.
networkAllowlist:
ecosystems: []
extraHosts: []