Skip to content
Merged
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
8 changes: 4 additions & 4 deletions docs/development/contributor-tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ points for contributors who are still learning the repository.

| ID | Area | Task | Validation |
| --- | --- | --- | --- |
| GH-C02 | tests | Claimed: PR #4436 (open) extends the owning `todo-archive-completed` smoke with the archive invariant no CLI-level coverage exercised: a durable standing decision survives the archive as active standing authority, and `todo archive-completed --role user` leaves the Agent Todo section untouched. The earlier #3623 attempt (closed unmerged 2026-08-31) was rejected because it repeated assertions the owning smoke already carried; prefer a new durable invariant over a second same-shape smoke. | `python3 examples/control_plane/todo-archive-completed-smoke.py`, `python3 examples/control_plane/todo-lifecycle-cli-smoke.py`, and `python3 -m py_compile loopx/*.py` |
| GH-C02 | tests | Landed: #4436 (merged 2026-09-15) extends the owning `todo-archive-completed` smoke with the archive invariant no CLI-level coverage exercised: a durable standing decision survives the archive as active standing authority, and `todo archive-completed --role user` leaves the Agent Todo section untouched. The earlier #3623 attempt (closed unmerged 2026-08-31) was rejected because it repeated assertions the owning smoke already carried; prefer a new durable invariant over a second same-shape smoke. | `python3 examples/control_plane/todo-archive-completed-smoke.py`, `python3 examples/control_plane/todo-lifecycle-cli-smoke.py`, and `python3 -m py_compile loopx/*.py` |
| GH-C04 | docs | Landed: #3982 (merged 2026-09-06) synced the public timeline to tagged v0.5.4 evidence and completed the restart-host activation note beside the first-time PyPI install block; the #3301/#3566/#3556 install, ownership, activation-recovery, and extension-doctor alignment landed earlier via #3810. The `docs/release-readiness-v0.5.4` branch is absent from the remote because its work merged, so this row is history rather than an open claim. | `python3 examples/fresh-clone-quickstart-smoke.py`, `python3 examples/loopx-update-smoke.py`, `python3 examples/release/release-readiness-doc-smoke.py`, `python3 examples/release/release-version-contract-smoke.py`, and `loopx check --scan-path docs/product/release-readiness.md --scan-path CONTRIBUTING.md` |
### Focused Implementation

Expand All @@ -151,7 +151,7 @@ for contributors who can run local CLI smokes and keep changes scoped.
| --- | --- | --- | --- |
| GH-C06 | cli | Landed: #4659 owns `update` registration and dispatch, #4803 owns `goal-channel prepare-operation` and `deliver-operation`, and #4818 owns quota action selection. The public commands remain unchanged, each parent and extracted owner stays below its module budget, and no compatibility wrapper was added. | Command-specific smoke, `python3 examples/cli-command-module-size-ownership-command-modularization-smoke.py`, `python3 regression/cli-command-module-contract.py`, and focused pytest if rules move |
| GH-C88 | cli | Implement one budget-aware CLI output ergonomics slice for #2881: shorter default summaries with a typed `--json` escape hatch on one command family, keeping hot-path payload budgets and differential allowances intact. | `python3 examples/control_plane/cli-output-budget-regression-smoke.py`, focused command smoke, and `loopx check --scan-path docs/status-data-contract.md --scan-path docs/development/contributor-tasks.md` |
| GH-C70 | runtime | Claimed: PR #3664 narrows host-loop parity to one producer-generated bounded-wait scheduler-hint contract between the external scheduler worker and Pi: both real consumers must produce the same provider-neutral stop/wait plan, including the final quota/replan recheck triggered by the third unchanged poll. | `python3 -m pytest -q tests/test_host_loop_runtime_parity.py tests/test_external_scheduler_worker.py tests/test_pi_goal_mode.py`, `node --test tests/pi_goal_loop_runtime.test.mjs`, `python3 examples/external-scheduler-worker-smoke.py`, and `loopx check --scan-path docs/integrations/runtime-connector-catalog.md --scan-path docs/development/contributor-tasks.md` |
| GH-C70 | runtime | Landed: #3664 (merged 2026-09-04) narrows host-loop parity to one producer-generated bounded-wait scheduler-hint contract between the external scheduler worker and Pi: both real consumers must produce the same provider-neutral stop/wait plan, including the final quota/replan recheck triggered by the third unchanged poll. | `python3 -m pytest -q tests/test_host_loop_runtime_parity.py tests/test_external_scheduler_worker.py tests/test_pi_goal_mode.py`, `node --test tests/pi_goal_loop_runtime.test.mjs`, `python3 examples/external-scheduler-worker-smoke.py`, and `loopx check --scan-path docs/integrations/runtime-connector-catalog.md --scan-path docs/development/contributor-tasks.md` |
| GH-C100 | state | Landed via #4422: the provider-neutral parity fixture drives the shipped file-backed `claim_work` executor through same-target competition, independent-target rebase, exact replay, operation-identity mismatch, and stale-generation rejection. The fixtures remain synthetic and public-safe. | `python3 -m pytest -q tests/control_plane/test_coordination_executor.py tests/control_plane/test_coordination_file_provider.py tests/control_plane/test_coordination_provider_parity.py` and `loopx check --scan-path loopx/control_plane/coordination --scan-path docs/architecture/rfcs/shared-goal-authority-state-provider-v0.md --scan-path docs/development/contributor-tasks.md` |
| GH-C102 | state / tests | Extend the shared production-scale coordination fixture with one accepted RFC invariant or reproduced public regression that its current envelope does not cover. Update the checked-in envelope, shared generator, and an independent negative or mutation-style assertion; run the same dimension through every affected provider conformance arm. Keep the data deterministic and public-safe, do not copy a production snapshot, and do not weaken an existing dimension merely to make a provider pass. | `npm run test:control-plane`; when a provider-backed arm changes, run its isolated real integration suite (for PostgreSQL, `LOOPX_TEST_POSTGRES_URL="$DISPOSABLE_POSTGRES_URL" npm run test:postgresql-authority-store`); `loopx check --scan-path tests/fixtures/control_plane --scan-path tests/control_plane_ts --scan-path docs/development/testing-and-quality.md` |

