Code Farm: per-plot auto-replant pause and crop-lock check; community sync and node work

Continuous Delivery could never be turned off once a crop was planted. Add a
one-shot per-plot "stop after harvest" flag (POST /game/plot/stop, Devii tool
game_plot_stop, game_plots.stop_after_harvest), cleared by the next plant,
autoreplant claim or Refactor. Autoreplant now also respects crop locks through
the shared _crop_lock predicate. Plan and measurements in happyplanting.md.

Also includes the pending community sync, node network and related work in the
tree; the full suite passed (4999) with all of it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 02:23:43 +02:00
co-authored by Claude Sonnet 5.5
parent ce899fc5e1
commit 02ab747cd0
203 changed files with 11624 additions and 301 deletions
+12 -5
View File
@@ -19,12 +19,12 @@ Every state-changing action in DevPlace records one append-only row through `dev
| Category | Keys |
|---|---|
| `account` | 16 |
| `admin` | 26 |
| `admin` | 28 |
| `ai` | 11 |
| `attachment` | 5 |
| `auth` | 8 |
| `backup` | 2 |
| `cli` | 49 |
| `cli` | 50 |
| `container` | 41 |
| `content` | 37 |
| `database` | 4 |
@@ -36,7 +36,7 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `message` | 2 |
| `moderation` | 12 |
| `news` | 9 |
| `nodes` | 9 |
| `nodes` | 10 |
| `notification` | 4 |
| `project` | 12 |
| `project_files` | 14 |
@@ -46,11 +46,11 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `security` | 3 |
| `service` | 5 |
| `social` | 10 |
| `sync` | 1 |
| `sync` | 3 |
| `telegram` | 5 |
| `tools` | 12 |
**Total: 380 keys.**
**Total: 386 keys.**
## Account and profile (`account`)
@@ -89,6 +89,8 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `admin.community.delete` | `routers/admin/communities.py` |
| `admin.community.relearn` | `routers/admin/communities.py` |
| `admin.community.run` | `routers/admin/communities.py` |
| `admin.community.schema` | `routers/admin/communities.py` |
| `admin.community.schema_restore` | `routers/admin/communities.py` |
| `admin.community.update` | `routers/admin/communities.py` |
| `admin.devii_task.delete` | `routers/admin/devii_tasks.py` |
| `admin.devii_task.disable` | `routers/admin/devii_tasks.py` |
@@ -171,6 +173,7 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `cli.community.run` | `cli/community.py` |
| `cli.containers.reconcile` | `cli/containers.py` |
| `cli.nodes.clear` | `cli/nodes.py` |
| `cli.nodes.geo_sync` | `cli/nodes.py` |
| `cli.nodes.suspend` | `cli/nodes.py` |
| `cli.nodes.unsuspend` | `cli/nodes.py` |
| `cli.deepsearch.clear` | `cli/jobs.py` |
@@ -393,6 +396,7 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `game.perk.upgrade` | `routers/game/index.py` |
| `game.plant` | `routers/game/index.py` |
| `game.plot.buy` | `routers/game/index.py` |
| `game.plot.stop` | `routers/game/index.py` |
| `game.prestige` | `routers/game/index.py` |
| `game.quest.claim` | `routers/game/index.py` |
| `game.steal` | `routers/game/farm.py` |
@@ -563,6 +567,7 @@ Every state-changing action in DevPlace records one append-only row through `dev
| `node.admin.settings` | `routers/admin/nodes.py` |
| `node.device.create` | `routers/nodes/devices.py` |
| `node.device.delete` | `routers/nodes/devices.py` |
| `node.device.override` | `routers/admin/nodes.py` |
| `node.device.rotate` | `routers/nodes/devices.py` |
| `node.flag.resolve` | `routers/admin/nodes.py` |
| `node.killswitch` | `routers/admin/nodes.py` |
@@ -575,6 +580,8 @@ Every state-changing action in DevPlace records one append-only row through `dev
| Event key | Recorded in |
|---|---|
| `sync.batch` | `routers/sync/_shared.py` |
| `sync.deletions.ack` | `routers/sync/deletions.py` |
| `sync.export` | `routers/sync/export.py` |
## Developer tools (`tools`)