Skip to content

chore(plane): sweep the leftovers the cutover left, and close two stale backlog items - #529

Merged
ProtocolWarden merged 1 commit into
mainfrom
chore/retire-plane-leftovers
Aug 21, 2026
Merged

chore(plane): sweep the leftovers the cutover left, and close two stale backlog items#529
ProtocolWarden merged 1 commit into
mainfrom
chore/retire-plane-leftovers

Conversation

@ProtocolWarden

@ProtocolWarden ProtocolWarden commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Recovered from the old machine's Forgejo instance, where this is open as PR #4. That instance is down for the fleet move, so the branch is republished here.

#521 deleted the Plane adapter but left its vocabulary behind. This removes the half that is genuinely cosmetic and leaves the half that is not.

Renames (each had exactly one importer or none, no behavior change):

  • propagation/plane_adapter.pyboard_adapter.py, PlaneTaskCreatorBoardTaskCreator. Docstrings in propagator.py still pointed at PlaneClient.create_issue, a class deleted in feat(board): delete the Plane adapter — the migration is complete #521.
  • tests/test_plane_parsing.pytest_task_parsing.py — it tests TaskParser and never touched Plane.
  • docs/design/plane_kodo_wrapper.mddocs/history/plane-kodo-wrapper.md, status: implementedsuperseded. It sat among live design docs describing a retired board and a retired engine.

And one that was not cosmetic. config/plane_task_template.example.md was a stale copy of render_task_template() output. No code read it — oc setup writes config/task_template.local.md. But .gitignore, docs/operator/setup.md and both secrets scripts still named the dead plane_task_template.local.md path, so backup-secrets.sh was backing up a file that cannot exist and the operator's real template was in no backup at all. All four repointed; the stale example deleted. Also dropped .gitignore entries for deployment/plane/** and tools/report/kodo_plane/ — no such directories.

That last one is worth noticing during a machine move: a backup script silently archiving a nonexistent path looks exactly like a working backup.

Left alone on purpose: plane_task_id (read from on-disk review state), plane_issue_id (read from proposer artifacts), and "plane" as an alert channel name (validated against operator config). Those are wire formats; a bare rename orphans in-flight reviews. Filed in Up Next as a write-both migration.

Both Up Next items were already done and just unrecorded — moved to Done with evidence: the ~1,830-test CI gap is covered by the test-rest job (pytest tests/ --ignore=tests/unit, #525, survived the #527 port), and audit on Forgejo Actions is live (runner registered, workflow ported to .forgejo/workflows/custodian-audit.yml, branch protection requiring custodian-audit / audit (pull_request) with apply_to_admins).

Verified with imports forced to the worktree (PYTHONPATH), not the live checkout the fleet runs from: 67 targeted tests pass, ruff check and format clean.

Note on ordering: this and the branch-protection docs correction both touch docs/operator/setup.md, .console/backlog.md and .console/log.md. Whichever merges second will likely need a rebase.

🤖 Generated with Claude Code


Rebased onto main, with two resolutions

The original commit sat on the old Forgejo history. Cherry-picked onto main; three conflicts, resolved as follows:

  • .console/backlog.md (2 hunks) — both sides add entries the other lacks. Resolved as a union, so neither the Forgejo-Actions-CI Done entry on main nor this branch's Plane-sweep entries are lost.
  • docs/operator/setup.mdmain had deleted the dead plane_task_template.local.md line without adding the correct one. Took this branch's side, which repoints it to config/task_template.local.md. Confirmed against entrypoints/setup/main.py:879, where task_template_path defaults to exactly that.

One fix beyond the original

The original commit dropped the executable bit on scripts/backup-secrets.sh and scripts/setup-secrets.sh (755 → 644). Every other script in scripts/ is 755, and this commit is specifically about backup-secrets.sh pointing at the wrong path — shipping it non-executable would fail exactly when someone runs the backup during the machine move. Both restored to 755 here.

Verified after resolution: 47 propagation + task-parsing tests pass with PYTHONPATH forced to the worktree, ruff check clean, both scripts parse under bash -n.

@ProtocolWarden
ProtocolWarden force-pushed the chore/retire-plane-leftovers branch from 25741fc to b127263 Compare August 21, 2026 14:11
…le backlog items

half that is genuinely cosmetic and leaves the half that is not.

Renames (each had exactly one importer or none, no behavior change):

* `propagation/plane_adapter.py` -> `board_adapter.py`, `PlaneTaskCreator` ->
  `BoardTaskCreator`. Docstrings in `propagator.py` still pointed at
  `PlaneClient.create_issue`, a class deleted in #521.
* `tests/test_plane_parsing.py` -> `test_task_parsing.py` — it tests
  `TaskParser` and never touched Plane.
* `docs/design/plane_kodo_wrapper.md` -> `docs/history/plane-kodo-wrapper.md`,
  `status: implemented` -> `superseded`. It sat among live design docs
  describing a retired board AND a retired engine.

And one that was not cosmetic. `config/plane_task_template.example.md` was a
stale copy of `render_task_template()` output (it still said "the change you
want Kodo to make"). No code read it — `oc setup` writes
`config/task_template.local.md`. But `.gitignore`, `docs/operator/setup.md` and
BOTH secrets scripts still named the dead `plane_task_template.local.md` path,
so `backup-secrets.sh` was backing up a file that cannot exist and the
operator's real template was in no backup at all. All four repointed; the stale
example deleted. Also dropped `.gitignore` entries for `deployment/plane/**`
and `tools/report/kodo_plane/` — no such directories.

Left alone on purpose: `plane_task_id` (read from on-disk review state),
`plane_issue_id` (read from proposer artifacts), and `"plane"` as an alert
channel name (validated against operator config). Those are wire formats; a
bare rename orphans in-flight reviews. Filed in Up Next as a write-both
migration.

Both Up Next items were already done and just unrecorded — moved to Done with
evidence: the ~1,830-test CI gap is covered by the `test-rest` job
(`pytest tests/ --ignore=tests/unit`, #525, survived the #527 port), and
`audit` on Forgejo Actions is live (runner registered, workflow ported to
`.forgejo/workflows/custodian-audit.yml`, branch protection requiring
`custodian-audit / audit (pull_request)` with apply_to_admins).

Verified with imports forced to the worktree (PYTHONPATH), not the live
checkout the fleet runs from: 67 targeted tests pass, ruff check and
format clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ProtocolWarden
ProtocolWarden force-pushed the chore/retire-plane-leftovers branch from b127263 to 65944e4 Compare August 21, 2026 14:20
@ProtocolWarden
ProtocolWarden merged commit 493c89f into main Aug 21, 2026
@ProtocolWarden
ProtocolWarden deleted the chore/retire-plane-leftovers branch August 21, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant