Loop Engineering Overview

Deep Dive: Reliability & Governance cho Agent Loops

Từ báo cáo Loop Engineering Overview: vì sao recurring autonomy chỉ đáng tin khi evidence, state, permissions và human ownership cùng tồn tại.
Báo cáo cha: ← OverviewTopic: Reliability & GovernanceAnti-patterns: 9Ngày: 2026-07-19

Reliability là một control problem, không phải confidence problem Thesis

Agent có thể sinh nhiều attempt hơn, nhưng số attempt không tự tạo độ tin cậy. Reliability xuất hiện khi mỗi transition được gate bởi evidence độc lập, mọi material state sống ngoài context, quyền hành động bị khoanh, budget có hard stop và ambiguity có named owner. Nói gọn: backpressure + memory + containment + accountability.

Confidence là tín hiệu nội bộ của actor; reliability là thuộc tính quan sát được của toàn hệ thống qua thời gian. Một agent có thể tự tin nhưng sai, hoặc thiếu tự tin nhưng tạo patch đúng. Vì vậy completion không nên phụ thuộc vào cách model mô tả kết quả mà vào việc môi trường có thỏa acceptance criteria, side effect có nằm trong scope và transition có tuân policy hay không.

Recurrence làm đổi risk profile. Một lỗi hiếm trong một run có thể trở thành lỗi thường xuyên khi chạy hàng giờ; một write nhỏ có thể tích lũy thành data corruption; một false positive của evaluator có thể dần trở thành policy thực tế. Reliability của loop vì thế không chỉ là tăng task success mà là giới hạn cách failure lặp, lan và tích lũy.

Bốn từ trong luận đề tương ứng bốn cơ chế. Backpressure ngăn actor tiếp tục khi evidence không đạt. Memory giữ lịch sử đủ để không lặp mù. Containment giới hạn authority và side effect. Accountability nối decision với receipt và owner. Thiếu một cơ chế, ba cơ chế còn lại có thể giảm hậu quả nhưng không đóng được failure path.

6.549 Repos scanned IAL-Scan evaluation
68 Confirmed IALs Across 47 projects
91,9% Precision Manual review of findings
Empirical warning: Hou et al. mô tả infinite agentic loops là feedback paths có thể tiếp tục chạm model calls, tools, handoffs hoặc state-growing operations mà không có effective bound. Hậu quả gồm cost exhaustion, context growth, model denial of service và repeated external side effects.

Kết quả của Hou et al. nên được đọc như bằng chứng về một class of failure, không phải ước lượng prevalence cho mọi agent system. Giá trị của nghiên cứu nằm ở việc chỉ ra effective bounds phải bao phủ cả control flow lẫn resource-growing operations: model call, tool call, delegation, state append và external write. Một vòng có giới hạn iteration nhưng mỗi iteration spawn vô hạn vẫn không bounded về mặt vận hành.

Lifecycle của Loop Engineering với verification, persist và decision dẫn tới retry, escalation hoặc exit
Reliability nằm ở cạnh sau Verify: persist evidence rồi policy mới quyết định retry, escalate hoặc exit. ↗ Loop lifecycle

Threat map: bốn failure families Threat model

Threat model bắt đầu bằng assets và boundaries, không bắt đầu bằng danh sách model weakness. Assets có thể là source code, production data, budget, credential, reviewer attention hoặc uy tín của notification channel. Boundary là nơi untrusted input trở thành context, actor request trở thành tool action, evidence trở thành decision, hoặc state của run này trở thành context của run sau.

Chín anti-pattern trong repo quy về bốn root causes có thể kiểm soát bằng contract.

flowchart TD
  A["Weak or missing contract"] --> A1["Invented work / scope creep"]
  A --> A2["Generic automation rebranded"]
  B["Weak evidence"] --> B1["Model self-approval"]
  B --> B2["False completion"]
  C["Hidden or corrupt state"] --> C1["Repeated attempts"]
  C --> C2["Duplicate side effects"]
  D["Unbounded autonomy"] --> D1["Infinite retry / cost"]
  D --> D2["Unsafe production action"]
  D --> D3["No escalation path"]

