Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ <h2>How to read a LoopX board in practice</h2>
loopx --format json task-lease inspect --goal-id &lt;goal-id&gt; --todo-id &lt;todo-id&gt;

# Bounded evidence timeline visible to the current agent
loopx --format json evidence-log --goal-id &lt;goal-id&gt; --agent-id &lt;agent-id&gt; --thin --limit 20</code></pre>
loopx --format json history --goal-id &lt;goal-id&gt; --agent-id &lt;agent-id&gt; --limit 20</code></pre>
<p>Write operations use lifecycle entry points exposed by the current Todo, Gate, claim or lease, and runtime contract—not by editing a display column or constructing status prose. Read current command help and the returned action contract to learn required parameters, whether an execution identity is needed, and whether work can continue.</p>
<p>The CLI and local frontend expose operations and read models at different levels. Lark has corresponding messages, goal channels, and a Base board adapter, but that does not establish full equivalence across every field and action. The <a href="https://github.com/huangruiteng/loopx/blob/a96c9aa91c9d92454efcd7937483bac76e35fd4a/docs/integrations/lark-kanban-control-plane-adapter.md">Lark Kanban adapter</a> still identifies itself as a prototype contract: synchronization and triggers require configuration, and an external board does not create another task identity system.</p>
</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ <h2>怎样实际读一张 LoopX 看板</h2>
loopx --format json task-lease inspect --goal-id &lt;goal-id&gt; --todo-id &lt;todo-id&gt;

# 当前 Agent 可见的有界证据时间线
loopx --format json evidence-log --goal-id &lt;goal-id&gt; --agent-id &lt;agent-id&gt; --thin --limit 20</code></pre>
loopx --format json history --goal-id &lt;goal-id&gt; --agent-id &lt;agent-id&gt; --limit 20</code></pre>
<p>写操作通过当前 Todo、Gate、claim/lease 与运行契约提供的生命周期入口完成,不靠改展示列或拼一段状态文本。需要什么参数、是否要执行实例身份,以及当前能否继续,读取当前命令帮助和返回的动作契约。</p>
<p>CLI 与本地前端提供不同粒度的操作与读面;Lark 也有相应消息、目标通道和 Base 看板适配,但不能因此宣称所有界面字段和动作已完全等价。<a href="https://github.com/huangruiteng/loopx/blob/a96c9aa91c9d92454efcd7937483bac76e35fd4a/docs/integrations/lark-kanban-control-plane-adapter.md">Lark Kanban adapter</a> 目前仍标明 prototype contract:同步和触发需要配置,外部看板不自行创造另一套任务身份。</p>
</section>
Expand Down
13 changes: 13 additions & 0 deletions docs/architecture/rfcs/typescript-control-plane-migration-v0.md
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,19 @@ replan source while retaining independently evidenced vision paths. This
corrects false advancement admission; it does not add a blocked-wait settlement
route or certify Goal completion.

Replan decision context now follows the same boundary: `work_items/replan_context.ts`
owns scoping, chronology, repetition reduction, result/route diversity and bounded
coverage projection. Its Python codec reads the existing Goal and compact index,
normalizes historical observations and reuses the private snapshot transport.
The core Goal, scoped acceptance contract, evidence and uncovered frontier enter
one context; the standalone evidence command is retired. Selection reads beyond
the status display window. The readable view retains up to 24 distinct
observations, while writeback novelty checks retain complete available history.
Real CLI references, file/SQLite receipt reentry, wrong-scope/stale reads and
omitted-old-blocker rejection qualify this S3/S6 slice. Ordinary guard output
remains unchanged; the required-replan information budget increases explicitly.
This does not complete T3, qualify ten-day costs or establish S11 score gains.

