Files
lmxopcua/scripts/queue/README.md
Joseph Doherty 2d07d716dc Recover stashed driver-gaps work from pre-v2-mxgw-merge working tree
Captures uncommitted work that lived in the working tree on
v2-mxgw-integration but was orthogonal to the migration. Stashed
during the v2-mxgw merge to master (2026-04-30) and replanted here on
a feature branch off master so it's git-visible rather than living in
the stash list.

Two distinct buckets:

1. Tracked fixture/config refinements (10 files, ~36 lines):
   - scripts/e2e/test-opcuaclient.ps1
   - src/ZB.MOM.WW.OtOpcUa.Admin/appsettings.json
   - 5 docker-compose.yml under tests/.../IntegrationTests/Docker/
     (AbCip, Modbus, OpcUaClient, S7)
   - 4 fixture .cs files (AbServerFixture, ModbusSimulatorFixture,
     OpcPlcFixture, Snap7ServerFixture)

2. Untracked driver-gaps queue artifacts (~8000 lines):
   - docs/plans/{abcip,ablegacy,focas,opcuaclient,s7,twincat}-plan.md
     — per-driver gap plans
   - docs/featuregaps.md — cross-cutting analysis
   - docs/v2/focas-deployment.md, docs/v2/implementation/focas-simulator-plan.md
   - followup.md — auto/driver-gaps queue follow-ups
   - scripts/queue/ — PR-queue automation tooling (12 files including
     pr-manifest.yaml at 1473 lines)

This commit is a snapshot for recoverability — review and split into
focused PRs (or discard) before merging anywhere downstream.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 08:28:01 -04:00

1.9 KiB

Plan-execution queue

Gitea-backed work queue that drives the per-driver implementation plans (docs/plans/*-plan.md) to completion in Mode B (autonomous: auto-merges into the auto/driver-gaps integration branch when build+tests pass).

Pieces

  • pr-manifest.yaml — canonical list of every PR across all six plans.
  • setup-labels.sh — idempotently creates the queue labels in Gitea.
  • file-issues.sh — files one Gitea issue per manifest entry (idempotent — skips ids that already exist).
  • next-pr.sh — picks the next eligible queue issue (queued, blockers all done) as JSON.
  • start-pr.sh ISSUE BRANCH — flips queued → in-progress and creates the branch off auto/driver-gaps.
  • open-pr.sh ISSUE BRANCH TITLE BODY_FILE — opens a PR from BRANCH into auto/driver-gaps.
  • merge-pr.sh PR — merges a PR with branch-delete (Mode B).
  • finish-pr.sh ISSUE success PR / finish-pr.sh ISSUE failed REASON_FILE — closes / marks failed.

Flow per loop iteration

  1. next-pr.sh → issue#, branch, canonical id.
  2. start-pr.sh → mark in-progress, create branch.
  3. Loop driver dispatches a Claude Agent to implement the PR on the branch.
  4. Loop runs dotnet build + dotnet test.
  5. On green: open-pr.sh, merge-pr.sh, finish-pr.sh success.
  6. On red: capture log → finish-pr.sh failed log.txt. Issue stays open with queue/failed label for retry.

Environment

  • Gitea repo: dohertj2/lmxopcua on gitea.dohertylan.com.
  • Token: read from %LOCALAPPDATA%\tea\config.yml (or $GITEA_TOKEN override).
  • Integration branch: auto/driver-gaps (created off master).
  • Per-PR branches: auto/<driver>/<plan-pr-id>.

Reset / debug

  • Re-list eligible issues: bash scripts/queue/next-pr.sh.
  • Manually unblock: remove queue/blocked label and add queue/queued.
  • Drop a failed PR back into queue: remove queue/failed, add queue/queued.