Weak contract gây selection failure trước khi reasoning bắt đầu: job được đánh thức sai lúc, nhận stale item, mở rộng objective hoặc không có no-work path. Đây là lý do một model mạnh không cứu được intake xấu. Nó có thể thực hiện rất tốt công việc mà hệ thống lẽ ra không được chọn.

Weak evidence tạo false completion; hidden state tạo repeated work; unbounded autonomy biến hai lỗi trên thành incident kéo dài. Bốn family có quan hệ khuếch đại: verifier sai ghi decision sai vào state, run sau tin state đó, broad permission tiếp tục tạo side effect và retry policy làm lỗi lặp lại.

Loop Contract cards nhấn mạnh verification, state, budget, escalation và exit
Reliability controls không phải add-on: chúng là phần bắt buộc của cùng một contract. ↗ Loop Engineering Manifesto

Governance vì thế không phải lớp approval phủ lên cuối pipeline. Verification, state, budget, escalation và exit phải được thiết kế cùng objective và workspace trong contract. Nếu chỉ thêm human approval cho action cuối, con người vẫn có thể nhận một evidence bundle sai, thiếu lịch sử hoặc được tạo sau hàng chục attempt ngoài scope.

Bốn lớp kiểm soát Controls

1. Xây verification hierarchy thay vì một checker duy nhất

R.1
README.md#verification-and-feedback-gates · MANIFESTO.md
Mọi verifier đều là proxy cho intent. Deterministic check mạnh ở property cụ thể; evaluator mạnh ở rubric mềm; human mạnh ở judgment và authority. Reliability đến từ composition và conflict policy, không từ một “judge” tuyệt đối.

Verification hierarchy nên đi từ property rẻ và khách quan đến judgment đắt và giàu ngữ cảnh. Syntax, schema và exit code chạy trước để loại candidate rõ ràng sai; invariant và diff guard kiểm scope; eval đo quality trên sample; human chỉ nhận case vượt khỏi khả năng nén thành rule. Trình tự này bảo toàn review bandwidth mà không biến human thành người chạy lại kiểm tra cơ học.

GateMạnh ởĐiểm mùDùng làm exit?
Exit code / test / schemaDeterministic, cheap, repeatableChỉ kiểm tra điều được encode, cho acceptance cụ thể
Policy/diff guardScope, path, permission, invariantCó thể miss semantic harm, như gate bổ sung
Metric/eval thresholdQuality distribution, regressionDrift, gaming, noisy sampleCó, với frozen set + tolerance
LLM evaluatorRubric/ngôn ngữ/open-ended critiqueBias, self-preference, varianceKhông đơn độc cho high impact
Human reviewerAmbiguity, product/security judgmentLatency và review bandwidthBắt buộc ở approval boundary

Nhiều gate không tự động tốt hơn. Chúng cần conflict policy và precedence. Test xanh nhưng policy guard phát hiện file ngoài scope phải fail; metric tăng nhưng frozen benchmark giảm phải block; LLM judge pass nhưng deterministic invariant fail không được lấy trung bình. Gate composition là logic quyết định, không phải bỏ phiếu tùy tiện.

Maker-checker chỉ hữu ích khi checker thực sự độc lập
  • Checker đọc acceptance criteria và raw evidence, không chỉ summary của maker.
  • Maker không sửa được verifier, benchmark, policy hoặc approval record.
  • Disagreement có policy: rerun, third judge hoặc named human; không vote vô hạn.
  • Checker output cũng là receipt, không chỉ boolean.

Independence có ba chiều: evidence independence — checker đọc raw artifact; authority independence — maker không sửa gate hay approval; và incentive independence — checker không bị tối ưu chỉ để làm throughput trông đẹp. Tách role bằng hai prompt nhưng dùng cùng summary và credential không đạt cả ba chiều.

Verifier cũng có lifecycle riêng. Test, rubric và threshold drift khi product thay đổi; false-positive và false-negative cần được incident hóa; version của gate phải xuất hiện trong receipt. Nếu agent được tối ưu lâu dài theo một verifier tĩnh, team cần monitor gaming và bổ sung holdout hoặc spot review. External không có nghĩa immutable mãi mãi; nó nghĩa thay đổi phải đi qua authority khác actor.