The delivery-history boundary now treats `classification`, `health_check`, and
`recommended_action` as narrative. They cannot create or discharge a
follow-through obligation, prove an outcome, or classify delivery scale.
Expand Down
2 changes: 1 addition & 1 deletion docs/book/chapters/appendix-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Capability 描述调用者可依赖的 outcome contract,Provider 提供实现
| 精确查看 Todo | `loopx todo list --goal-id <goal-id> --todo-id <todo-id>` | 不从缺少显示推断不存在 |
| 压缩工作列表 | `loopx todo list --goal-id <goal-id> --thin --format json` | 有界显示不等于完整候选集 |
| 查看当前 lease | `loopx task-lease inspect` | 读回不是获取新执行证明 |
| 查看 Agent 证据 | `loopx evidence-log --goal-id <goal-id> --agent-id <agent-id> --thin --limit 30` | 历史与当前事实分开 |
| 查看 Agent 证据 | `loopx history --goal-id <goal-id> --agent-id <agent-id> --limit 30` | 历史与当前事实分开 |
| 请求当前准入 | `loopx quota should-run` | 读完整 contract;相关 Host 路径可能记 receipt |
| 查看受管 Turn journal | `loopx turn inspect-journal` | 保留原 Turn key;诊断不执行恢复 |
| 配置与能力发现 | `loopx capability list/show`、`loopx configure-goal` | 无设置 flag 的读取与 execute 分开 |
Expand Down
2 changes: 1 addition & 1 deletion docs/book/en/chapters/appendix-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Capability describes a caller outcome contract; Provider supplies implementation
| Read an exact Todo | `loopx todo list --goal-id <goal-id> --todo-id <todo-id>` | Absence from a display is not absence of work |
| Compact a work list | `loopx todo list --goal-id <goal-id> --thin --format json` | Bounded display is not the whole candidate set |
| Inspect a lease | `loopx task-lease inspect` | Observation does not acquire new proof |
| Read Agent evidence | `loopx evidence-log --goal-id <goal-id> --agent-id <agent-id> --thin --limit 30` | Separate history from current facts |
| Read Agent evidence | `loopx history --goal-id <goal-id> --agent-id <agent-id> --limit 30` | Separate history from current facts |
| Request admission | `loopx quota should-run` | Read the full contract; relevant Host paths can record receipts |
| Inspect a managed Turn journal | `loopx turn inspect-journal` | Preserve original Turn key; diagnosis does not recover |
| Discover configuration and capabilities | `loopx capability list/show`, `loopx configure-goal` | Separate reads without setting flags from execution |
Expand Down
2 changes: 1 addition & 1 deletion docs/concepts/interaction-pattern-catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2993,7 +2993,7 @@ resolved. The two lanes must not collapse into each other.

Replan closeout is semantic and causally bound. A normal validated progress
refresh may record useful work, but it must not silently close the
`autonomous_replan_obligation_v0`. Quota first projects the evidence-log into a
`autonomous_replan_obligation_v0`. Quota first projects compact run history into a
compact coverage ledger and emits an opaque `obligation_id`; after the bounded
slice, the agent writes one typed observation. When the result is a runnable
successor, the Todo transition itself is the receipt:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,7 @@ Replan 是当前目标图或覆盖账本上的机器可见语义变化:

Dreaming 是探索未来可能性,可以产生 proposal,但不能替代当前 runnable frontier。

quota 会把 evidence-log 压成 host-projected coverage ledger,并给出当前
quota 会把当前 Agent 的 compact run history 压成 host-projected coverage ledger,并给出当前
`obligation_id`。新 surface / hypothesis / probe 用 typed observation 写回;如果
replan 的结果是下一条 runnable direction,则 Todo 本身就是原子语义 receipt:

Expand Down Expand Up @@ -857,7 +857,7 @@ CLI/status/quota 并补 smoke;只更新文档不会改变机器的下一次决

- `examples/state-projection-gap-smoke.py`
- `examples/project/goal-vision-replan-contract-smoke.py`
- `examples/control_plane/agent-scoped-evidence-log-smoke.py`
- `tests/control_plane/test_replan_context_evidence.py`
- `examples/outcome-followthrough-policy-smoke.py`
- `tests/control_plane_ts/quota_monitor_poll_commit.test.ts`