Expand All @@ -162,7 +162,7 @@ and keep the first PR as a narrow slice.

| ID | Area | Task | Validation |
| --- | --- | --- | --- |
| GH-C07 | state | Global registry sync now writes inside a lock (`tests/test_global_registry_write_serialization.py`); extend the same lock or optimistic-revision guard to per-goal todo/refresh/history writers and include a concurrent todo add/update regression. | New concurrency regression plus `python3 -m py_compile loopx/*.py` |
| GH-C07 | state | Landed: #4048 (merged 2026-09-07) added `tests/test_todo_write_serialization.py`, a deterministic concurrent add/update regression that drives the real `add_goal_todo` and `update_goal_todo` writers against one state file through the shared legacy writer fence, so a second mutation can no longer be lost. The global registry keeps its own serialization coverage in `tests/test_global_registry_write_serialization.py`, and the remaining `atomic_write_state_text` call sites either hold the sibling lock or document that contract on the caller. | `pytest -q tests/test_todo_write_serialization.py tests/test_global_registry_write_serialization.py` |
| GH-C47 | state | Task leases now back Turn fencing and typed CLI acquire/release, the OpenCode 2 goal worker fences its own live worker lease, a lease generation ABA fix is shipped (#3393), and a Pi `loopx_task_lease` facade over the shipped `task_lease_v0` CLI merged (#3559, closing #3549); claim coordination lives there. Adopt the same facade in one more real host integration (for example TraeX): advertise the capability explicitly, preserve soft-claim routing, expose acquire/renew/transfer/release outcomes, and prove overlapping write scopes fail without making `quota should-run` enforce undeclared lease authority. | `python3 examples/control_plane/task-lease-runtime-smoke.py`, `python3 -m pytest -q tests/control_plane/test_task_lease.py tests/test_loopx_turn_driver.py`, and a host-focused fake fixture |

### Design / RFC
Expand All @@ -172,7 +172,7 @@ before implementation.

| ID | Area | Task | Validation |
| --- | --- | --- | --- |
| GH-C89 | governance | Claimed: PR [#4172](https://github.com/huangruiteng/loopx/pull/4172) responds to the AGE-style attractor proposal (#2831) with a provider-neutral, Agent-scoped direction baseline. It defines the Goal-owned read boundary, exact-revision drift signal, advisory-only Vision re-evaluation, and synthetic fixture plan without making repository docs a write authority. | Public design note with a synthetic drift fixture plan plus `loopx check --scan-path docs/architecture/rfcs --scan-path docs/development/contributor-tasks.md` |
| GH-C89 | governance | Landed: [#4172](https://github.com/huangruiteng/loopx/pull/4172) (merged 2026-09-11) responds to the AGE-style attractor proposal (#2831) with a provider-neutral, Agent-scoped direction baseline. It defines the Goal-owned read boundary, exact-revision drift signal, advisory-only Vision re-evaluation, and synthetic fixture plan without making repository docs a write authority. | Public design note with a synthetic drift fixture plan plus `loopx check --scan-path docs/architecture/rfcs --scan-path docs/development/contributor-tasks.md` |
| GH-C96 | design / migration | Claimed: the compatibility review is published as [TypeScript migration compatibility notes](../architecture/typescript-migration-compatibility-notes.md), verifying typed state rules (zero `as unknown as` casts and a one-entry named seam inventory for the internal clone assertion on `main`), domain neutrality (providers stay explicit adapters), behavior-change disclosure (no undisclosed change found), the public/private boundary, and a stage ledger of sixteen merged Stage 2B cutovers against the RFC's three time layers, without starting new migration work. | `python3 examples/docs-governance-smoke.py` and `loopx check --scan-path docs/architecture/rfcs/typescript-control-plane-migration-v0.md --scan-path docs/development/contributor-tasks.md` |
| GH-C35 | integration | Design the next provider-neutral external-host adapter on top of LoopX Turn and TurnEnvelope, using the shipped external worker, Pi, and TraeX routes as conformance examples rather than special cases. Map compact session events into requests, planned effects, committed receipts, independent validation, recovery, and attention items while keeping raw transcripts, credentials, billing, permissions, and product frontstage outside LoopX. | Public design note with adapter-neutral fake-host smoke plan plus `loopx check --scan-path docs/integrations/runtime-connector-catalog.md --scan-path docs/development/contributor-tasks.md` |
| GH-C37 | interaction model | Curate the interaction pattern catalog with one new public-safe good/bad case, including trigger signals, user channel, agent channel, state contract, bad smell, and validation reference. Do not copy raw chat, private benchmark artifacts, or internal links. | `loopx check --scan-path docs/concepts/interaction-pattern-catalog.md` |
Expand Down
Loading