Ưu điểm
  • Layered gates giảm false completion ở nhiều failure class.
  • Deterministic evidence giúp retry có tín hiệu rõ.
  • Human review được tập trung vào judgment thay vì kiểm tra cơ học.
Nhược điểm
  • Nhiều gate tăng latency và có thể mâu thuẫn.
  • Eval/judge có thể bị gaming hoặc drift.
  • Verifier maintenance trở thành một product surface riêng.

2. Durable state và receipts biến cold runs thành một hệ thống liên tục

R.2
TAXONOMY.md · examples/runnable/README.md
Context không phải system of record. Run sau phải biết item nào đã xử lý, attempt nào thất bại, evidence nào còn hiệu lực, side effect nào đã commit và next action là gì mà không tin vào model memory.

Một cold run đáng tin phải khởi động từ persisted facts chứ không từ narrative memory. Nó cần reconstruct item, input version, phase, committed action, latest evidence, budget đã dùng và owner hiện tại. Context cho model có thể được dựng lại từ facts này; ngược lại, facts không nên được suy ngược từ một summary vốn có thể bỏ sót hoặc diễn giải sai.

ArtifactNội dungUpdate point
Checkpointitem ID, phase, attempt, owner, next actionTrước/sau material transition
Evidence receiptcommands, outputs, traces, URLs, screenshots, diffNgay khi observation sinh ra
Decision recordpolicy branch, reason, residual riskTrước retry/handoff/exit
Idempotency ledgerprocessed IDs, side-effect key, last successTrước và sau external write
Human handoffblocker, attempts, evidence, question cần quyếtKhi escalation condition hit

State, evidence và decision record là ba bảng logic khác nhau. State là current projection; evidence là append-only observation; decision record là causal link giữa observation và transition. Tách chúng giúp replay quyết định, audit model/runtime version và sửa projection khi bug mà không mất raw history. Một file progress prose có thể hữu ích cho người đọc nhưng yếu như system of record.

Receipt tối thiểu đủ để audit và resume

JSON
{
  "run_id": "ci-2026-07-19-0042",
  "item_id": "pr-381/check-test-linux",
  "attempt": 2,
  "observed_sha": "8f3c1a2",
  "commands": ["pytest tests/auth -q"],
  "changed_files": ["src/auth/token.py", "tests/auth/test_token.py"],
  "verification": { "exit_code": 0, "artifact_url": "..." },
  "decision": "exit-success",
  "stop_reason": "original failing command passed",
  "next_action": null
}
Rule thực dụng: state trả lời “hệ thống đang ở đâu”; evidence trả lời “điều gì đã quan sát”; decision record trả lời “vì sao đi cạnh này”. Không gom cả ba thành một prose summary khó parse.

Exactly-once thường không khả thi khi action chạm external system; mục tiêu thực tế là effectively-once bằng idempotency key và reconciliation. Trước write, ledger ghi intent với operation key; sau write, ghi external ID và result. Nếu crash ở giữa, run sau query external state thay vì lặp mù. Đây là nơi agent loop thừa hưởng discipline của distributed workflow, không thể giải bằng prompt “đừng làm trùng”.

Receipt cần đủ chi tiết để trả lời nhưng không trở thành data leak. Raw log có thể chứa secret, user data hoặc prompt-injection payload; retention vô hạn tăng attack surface. Contract nên chỉ định redaction, access control, retention và pointer tới artifact lớn. Observability tốt là evidence tối thiểu có ích, không phải dump mọi context.

Ưu điểm
  • Crash recovery và resume không cần model nhớ conversation cũ.
  • Dedupe/idempotency giảm repeated side effects.
  • Audit và incident debugging có causal trail.
Nhược điểm
  • Schema/state migration và retention cần được quản trị.
  • Receipt quá nhiều tạo storage/noise và có thể lộ sensitive data.
  • Checkpoint không atomic vẫn có thể gây split-brain state.

3. Budget và termination phải là policy đa chiều

R.3
ANTI-PATTERNS.md · arXiv:2607.01641
Max iterations là chưa đủ. Một attempt có thể kéo dài, spawn agents, gọi tools tốn tiền hoặc tạo side effect. Budget cần retries, wall time, token/cost, concurrency và blast radius; stop rule cần nhìn repeated evidence.

Budget là risk envelope được biểu diễn bằng tài nguyên. Retry cap giới hạn số hypothesis; wall time giới hạn thời gian chiếm worker; cost cap giới hạn economics; concurrency cap bảo vệ downstream; mutation cap giới hạn blast radius. Chỉ dùng max turns bỏ qua việc một turn có thể gọi hàng trăm tool hoặc tạo một action không thể đảo ngược.

DimensionHard boundEarly-stop signal
RetryPer item/per blockerSame normalized failure lặp lại
Wall timeRun deadline + per-command timeoutNo progress checkpoint trong window
Token/costPer run/day/itemMarginal evidence không đổi
ConcurrencyWorkers + external API callsQueue growth, rate-limit, contention
MutationFile/action/record countScope bắt đầu mở rộng
RiskApproval tierIrreversible hoặc production-impacting action

Hard bound trả lời “tối đa”, còn early-stop signal trả lời “khi nào tiếp tục không còn hợp lý”. Hai loại cần đi cùng nhau. Chờ tới hard cap dù failure đã lặp chỉ đốt chi phí; dừng theo một noisy signal duy nhất có thể bỏ lỡ recovery. Policy nên kết hợp normalized failure, progress checkpoint và marginal information gain.

Retry được phép chỉ khi failure actionable và attempt tiếp theo có thông tin mới.

flowchart TD
  F["Verification failed"] --> A{"Actionable evidence?"}
  A -->|"no"| E["Escalate with receipt"]
  A -->|"yes"| N{"New evidence vs previous?"}
  N -->|"no"| S["Stop: repeated failure"]
  N -->|"yes"| B{"Budget + authority remain?"}
  B -->|"no"| E
  B -->|"yes"| R["Retry one scoped hypothesis"]
  R --> F

Hypothesis-driven retry yêu cầu attempt mới khai báo biến thay đổi và prediction. Ví dụ: “failure do timezone; patch normalization sẽ làm test X pass mà không đổi test Y”. Verification sau đó kiểm prediction. Nếu attempt chỉ nói “thử cách khác”, receipt không cho policy biết failure lặp hay strategy mới, và operator không học được gì từ budget đã tiêu.

Budget cũng cần hierarchy theo item, run và population. Ba retry mỗi item vẫn có thể làm queue mười nghìn item đốt tài nguyên; concurrency hợp lệ mỗi worker vẫn có thể vượt rate limit tổng. Production loop cần global circuit breaker theo error rate, spend, queue age hoặc repeated incident signature, ngoài local stop rule của từng job.

Ưu điểm
  • Ngăn cost exhaustion và repeated harmful actions.
  • Khuyến khích hypothesis-driven retry thay vì brute force.
  • Tạo predictable SLO và operator expectation.
Nhược điểm
  • Budget quá chặt làm giảm recovery rate.
  • So sánh evidence có thể cần domain-specific normalization.
  • Cost attribution phức tạp khi nhiều agent/tool dùng chung run.

4. Least privilege, isolation và human handoff tạo containment

G.1
README.md#securing-unattended-loops · meta/RUNTIME_SELECTION.md
Recurring agent có thời gian để biến lỗi nhỏ thành incident. Untrusted input, broad credentials, mutable verifier và production write access tạo blast radius lớn hơn một interactive run có người quan sát.

Least privilege phải được enforce theo job identity, không vay toàn bộ quyền của người khởi tạo. Một loop docs drift chỉ cần read source và write docs branch; nó không cần credential deploy. Credential ngắn hạn, allowlist action và isolated workspace làm cho contract violation trở thành lỗi bị chặn thay vì lời nhắc bị model bỏ qua.

Policy sketch: data/authority separation + guarded mutation

JS
if (input.origin === "untrusted") {
  input = treatAsData(input);        // never as authority
}

assert(pathIsAllowed(change.path));
assert(toolIsAllowed(change.tool));
assert(!change.modifies(verifierFiles));

if (change.isIrreversible || change.touchesProduction) {
  return requestHumanApproval(change, receipts);
}

Prompt injection trong loop nguy hiểm vì untrusted text có thể sống lâu và được tái nạp qua state. Issue body, log, document hoặc webpage phải giữ provenance “data”, không được biến thành authority dù nội dung tự xưng là system instruction. Tool policy và secret scope phải quyết định ngoài model; sanitization text đơn thuần không tạo trust boundary.

BoundaryDefault an toànApproval trigger
WorkspaceFresh worktree/container/sandboxĐụng file ngoài allowlist
NetworkDeny hoặc allowlist domains/actionsGửi data ra external system
SecretsJob-scoped, short-lived, minimum roleCredential mới hoặc privilege increase
Source inputUntrusted text luôn là dataInstruction xung đột policy
ProductionRead-only observe/reportDeploy, rollback, config/data mutation
VerifierImmutable/frozen ngoài actor scopeThay test, scorer, policy threshold

Isolation giảm ảnh hưởng chéo giữa attempts và giữa công việc của người dùng với loop. Fresh worktree/container tạo baseline có thể tái hiện, giúp diff có nghĩa và rollback rõ. Nhưng isolation không đồng nghĩa an toàn tuyệt đối: network, credential, shared cache và external API vẫn là side channels cần policy riêng.

Loop Maturity Model từ manual prompting tới production-supervised loop
Production supervision là capability cuối vì cần telemetry, approvals, rollback và incident ownership tích lũy trên các level trước. ↗ Loop Maturity Model

Handoff tốt là một control path, không phải thông báo thất bại. Nó phải có named destination, urgency, decision cần người nhận đưa ra, attempts đã thử, raw evidence và residual risk. Nếu chỉ gửi “agent blocked”, con người phải điều tra lại từ đầu; nếu gửi toàn bộ context không cấu trúc, review bandwidth trở thành bottleneck mới.

Ưu điểm
  • Giảm blast radius và làm incident interruptible.
  • Tách untrusted content khỏi authority chống prompt-injection escalation.
  • Named owner biến ambiguity thành handoff thay vì guess.
Nhược điểm
  • Isolation/approval tăng setup và latency.
  • Permission quá hẹp có thể tạo false blockers.
  • Secrets/network policy phải được cập nhật theo integration thực.

Failure-mode table Runbook

Failure-mode table nên được dùng như diagnostic routing. Triệu chứng chỉ là observable surface; control phải đánh vào root cause. “Agent sửa cùng file” có thể do hidden state, nhưng cũng có thể do intake duplicate hoặc verifier luôn trả stale result. Receipt cần đủ để phân biệt trước khi team thêm retry hay prompt instruction mới.

Triệu chứngRoot causeControl nên thêmEscalate khi
Agent báo done nhưng bug cònSelf-approval / weak gateOriginal repro + independent verifierAcceptance criteria mâu thuẫn
Mỗi run sửa lại cùng fileHidden state / no idempotencyCheckpoint + item key + attempt ledgerState store không nhất quán
Token/cost tăng không dừngRetry/concurrency unboundedMulti-dimensional budget + repeated-evidence stopMarginal value không đo được
Agent sửa tests để xanhVerifier nằm trong mutable scopeProtect test/policy files + reviewer approvalLegitimate spec/test change
Input issue điều khiển toolUntrusted text thành instructionData/authority separation + tool allowlistCần action ngoài policy
Production action lặp lạiNo idempotency + broad writeOperation key + read-mostly + approvalIrreversible/ambiguous change
Checker agents tranh luận mãiNo conflict/termination policyBounded adjudication + human ownerJudge disagreement sau fixed rounds

Một failure thường cần control ở nhiều phase. Production action lặp lại cần idempotency ở state, write allowlist ở permission, mutation budget ở termination và approval cho irreversible path. Chỉ thêm một guard có thể giảm xác suất nhưng chưa đóng chuỗi nguyên nhân. Threat model nên vẽ đường từ untrusted input đến asset bị ảnh hưởng và đặt gate ở nhiều boundary độc lập.