Expand Down
21 changes: 19 additions & 2 deletions docs/reference/contracts/interface-budget-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ removed without a separately validated caller migration.
| `heartbeat-prompt --thin` | absolute hot path | agent scope, multi-agent fixture matrix, and exact Agent-input field allowlist | Markdown diagnostics, `--compact`, `--full` |
| `todo list` | baseline and growth | todo-count growth and agent filtering semantics | `--thin`, `--limit N`, role/status filters, direct todo-id lifecycle commands |
| `history --limit 5` | explicit-limit cold path | returned-run bound | individual run JSON/Markdown artifacts |
| `evidence-log --thin --limit 5` | explicit-limit cold path | returned-evidence bound | referenced run-history and rollout-event artifacts |

`quota should-run` uses one repeatable cold-path selector:
`--include-detail scheduler`, `agent-todos`, `user-todos`, `vision`, or
Expand Down Expand Up @@ -164,7 +163,10 @@ structural refactor does not become a permanent CI red light.
The receipts contain counts, shape paths, headings, and digests only; they do
not persist raw CLI output. Candidate-only surfaces are allowed after their
absolute characterization passes, while removing a qualified base row fails
closed.
closed. The intentional evidence-command retirement is recognized only with a
qualified replacement replan-context projection and remains a review signal.
Coverage-only to dense replan context has a measured, one-time allowance on its
three affected JSON surfaces; dense-to-dense changes retain ordinary limits.

Both budget layers are intentionally about projections, not the full archival
facts. When a surface needs more detail, put that detail behind a queryable
Expand All @@ -173,6 +175,21 @@ recurring heartbeat prompt carry it. `nested_keys` counts dictionary keys
through three payload levels and samples at most 20 list items per level; it is
a hot-path structure budget, not an archival record-size budget.

Required replan is a decision phase with a separate information need. Its
`replan_context` carries the core Goal and up to 24 distinct observations from
the full compact index, reducing repetitions before selection. On the unchanged
crowded public CLI fixture, emitted JSON grows from 26,844 to 33,523 characters
and 718 to 806 lines. The replan scenario ceiling moves from 30,000/750 to
34,000/830, with 6,000 fixed semantic growth characters; ordinary and multi-Agent
non-replan guards retain their previous output and ceilings. Handoff forwarding
keeps a brief evidence pointer and the full review packet owns the structured
context, removing duplicate JSON. The explicit cold-path diagnosis retains its
existing selected-packet plus Goal-array contract; its replan fixture measures
43,132 characters / 804 lines and uses 44,000 / 850 ceilings with 7,000 fixed
semantic growth characters. These are output measurements, not model-token,
latency or long-horizon quality qualifications. Settlement checks use complete
available history even when the readable context omits older observations.

Restraint rules for new fields:

1. Prefer adding evidence to run history, then projecting only the smallest
Expand Down
4 changes: 2 additions & 2 deletions docs/reference/protocols/agent-management-projection-v0.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ This contract intentionally does not add:
- a tool gateway or agent profile runtime.

State changes still go through existing LoopX lifecycle commands such as
`loopx todo ...`, `loopx refresh-state ...`, `loopx quota ...`, evidence-log
writeback, and future APIs that preserve the same event-ledger semantics.
`loopx todo ...`, `loopx refresh-state ...`, `loopx quota ...`, and future APIs
that preserve the same event-ledger semantics. Replan context is a read model.

## Shape

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/protocols/agent-material-frontier-v0.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ count can never be mistaken for an empty authority registry.
An omitted boundary is also treated as inaccessible rather than implicitly
public.

Evidence and receipts have different semantics. A run-history or evidence-log
Evidence and receipts have different semantics. A run-history or replan-evidence
row may prove that an agent changed or validated an artifact, but it does not
prove the agent consumed a material revision. Only a matching
`material_usage_receipt_v0` can move a material from unread or stale to
Expand Down
Loading
Loading