Control-plane CLI: org/project get+delete, repo grant list+remove - #1499
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the generated Core API client (internal/coreapi) to consume newly added v1 endpoints (org/project get+delete, repo grant list+revoke) and wires new CLI verbs under the hidden control-plane command groups (entire org, entire project, entire grant repo). It also introduces typed/validated grant role enums (reader/writer/admin) and adds unit tests for the new resolver/flag-validation helpers.
Changes:
- Regenerate
internal/coreapifrom an updated OpenAPI spec, adding org/project get+delete and repo grant list/revoke operations, plus typed role enums. - Add new CLI verbs:
entire org get|delete,entire project get|delete,entire grant repo list|remove, and validate/cast--rolefor project/repo grants. - Add repo-name resolution helper (
resolveRepoRef) gated by--project, plus unit tests for repo picking and grant-role/grantee-mode parsing.
Reviewed changes
Copilot reviewed 8 out of 17 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| internal/coreapi/spec/core.openapi.json | OpenAPI spec update adding new endpoints and role enums. |
| internal/coreapi/spec/core.gen.json | Generated schema update reflecting enum roles and new response shapes. |
| internal/coreapi/oas_validators_gen.go | Generated validators updated for typed role enums + new output bodies. |
| internal/coreapi/oas_security_gen.go | Generated auth/role maps updated for new operations. |
| internal/coreapi/oas_schemas_gen.go | Generated Go types updated (typed roles; new request/response structs). |
| internal/coreapi/oas_response_decoders_gen.go | Generated HTTP response decoders added for new endpoints. |
| internal/coreapi/oas_parameters_gen.go | Generated parameter structs added for new endpoints. |
| internal/coreapi/oas_operations_gen.go | Generated operation constants added for new endpoints. |
| internal/coreapi/oas_json_gen.go | Generated JSON encode/decode updated for typed roles and new schemas. |
| cmd/entire/cli/resolveref.go | Add resolveRepoRef/pickRepo to resolve repo names with --project scope. |
| cmd/entire/cli/resolveref_test.go | Unit tests for pickRepo (plus existing resolver helper coverage). |
| cmd/entire/cli/repo.go | Repo get/delete now accept name-or-ULID with optional --project for name resolution. |
| cmd/entire/cli/project.go | Add project get and project delete commands using name/ULID resolution. |
| cmd/entire/cli/org.go | Add org get and org delete commands using name/ULID resolution. |
| cmd/entire/cli/grant.go | Validate/cast grant roles; add grant repo list/remove; reuse repo resolution with --project. |
| cmd/entire/cli/grant_test.go | Unit tests for validateGrantRole and parseGranteeMode rename/behavior. |
Files not reviewed (7)
- internal/coreapi/oas_json_gen.go: Generated file
- internal/coreapi/oas_operations_gen.go: Generated file
- internal/coreapi/oas_parameters_gen.go: Generated file
- internal/coreapi/oas_response_decoders_gen.go: Generated file
- internal/coreapi/oas_schemas_gen.go: Generated file
- internal/coreapi/oas_security_gen.go: Generated file
- internal/coreapi/oas_validators_gen.go: Generated file
toothbrush
force-pushed
the
feat/control-plane-crud-gaps
branch
from
June 23, 2026 08:30
7dc26c0 to
41bc806
Compare
toothbrush
force-pushed
the
feat/control-plane-friendly-names
branch
from
June 24, 2026 05:06
d08809d to
789678d
Compare
toothbrush
force-pushed
the
feat/control-plane-crud-gaps
branch
2 times, most recently
from
June 24, 2026 05:43
2749cb4 to
2d4b58a
Compare
toothbrush
force-pushed
the
feat/control-plane-friendly-names
branch
from
June 24, 2026 08:12
415781c to
d7a7ef2
Compare
toothbrush
force-pushed
the
feat/control-plane-crud-gaps
branch
from
June 24, 2026 08:23
2d4b58a to
d2eac6d
Compare
toothbrush
force-pushed
the
feat/control-plane-friendly-names
branch
from
June 24, 2026 23:49
d7a7ef2 to
7144c12
Compare
#2122 made the v1 grant role a validated enum (reader/writer/admin), so the regenerated client types GrantProjectAccess/GrantRepoAccess Role fields as enums rather than string. Validate --role at the CLI boundary and cast to the typed value. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: e9918e472c9d
…emove Consume the v1 CRUD-gap endpoints (entiredb #2122): - entire org get|delete <name|ULID> - entire project get|delete <name|ULID> - entire grant repo list <repo> - entire grant repo remove <repo> (--provider/--provider-user-id or --grantee-type/--grantee-id) Org/project args resolve friendly names via the shared resolveref helpers. The grantee-mode helper (renamed parseGranteeMode) and the provider/by-id remove form are now shared by project and repo. Repo args stay ULID-only for now — resolving a repo by name needs a project scope. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: a995fb3417fb
repo get/delete and grant repo add/list/remove now accept a repo name (not just a ULID) when --project <name|ULID> is given to scope the lookup — repo names are unique only within a project. A ULID still passes through unchanged and ignores --project. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: ab8e423ff72f
entire-core's v1 list endpoints now return keyset pages (limit/cursor +
nextCursor) and cap page size at 50, and orgs/repos gained O(1) ?name=
lookups. Regenerate the client against the refreshed spec and update the
consumers:
- fetchAllPages: a cursor-following helper; every list command (org/
project/repo list, grant org/project/repo list) now walks all pages
instead of silently showing only the first 50.
- resolveOrgRef/resolveRepoRef: resolve names via the server's O(1)
?name= lookup (single org/repo response) rather than listing+scanning,
which would now miss a target past page 1.
- resolveProjectRef and `project list --name`: read the single `project`
field the ?name= response actually returns (was reading the empty
`projects` list — a latent miss).
- drop the now-unused client-side pickOrg/pickProject/pickRepo matchers.
Spec refreshed from entiredb main (also narrows grant granteeType to
account-only, already enforced server-side).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
entire-core renamed the v1 list pagination params to match the data-plane convention (cursor → pageToken, nextCursor → nextPageToken). Regenerate the client and follow suit in the page-walking call sites. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
COR-583 paginates the remaining v1 list endpoints on the same PageInput/PageMeta dialect. Of those, the CLI consumes only ListMirrors: wrap `repo mirror list` in fetchAllPages so it walks every page instead of showing the first 50. Regenerate the client against the refreshed spec (audit/oidc-providers/service-accounts/bindings/lookup-resources gain pagination too, but no CLI command consumes them yet). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, parallel tests)
- grant {project,repo} add: the control plane (and the regenerated client
enum) accept only granteeType=account now (org/team granting was dropped
server-side, COR-561). Validate --grantee-type at the CLI with a clear
message instead of an opaque enum-encoding error, and correct the
flag/Long help that still advertised org/team (add + revoke).
- fetchAllPages: drop the hard-coded "max 200" from the doc comment; the
server caps page size and may cap further, so phrase it generically.
- resolver tests: add t.Parallel() to match the file's convention (each
builds its own httptest server; no shared global state).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
org/project/repo delete echoed the user-supplied arg, so a name-based delete confirmed a name while the operation used the resolved ULID — ambiguous where names are reused. Add resolvedRefLabel to render "name (ULID)" for names and the bare ULID otherwise. Addresses trail #642 finding. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: c14749e12a9d
org/project/repo delete called the destructive API immediately after resolving the ref — a name typo that resolves to a real resource (or a wrong-but-valid ULID) deleted silently. Gate each behind a confirmation prompt (the existing trail-delete pattern) with a --force/-f bypass and --yes/-y alias; non-interactive runs refuse without --force rather than deleting unprompted. Shared body extracted to runControlPlaneDelete. Addresses trail #642 finding. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 5201fa5dc67c
- org/project/repo delete now treat a 404 from the delete call as the desired end state (already gone), printing "<noun> <label> not found; nothing to delete" instead of surfacing a raw 404. - Add command-level tests driving each delete command through cobra against a fake control plane: --force issues DELETE on the right path, an already-gone resource is idempotent, and a non-interactive run without --force refuses rather than deleting unprompted. Addresses trail #642 findings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: 416181183067
…solver Rebased onto feat/control-plane-friendly-names, which had independently reworked name resolution to the client-side pickOrg/pickProject design. Kept that resolver and dropped crud-gaps' server-side ?name= variant; this pass adapts the seams: - resolveOrgRef walks all pages (ListOrgs is now paginated) then pickOrg - restore isNotFound + resolvedRefLabel helpers used by the delete commands - writeNotFoundProblem test helper (friendly-names' resolver tests lack it) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Entire-Checkpoint: ae2378c10239
Entire-Checkpoint: ccbb08235fc2
Two gaps in the grant revoke surface:
- Revoking an already-revoked grantee surfaced a raw 404. RemoveOrgMember,
RevokeProjectAccess(ByProvider), and RevokeRepoAccess(ByProvider) now route
through a shared revokeGrant helper that treats 404 as a no-op ("no such
grant; nothing to revoke"), matching runControlPlaneDelete's idempotency.
- The grantee-mode -> route selection had no command-level coverage (only pure
helpers were tested). Add TestGrantRemove_RouteWiring asserting
--provider/--provider-user-id hits the by-provider route and
--grantee-type/--grantee-id hits the typed-id route, across org/project/repo;
plus TestGrantRemove_Idempotent for the 404-as-no-op behavior.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 7504c7424c52
toothbrush
force-pushed
the
feat/control-plane-crud-gaps
branch
from
June 25, 2026 00:00
ae3b21b to
827fc6c
Compare
Soph
approved these changes
Jun 25, 2026
Soph
added a commit
that referenced
this pull request
Jul 3, 2026
Review feedback on the dead-code sweep: two deletions took the only tests of live logic with them. - factoryaidroid: the six subagent-aggregation tests only exercised the dead path-based twins, but the logic lives on in CalculateTotalTokenUsageFromBytes/ExtractAllModifiedFilesFromBytes — the production path via lifecycle.go, and Droid isn't in the CI canary. Retarget them at the FromBytes entry points: per-checkpoint offset math, the APICallCount>0 subagent gate, cross-agent file dedup, and missing-transcript tolerance are asserted again. - explain: the three default-view tests only drove the deleted runExplainDefault wrappers, leaving runExplainBranchWithFilter — the real branch soph/deslop checkpoints 114 ● f06be81196bf "<task-notification>\n<task-id>b53nll3s4</task-id>\n<tool-us..." 07-02 18:12 (ca82a6a) cli: drop types and test helper orphaned by the dead-code sweep ● 7307caae423f "<task-notification>\n<task-id>b53nll3s4</task-id>\n<tool-us..." 07-02 18:12 (350f6ff) cli subpackages: delete dead code and its dedicated tests ● 7c22eaba7124 "<task-notification>\n<task-id>b53nll3s4</task-id>\n<tool-us..." 07-02 18:12 (13b0ab1) cli: dedupe tmp-state cleanup and rewind preview warnings ● 8a9c75ea075f "<task-notification>\n<task-id>b53nll3s4</task-id>\n<tool-us..." 07-02 18:12 (a2c89a2) cli: delete dead root-package code and its dedicated tests ● ab0d1ee8ae62 e2e: share the run-capture/deadline-wrap block across age... 07-02 18:12 (c7443f4) e2e: share the run-capture/deadline-wrap block across agent runners ● 5eec000c7982 agent/geminicli: drop trailing blank line left by parser ... 07-02 18:12 (3ea3351) agent/geminicli: drop trailing blank line left by parser fold ● e64c28c66fb4 strategy, trailers, clusterdiscovery: delete dead code an... 07-02 18:12 (10892ce) strategy, trailers, clusterdiscovery: delete dead code and its tests ● 351ee2316125 cli: standardize on printJSON for indented JSON output 07-02 18:12 (7f9b918) cli: standardize on printJSON for indented JSON output ● 5c2527f62f77 cli: share the stop-sessions confirmation prompt 07-02 18:12 (62ea674) cli: share the stop-sessions confirmation prompt ● 76f119a87828 cli: dedupe agent display-name and hook-agent-option buil... 07-02 18:12 (a0ab634) cli: dedupe agent display-name and hook-agent-option building in setup ● 65cfea8234e1 agent/vogon: reuse one parser for the sessionInfoRaw hooks 07-02 18:12 (ff99145) agent/vogon: reuse one parser for the sessionInfoRaw hooks ● 4bfedc11ca7f review: dedupe config filtering and picker multiselect co... 07-02 18:12 (02a59b9) review: dedupe config filtering and picker multiselect construction ● 11253d4586b3 agent: dedupe transcript scanning in opencode and copilot... 07-02 18:12 (3aada34) agent: dedupe transcript scanning in opencode and copilot-cli ● 7b73bd925300 "/goal simplify this repo, make sure to de-slop it continu..." 07-02 18:11 (1b1e8b5) agent: collapse capability As* helpers onto two generic gates ● cafa646983ad [imported] "can you review #1462" 07-01 13:59 (cafa646) can you review #1462 ● 5bc51efe5634 [imported] "could we also add \"PR #1237\" or \"T #123\" (for trail) so m..." 07-01 13:39 (5bc51ef) could we also add "PR #1237" or "T #123" (for trail) so m... ● 1686873c82fe [imported] "test" 07-01 13:33 (1686873) test ● 424e70130be4 [imported] "can you review again, did it change?" 07-01 13:19 (424e701) can you review again, did it change? ● 88b96bfc1a5c [imported] "check" 07-01 13:18 (88b96bf) check ● 67b0ce56bd73 [imported] "one" 07-01 13:18 (67b0ce5) one ● 39348f4dc708 [imported] "can you post it as finding to the trail?" 07-01 13:11 (39348f4) can you post it as finding to the trail? ● 37c58b1285cc [imported] "so it worked a few times, but now it doesn't..." 07-01 13:07 (37c58b1) so it worked a few times, but now it doesn't... ● 738da64b0dfb [imported] "can you review #1573" 07-01 13:02 (738da64) can you review #1573 ● 42a4208d02fc [imported] "just testing if it updates now if I really type something" 07-01 12:15 (42a4208) just testing if it updates now if I really type something ● 3be2e037f80a [imported] "yes, revert" 07-01 10:46 (3be2e03) yes, revert ● 3b397151d6f6 [imported] "can you look at this comment: https://github.com/anthropi..." 07-01 10:38 (3b39715) can you look at this comment: https://github.com/anthropi... ● 4555162959cd [imported] "I think it worked when I left the focus for the window an..." 07-01 10:37 (4555162) I think it worked when I left the focus for the window an... ● 76eb3d2b9d98 [imported] "ok" 07-01 10:34 (76eb3d2) ok ● 2124a6f6a229 [imported] "test" 07-01 10:34 (2124a6f) test ● 4330123cdcf9 [imported] "it does not work :(" 06-30 16:20 (4330123) it does not work :( ● 4d9c7190f539 [imported] "ok, restarted, let's try again" 06-30 16:19 (4d9c719) ok, restarted, let's try again ● aaabdc00513b [imported] "I changed it, is this auto picked up or needs a restart?" 06-30 16:18 (aaabdc0) I changed it, is this auto picked up or needs a restart? ● 06862b0f6354 [imported] "Help me fix the issues reported by /doctor below.\n\nFor ea..." 06-30 16:16 (06862b0) Help me fix the issues reported by /doctor below. For ea... ● 8e56c6a6b74f [imported] "I put the line into the settings.json since I briefly saw..." 06-30 16:11 (8e56c6a) I put the line into the settings.json since I briefly saw... ● 5f4910a121d0 [imported] "no" 06-30 16:07 (5f4910a) no ● 4a0d45bf06c5 [imported] "it does not, but maybe I have not title set to \"\"" 06-30 16:05 (4a0d45b) it does not, but maybe I have not title set to "" ● a03587b3282a [imported] "works now, test" 06-30 16:04 (a03587b) works now, test ● 17e892e14dd0 [imported] "⏺ Ran 2 stop hooks\n ⎿ \u00a0Stop hook error: Failed with non-..." 06-30 16:00 (17e892e) ⏺ Ran 2 stop hooks ⎿ Stop hook error: Failed with non-... ● 9299dcc26c8e [imported] "hello" 06-30 15:59 (9299dcc) hello ● 3d591b1340c3 [imported] "Help me fix the issues reported by /doctor below.\n\nFor ea..." 06-30 15:58 (3d591b1) Help me fix the issues reported by /doctor below. For ea... ● 32197462b83a [imported] "yeah let's try wiring the stop hook in my settings.json, ..." 06-30 15:55 (3219746) yeah let's try wiring the stop hook in my settings.json, ... ● 08301e76c817 [imported] "but it would not work with claude being in the window and..." 06-30 15:52 (08301e7) but it would not work with claude being in the window and... ● 80b129a53f56 [imported] "I'd like to show when the last \"change\" in a ghostty tab ..." 06-30 15:49 (80b129a) I'd like to show when the last "change" in a ghostty tab ... ● 9454bdd3f330 [imported] "this has no a conflict with the base branch" 06-30 15:01 (9454bdd) this has no a conflict with the base branch ● 0652f4abbdbb [imported] "can you look at the pr comments, and also if the correspo..." 06-30 14:29 (0652f4a) can you look at the pr comments, and also if the correspo... ● f842b0ae13c4 [imported] "yes, do that" 06-30 14:07 (f842b0a) yes, do that ● aff3a8f7636f [imported] "did we open a PR yet?" 06-30 14:06 (aff3a8f) did we open a PR yet? ● 642544e41c50 [imported] "- cmd/entire/cli/paths/paths.go:32 still says transcript...." 06-30 12:28 (642544e) - cmd/entire/cli/paths/paths.go:32 still says transcript.... ● 03570057e87a [imported] "- P2 cmd/entire/cli/transcript/compact/compact.go:158: Fu..." 06-30 11:42 (0357005) - P2 cmd/entire/cli/transcript/compact/compact.go:158: Fu... ● d0b9faddc75d [imported] "<task-notification>\n<task-id>a0b8ca16f3d36a411</task-id>\n..." 06-30 11:15 (d0b9fad) <task-notification> <task-id>a0b8ca16f3d36a411</task-id> ... ● 9b2eb8b87c47 [imported] "<task-notification>\n<task-id>a78ca6485d1be4ff7</task-id>\n..." 06-30 11:14 (9b2eb8b) <task-notification> <task-id>a78ca6485d1be4ff7</task-id> ... ● 9c84afa51639 [imported] "<task-notification>\n<task-id>a457acc7c9d47e06e</task-id>\n..." 06-30 11:14 (9c84afa) <task-notification> <task-id>a457acc7c9d47e06e</task-id> ... ● 76b715ce095f [imported] "`/simplify → 4 cleanup agents in parallel → apply the fix..." 06-30 11:12 (76b715c) `/simplify → 4 cleanup agents in parallel → apply the fix... ● 4877690ab239 [imported] "how could 2 even work, we don't write the checkpoints at ..." 06-30 09:23 (4877690) how could 2 even work, we don't write the checkpoints at ... ● 2bc7d831d62e [imported] "can we start working on this?" 06-30 09:09 (2bc7d83) can we start working on this? ● d2b6c31a4e9b [imported] "Yeah but the issue is as soon as a checkpoint / commit in..." 06-30 08:57 (d2b6c31) Yeah but the issue is as soon as a checkpoint / commit in... ● def9943b30f0 [imported] "if we would want to store the transcript.jsonl as full we..." 06-30 08:46 (def9943) if we would want to store the transcript.jsonl as full we... ● 058751630ccb [imported] "<task-notification>\n<task-id>a676a8185d76c1abe</task-id>\n..." 06-30 08:42 (0587516) <task-notification> <task-id>a676a8185d76c1abe</task-id> ... ● 66311ee49b8c [imported] "can you give me a summary how we store session logs right..." 06-30 08:40 (66311ee) can you give me a summary how we store session logs right... ● e698e190b41c [imported] "can you also post the findings on 1472" 06-29 16:23 (e698e19) can you also post the findings on 1472 ● acd45beca109 [imported] "can you post those as findings on the trail using the cli..." 06-29 15:34 (acd45be) can you post those as findings on the trail using the cli... ● 4ffd98acbcbe [imported] "can you review #1313" 06-29 15:25 (4ffd98a) can you review #1313 ● e16e3aaaac83 [imported] "can you review #1472" 06-29 13:34 (e16e3aa) can you review #1472 ● 1b18c7ec130e [imported] "can you review again, I rebased" 06-29 13:12 (1b18c7e) can you review again, I rebased ● 9ad2a22d8dfc [imported] "can you review #1549 ..." 06-29 12:22 (9ad2a22) can you review #1549 ... ● 06efd7549b2f [imported] "I also not sure I like the design choice of just \"public\"..." 06-29 11:52 (06efd75) I also not sure I like the design choice of just "public"... ● a090f0dc130b [imported] "can you review #1531 ..." 06-29 11:26 (a090f0d) can you review #1531 ... ● 9a01b7c38400 [imported] "ok, now update the other place for the brew docs :)" 06-29 10:08 (9a01b7c) ok, now update the other place for the brew docs :) ● c7139bb53c2b [imported] "can you first review 1529 again" 06-29 10:03 (c7139bb) can you first review 1529 again ● 6a72ca55142f [imported] "back to 1534: can you check there are not other places wh..." 06-29 09:59 (6a72ca5) back to 1534: can you check there are not other places wh... ● 9d5af71d1933 [imported] "can you now review #1529" 06-29 09:50 (9d5af71) can you now review #1529 ● 474fa98bdd8d [imported] "can you look at #1534..." 06-29 09:45 (474fa98) can you look at #1534... ● 4f8c1a05c7b7 [imported] "can you post the findings to the trail" 06-26 10:51 (4f8c1a0) can you post the findings to the trail ● a30148800f79 [imported] "<task-notification>\n<task-id>acb9f26eddbbec259</task-id>\n..." 06-26 09:49 (a301488) <task-notification> <task-id>acb9f26eddbbec259</task-id> ... ● 52143da192be [imported] "<task-notification>\n<task-id>a8ef47f97666c7ec7</task-id>\n..." 06-26 09:47 (52143da) <task-notification> <task-id>a8ef47f97666c7ec7</task-id> ... ● cb6566b53cf4 [imported] "<task-notification>\n<task-id>ab560e36ee1d3b4fe</task-id>\n..." 06-26 09:46 (cb6566b) <task-notification> <task-id>ab560e36ee1d3b4fe</task-id> ... ● 0b6374e0727b [imported] "can you now review https://entire.io/gh/entireio/cli/trai..." 06-26 09:34 (0b6374e) can you now review https://entire.io/gh/entireio/cli/trai... ● 3780222c8dca [imported] "can you post the two findings on the corespoding trail?" 06-26 09:33 (3780222) can you post the two findings on the corespoding trail? ● 17a5bc98ead8 [imported] "<task-notification>\n<task-id>ab980f2b645d399d7</task-id>\n..." 06-26 09:05 (17a5bc9) <task-notification> <task-id>ab980f2b645d399d7</task-id> ... ● e3746a86fc59 [imported] "can you review https://entire.io/gh/entireio/cli/trails/6..." 06-26 08:55 (e3746a8) can you review https://entire.io/gh/entireio/cli/trails/6... ● da9f546ca0b2 [imported] "can you review #1511 ..." 06-26 07:15 (da9f546) can you review #1511 ... ● d7db80fe900d [imported] "How can we figure out the checkpoint version before talki..." 06-25 17:45 (d7db80f) How can we figure out the checkpoint version before talki... ● 60a30c517d1d [imported] "can you check #1507 i..." 06-25 17:28 (60a30c5) can you check #1507 i... ● 4de09c8dbe06 [imported] "are you sure the other code isn't generated too?" 06-25 13:46 (4de09c8) are you sure the other code isn't generated too? ● a7f2ccdfdae6 [imported] "<task-notification>\n<task-id>a5eabac878feb054a</task-id>\n..." 06-25 12:47 (a7f2ccd) <task-notification> <task-id>a5eabac878feb054a</task-id> ... ● ae405e941044 [imported] "<task-notification>\n<task-id>a81ae07c29c11807f</task-id>\n..." 06-25 12:46 (ae405e9) <task-notification> <task-id>a81ae07c29c11807f</task-id> ... ● 074a9669b87b [imported] "can you review #1518 ..." 06-25 12:41 (074a966) can you review #1518 ... ● aac680e5d19a [imported] "can you review https://entire.io/gh/entireio/cli/trails/661" 06-25 11:35 (aac680e) can you review https://entire.io/gh/entireio/cli/trails/661 ● d7f57fda979d [imported] "can you review https://entire.io/gh/entireio/cli/trails/652/" 06-25 10:29 (d7f57fd) can you review https://entire.io/gh/entireio/cli/trails/652/ ● a0dc8c4fe795 [imported] "can you review #1499 ..." 06-25 10:05 (a0dc8c4) can you review #1499 ... ● 4991964f4c59 [imported] "Add debug" 06-25 09:13 (4991964) Add debug ● 3889f0ebbc6a [imported] "Ok. Sounds good. The only thing I‘m now still wondering: ..." 06-25 09:11 (3889f0e) Ok. Sounds good. The only thing I‘m now still wondering: ... ● 908a3544dda7 [imported] "can you explain to me when resume will now directly launc..." 06-25 06:45 (908a354) can you explain to me when resume will now directly launc... ● b257152616fa [imported] "can you check again, there were some new commits" 06-25 06:29 (b257152) can you check again, there were some new commits ● d1772ae84a2c [imported] "The issue is: we are writing the placeholders - but they ..." 06-25 06:26 (d1772ae) The issue is: we are writing the placeholders - but they ... ● 5fd4acd71e1f [imported] "Hmm. It has none merged. The prior try failed because no ..." 06-24 16:19 (5fd4acd) Hmm. It has none merged. The prior try failed because no ... ● f2b9c1baea12 [imported] "Hmm. It has none merged. The prior try failed because no ..." 06-24 14:53 (f2b9c1b) Hmm. It has none merged. The prior try failed because no ... ● 15cbecef4326 [imported] "Question: but the skipping sounds as if no new prompts we..." 06-24 14:50 (15cbece) Question: but the skipping sounds as if no new prompts we... ● a5355b1b65c9 [imported] "[Request interrupted by user for tool use]" 06-24 14:50 (a5355b1) [Request interrupted by user for tool use] ● b99b7a61ff82 [imported] "Question: but the skipping sounds as if no new prompts we..." 06-24 14:33 (b99b7a6) Question: but the skipping sounds as if no new prompts we... ● 9e3847afcfc2 [imported] "can you take a look at this, I did run it in ../git-sync:..." 06-24 14:16 (9e3847a) can you take a look at this, I did run it in ../git-sync:... ● caabf544820c [imported] "<task-notification>\n<task-id>a3074a8a47b891551</task-id>\n..." 06-24 14:03 (caabf54) <task-notification> <task-id>a3074a8a47b891551</task-id> ... ● 6c110eac3ed6 [imported] "<task-notification>\n<task-id>a13dc9fa412edcc6e</task-id>\n..." 06-24 14:03 (6c110ea) <task-notification> <task-id>a13dc9fa412edcc6e</task-id> ... ● 75f953bc7f73 [imported] "<task-notification>\n<task-id>ad20ef831ab9e65ac</task-id>\n..." 06-24 14:02 (75f953b) <task-notification> <task-id>ad20ef831ab9e65ac</task-id> ... ● 6a06d3d60b75 [imported] "<task-notification>\n<task-id>ab0dd083f555810c5</task-id>\n..." 06-24 14:02 (6a06d3d) <task-notification> <task-id>ab0dd083f555810c5</task-id> ... ● 9919dc6061ec [imported] "`/simplify → 4 cleanup agents in parallel → apply the fix..." 06-24 13:58 (9919dc6) `/simplify → 4 cleanup agents in parallel → apply the fix... ● 87e140dbb789 [imported] "<task-notification>\n<task-id>a574469aa1c7a2156</task-id>\n..." 06-24 13:47 (87e140d) <task-notification> <task-id>a574469aa1c7a2156</task-id> ... ● d88c60c7e9d5 [imported] "<task-notification>\n<task-id>abcc3502034cdc607</task-id>\n..." 06-24 13:43 (d88c60c) <task-notification> <task-id>abcc3502034cdc607</task-id> ... ● 3513316e30da [imported] "hmm, they are embedded with the long prompts we have on m..." 06-24 13:38 (3513316) hmm, they are embedded with the long prompts we have on m... ● d60960deb068 [imported] "can you review #1511 ..." 06-24 13:33 (d60960d) can you review #1511 ... ● d30159d49f5f [imported] "can you add both as findings to the trail" 06-24 13:22 (d30159d) can you add both as findings to the trail ● 9c5d56031982 [imported] "<task-notification>\n<task-id>ab0220103d4f0fce1</task-id>\n..." 06-24 13:20 (9c5d560) <task-notification> <task-id>ab0220103d4f0fce1</task-id> ... ● 97e388529f33 [imported] "can you also look at https://entire.io/gh/entireio/cli/tr..." 06-24 13:15 (97e3885) can you also look at https://entire.io/gh/entireio/cli/tr... ● 61404c98152c [imported] "ok, I think we need to change the onboarding idea a bit. ..." 06-24 13:04 (61404c9) ok, I think we need to change the onboarding idea a bit. ... path — unasserted. Retarget them (branch view, zero-checkpoint hint, detached-HEAD labeling) with the wrapper's implied no-filter arguments, sharing one setup helper instead of the original copy-pasted scaffolding. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Entire-Checkpoint: 93a786da9959
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.
https://entire.io/gh/entireio/cli/trails/642
Fill the control-plane CLI CRUD gaps (COR-561) and page through the v1 list endpoints (COR-580/583). Stacked on
feat/control-plane-friendly-names— merge that first.New verbs
entire org get|delete <name|ULID>entire project get|delete <name|ULID>entire grant repo list <repo>entire grant repo remove <repo>—--provider/--provider-user-idor--grantee-type/--grantee-idSafer deletes
org|project|repo deleteprompt before deleting (skip with--force/-f, alias--yes/-y); non-interactive runs refuse without--forceinstead of deleting unprompted. Deleting an already-gone resource is a no-op, not a raw 404. Success messages name the resolved ULID, e.g.Deleted org acme (01J…).Pagination
List commands walk every page instead of returning only the first:
org/project/repo list, thegrant … listcommands, andrepo mirror list(COR-583).Friendly-name resolution
org,project, andrepoargs accept a name or a ULID. Names resolve through the base branch's server-side, O(1), case-insensitive by-name lookups; a ULID passes through with no network call. Repo names require--project <name|ULID>scope (repo names are unique only within a project). Applies torepo get/deleteandgrant repo add/list/remove.Grant roles
grant org addvalidates--role(owner/admin/member);grant project|repo addvalidates--role(reader/writer/admin) against the typed enum from the base branch. The Core API client itself is regenerated on the base branch, so there is nointernal/coreapichurn here.Verified:
mise run fmt/lintclean;cmd/entire/cliunit tests green (integration + E2E canary via CI).