docs: update paths after 2026-06-06 repo consolidation
Repos consolidated under ~/src/blockninja/ parent (collection, not monorepo). This repo moved from ~/src/core to ~/src/blockninja/core. Updates historical plan/audit docs that referenced the old paths. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
af7f44c34d
commit
48c54814ec
@ -16,7 +16,7 @@ Date: 2026-06-03
|
|||||||
|
|
||||||
Execute each item against a freshly-rebuilt orchestrator (`podman compose
|
Execute each item against a freshly-rebuilt orchestrator (`podman compose
|
||||||
build orchestrator-backend && podman compose up -d orchestrator-backend`)
|
build orchestrator-backend && podman compose up -d orchestrator-backend`)
|
||||||
and a freshly-reinstalled CLI (`go install ./cmd/ninja` from `~/src/core`).
|
and a freshly-reinstalled CLI (`go install ./cmd/ninja` from `~/src/blockninja/core`).
|
||||||
For each item, capture the actual output/observation next to the
|
For each item, capture the actual output/observation next to the
|
||||||
expectation. Mark a checkbox ONLY after observing the success criterion
|
expectation. Mark a checkbox ONLY after observing the success criterion
|
||||||
with your own eyes.
|
with your own eyes.
|
||||||
@ -244,14 +244,14 @@ uses; commands assume access via `podman exec blockninja-db psql -U orchestrator
|
|||||||
|
|
||||||
- [x] Run:
|
- [x] Run:
|
||||||
```bash
|
```bash
|
||||||
ls ~/src/orchestrator/backend/internal/registry/ 2>&1
|
ls ~/src/blockninja/orchestrator/backend/internal/registry/ 2>&1
|
||||||
```
|
```
|
||||||
- [x] Output does NOT include a `git` directory.
|
- [x] Output does NOT include a `git` directory.
|
||||||
- [x] `grep -r "internal/registry/git" ~/src/orchestrator/backend/ 2>/dev/null | grep -v "^Binary"` returns nothing.
|
- [x] `grep -r "internal/registry/git" ~/src/blockninja/orchestrator/backend/ 2>/dev/null | grep -v "^Binary"` returns nothing.
|
||||||
|
|
||||||
### D3. `RegistryGitPath` config is gone
|
### D3. `RegistryGitPath` config is gone
|
||||||
|
|
||||||
- [x] Run `grep -n "RegistryGitPath\|REGISTRY_GIT_PATH" ~/src/orchestrator/backend/internal/config/config.go`.
|
- [x] Run `grep -n "RegistryGitPath\|REGISTRY_GIT_PATH" ~/src/blockninja/orchestrator/backend/internal/config/config.go`.
|
||||||
- [x] Output is empty.
|
- [x] Output is empty.
|
||||||
|
|
||||||
### D4. `registry_versions.git_commit` / `git_tag` columns are gone
|
### D4. `registry_versions.git_commit` / `git_tag` columns are gone
|
||||||
@ -264,14 +264,14 @@ uses; commands assume access via `podman exec blockninja-db psql -U orchestrator
|
|||||||
|
|
||||||
### D5. `Plugin.git_remote_url` is not in the proto
|
### D5. `Plugin.git_remote_url` is not in the proto
|
||||||
|
|
||||||
- [x] Run `grep -n "git_remote_url\|GitRemoteUrl" ~/src/orchestrator/proto/orchestrator/v1/plugin_registry.proto ~/src/core/proto/orchestrator/v1/plugin_registry.proto`.
|
- [x] Run `grep -n "git_remote_url\|GitRemoteUrl" ~/src/blockninja/orchestrator/proto/orchestrator/v1/plugin_registry.proto ~/src/blockninja/core/proto/orchestrator/v1/plugin_registry.proto`.
|
||||||
- [x] No matches.
|
- [x] No matches.
|
||||||
|
|
||||||
### D6. The CLI no longer references the `ninja` git remote
|
### D6. The CLI no longer references the `ninja` git remote
|
||||||
|
|
||||||
- [x] Run `grep -nE 'remote\s+(add|remove)\s+"?ninja' ~/src/core/cmd/ninja/cmd/plugin.go`.
|
- [x] Run `grep -nE 'remote\s+(add|remove)\s+"?ninja' ~/src/blockninja/core/cmd/ninja/cmd/plugin.go`.
|
||||||
- [x] No matches.
|
- [x] No matches.
|
||||||
- [x] Run `grep -nE '"git",\s*"push",\s*"ninja"' ~/src/core/cmd/ninja/cmd/plugin.go`.
|
- [x] Run `grep -nE '"git",\s*"push",\s*"ninja"' ~/src/blockninja/core/cmd/ninja/cmd/plugin.go`.
|
||||||
- [x] No matches.
|
- [x] No matches.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# Execution prompt — Plugin publish (tarball) + categories
|
# Execution prompt — Plugin publish (tarball) + categories
|
||||||
|
|
||||||
Copy the body below verbatim into a new Claude Code session at the repo
|
Copy the body below verbatim into a new Claude Code session at the repo
|
||||||
root (`~/src/core`) when you want execution to start. The prompt is
|
root (`~/src/blockninja/core`) when you want execution to start. The prompt is
|
||||||
self-contained: anyone reading it should be able to drive the work end
|
self-contained: anyone reading it should be able to drive the work end
|
||||||
to end without further context.
|
to end without further context.
|
||||||
|
|
||||||
@ -16,17 +16,17 @@ the process below in order. Do not skip steps. Do not improvise.
|
|||||||
### 1. Required reading (in this order)
|
### 1. Required reading (in this order)
|
||||||
|
|
||||||
Read these three files fully before touching any code. Treat each as
|
Read these three files fully before touching any code. Treat each as
|
||||||
authoritative for its purpose. They live in `~/src/core`:
|
authoritative for its purpose. They live in `~/src/blockninja/core`:
|
||||||
|
|
||||||
1. **Spec / design** — `docs/superpowers/specs/2026-06-03-plugin-publish-and-categories-design.md`. Defines *what* and *why*. Do not change this without the user's explicit OK.
|
1. **Spec / design** — `docs/superpowers/specs/2026-06-03-plugin-publish-and-categories-design.md`. Defines *what* and *why*. Do not change this without the user's explicit OK.
|
||||||
2. **Plan** — `docs/superpowers/plans/2026-06-03-plugin-publish-and-categories.md`. Defines the ordered, bite-sized tasks with full code blocks. Do not change this without the user's explicit OK either. Each task ends with a commit.
|
2. **Plan** — `docs/superpowers/plans/2026-06-03-plugin-publish-and-categories.md`. Defines the ordered, bite-sized tasks with full code blocks. Do not change this without the user's explicit OK either. Each task ends with a commit.
|
||||||
3. **UAT checklist** — `docs/superpowers/audits/2026-06-03-plugin-publish-and-categories-uat.md`. The hard gate. The work is NOT done until every UAT item has been observed to pass with your own eyes. The UAT may not be softened, skipped, or interpreted away. If any item turns out to be ambiguous or impossible, STOP and ask the user.
|
3. **UAT checklist** — `docs/superpowers/audits/2026-06-03-plugin-publish-and-categories-uat.md`. The hard gate. The work is NOT done until every UAT item has been observed to pass with your own eyes. The UAT may not be softened, skipped, or interpreted away. If any item turns out to be ambiguous or impossible, STOP and ask the user.
|
||||||
|
|
||||||
Also be aware: work spans TWO git repos.
|
Also be aware: work spans TWO git repos.
|
||||||
- `~/src/core` — Go module `git.dev.alexdunmow.com/block/core`. Holds the ninja CLI (`cmd/ninja/`), the SDK (`plugin/`), and a mirrored copy of the orchestrator proto under `proto/` + `internal/api/`.
|
- `~/src/blockninja/core` — Go module `git.dev.alexdunmow.com/block/core`. Holds the ninja CLI (`cmd/ninja/`), the SDK (`plugin/`), and a mirrored copy of the orchestrator proto under `proto/` + `internal/api/`.
|
||||||
- `~/src/orchestrator` — Go module at `backend/`. Holds the orchestrator service, schema, migrations, and proto source of truth.
|
- `~/src/blockninja/orchestrator` — Go module at `backend/`. Holds the orchestrator service, schema, migrations, and proto source of truth.
|
||||||
|
|
||||||
CLAUDE.md in each repo applies. Read `~/src/core/CLAUDE.md` if you have not (key rule: no `replace` directives in any `go.mod`).
|
CLAUDE.md in each repo applies. Read `~/src/blockninja/core/CLAUDE.md` if you have not (key rule: no `replace` directives in any `go.mod`).
|
||||||
|
|
||||||
### 2. Process
|
### 2. Process
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ top to bottom. For each box:
|
|||||||
- Run the command(s) the item specifies, against the actual orchestrator
|
- Run the command(s) the item specifies, against the actual orchestrator
|
||||||
(you may need to `podman compose build orchestrator-backend &&
|
(you may need to `podman compose build orchestrator-backend &&
|
||||||
podman compose up -d orchestrator-backend` first) and the actual
|
podman compose up -d orchestrator-backend` first) and the actual
|
||||||
installed CLI (`cd ~/src/core && go install ./cmd/ninja`).
|
installed CLI (`cd ~/src/blockninja/core && go install ./cmd/ninja`).
|
||||||
- Observe the result with your own eyes.
|
- Observe the result with your own eyes.
|
||||||
- Tick the box ONLY if the observation matches the expectation.
|
- Tick the box ONLY if the observation matches the expectation.
|
||||||
- If it doesn't match: do not tick. Return to the plan, identify which
|
- If it doesn't match: do not tick. Return to the plan, identify which
|
||||||
|
|||||||
@ -9,8 +9,8 @@
|
|||||||
**Tech Stack:** Go (orchestrator backend + ninja CLI), Connect RPC over HTTP, Postgres + sqlc + goose, klauspost/compress/zstd, stdlib `archive/tar`.
|
**Tech Stack:** Go (orchestrator backend + ninja CLI), Connect RPC over HTTP, Postgres + sqlc + goose, klauspost/compress/zstd, stdlib `archive/tar`.
|
||||||
|
|
||||||
**Repos involved:**
|
**Repos involved:**
|
||||||
- `~/src/orchestrator` (backend module at `backend/`)
|
- `~/src/blockninja/orchestrator` (backend module at `backend/`)
|
||||||
- `~/src/core` (ninja CLI at `cmd/ninja/`, SDK at `plugin/`)
|
- `~/src/blockninja/core` (ninja CLI at `cmd/ninja/`, SDK at `plugin/`)
|
||||||
|
|
||||||
Tasks are tagged `[orch]` or `[core]` to indicate which repo they live in. Proto change tasks touch both repos.
|
Tasks are tagged `[orch]` or `[core]` to indicate which repo they live in. Proto change tasks touch both repos.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Tasks are tagged `[orch]` or `[core]` to indicate which repo they live in. Proto
|
|||||||
|
|
||||||
## File Structure
|
## File Structure
|
||||||
|
|
||||||
**`~/src/orchestrator/backend/` changes:**
|
**`~/src/blockninja/orchestrator/backend/` changes:**
|
||||||
- Create: `internal/registry/archive/archive.go` — pure helpers: open tar.zst, walk to `plugin.mod`, enforce size caps.
|
- Create: `internal/registry/archive/archive.go` — pure helpers: open tar.zst, walk to `plugin.mod`, enforce size caps.
|
||||||
- Create: `internal/registry/archive/archive_test.go`
|
- Create: `internal/registry/archive/archive_test.go`
|
||||||
- Create: `internal/registry/api/category.go` — `ListCategories` handler.
|
- Create: `internal/registry/api/category.go` — `ListCategories` handler.
|
||||||
@ -38,7 +38,7 @@ Tasks are tagged `[orch]` or `[core]` to indicate which repo they live in. Proto
|
|||||||
- Auto-regen: `internal/db/*.sql.go` via `make sqlc`.
|
- Auto-regen: `internal/db/*.sql.go` via `make sqlc`.
|
||||||
- Auto-regen: `sql/schema.sql` via `make schema`.
|
- Auto-regen: `sql/schema.sql` via `make schema`.
|
||||||
|
|
||||||
**`~/src/core/` changes:**
|
**`~/src/blockninja/core/` changes:**
|
||||||
- Create: `cmd/ninja/internal/archive/archive.go` — pure helper to build `tar.zst` from `git archive HEAD`.
|
- Create: `cmd/ninja/internal/archive/archive.go` — pure helper to build `tar.zst` from `git archive HEAD`.
|
||||||
- Create: `cmd/ninja/internal/archive/archive_test.go`
|
- Create: `cmd/ninja/internal/archive/archive_test.go`
|
||||||
- Modify: `proto/orchestrator/v1/plugin_registry.proto` — mirror orchestrator's proto changes.
|
- Modify: `proto/orchestrator/v1/plugin_registry.proto` — mirror orchestrator's proto changes.
|
||||||
@ -54,12 +54,12 @@ Tasks are tagged `[orch]` or `[core]` to indicate which repo they live in. Proto
|
|||||||
## Task 1: [core] Add klauspost/compress dependency
|
## Task 1: [core] Add klauspost/compress dependency
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/core/go.mod`, `~/src/core/go.sum`
|
- Modify: `~/src/blockninja/core/go.mod`, `~/src/blockninja/core/go.sum`
|
||||||
|
|
||||||
- [ ] **Step 1: Fetch the dep**
|
- [ ] **Step 1: Fetch the dep**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go get github.com/klauspost/compress/zstd@latest
|
go get github.com/klauspost/compress/zstd@latest
|
||||||
go mod tidy
|
go mod tidy
|
||||||
```
|
```
|
||||||
@ -81,12 +81,12 @@ git commit -m "chore(core): add klauspost/compress for plugin archive zstd"
|
|||||||
## Task 2: [orch] Add klauspost/compress dependency
|
## Task 2: [orch] Add klauspost/compress dependency
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/backend/go.mod`, `~/src/orchestrator/backend/go.sum`
|
- Modify: `~/src/blockninja/orchestrator/backend/go.mod`, `~/src/blockninja/orchestrator/backend/go.sum`
|
||||||
|
|
||||||
- [ ] **Step 1: Fetch the dep**
|
- [ ] **Step 1: Fetch the dep**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
go get github.com/klauspost/compress/zstd@latest
|
go get github.com/klauspost/compress/zstd@latest
|
||||||
go mod tidy
|
go mod tidy
|
||||||
```
|
```
|
||||||
@ -112,12 +112,12 @@ through zstd. Returns the compressed bytes. Lives in
|
|||||||
`cmd/ninja/internal/archive/` so the CLI can use it but nothing else.
|
`cmd/ninja/internal/archive/` so the CLI can use it but nothing else.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Create: `~/src/core/cmd/ninja/internal/archive/archive.go`
|
- Create: `~/src/blockninja/core/cmd/ninja/internal/archive/archive.go`
|
||||||
- Create: `~/src/core/cmd/ninja/internal/archive/archive_test.go`
|
- Create: `~/src/blockninja/core/cmd/ninja/internal/archive/archive_test.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Write the failing test**
|
- [ ] **Step 1: Write the failing test**
|
||||||
|
|
||||||
`~/src/core/cmd/ninja/internal/archive/archive_test.go`:
|
`~/src/blockninja/core/cmd/ninja/internal/archive/archive_test.go`:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package archive
|
package archive
|
||||||
@ -214,14 +214,14 @@ func keys(m map[string]string) []string {
|
|||||||
- [ ] **Step 2: Run test to verify it fails**
|
- [ ] **Step 2: Run test to verify it fails**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go test ./cmd/ninja/internal/archive/...
|
go test ./cmd/ninja/internal/archive/...
|
||||||
```
|
```
|
||||||
Expected: FAIL — package doesn't exist yet.
|
Expected: FAIL — package doesn't exist yet.
|
||||||
|
|
||||||
- [ ] **Step 3: Implement**
|
- [ ] **Step 3: Implement**
|
||||||
|
|
||||||
`~/src/core/cmd/ninja/internal/archive/archive.go`:
|
`~/src/blockninja/core/cmd/ninja/internal/archive/archive.go`:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package archive
|
package archive
|
||||||
@ -288,12 +288,12 @@ decompresses, walks the tar, extracts `plugin.mod`, and returns parsed
|
|||||||
contents.
|
contents.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Create: `~/src/orchestrator/backend/internal/registry/archive/archive.go`
|
- Create: `~/src/blockninja/orchestrator/backend/internal/registry/archive/archive.go`
|
||||||
- Create: `~/src/orchestrator/backend/internal/registry/archive/archive_test.go`
|
- Create: `~/src/blockninja/orchestrator/backend/internal/registry/archive/archive_test.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Write the failing test**
|
- [ ] **Step 1: Write the failing test**
|
||||||
|
|
||||||
`~/src/orchestrator/backend/internal/registry/archive/archive_test.go`:
|
`~/src/blockninja/orchestrator/backend/internal/registry/archive/archive_test.go`:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package archive
|
package archive
|
||||||
@ -374,14 +374,14 @@ func TestOpenAndValidate_RejectsDecompressionBomb(t *testing.T) {
|
|||||||
- [ ] **Step 2: Run test to verify failure**
|
- [ ] **Step 2: Run test to verify failure**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
go test ./internal/registry/archive/...
|
go test ./internal/registry/archive/...
|
||||||
```
|
```
|
||||||
Expected: FAIL — package doesn't exist.
|
Expected: FAIL — package doesn't exist.
|
||||||
|
|
||||||
- [ ] **Step 3: Implement**
|
- [ ] **Step 3: Implement**
|
||||||
|
|
||||||
`~/src/orchestrator/backend/internal/registry/archive/archive.go`:
|
`~/src/blockninja/orchestrator/backend/internal/registry/archive/archive.go`:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package archive
|
package archive
|
||||||
@ -475,10 +475,10 @@ Goose migration that drops `git_commit` and `git_tag` columns on
|
|||||||
`registry_versions`. These are not used after the publish flow change.
|
`registry_versions`. These are not used after the publish flow change.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Create: `~/src/orchestrator/backend/sql/migrations/00055_drop_publish_git_fields.sql`
|
- Create: `~/src/blockninja/orchestrator/backend/sql/migrations/00055_drop_publish_git_fields.sql`
|
||||||
- Modify: `~/src/orchestrator/backend/sql/queries/registry_versions.sql`
|
- Modify: `~/src/blockninja/orchestrator/backend/sql/queries/registry_versions.sql`
|
||||||
- Modify: `~/src/orchestrator/backend/sql/schema.sql` (auto via `make schema`)
|
- Modify: `~/src/blockninja/orchestrator/backend/sql/schema.sql` (auto via `make schema`)
|
||||||
- Regen: `~/src/orchestrator/backend/internal/db/*.sql.go` (auto via `make sqlc`)
|
- Regen: `~/src/blockninja/orchestrator/backend/internal/db/*.sql.go` (auto via `make sqlc`)
|
||||||
|
|
||||||
- [ ] **Step 1: Write the migration**
|
- [ ] **Step 1: Write the migration**
|
||||||
|
|
||||||
@ -521,7 +521,7 @@ Renumber the placeholders accordingly.
|
|||||||
- [ ] **Step 3: Run the migration**
|
- [ ] **Step 3: Run the migration**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
make migrate
|
make migrate
|
||||||
```
|
```
|
||||||
Expected: migrations applied through `00055`.
|
Expected: migrations applied through `00055`.
|
||||||
@ -558,14 +558,14 @@ git commit -m "feat(orch): drop git_commit/git_tag from registry_versions"
|
|||||||
`PublishVersionRequest` drops `git_ref` and gains `string version` + `bytes archive`. `CreatePluginResponse` drops `git_remote_url`. Apply in both proto files and regen.
|
`PublishVersionRequest` drops `git_ref` and gains `string version` + `bytes archive`. `CreatePluginResponse` drops `git_remote_url`. Apply in both proto files and regen.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/proto/orchestrator/v1/plugin_registry.proto`
|
- Modify: `~/src/blockninja/orchestrator/proto/orchestrator/v1/plugin_registry.proto`
|
||||||
- Modify: `~/src/core/proto/orchestrator/v1/plugin_registry.proto`
|
- Modify: `~/src/blockninja/core/proto/orchestrator/v1/plugin_registry.proto`
|
||||||
- Regen: `~/src/orchestrator/backend/api/orchestrator/v1/plugin_registry.pb.go` + connect file (via `cd ~/src/orchestrator && make -C backend proto` or `buf generate`)
|
- Regen: `~/src/blockninja/orchestrator/backend/api/orchestrator/v1/plugin_registry.pb.go` + connect file (via `cd ~/src/blockninja/orchestrator && make -C backend proto` or `buf generate`)
|
||||||
- Regen: `~/src/core/internal/api/orchestrator/v1/plugin_registry.pb.go` + connect file (via `cd ~/src/core && buf generate`)
|
- Regen: `~/src/blockninja/core/internal/api/orchestrator/v1/plugin_registry.pb.go` + connect file (via `cd ~/src/blockninja/core && buf generate`)
|
||||||
|
|
||||||
- [ ] **Step 1: Edit orchestrator proto**
|
- [ ] **Step 1: Edit orchestrator proto**
|
||||||
|
|
||||||
In `~/src/orchestrator/proto/orchestrator/v1/plugin_registry.proto`, replace:
|
In `~/src/blockninja/orchestrator/proto/orchestrator/v1/plugin_registry.proto`, replace:
|
||||||
|
|
||||||
```proto
|
```proto
|
||||||
message CreatePluginResponse {
|
message CreatePluginResponse {
|
||||||
@ -609,12 +609,12 @@ message PublishVersionRequest {
|
|||||||
|
|
||||||
- [ ] **Step 2: Mirror to core proto**
|
- [ ] **Step 2: Mirror to core proto**
|
||||||
|
|
||||||
Apply the identical changes to `~/src/core/proto/orchestrator/v1/plugin_registry.proto`. (Note: the two protos have small drift — keep core's drift intact and apply only the two diffs above.)
|
Apply the identical changes to `~/src/blockninja/core/proto/orchestrator/v1/plugin_registry.proto`. (Note: the two protos have small drift — keep core's drift intact and apply only the two diffs above.)
|
||||||
|
|
||||||
- [ ] **Step 3: Regen orchestrator**
|
- [ ] **Step 3: Regen orchestrator**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
make -C backend proto
|
make -C backend proto
|
||||||
```
|
```
|
||||||
Expected: `backend/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
Expected: `backend/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
||||||
@ -622,7 +622,7 @@ Expected: `backend/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
|||||||
- [ ] **Step 4: Regen core**
|
- [ ] **Step 4: Regen core**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
buf generate
|
buf generate
|
||||||
```
|
```
|
||||||
Expected: `internal/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
Expected: `internal/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
||||||
@ -631,14 +631,14 @@ Expected: `internal/api/orchestrator/v1/plugin_registry.pb.go` regenerated.
|
|||||||
|
|
||||||
In orchestrator:
|
In orchestrator:
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
git add proto/ backend/api/ frontend/src/lib/api/gen/
|
git add proto/ backend/api/ frontend/src/lib/api/gen/
|
||||||
git commit -m "feat(orch): PublishVersionRequest takes bytes archive; drop git_remote_url"
|
git commit -m "feat(orch): PublishVersionRequest takes bytes archive; drop git_remote_url"
|
||||||
```
|
```
|
||||||
|
|
||||||
In core:
|
In core:
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
git add proto/ internal/api/
|
git add proto/ internal/api/
|
||||||
git commit -m "feat(core): mirror PublishVersionRequest archive bytes proto change"
|
git commit -m "feat(core): mirror PublishVersionRequest archive bytes proto change"
|
||||||
```
|
```
|
||||||
@ -650,12 +650,12 @@ extract `plugin.mod`, cross-check fields, store via `regstorage`, record
|
|||||||
the version. No git, no `repos`, no tag.
|
the version. No git, no `repos`, no tag.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/publish.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/publish.go`
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/converters.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/converters.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Replace publish.go contents**
|
- [ ] **Step 1: Replace publish.go contents**
|
||||||
|
|
||||||
Open `~/src/orchestrator/backend/internal/registry/api/publish.go` and replace its contents with:
|
Open `~/src/blockninja/orchestrator/backend/internal/registry/api/publish.go` and replace its contents with:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package api
|
package api
|
||||||
@ -861,7 +861,7 @@ func splitRef(ref string) (scope, name string, ok bool) {
|
|||||||
|
|
||||||
- [ ] **Step 2: Update `versionToProto` to drop git fields**
|
- [ ] **Step 2: Update `versionToProto` to drop git fields**
|
||||||
|
|
||||||
In `~/src/orchestrator/backend/internal/registry/api/converters.go`, replace `versionToProto` with:
|
In `~/src/blockninja/orchestrator/backend/internal/registry/api/converters.go`, replace `versionToProto` with:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func versionToProto(v db.RegistryVersion) *orchestratorv1.Version {
|
func versionToProto(v db.RegistryVersion) *orchestratorv1.Version {
|
||||||
@ -887,7 +887,7 @@ Go back to Task 6 and add: remove `string git_commit = 4;` and `string git_tag =
|
|||||||
- [ ] **Step 3: Verify build**
|
- [ ] **Step 3: Verify build**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
go build ./...
|
go build ./...
|
||||||
```
|
```
|
||||||
Expected: clean (Task 5's `git_commit`/`git_tag` references now resolved by the new converter).
|
Expected: clean (Task 5's `git_commit`/`git_tag` references now resolved by the new converter).
|
||||||
@ -909,7 +909,7 @@ git commit -m "feat(orch): rewrite PublishVersion to use tar.zst archive"
|
|||||||
## Task 8: [orch] Drop `git_remote_url` and update `CreatePlugin` handler
|
## Task 8: [orch] Drop `git_remote_url` and update `CreatePlugin` handler
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/plugin.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/plugin.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Remove `git_remote_url` from CreatePlugin response**
|
- [ ] **Step 1: Remove `git_remote_url` from CreatePlugin response**
|
||||||
|
|
||||||
@ -981,14 +981,14 @@ git commit -m "feat(orch): drop GitRemoteUrl from CreatePlugin response"
|
|||||||
## Task 9: [orch] Delete `internal/registry/git/`, wiring + config cleanup
|
## Task 9: [orch] Delete `internal/registry/git/`, wiring + config cleanup
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Delete: `~/src/orchestrator/backend/internal/registry/git/` (entire directory)
|
- Delete: `~/src/blockninja/orchestrator/backend/internal/registry/git/` (entire directory)
|
||||||
- Modify: `~/src/orchestrator/backend/internal/server/registry_wiring.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/server/registry_wiring.go`
|
||||||
- Modify: `~/src/orchestrator/backend/internal/config/config.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/config/config.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Delete the git package**
|
- [ ] **Step 1: Delete the git package**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
git rm -r internal/registry/git/
|
git rm -r internal/registry/git/
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1143,11 +1143,11 @@ git commit -m "feat(orch): delete registry/git package, drop /git route and Regi
|
|||||||
## Task 10: [core] Rewrite `publish` CLI command
|
## Task 10: [core] Rewrite `publish` CLI command
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/core/cmd/ninja/cmd/plugin.go` (the `newPluginPublishCmd` function)
|
- Modify: `~/src/blockninja/core/cmd/ninja/cmd/plugin.go` (the `newPluginPublishCmd` function)
|
||||||
|
|
||||||
- [ ] **Step 1: Replace `newPluginPublishCmd`**
|
- [ ] **Step 1: Replace `newPluginPublishCmd`**
|
||||||
|
|
||||||
In `~/src/core/cmd/ninja/cmd/plugin.go`, replace `newPluginPublishCmd` with:
|
In `~/src/blockninja/core/cmd/ninja/cmd/plugin.go`, replace `newPluginPublishCmd` with:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func newPluginPublishCmd() *cobra.Command {
|
func newPluginPublishCmd() *cobra.Command {
|
||||||
@ -1238,7 +1238,7 @@ At the top of `plugin.go`, add to the imports:
|
|||||||
- [ ] **Step 3: Verify build**
|
- [ ] **Step 3: Verify build**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go build ./...
|
go build ./...
|
||||||
```
|
```
|
||||||
Expected: clean.
|
Expected: clean.
|
||||||
@ -1260,7 +1260,7 @@ git commit -m "feat(cli): rewrite plugin publish to send tar.zst archive"
|
|||||||
## Task 11: [core] Rewrite `init` CLI command (auto-commit, no remote)
|
## Task 11: [core] Rewrite `init` CLI command (auto-commit, no remote)
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/core/cmd/ninja/cmd/plugin.go` (the `newPluginInitCmd` function and the closing of the git-repo block)
|
- Modify: `~/src/blockninja/core/cmd/ninja/cmd/plugin.go` (the `newPluginInitCmd` function and the closing of the git-repo block)
|
||||||
|
|
||||||
- [ ] **Step 1: Replace the git-repo block**
|
- [ ] **Step 1: Replace the git-repo block**
|
||||||
|
|
||||||
@ -1333,7 +1333,7 @@ func autoCommitPluginMod() error {
|
|||||||
- [ ] **Step 3: Verify build**
|
- [ ] **Step 3: Verify build**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go build ./...
|
go build ./...
|
||||||
```
|
```
|
||||||
Expected: clean.
|
Expected: clean.
|
||||||
@ -1360,7 +1360,7 @@ This is verification only — no commit.
|
|||||||
- [ ] **Step 1: Restart the orchestrator**
|
- [ ] **Step 1: Restart the orchestrator**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
podman compose build orchestrator-backend
|
podman compose build orchestrator-backend
|
||||||
podman compose up -d orchestrator-backend
|
podman compose up -d orchestrator-backend
|
||||||
```
|
```
|
||||||
@ -1416,13 +1416,13 @@ rm -rf /tmp/smokeplugin
|
|||||||
## Task 13: [core] Add `Kind` and `Categories` to `ModFile` + update `writeMod`
|
## Task 13: [core] Add `Kind` and `Categories` to `ModFile` + update `writeMod`
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/core/plugin/mod.go`
|
- Modify: `~/src/blockninja/core/plugin/mod.go`
|
||||||
- Modify: `~/src/core/plugin/mod_test.go`
|
- Modify: `~/src/blockninja/core/plugin/mod_test.go`
|
||||||
- Modify: `~/src/core/cmd/ninja/cmd/plugin.go` (the `writeMod` helper)
|
- Modify: `~/src/blockninja/core/cmd/ninja/cmd/plugin.go` (the `writeMod` helper)
|
||||||
|
|
||||||
- [ ] **Step 1: Add the new test cases**
|
- [ ] **Step 1: Add the new test cases**
|
||||||
|
|
||||||
Append to `~/src/core/plugin/mod_test.go`:
|
Append to `~/src/blockninja/core/plugin/mod_test.go`:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func TestParseModFull_KindAndCategories(t *testing.T) {
|
func TestParseModFull_KindAndCategories(t *testing.T) {
|
||||||
@ -1465,14 +1465,14 @@ version = "0.1.0"
|
|||||||
- [ ] **Step 2: Run tests to verify failure**
|
- [ ] **Step 2: Run tests to verify failure**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go test ./plugin/...
|
go test ./plugin/...
|
||||||
```
|
```
|
||||||
Expected: FAIL — `Kind`/`Categories` fields don't exist yet.
|
Expected: FAIL — `Kind`/`Categories` fields don't exist yet.
|
||||||
|
|
||||||
- [ ] **Step 3: Add fields to `ModPlugin`**
|
- [ ] **Step 3: Add fields to `ModPlugin`**
|
||||||
|
|
||||||
In `~/src/core/plugin/mod.go`, replace `ModPlugin` with:
|
In `~/src/blockninja/core/plugin/mod.go`, replace `ModPlugin` with:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
type ModPlugin struct {
|
type ModPlugin struct {
|
||||||
@ -1493,7 +1493,7 @@ Expected: PASS.
|
|||||||
|
|
||||||
- [ ] **Step 5: Update `writeMod` to emit new fields**
|
- [ ] **Step 5: Update `writeMod` to emit new fields**
|
||||||
|
|
||||||
In `~/src/core/cmd/ninja/cmd/plugin.go`, replace `writeMod` with:
|
In `~/src/blockninja/core/cmd/ninja/cmd/plugin.go`, replace `writeMod` with:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func writeMod(path string, m *core.ModFile) error {
|
func writeMod(path string, m *core.ModFile) error {
|
||||||
@ -1542,10 +1542,10 @@ git commit -m "feat(sdk): add Kind and Categories to ModPlugin; writeMod emits t
|
|||||||
## Task 14: [orch] Migration — add `kind` to registry_plugins + new `registry_categories` table
|
## Task 14: [orch] Migration — add `kind` to registry_plugins + new `registry_categories` table
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Create: `~/src/orchestrator/backend/sql/migrations/00056_plugin_kind_and_categories.sql`
|
- Create: `~/src/blockninja/orchestrator/backend/sql/migrations/00056_plugin_kind_and_categories.sql`
|
||||||
- Create: `~/src/orchestrator/backend/sql/queries/registry_categories.sql`
|
- Create: `~/src/blockninja/orchestrator/backend/sql/queries/registry_categories.sql`
|
||||||
- Modify: `~/src/orchestrator/backend/sql/queries/registry_plugins.sql` (add kind handling)
|
- Modify: `~/src/blockninja/orchestrator/backend/sql/queries/registry_plugins.sql` (add kind handling)
|
||||||
- Auto-regen: `~/src/orchestrator/backend/sql/schema.sql` and `~/src/orchestrator/backend/internal/db/*.sql.go`
|
- Auto-regen: `~/src/blockninja/orchestrator/backend/sql/schema.sql` and `~/src/blockninja/orchestrator/backend/internal/db/*.sql.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Write the migration**
|
- [ ] **Step 1: Write the migration**
|
||||||
|
|
||||||
@ -1633,7 +1633,7 @@ new optional params.)
|
|||||||
- [ ] **Step 4: Run the migration**
|
- [ ] **Step 4: Run the migration**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator/backend
|
cd ~/src/blockninja/orchestrator/backend
|
||||||
make migrate
|
make migrate
|
||||||
```
|
```
|
||||||
Expected: applied through `00056`.
|
Expected: applied through `00056`.
|
||||||
@ -1664,8 +1664,8 @@ git commit -m "feat(orch): add plugin kind and registry_categories with seed"
|
|||||||
## Task 15: Proto change — `Plugin.kind`, request fields, `ListCategories` RPC
|
## Task 15: Proto change — `Plugin.kind`, request fields, `ListCategories` RPC
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/proto/orchestrator/v1/plugin_registry.proto`
|
- Modify: `~/src/blockninja/orchestrator/proto/orchestrator/v1/plugin_registry.proto`
|
||||||
- Modify: `~/src/core/proto/orchestrator/v1/plugin_registry.proto`
|
- Modify: `~/src/blockninja/core/proto/orchestrator/v1/plugin_registry.proto`
|
||||||
- Regen on both repos.
|
- Regen on both repos.
|
||||||
|
|
||||||
- [ ] **Step 1: Edit orchestrator proto — `Plugin` gains `kind`**
|
- [ ] **Step 1: Edit orchestrator proto — `Plugin` gains `kind`**
|
||||||
@ -1742,19 +1742,19 @@ message ListCategoriesResponse { repeated Category categories = 1; }
|
|||||||
|
|
||||||
- [ ] **Step 5: Mirror all 4 edits to core's proto**
|
- [ ] **Step 5: Mirror all 4 edits to core's proto**
|
||||||
|
|
||||||
Apply the identical changes to `~/src/core/proto/orchestrator/v1/plugin_registry.proto`.
|
Apply the identical changes to `~/src/blockninja/core/proto/orchestrator/v1/plugin_registry.proto`.
|
||||||
|
|
||||||
- [ ] **Step 6: Regen orchestrator**
|
- [ ] **Step 6: Regen orchestrator**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
make -C backend proto
|
make -C backend proto
|
||||||
```
|
```
|
||||||
|
|
||||||
- [ ] **Step 7: Regen core**
|
- [ ] **Step 7: Regen core**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
buf generate
|
buf generate
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1762,14 +1762,14 @@ buf generate
|
|||||||
|
|
||||||
orchestrator:
|
orchestrator:
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
git add proto/ backend/api/ frontend/src/lib/api/gen/
|
git add proto/ backend/api/ frontend/src/lib/api/gen/
|
||||||
git commit -m "feat(orch): proto adds Plugin.kind, ListCategories RPC, filter args"
|
git commit -m "feat(orch): proto adds Plugin.kind, ListCategories RPC, filter args"
|
||||||
```
|
```
|
||||||
|
|
||||||
core:
|
core:
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
git add proto/ internal/api/
|
git add proto/ internal/api/
|
||||||
git commit -m "feat(core): mirror Plugin.kind + ListCategories proto regen"
|
git commit -m "feat(core): mirror Plugin.kind + ListCategories proto regen"
|
||||||
```
|
```
|
||||||
@ -1777,8 +1777,8 @@ git commit -m "feat(core): mirror Plugin.kind + ListCategories proto regen"
|
|||||||
## Task 16: [orch] Converters + CreatePlugin + helper for category validation
|
## Task 16: [orch] Converters + CreatePlugin + helper for category validation
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/converters.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/converters.go`
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/plugin.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/plugin.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Update converters to include `Kind`**
|
- [ ] **Step 1: Update converters to include `Kind`**
|
||||||
|
|
||||||
@ -1960,8 +1960,8 @@ git commit -m "feat(orch): CreatePlugin/ListPlugins handle kind and categories"
|
|||||||
## Task 17: [orch] Add `ListCategories` handler
|
## Task 17: [orch] Add `ListCategories` handler
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Create: `~/src/orchestrator/backend/internal/registry/api/category.go`
|
- Create: `~/src/blockninja/orchestrator/backend/internal/registry/api/category.go`
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/plugin.go` (add method to `PluginHandler`)
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/plugin.go` (add method to `PluginHandler`)
|
||||||
|
|
||||||
- [ ] **Step 1: Add the handler method**
|
- [ ] **Step 1: Add the handler method**
|
||||||
|
|
||||||
@ -2007,7 +2007,7 @@ The published `plugin.mod` must agree with `registry_plugins` on `kind` and
|
|||||||
plugin across versions.
|
plugin across versions.
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/orchestrator/backend/internal/registry/api/publish.go`
|
- Modify: `~/src/blockninja/orchestrator/backend/internal/registry/api/publish.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Add the cross-check**
|
- [ ] **Step 1: Add the cross-check**
|
||||||
|
|
||||||
@ -2067,7 +2067,7 @@ git commit -m "feat(orch): publish cross-checks plugin.mod kind/categories again
|
|||||||
## Task 19: [core] CLI `init` prompts for kind and categories
|
## Task 19: [core] CLI `init` prompts for kind and categories
|
||||||
|
|
||||||
**Files:**
|
**Files:**
|
||||||
- Modify: `~/src/core/cmd/ninja/cmd/plugin.go`
|
- Modify: `~/src/blockninja/core/cmd/ninja/cmd/plugin.go`
|
||||||
|
|
||||||
- [ ] **Step 1: Add a `promptKind` helper**
|
- [ ] **Step 1: Add a `promptKind` helper**
|
||||||
|
|
||||||
@ -2195,7 +2195,7 @@ if err := upsertPluginMod(scope, name, kind, cats); err != nil {
|
|||||||
- [ ] **Step 4: Verify build**
|
- [ ] **Step 4: Verify build**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go build ./...
|
go build ./...
|
||||||
```
|
```
|
||||||
Expected: clean.
|
Expected: clean.
|
||||||
@ -2218,7 +2218,7 @@ git commit -m "feat(cli): init prompts for kind and categories"
|
|||||||
- [ ] **Step 1: Restart orchestrator**
|
- [ ] **Step 1: Restart orchestrator**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/orchestrator
|
cd ~/src/blockninja/orchestrator
|
||||||
podman compose build orchestrator-backend
|
podman compose build orchestrator-backend
|
||||||
podman compose up -d orchestrator-backend
|
podman compose up -d orchestrator-backend
|
||||||
```
|
```
|
||||||
@ -2316,7 +2316,7 @@ warning if non-empty. Spec calls for this; plan didn't include it. Adding now:
|
|||||||
|
|
||||||
### Task 11.5: [core] Publish-time warning for tracked-yet-gitignored files
|
### Task 11.5: [core] Publish-time warning for tracked-yet-gitignored files
|
||||||
|
|
||||||
**Files:** Modify `~/src/core/cmd/ninja/cmd/plugin.go` (the publish command).
|
**Files:** Modify `~/src/blockninja/core/cmd/ninja/cmd/plugin.go` (the publish command).
|
||||||
|
|
||||||
- [ ] **Step 1:** After the working-tree-clean check and before `BuildSourceArchive`, insert:
|
- [ ] **Step 1:** After the working-tree-clean check and before `BuildSourceArchive`, insert:
|
||||||
|
|
||||||
@ -2334,7 +2334,7 @@ if names := strings.TrimSpace(string(out)); names != "" {
|
|||||||
- [ ] **Step 2:** Build and reinstall.
|
- [ ] **Step 2:** Build and reinstall.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/src/core
|
cd ~/src/blockninja/core
|
||||||
go build ./... && go install ./cmd/ninja
|
go build ./... && go install ./cmd/ninja
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user