chore(plane): sweep the leftovers the cutover left, and close two stale backlog items - #529
Merged
Merged
Conversation
ProtocolWarden
force-pushed
the
chore/retire-plane-leftovers
branch
from
August 21, 2026 14:11
25741fc to
b127263
Compare
…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
force-pushed
the
chore/retire-plane-leftovers
branch
from
August 21, 2026 14:20
b127263 to
65944e4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.py→board_adapter.py,PlaneTaskCreator→BoardTaskCreator. Docstrings inpropagator.pystill pointed atPlaneClient.create_issue, a class deleted in feat(board): delete the Plane adapter — the migration is complete #521.tests/test_plane_parsing.py→test_task_parsing.py— it testsTaskParserand 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.mdwas a stale copy ofrender_task_template()output. No code read it —oc setupwritesconfig/task_template.local.md. But.gitignore,docs/operator/setup.mdand both secrets scripts still named the deadplane_task_template.local.mdpath, sobackup-secrets.shwas 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.gitignoreentries fordeployment/plane/**andtools/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-restjob (pytest tests/ --ignore=tests/unit, #525, survived the #527 port), andauditon Forgejo Actions is live (runner registered, workflow ported to.forgejo/workflows/custodian-audit.yml, branch protection requiringcustodian-audit / audit (pull_request)withapply_to_admins).Verified with imports forced to the worktree (PYTHONPATH), not the live checkout the fleet runs from: 67 targeted tests pass,
ruff checkandformatclean.🤖 Generated with Claude Code
Rebased onto
main, with two resolutionsThe 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 onmainnor this branch's Plane-sweep entries are lost.docs/operator/setup.md—mainhad deleted the deadplane_task_template.local.mdline without adding the correct one. Took this branch's side, which repoints it toconfig/task_template.local.md. Confirmed againstentrypoints/setup/main.py:879, wheretask_template_pathdefaults to exactly that.One fix beyond the original
The original commit dropped the executable bit on
scripts/backup-secrets.shandscripts/setup-secrets.sh(755 → 644). Every other script inscripts/is 755, and this commit is specifically aboutbackup-secrets.shpointing 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
PYTHONPATHforced to the worktree,ruff checkclean, both scripts parse underbash -n.