molecule-cli/known-issues.md
Molecule AI SDK-Dev 29e025129f chore(cli): add .goreleaser.yaml and resolve KI-004
Add .goreleaser.yaml with the correct module root (dir: .) and main
package path (./cmd/molecule) so the first v* tag release produces
valid artifacts for all 6 targets. Mark KI-004 as resolved in
known-issues.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 10:33:08 +00:00

160 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Known Issues — molecule-cli
Issues identified in source but not yet filed as GitHub issues (GH_TOKEN
unavailable in automated agent contexts). Each entry has: location,
symptom, impact, suggested fix.
Format per entry:
```
## KI-N — Short title
**File:** `<path>:<line>`
**Status:** TODO comment / identified / partially fixed
**Severity:** Critical / High / Medium / Low
### Symptom
...
### Impact
...
### Suggested fix
...
---
```
---
## KI-001 — No entry point yet (`cmd/molecule/main.go` does not exist)
**File:** `cmd/molecule/main.go`
**Status:** ✅ Resolved
**Resolved in:** `feat/cli-full-command-tree` branch, commit "feat: implement full CLI command tree"
### Symptom
`cmd/molecule/main.go` exists and calls `cmd.Execute()`. Root command is wired
with global flags (`--verbose`, `--output`, `--config`, `--api-url`). All
subcommand groups registered: workspace (7 commands), agent (4 commands),
platform (2 commands), config (5 commands). Binary builds to `bin/mol`.
### Impact
The CLI is not runnable. No workspace management, agent inspection, or any other
CLI command exists. The repo is a stub.
### Suggested fix
Implement `cmd/molecule/main.go` with a root `cobra.Command` that registers
subcommands. Wire up global flags (`--verbose`, `--output`, `--config`).
Wire `MOLECULE_API_URL` env var as the default for the API base URL.
See the stub checklist in `CLAUDE.md` Section 8.
---
## KI-002 — No API client; all commands will make raw HTTP calls
**File:** `cmd/molecule/` (no API client package yet)
**Status:** ✅ Partially resolved
**Resolved in:** `internal/client/platform.go` exists with workspace and agent
operations; `runHTTP` helper in `internal/cmd/http.go` used by `agent send` and
`workspace delegate`. Remaining: workspace runtime client (dev/proxy mode).
### Symptom
There is no `internal/client/` or `pkg/api/` package. Any subcommand
implementation will need to import the platform SDK (`molecule-sdk-python`) via
a Go FFI wrapper, make raw `net/http` calls directly, or wait for a Go SDK to be
built. Neither exists yet.
### Impact
Subcommand implementations will either duplicate HTTP client logic or require
architecting a clean API client interface before the first command can be
meaningfully built.
### Suggested fix
Before implementing subcommands, define `internal/api/client.go` with a
`Client` struct wrapping `*http.Client`. Implement methods for workspace and
agent operations. Add a `ClientOption` functional options pattern for
configuring base URL and auth. Document the API endpoints in `docs/` as they
are implemented.
---
## KI-003 — `go.sum` may contain entries from non-release toolchains
**File:** `go.sum`
**Status:** ✅ Resolved
**Resolved in:** `go mod tidy` run on `feat/cli-full-command-tree`; `go.sum` regenerated
clean. Dependencies: cobra v1.10.2, viper v1.21.0, their transitive deps.
### Symptom
The `go.sum` file was generated during initial module setup. It may contain
checksum entries for transitive dependencies pulled from toolchains or
platforms not intended for the release build (e.g. `linux/arm64` on an `amd64`
host). GoReleaser targets specific platforms and any spurious `go.sum`
entries may cause CI divergence or checksum mismatches.
### Impact
`go mod verify` in CI may fail if `go.sum` has extra entries not in the
lock file. Additionally, if the module path (`github.com/Molecule-AI/molecule-cli`)
is referenced via `replace` directives from other repos, those references may
persist stale entries.
### Suggested fix
Run `go mod tidy` on a clean checkout from `main` and commit only the
resulting `go.sum`. Add `go mod verify` to CI as a lint step. Ensure
`.goreleaser.yaml` specifies exact Go version matching CI.
---
## KI-004 — GoReleaser config may not be aligned with go.mod module path
**File:** `.goreleaser.yaml`
**Status:** ✅ Resolved — `.goreleaser.yaml` added
**Resolved in:** `main` (commit `47b2804` + this branch)
**Severity:** Medium
### Symptom
The GoReleaser workflow was wired up but had no `.goreleaser.yaml` config.
A `v*` tag push could produce an empty release or a binary with the wrong name
if `builds[].dir` or `builds[].main` were misconfigured.
### Resolution
Added `.goreleaser.yaml` with:
- `dir: .` — repo root
- `main: ./cmd/molecule` — main package path
- `binary: molecule` — output binary name
- All 6 targets: linux/darwin × amd64/arm64 + windows × amd64
- `CGO_ENABLED=0` for static binaries
- Checksum files generated for all archives
`release.yml` still uses plain `go build` per matrix target (GoReleaser is
configured but not wired into CI yet — the plain build is sufficient for
v0.1.0). Wire GoReleaser into CI when Homebrew formula + checksum
verification are needed.
---
## KI-005 — No integration test for the full CLI lifecycle
**File:** `tests/` (does not exist)
**Status:** ✅ Resolved
**Resolved in:** `cmd/molecule/molecule_test.go` — 24 table-driven tests using httptest mock server.
**Severity:** Medium
### Symptom
There were no tests at all (per `go test ./...` — no packages match).
As subcommands were built, there was no test harness for end-to-end CLI testing
(e.g. `molecule workspace create --name test --output json` → verify JSON output).
### Impact
Each subcommand was shipped without regression protection. Manual testing
was required for every release.
### Suggested fix
Add `tests/` with:
- `cmd/molecule/molecule_test.go` — table-driven tests for each subcommand
using `exec.Command("molecule", ...)` against a built binary
- Use a httptest mock server for offline testing
- Add `go test ./...` to CI; require >0 test packages before merge
**✅ Done:** 24 integration tests covering all 18 subcommands, error paths,
and structured output. `go test ./...` passes, CI job added to `release.yml`.