From cfdc8d342693100c274944e6b1695853914a42ca Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 24 Feb 2026 18:09:12 +0000 Subject: [PATCH] docs: archive completed plans Archive 3 completed plan files to docs/plans/completed/: - core-ide-job-runner-design: All components (poller, dispatcher, journal, 6 handlers, headless/desktop mode) were implemented and operational. Code extracted to core/ide and core/go during Feb 2026 monorepo split. - bugseti-hub-service-design + plan: All 8 Go-side tasks implemented (config fields, HubService types, HTTP helpers, AutoRegister, write ops, read ops, pending queue, main.go wiring). Code extracted to core/bugseti on 16 Feb 2026. Co-Authored-By: Claude Opus 4.6 --- ...05-core-ide-job-runner-design-original.md} | 0 ...13-bugseti-hub-service-design-original.md} | 0 ...2-13-bugseti-hub-service-plan-original.md} | 0 docs/plans/completed/bugseti-hub-service.md | 57 +++++++++++++++++++ docs/plans/completed/core-ide-job-runner.md | 50 ++++++++++++++++ 5 files changed, 107 insertions(+) rename docs/plans/{2026-02-05-core-ide-job-runner-design.md => completed/2026-02-05-core-ide-job-runner-design-original.md} (100%) rename docs/plans/{2026-02-13-bugseti-hub-service-design.md => completed/2026-02-13-bugseti-hub-service-design-original.md} (100%) rename docs/plans/{2026-02-13-bugseti-hub-service-plan.md => completed/2026-02-13-bugseti-hub-service-plan-original.md} (100%) create mode 100644 docs/plans/completed/bugseti-hub-service.md create mode 100644 docs/plans/completed/core-ide-job-runner.md diff --git a/docs/plans/2026-02-05-core-ide-job-runner-design.md b/docs/plans/completed/2026-02-05-core-ide-job-runner-design-original.md similarity index 100% rename from docs/plans/2026-02-05-core-ide-job-runner-design.md rename to docs/plans/completed/2026-02-05-core-ide-job-runner-design-original.md diff --git a/docs/plans/2026-02-13-bugseti-hub-service-design.md b/docs/plans/completed/2026-02-13-bugseti-hub-service-design-original.md similarity index 100% rename from docs/plans/2026-02-13-bugseti-hub-service-design.md rename to docs/plans/completed/2026-02-13-bugseti-hub-service-design-original.md diff --git a/docs/plans/2026-02-13-bugseti-hub-service-plan.md b/docs/plans/completed/2026-02-13-bugseti-hub-service-plan-original.md similarity index 100% rename from docs/plans/2026-02-13-bugseti-hub-service-plan.md rename to docs/plans/completed/2026-02-13-bugseti-hub-service-plan-original.md diff --git a/docs/plans/completed/bugseti-hub-service.md b/docs/plans/completed/bugseti-hub-service.md new file mode 100644 index 00000000..1a3ac546 --- /dev/null +++ b/docs/plans/completed/bugseti-hub-service.md @@ -0,0 +1,57 @@ +# BugSETI HubService — Completion Summary + +**Completed:** 13 February 2026 +**Module:** `forge.lthn.ai/core/cli` (extracted to `core/bugseti` repo on 16 Feb 2026) +**Status:** Complete — all Go-side tasks implemented and wired into app lifecycle + +## What Was Built + +Thin HTTP client service coordinating with the agentic portal's +`/api/bugseti/*` endpoints for issue claiming, stats sync, leaderboard, +and offline-first pending operations queue. + +### Implementation (Tasks 1-8 from plan) + +All 8 Go-side tasks were implemented across commits `a38ce05` through `177ce27`: + +1. **Config fields** — HubURL, HubToken, ClientID, ClientName added to + ConfigService with getters/setters (`a38ce05`) +2. **HubService types + constructor** — HubService, PendingOp, HubClaim, + LeaderboardEntry, GlobalStats, ConflictError, NotFoundError (`a89acfa`) +3. **HTTP request helpers** — `doRequest()`, `doJSON()` with bearer auth, + error classification (401/404/409), and connection tracking (`ab7ef52`) +4. **AutoRegister** — exchange forge token for ak_ hub token via + `/auth/forge` endpoint (`21d5f5f`) +5. **Write operations** — Register, Heartbeat, ClaimIssue, UpdateStatus, + ReleaseClaim, SyncStats (`a6456e2`) +6. **Read operations** — IsIssueClaimed, ListClaims, GetLeaderboard, + GetGlobalStats (`7a92fe0`) +7. **Pending ops queue** — offline-first queue with disk persistence to + `hub_pending.json`, drain-on-reconnect (`a567568`) +8. **main.go integration** — HubService wired as Wails service with + auto-registration at startup (`177ce27`) + +### Tests + +All operations tested with `httptest.NewServer` mocks covering success, +network error, 409 conflict, 401 re-auth, and pending ops persist/reload +scenarios. Hub test file: `internal/bugseti/hub_test.go`. + +### Key files (before extraction) + +- `internal/bugseti/hub.go` — HubService implementation (25 exported methods) +- `internal/bugseti/hub_test.go` — comprehensive httptest-based test suite +- `internal/bugseti/config.go` — hub config fields and accessors +- `cmd/bugseti/main.go` — lifecycle wiring + +### Task 9 (Laravel endpoint) + +The portal-side `/api/bugseti/auth/forge` endpoint (Task 9) lives in the +`agentic` repo, not in `core/cli`. It was designed in this plan but +implemented separately. + +### Extraction + +BugSETI was extracted to its own repo on 16 Feb 2026 (`8167f66`): +`internal/bugseti/` moved to `core/bugseti`, `cmd/bugseti/` moved to +`core/bugseti/cmd/`. diff --git a/docs/plans/completed/core-ide-job-runner.md b/docs/plans/completed/core-ide-job-runner.md new file mode 100644 index 00000000..10093f57 --- /dev/null +++ b/docs/plans/completed/core-ide-job-runner.md @@ -0,0 +1,50 @@ +# Core-IDE Job Runner — Completion Summary + +**Completed:** 9 February 2026 +**Module:** `forge.lthn.ai/core/cli` (extracted to `core/ide` repo during monorepo split) +**Status:** Complete — all components built, tested, and operational before extraction + +## What Was Built + +Autonomous job runner for core-ide that polls Forgejo for actionable pipeline +work, executes it via typed handler functions, captures JSONL training data, +and supports both headless (server) and desktop (Wails GUI) modes. + +### Key components + +- **`pkg/jobrunner/types.go`** — JobSource, JobHandler, PipelineSignal, + ActionResult interfaces and structs +- **`pkg/jobrunner/poller.go`** — multi-source poller with configurable + interval, ETag-based conditional requests, and idle backoff +- **`pkg/jobrunner/journal.go`** — append-only JSONL writer for training data + capture (structural signals only, no content) +- **`pkg/jobrunner/forgejo/source.go`** — ForgejoSource adapter (evolved from + original GitHubSource design to use pkg/forge SDK) +- **`pkg/jobrunner/forgejo/signals.go`** — PR/issue state extraction and + signal building from Forgejo API responses + +### Handlers + +All six handlers from the design were implemented with tests: + +- `publish_draft` — mark draft PRs as ready when checks pass +- `send_fix_command` — comment fix instructions for conflicts/reviews +- `resolve_threads` — resolve pre-commit review threads after fix +- `enable_auto_merge` — enable auto-merge when all checks pass +- `tick_parent` — update epic issue checklist when child PR merges +- `dispatch` — SCP ticket delivery to agent machines via SSH (added beyond + original design) + +### Headless / Desktop mode + +- `hasDisplay()` detection for Linux/macOS/Windows +- `--headless` / `--desktop` CLI flag overrides +- Headless: poller + MCP bridge, signal handling, systemd-ready +- Desktop: Wails GUI with system tray, optional poller toggle + +### Extraction + +Code was fully operational and then extracted during the Feb 2026 monorepo +split (`abe74a1`). `pkg/jobrunner/` moved to `core/go`, `cmd/core-ide/` and +`internal/core-ide/` moved to `core/ide`. The agentci dispatch system +(`d9f3b72` through `886c67e`) built on top of the jobrunner before extraction.