Runbook cũng phải chỉ rõ evidence nào chứng minh recovery. Sau incident duplicate write, “đã thêm prompt không làm trùng” không đủ; cần replay crash window và chứng minh operation key ngăn side effect thứ hai. Sau false completion, cần test failure mẫu với verifier mới và theo dõi false-positive. Governance chỉ có giá trị khi control được drill.

Reliability scorecard trước unattended run Scorecard

Scorecard là promotion gate, không phải điểm trung bình. Với write access, một hàng mức 0 có thể là blocker dù các hàng khác đều mức 2. Evidence yếu không được bù bằng budget mạnh; broad privilege không được bù bằng receipt đẹp. Team nên xác định minimum level theo risk class trước khi chấm để tránh rationalize một deployment đã quyết sẵn.

Control0 — thiếu1 — có nhưng yếu2 — operational
EvidenceActor tự đánh giáMột gate không calibratedLayered gates + raw receipts
StateChỉ trong chatProgress prose cuối runCheckpointed + idempotency + decision log
BudgetOpen-endedMax turnsRetry/time/cost/concurrency/mutation
PermissionsFull user privilegePath hint trong promptRuntime-enforced least privilege + isolation
EscalationKhông có“Ask human” chung chungCondition + named destination + evidence bundle
RecoveryRestart from scratchManual cleanupCrash replay + duplicate-safe side effects

Mức 2 phải được chứng minh bằng behavior, không chỉ configuration. Có checkpoint file chưa chứng minh crash-safe; có allowlist trong prompt chưa chứng minh runtime enforcement; có “human escalation” chưa chứng minh owner nhận và xử lý trong SLO. Evidence review nên gồm failure injection, sample receipts và một handoff drill thật.

Sau khi schedule, scorecard phải được theo dõi bằng metrics: verified success, false completion, duplicate action, recovery time, escalation precision, operator minutes và total cost. Maturity có thể giảm khi verifier drift hoặc owner thay đổi. Unattended status là quyền có thể thu hồi, không phải milestone đạt một lần rồi giữ mãi.

Với loop có write access, chỉ schedule unattended khi mọi hàng đạt mức 2 hoặc đã có human approval rõ cho phần còn thiếu. Scorecard không phải certification; nó buộc team nhìn thấy debt trước khi autonomy khuếch đại nó.

Kết luận Wrap

Reliability của agent loop không phải xác suất một answer đúng; nó là khả năng hệ thống giữ behavior trong boundary qua nhiều run, kể cả khi actor sai, evidence nhiễu, process crash và input đối nghịch. Điều đó đòi hỏi control ngoài model và record đủ để operator reconstruct causal chain.

Verification tạo backpressure, state tạo continuity, budget tạo effective bounds, permission tạo containment và escalation giữ human authority. Chúng không phải năm feature tùy chọn mà là năm mắt xích của cùng reliability case. Mắt xích yếu nhất thường quyết định blast radius của failure.

Governance tốt không biến mọi transition thành approval thủ công. Nó chuyển kiểm tra cơ học sang deterministic gate, giữ judgment cho boundary có ambiguity hoặc irreversible impact, và cung cấp receipt cô đọng để con người quyết nhanh. Mục tiêu là giảm turn-by-turn supervision mà không xóa ownership.

Câu hỏi cuối trước unattended run là: nếu loop sai liên tục trong toàn bộ budget, hệ thống có dừng hữu hạn, không làm hỏng verifier, không lặp side effect và bàn giao đủ evidence cho đúng owner không? Nếu câu trả lời chưa được failure-test, reliability vẫn là assumption chứ chưa phải thuộc tính đã chứng minh.

Điểm chính
  • External evidence quyết định tiến triển; actor confidence không phải gate.
  • Durable state + receipts biến nhiều cold runs thành một hệ thống liên tục và audit được.
  • Budgets + effective bounds phải bao phủ cost, time, concurrency và repeated evidence.
  • Least privilege + human ownership giữ recurring errors trong blast radius chấp nhận được.