feat: Phase 6 cutover — delete Java reference, ship v1.0.0#132
Merged
Conversation
This commit is the destructive cutover finalizing the Java→Go port.
~133k lines deleted, ~720 added (docs + security.yml retarget).
## Deleted
- `src/` (Java + frontend + test trees: ~640 files, ~133k LoC)
- `pom.xml`, `spotbugs-exclude.xml` (Maven + SpotBugs config)
- `.github/workflows/ci-java.yml` — Java compile + unit-test gate
- `.github/workflows/release-java.yml` — Java release flow
- `.github/workflows/beta-java.yml` — Java beta release flow
- `.github/workflows/go-parity.yml` — Java↔Go parity test (Java jar
build that fed it is gone)
## Updated
- `.gitignore` — stripped Java/Maven/frontend patterns, kept Go +
cross-cutting (env, secrets, OS, IDE, codeiq runtime artifacts).
- `.github/workflows/security.yml` — OSV-Scanner now reads
`go/go.mod`; Semgrep swapped `p/java` → `p/golang`; jscpd retargeted
to `go/cmd go/internal` with Go-tuned ignore patterns.
- `README.md` — Go-native rewrite: install via pre-built binary or
Homebrew tap, Cosign verify recipe, CLI reference for the Go
command set, MCP integration snippet for `.mcp.json`.
- `CLAUDE.md` — full rewrite (43 KB → ~16 KB). Go module layout,
detector authoring contract (with detectors_register.go choke-point
warning), Kuzu v0.7.1 quirks, MCP SDK v1.6 API shape, RE2-vs-Java
regex gotchas, perf war stories.
- `PROJECT_SUMMARY.md` — refreshed for Go-only entrypoints + directory
map; updated `Where to look next` links.
- `CHANGELOG.md` — added `[v1.0.0] - 2026-05-13` entry summarizing
Phase 1-5 surface + Phase 6 removal.
## Migration notes for anyone needing Java history
The pre-cutover Java state is preserved on `origin/main` at commit
`c363727` (the squash-merge that landed the Go port). Recovery:
git show c363727:src/main/java/<path> # one file
git checkout c363727 -- src/main/java/<path> # restore files
## Test plan
- [x] `cd go && CGO_ENABLED=1 go test ./... -count=1` → 828 pass
- [x] yaml-lint on the modified workflow + the goreleaser config
- [x] `git status --short` clean after stage
- [ ] CI green on the cutover PR (go-ci, perf-gate, security,
CodeQL, Scorecard, Socket)
- [ ] After merge: `git tag -s v1.0.0` triggers release-go.yml and
produces a draft GitHub Release with multi-arch archives +
SBOMs + Cosign-signed checksums.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Same trap that hit ci-java.yml during phase 5 (PR #131). When a workflow's job name is a required check on branch protection AND the workflow has a `paths:` filter, PRs that don't match the filter cause the workflow to be SKIPPED. Skipped workflows never report a status, so the required check sits in "Waiting for status to be reported" indefinitely and blocks merge. The cutover PR (#132) deletes Java but doesn't touch `go/**`, so both `go-ci` and `perf-gate` were skipping with the old filter. Removing the filter makes the jobs always run. Cost: ~2 min go-ci, ~1 min perf-gate on docs-only PRs. Cheap. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The old ci-java.yml defined a job named `build` that branch protection on main was configured to require. Phase 6 cutover deleted ci-java.yml, but the required-check name `build` remains in branch protection — so every PR sits forever on "build Expected — Waiting for status to be reported", blocking merge. This shim always runs and always succeeds, providing the `build` status that branch protection expects. It exists as a stopgap until a repo admin removes `build` from the required-checks list in the GitHub UI. go-ci.yml is the real build gate (vet/test/staticcheck/gosec/govulncheck) and perf-gate.yml is the perf gate; both are the appropriate Go-side replacements for the old Java `build`. Once the admin drops `build` from required-checks, delete this file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 13, 2026
aksOps
added a commit
that referenced
this pull request
May 13, 2026
The Spring Boot / React SPA was removed at the Phase 6 cutover (#132), but the Dependabot config still listed maven (/) and npm (/src/main/ frontend) ecosystems. Those directories no longer exist; the maven / npm jobs have been silently failing on each run and producing the stale `dependabot/maven/*` and `dependabot/npm_and_yarn/*` PRs that have been accumulating on origin. Replaces: - maven (`/`) — gone with the Java app - npm (`/src/main/frontend`) — gone with the React SPA Adds: - gomod (`/go`) — the actual Go module + groups: kuzu, tree-sitter, mcp, cobra-viper, sqlite, test-libs Preserves the github-actions ecosystem (PR #115 lives there). Also removes stale `ci-java.yml / PR #131` reference from the go-ci header comment — both are pre-Go-cutover history. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2 tasks
aksOps
added a commit
that referenced
this pull request
May 14, 2026
Stale doc references after Phase 6 (Java deletion, #132) and the Kuzu 0.7.1 → 0.11.3 bump (#155 + #159). - CLAUDE.md / PROJECT_SUMMARY.md: bump Kuzu 0.7.1 → 0.11.3, go-sqlite3 1.14.22 → 1.14.44, cobra to 1.10.2; note native FTS. - AGENTS.md: rewrite "What this repo is" (no more "REST API"); flip `mvn -B -ntp clean verify` → `go test ./...`; clarify that REST + React SPA were deleted in Phase 6 and won't return. - SECURITY.md: rewrite scope. Drop the dead JAR / serve / REST API / React UI / H2 / Neo4j Embedded references. New in-scope list covers every codeiq subcommand, the 10 MCP tools (with `run_cypher` mutation gate called out), `.codeiq/cache/` (SQLite) + `.codeiq/graph/` (Kuzu), and `read_file` path sandboxing. Add the security CI workflows (CodeQL, Semgrep, OSV-Scanner, Trivy, Gitleaks, SBOM, Socket Security) + perf-gate to the hardening references. - CHANGELOG.md: populate [Unreleased] with the OOM-fix saga (PRs #145-#148), the five correctness fixes (#149-#153), the Kuzu 0.7.1 → 0.11.3 bump (#155-#158), the FTS migration (#159), the Dependabot config rewrite (#154), and the enrich CLI knobs. No code changes. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
4 tasks
aksOps
added a commit
that referenced
this pull request
May 14, 2026
The /go/ subdirectory was a relic of the Java/Go coexistence period. Phase 6 cutover (#132) deleted the Java side a month ago, leaving the Go module stranded one level deep. That cost the project a clean `go install` story: users had to type `github.com/randomcodespace/codeiq/go/cmd/codeiq@v0.3.x` and pseudo- version resolution kicked in because there were no `go/vX.Y.Z` tags. This commit moves the module to the repo root so: - `go install github.com/randomcodespace/codeiq/cmd/codeiq@v0.3.x` resolves directly to the matching `vX.Y.Z` tag (no `/go/` suffix, no separate tag namespace). - `cd codeiq && go build ./cmd/codeiq` Just Works. - Standard Go project layout — what every contributor expects. ### What moved - `go/cmd/` → `cmd/` - `go/internal/` → `internal/` - `go/testdata/` → `testdata/` - `go/parity/` → `parity/` - `go/go.mod` → `go.mod` (module path drops `/go`) - `go/go.sum` → `go.sum` - `go/.gitignore` → merged into root `.gitignore` `git mv` was used for every tracked path so `git log --follow` history survives the rename. ### Mechanical rewrites - 320 Go files: import path `github.com/randomcodespace/codeiq/go/...` → `github.com/randomcodespace/codeiq/...` - 5 CI workflows: dropped `working-directory: go`, `cache-dependency-path: go/go.sum`, `cd go &&` wrappers, and the `go/cmd go/internal` jscpd target prefix. - `.goreleaser.yml`: dropped `dir: go` from each build, removed `cd go &&` from the `before:` hooks, updated all `-X …/go/internal/buildinfo.*` ldflags to the new path. - `.github/dependabot.yml`: `directory: "/go"` → `directory: "/"`. - README: replaced `cd codeiq/go` with `cd codeiq`; added an explicit `go install` example targeting the now-root-level path. - CLAUDE.md, PROJECT_SUMMARY.md, AGENTS.md: directory map + module-path callouts updated. ### Tests + verification - `CGO_ENABLED=1 go build ./...` — clean. - `CGO_ENABLED=1 go test ./... -count=1` — full suite passes, 0 FAIL across 41 test-bearing packages. - Smoke on `testdata/fixture-minimal`: - `index` exits 0 (5 files / 44 nodes / 24 edges). - `enrich` exits 0 (45 nodes / 68 edges / 1 service / FTS indexed). Historical `docs/superpowers/plans/*.md` keep their original `go/internal/...` references — those are point-in-time snapshots, not living docs. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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.
Summary
Phase 6 of the Java→Go port. Destructive cutover — deletes the Java reference and finalizes Go as the only implementation. After merge, tag
v1.0.0to fire the release pipeline.Net diff: 646 files changed, +719 / -133,132.
Deleted
src/— Java + frontend + test trees (~640 files, ~133k LoC, ~9 MB)pom.xml,spotbugs-exclude.xml.github/workflows/ci-java.yml— Java per-PR build.github/workflows/release-java.yml+beta-java.yml— Java release flows.github/workflows/go-parity.yml— Java↔Go parity test (itsmvn packagestep is gone)Updated
.gitignore— stripped Maven/frontend/Java patterns, kept Go + cross-cutting.github/workflows/security.yml— OSV-Scanner readsgo/go.mod; Semgrepp/java→p/golang; jscpd retargeted togo/cmd go/internalREADME.md— Go-native rewrite, Cosign verify recipe, MCP integration snippetCLAUDE.md— full rewrite (43 KB → ~16 KB); detectors_register.go choke-point warning, Kuzu/MCP-SDK/RE2 gotchasPROJECT_SUMMARY.md— refreshed for Go-only entrypointsCHANGELOG.md— added[v1.0.0] - 2026-05-13entryMigration notes
The Java state is preserved on
origin/mainat commitc363727(the squash-merge that landed the Go port). Anyone needing Java files post-cutover cangit show c363727:<path>orgit checkout c363727 -- <path>.Branch protection followup
The current
buildrequired check came fromci-java.yml. After this merges, the branch-protection rule should dropbuildfrom the required-checks list (no replacement needed —go-ciandperf-gateare the new gates). I cannot do this from the CLI; needs an admin touch in the GitHub UI.Open Java-side PRs
15 Dependabot bumps + #121 (rename MCP server) target the Java tree about to be deleted. They'll become moot after merge. Recommend bulk-closing with a comment pointing at this PR.
Release after merge
After this PR merges:
→
release-go.ymlfires, builds linux/amd64, linux/arm64, darwin/arm64, signs the checksum manifest, creates a draft GitHub Release. Operator clicks Publish.Test plan
cd go && CGO_ENABLED=1 go test ./... -count=1— 828 pass.goreleaser.ymlgit statusclean post-stagev1.0.0tag firesrelease-go.ymland produces draft releasecosign verify-blobagainst a downloaded release artifact returns success🤖 Generated with Claude Code