Skip to content

chore: point GitHub URLs at the renamed InstaCloud repos - #214

Merged
tonychang04 merged 14 commits into
mainfrom
chore/repo-rename
Sep 11, 2026
Merged

chore: point GitHub URLs at the renamed InstaCloud repos#214
tonychang04 merged 14 commits into
mainfrom
chore/repo-rename

Conversation

@tonychang04

@tonychang04 tonychang04 commented Sep 11, 2026

Copy link
Copy Markdown
Member

Follow-up to the org-wide InstaCloud repo rename (see the Open Source InstaCloud decision
doc). This repo is now InsForge/instacloud-cli; this PR updates the slugs it still ships.

⚠️ One thing this PR cannot fix — npm Trusted Publishing

release.yml publishes insta to npm via OIDC trusted publishing, which matches on the
GitHub repository name. The config on npmjs.com still says InsForge/insta-cli:

# OIDC trusted publishing: npm trusts this workflow's identity directly (configured on
# npmjs.com -> package `insta` -> Trusted Publisher: InsForge/insta-cli, release.yml).

After the rename this workflow's OIDC claim carries InsForge/instacloud-cli. npm does not
follow GitHub renames the way GitHub's own redirects do, so unless someone updates
npmjs.com → package insta → Trusted Publisher → repository to InsForge/instacloud-cli,
the next npm publish is expected to fail. That setting is not readable through the public
API, so this is flagged from the workflow's own documentation rather than measured — please
confirm it on npmjs.com before the next release.

Nothing is broken today: the currently published insta@0.0.68 is unaffected, and users
installing it are fine.

What changed

Only owner/repo slugs, across 12 files:

  • InsForge/insta-cliInsForge/instacloud-cli
  • InsForge/insta-skillsInsForge/instacloud-skills
  • InsForge/insta-feedbackInsForge/instacloud-feedback

Touching install.sh (REPO=), agents.sh / agents-staging.sh (the documented raw
fallbacks), src/commands/upgrade.ts (INSTALL_SH), src/env.ts (the prod/staging skills
source), package.json, README/CONTRIBUTING, the two tests that assert those strings, and
comments in release.yml and src/commands/feedback.ts.

src/env.ts and its tests were changed in lockstep, so ENVS.prod.skills /
ENVS.staging.skills and their assertions still agree.

Verified live

Check Result
InsForge/instacloud-skills + its devel branch both resolve
instacloud-cli releases/latest v0.0.68
raw.githubusercontent.com/InsForge/instacloud-cli/main/agents.sh 200
agents.instacloud.com (CloudFront over the old raw path) 200

Old slugs keep working regardless: GitHub redirects renames on web, git, the API, raw and
jsDelivr. This PR is about not shipping stale URLs, not about repairing breakage.

Tests

npm ci && npm test on this branch: 908 passed, 8 skipped.

One file, test/github-source.integration.test.ts, could not run in my environment — it shells
out to git init, which my worktree-isolated session refuses. It contains zero slug
references, so this change cannot affect it, but I did not execute it and CI should be the
judge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QtUBRLn31nL66MeXpLvpbR


Summary by cubic

Updates all shipped GitHub URLs to the renamed InstaCloud repos: InsForge/insta-cliInsForge/instacloud-cli, InsForge/insta-skillsInsForge/instacloud-skills, and InsForge/insta-feedbackInsForge/instacloud-feedback. This is a pure slug rename with no behavior change — the old slugs keep working through GitHub's redirects.

Action needed before the next release

  • npmjs.com's Trusted Publisher config for insta still points at InsForge/insta-cli; npm does not follow GitHub renames, so the next OIDC-based npm publish will fail until it's updated to InsForge/instacloud-cli.

Written for commit 70b6d28. Summary will update on new commits.

Review in cubic

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 12 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/commands/feedback.ts">

<violation number="1" location="src/commands/feedback.ts:7">
P3: Same rename missed two spots: line 23 still references `insta-feedback src/app.ts` (the ingest-service app the PR just renamed to instacloud-feedback), and the FEEDBACK_INGEST_TOKEN literal `insta-feedback-public-v1` is a separate API token, not a repo slug, so leave it. For consistency with this PR's goal, update the line 23 comment to instacloud-feedback.</violation>
</file>

<file name="src/env.ts">

<violation number="1" location="src/env.ts:34">
P3: The doc comment above the `skills` field (src/env.ts:24) still references the old `…insta-skills.git` slug, while this PR migrated every other reference to `instacloud-skills`. The skills tool echoes `owner/repo.git`, so it would now print `instacloud-skills.git @thing`. Update the comment to the new slug to match the PR's goal of eliminating stale repo references.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/commands/feedback.ts
//
// The backend is InstaCloud dogfooding itself: the "InstaCloud Agent Feedback" project runs the
// ingest service (InsForge/insta-feedback repo) on a postgres + compute pair. It is NOT the
// ingest service (InsForge/instacloud-feedback repo) on a postgres + compute pair. It is NOT the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Same rename missed two spots: line 23 still references insta-feedback src/app.ts (the ingest-service app the PR just renamed to instacloud-feedback), and the FEEDBACK_INGEST_TOKEN literal insta-feedback-public-v1 is a separate API token, not a repo slug, so leave it. For consistency with this PR's goal, update the line 23 comment to instacloud-feedback.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/commands/feedback.ts, line 7:

<comment>Same rename missed two spots: line 23 still references `insta-feedback src/app.ts` (the ingest-service app the PR just renamed to instacloud-feedback), and the FEEDBACK_INGEST_TOKEN literal `insta-feedback-public-v1` is a separate API token, not a repo slug, so leave it. For consistency with this PR's goal, update the line 23 comment to instacloud-feedback.</comment>

<file context>
@@ -4,7 +4,7 @@
 //
 // The backend is InstaCloud dogfooding itself: the "InstaCloud Agent Feedback" project runs the
-// ingest service (InsForge/insta-feedback repo) on a postgres + compute pair. It is NOT the
+// ingest service (InsForge/instacloud-feedback repo) on a postgres + compute pair. It is NOT the
 // control-plane API on purpose — feedback must work logged-out, unlinked, and from insta-oss,
 // and a control-plane outage is exactly when we most want reports to still arrive.
</file context>

Comment thread src/env.ts
@@ -31,12 +31,12 @@ export const ENVS: Record<EnvName, EnvHosts> = {
prod: {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The doc comment above the skills field (src/env.ts:24) still references the old …insta-skills.git slug, while this PR migrated every other reference to instacloud-skills. The skills tool echoes owner/repo.git, so it would now print instacloud-skills.git @thing. Update the comment to the new slug to match the PR's goal of eliminating stale repo references.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/env.ts, line 34:

<comment>The doc comment above the `skills` field (src/env.ts:24) still references the old `…insta-skills.git` slug, while this PR migrated every other reference to `instacloud-skills`. The skills tool echoes `owner/repo.git`, so it would now print `instacloud-skills.git @thing`. Update the comment to the new slug to match the PR's goal of eliminating stale repo references.</comment>

<file context>
@@ -31,12 +31,12 @@ export const ENVS: Record<EnvName, EnvHosts> = {
     api: 'https://api.instacloud.com',
     mcp: 'https://mcp.instacloud.com/mcp',
-    skills: 'InsForge/insta-skills',
+    skills: 'InsForge/instacloud-skills',
   },
   staging: {
</file context>

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

The PR consistently replaces the three renamed GitHub repository slugs, with one misleading npm Trusted Publisher comment worth correcting.

Requirements context

Intent was derived primarily from the PR description: update shipped references to instacloud-cli, instacloud-skills, and instacloud-feedback without changing behavior. The README confirms the installer and environment-specific skills sources (README.md:15-20, README.md:155-161), while CONTRIBUTING documents the external skills repository (CONTRIBUTING.md:36-44). The named “Open Source InstaCloud” decision document was not linked or present locally, so it could not provide additional requirements.

Findings

Critical

(none)

Suggestion

  • .github/workflows/release.yml:133-135 — The comment now says Trusted Publishing is configured for InsForge/instacloud-cli, but the PR description explicitly says npmjs.com still names InsForge/insta-cli and must be updated externally. Until that change is confirmed, preserve the warning in the workflow—for example, describe the new repository as the required setting—so future maintainers do not incorrectly assume releases are ready. This is non-blocking because it does not alter workflow execution and the external action is clearly disclosed in the PR.

Information

  • Software engineering/functionality: runtime installer, upgrade, and environment sources were updated consistently (install.sh:50-57, src/commands/upgrade.ts:28-32, src/env.ts:30-40), and skills-source assertions were updated in lockstep (test/ensure-skills.test.ts:36-42, test/env-switch.test.ts:52-55). A repository-wide search found none of the three old slugs. Shell syntax, JSON parsing, and git diff --check passed; the full typecheck/test gate could not run because dependencies are absent (tsc: not found).
  • Security: no authentication, authorization, secret handling, dependency, or untrusted-input behavior changed. The modified network destinations remain fixed HTTPS GitHub URLs (agents-staging.sh:33-37, agents.sh:18-20).
  • Performance: no loops, queries, allocations, or execution patterns changed; only constant URLs and documentation were updated.

Verdict

Approved under the supplied severity rule: there are no Critical findings. The npm Trusted Publisher setting still needs external confirmation before the next release.

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

The PR correctly replaces the shipped GitHub repository slugs while preserving existing installer, upgrade, skills, and release behavior.

Requirements context

Intent was derived from the PR description, the repository’s AGENTS.md, and .claude/skills/developing-insta-cli/SKILL.md. The named “Open Source InstaCloud” decision document is not present or linked in this checkout, so the rename requirements were assessed against the explicit mappings in the PR description; this is not a command/flag change requiring a separate CLI-reference update.

Findings

Critical

(none)

Suggestion

  • .github/workflows/release.yml:117-138 — The earlier job comment still says publishing uses a “GRANULAR AUTOMATION token” and NPM_TOKEN, while the newly expanded comment correctly says publishing uses OIDC with no token secret. Consider updating the earlier comment in this PR so release operators receive one consistent description of the publishing mechanism.

Information

  • Software engineering / functionality: The installer repository feeds both GitHub API lookup and release downloads, the self-upgrade URL targets the renamed CLI repository, and production/staging skills values remain aligned with their assertions (install.sh:55-64, install.sh:139-144, src/commands/upgrade.ts:28-28, src/env.ts:30-40, test/ensure-skills.test.ts:30-42, test/env-switch.test.ts:52-54). A tracked-file scan found no obsolete exact owner/repo slugs except the intentional pre-rename warning in the release workflow. Shell syntax checks, JSON parsing, and git diff --check passed; the full TypeScript/test suite was not rerun because dependencies are absent and this review is constrained to read-only operation.
  • Security: No authentication, authorization, input handling, secret logging, dependency, or trust-boundary behavior changes are introduced. Operational URLs remain fixed HTTPS endpoints; only their repository paths changed (agents.sh:8-20, agents-staging.sh:29-42, package.json:15-21).
  • Performance: No query, loop, allocation, I/O-pattern, or hot-path changes are introduced; the runtime edits are constant substitutions only (src/commands/upgrade.ts:28-28, src/env.ts:30-40).

Verdict

Approved under the review rubric: zero Critical findings. The release-comment cleanup is non-blocking.

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

The implementation consistently updates the shipped GitHub repository slugs without changing CLI behavior.

Requirements context

Intent was derived from the PR description, the installer and environment documentation in README.md:13-20 and README.md:151-161, and the repository guidance in CONTRIBUTING.md:36-44. The named “Open Source InstaCloud” decision document is neither linked nor present in this repository, so the review otherwise assesses against the explicit PR description.

Findings

Critical

(none)

Suggestion

(none)

Information

  • Software engineering / functionality: Runtime sources now consistently use InsForge/instacloud-cli and InsForge/instacloud-skills, while staging correctly retains the #devel ref. The paired tests assert the updated production and staging skill sources (install.sh:55-63, src/commands/upgrade.ts:28-28, src/env.ts:30-40, test/ensure-skills.test.ts:36-42, test/env-switch.test.ts:45-59). A repository-wide search found no unintended old slug; its only remaining occurrence is the deliberate npm migration warning.
  • Security: No security-relevant behavior, authentication, authorization, secret handling, dependency, or input-processing changes were introduced. The changed runtime destinations remain fixed HTTPS GitHub endpoints (install.sh:55-63, src/commands/upgrade.ts:28-28).
  • Performance: No performance-relevant changes were introduced; these are constant and documentation substitutions with no new I/O patterns, loops, allocations, or hot-path work (src/env.ts:30-40, src/commands/upgrade.ts:28-28).
  • The npm Trusted Publisher repository setting remains an external operational prerequisite and cannot be changed by this PR; the workflow now documents the required InsForge/instacloud-cli value clearly (.github/workflows/release.yml:117-140).
  • git diff --check passed. I could not independently execute the required typecheck/test gate because dependencies are absent in the review checkout (tsc: not found), and installing them would violate the read-only constraint; the static review found no inconsistency in the changed assertions (test/ensure-skills.test.ts:36-42, test/env-switch.test.ts:52-59).

Verdict

Approved: no critical findings. Per team policy, this verdict should be posted as a non-approving review comment; a human approval is still required.

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

A faithful owner/repo slug sweep that changes no CLI behaviour — every new slug resolves live, the full gate is green, and the two renames are confirmed to be the same GitHub repo objects rather than new repos at freed-up names.

Requirements context

No matching spec/plan found — assessing against the PR description alone. This repo has no /docs/superpowers/ and in fact no docs/ directory at all. The "Open Source InstaCloud" decision doc named in the PR body is not linked and is not in-tree. Intent was therefore taken from the PR body plus the in-repo convention docs: AGENTS.md:9-24 (pre-commit gate is npm run typecheck && npm test; command/flag changes must be mirrored in the skills submodule — not applicable here, no surface change) and CONTRIBUTING.md:39-44.

Note — this is a re-review at an unchanged head (70b6d28). The three existing reviews are all static. The most recent one (5184262638) states explicitly that it could not execute the typecheck/test gate. The delta in this round is that I ran it, plus negative controls — which overturns one of its claims (see S1).

Findings

Critical

(none)

Suggestion

S1 — software engineering / test coverage: the three release-critical slugs have no test binding at all.
install.sh:55 (REPO=), src/commands/upgrade.ts:28 (INSTALL_SH) and package.json:15-21 (homepage / repository.url / bugs.url).

This corrects review 5184262638, which cited install.sh:55-63 and src/commands/upgrade.ts:28 as covered by "the paired tests". They are not. Negative controls, both run on this head:

Sabotage (revert to the old slug) npm test npm run typecheck
src/env.ts:34,39 only RED — 2 failed / 49 passed, in test/env-switch.test.ts:53-54 and test/ensure-skills.test.ts:39 clean
install.sh:55 + upgrade.ts:28 + package.json:15-21 GREEN — 60 files, 916/916 clean

So src/env.ts is genuinely bound in lockstep (good — the PR body's claim about env.ts holds up), but the other three fields could silently drift back or be mangled by a future rename with zero gate. The repo already has the idiom for fixing this: test/install-banner.test.ts:10 reads install.sh off disk with readFileSync(new URL('../install.sh', ...)) and asserts on its contents. A handful of toContain('InsForge/instacloud-cli') assertions over those three files would fit existing conventions exactly.

The package.json field carries the most weight here — see S2.

S2 — functionality / release: the npm Trusted Publisher warning is correct, and package.json is the half of it this PR does fix.
.github/workflows/release.yml:134-139. Two refinements to the PR body's framing:

  1. This is not a regression introduced by this PR. The GitHub rename already landed — base e2dd1ba is already on InsForge/instacloud-cli — so the workflow's OIDC repository claim carries the new name today whether or not #214 merges. Correctly non-blocking for this PR.
  2. But the PR body understates its own importance. npm's trusted-publishers documentation states that, for GitHub, "the repository.url field in your package.json must match your GitHub repository exactly". On main right now that field says git+https://github.com/InsForge/insta-cli.git while the repo is instacloud-cli. This PR fixes that mismatch. So this should land before the next release, not after — and per the same doc, "trusted publishing configuration is not verified upon saving, so errors only surface during the publish attempt", which independently confirms the author's "cannot be measured through the API" caveat.

Information

I1 — verification I ran (closes the PR's one disclosed gap).

  • Full gate on 70b6d28: npm run typecheck → clean; npm test60 files, 916 passed, 0 skipped.
  • test/github-source.integration.test.ts — the file the author could not execute because it shells out to git initran green here, 8 tests. That also reconciles the count: the author's 908 passed + 8 skipped = the 916 seen here.
  • Live HTTP probes, all 200 unauthenticated: raw.githubusercontent.com/InsForge/instacloud-cli/main/{install.sh,agents.sh,agents-staging.sh}; api.github.com/repos/InsForge/instacloud-cli/releases/latestv0.0.68; instacloud-skills main + devel branches and insta/cli-reference.md + insta/SKILL.md at both refs; codeload tarballs at both refs (the path npx skills add actually takes); agents.instacloud.com and agents.staging.instacloud.com.

I2 — security: the new slugs are the same repo objects, not squatted freed names. Worth stating explicitly because src/env.ts:34,39 feeds npx skills add <slug>, which writes agent-readable instructions onto users' machines — a rename frees the old name, and the inverse mistake (pointing at a name someone else created) would be a live supply-chain hole.

slug repo id old-name API path redirects to
InsForge/instacloud-cli 1283545871 /repositories/1283545871
InsForge/instacloud-skills 1283545599 /repositories/1283545599

Otherwise no security-relevant changes: no new user input, no SQL/shell/HTTP built from user data (upgrade.ts:299 interpolates INSTALL_SH, a module constant, and that shape is unchanged), no secrets/tokens/PII, no auth or authorization changes, and no dependency changes — package.json's dependency blocks are untouched.

I3 — performance: no performance-relevant changes in this PR. Constant and comment substitutions only; no new I/O, queries, loops, allocations or hot-path work.

I4 — scope: release.yml:117-120 is not a slug edit, contrary to the body's "Only owner/repo slugs, across 12 files". The job-header comment was rewritten from "GRANULAR AUTOMATION token (repo secret NPM_TOKEN)" to the OIDC description. That rewrite is correct — I grepped .github/ and there is no NPM_TOKEN or NODE_AUTH_TOKEN anywhere, so the old comment described an auth mechanism the workflow stopped using. Good fix; the body just under-describes it.

I5 — stale non-URL references the sweep left behind. None are functional; listing them so a follow-up can be one pass rather than five:

  • src/env.ts:24 — the comment still quotes "Source: …insta-skills.git @thing". Defensible as a verbatim quote of past tool output, but it now reads as a live slug.
  • src/redact.ts:3 and src/commands/feedback.ts:23 — bare insta-feedback, while feedback.ts:7 was updated to instacloud-feedback. (Aside: neither InsForge/instacloud-feedback nor InsForge/insta-feedback is reachable unauthenticated, so I could not confirm that third rename actually happened. It only appears in comments, so nothing is at risk either way.)
  • README.md:1 and AGENTS.md:1 — both H1s still read # insta-cli.
  • .claude/skills/developing-insta-cli/ — directory name. Flagging a trap rather than asking for the rename: it is allow-listed by path at .gitignore:17 under a .claude/skills/* deny rule, so renaming the directory without editing that line in the same commit silently stops the skill being tracked.

I6 — correctly not changed (checking the sweep didn't over-reach, since these look like slugs and aren't): client_id: 'insta-cli' at src/commands/auth.ts:132,167 (registered server-side), USER_AGENT at src/version.ts:13, $lib: 'insta-cli' at src/telemetry.ts:179, and the insta-feedback-public-v1 ingest token at src/commands/feedback.ts:44. Good scope discipline.

I7 — cross-repo follow-up, out of scope here. The InsForge/instacloud superproject's .gitmodules still names git@github.com:InsForge/insta-cli.git and insta-skills.git. Nothing breaks (git follows rename redirects over SSH), but the org-wide sweep isn't finished.

Verdict

approved — zero Critical findings. Posted as a non-approving comment per team policy; a human still gives the GitHub approval.

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addendum — correcting the requirements basis

My review above (5184308431), and all three reviews before it, said no spec covers this PR. That is wrong, and I can now check the PR against the spec's own checklist. Verdict is unchanged — still approved, 0 Critical — but the requirements section should read as follows.

The spec

InsForge/instacloud-ossplans/2026-09-08-single-node-serverless-spec.md:272, section "Rename sweep (separate action item, not this spec)". It is a companion to the "Open Source InstaCloud" decision doc the PR body names (:3, :13). It was missed because it lives in another repo and the section title ("Rename sweep") doesn't match this PR's title — this repo genuinely has no docs/ or plans/ directory of its own.

That line enumerates the legs of the sweep, and names this repo's explicitly:

insta-cli/install.sh:55, agents.sh:8-20, src/commands/upgrade.ts:28, src/env.ts:34,39; insta-oss/.github/workflows/templates-build-images.yml (…); superrepo .gitmodules; docs links.

This PR against that checklist

Spec leg This PR
install.sh:55 REPO="InsForge/instacloud-cli"
agents.sh:8-20 lines 8, 12, 20
src/commands/upgrade.ts:28 INSTALL_SH
src/env.ts:34,39 prod + staging skills
"docs links" README.md, CONTRIBUTING.md
superrepo .gitmodules different repo — correctly not attempted ⬜ still open
templates-build-images.yml / GHCR scoped to insta-oss, N/A here

Every leg the spec assigns to this repo is complete, at the exact line the spec names. The PR also updates agents-staging.sh, package.json and two test files, which the spec doesn't enumerate but which are the obvious siblings of legs it does — a correct reading of scope, not overreach.

Two consequences for the findings above

  • I7 is upgraded from an observation to a spec-tracked item. The InsForge/instacloud superproject's .gitmodules still reads git@github.com:InsForge/insta-cli.git and insta-skills.git — I verified that live. It is an enumerated leg of this same sweep and remains open. Still correctly out of scope for a PR in this repo; it just now has a spec line behind it rather than only my say-so.
  • S2 gains, not loses, weight. I grepped the spec for npm / trusted / OIDC / publish: the rename sweep says nothing about npm Trusted Publishing. So the release blocker the author surfaced in the PR body is a gap in the spec's own checklist, found by the author rather than inherited from it. Worth crediting, and worth feeding back into the sweep's tracking item so the other renamed repos get checked for the same thing.

Also note the spec's :272 GHCR caveat — "GHCR does not redirect packages, so both prefixes must resolve until every manifest is republished" — is scoped to insta-oss template images. Nothing in this repo publishes to GHCR, so no analogous constraint applies here; the npm registry is this repo's equivalent exposure, and that's exactly what S2 covers.

Verdict

Unchanged: approved — 0 Critical. The correction strengthens the case for merging: the PR is now shown to satisfy a documented checklist in full, not just its own description.

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - approved.

@tonychang04
tonychang04 merged commit e40f00f into main Sep 11, 2026
3 checks passed
@tonychang04
tonychang04 deleted the chore/repo-rename branch September 11, 2026 23:54

@jwfing jwfing left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary

A faithful owner/repo slug sweep with no behaviour change; merged at e40f00f while my previous round was posting, so this is a post-merge pass focused on what is newly checkable — above all the one thing the PR body says it could not measure.

Critical: none. Nothing here blocks, and nothing can — the PR is merged. Everything below is a Suggestion or Information note, most of it pointed at the next release.

State check

Merged main tip e40f00f is the only commit past the base; no revert, no follow-up commits. The merge is a squash whose tree hash is byte-identical to the reviewed head 70b6d28 (9a00c85 both), so the review carries over to main without re-derivation. I re-ran the gate on merged main anyway: tsc --noEmit clean, 916/916 across 60 files. That run includes test/github-source.integration.test.ts — the file the body flagged as unrunnable in the author's worktree — so the disclosed gap is closed: 908 passed + 8 skipped there is 916 here.

Requirements context

Spec found, in the sibling repo: InsForge/instacloud-ossplans/2026-09-08-single-node-serverless-spec.md:272, section "Rename sweep (separate action item, not this spec)". It enumerates this repo's legs by file:line — install.sh:55, agents.sh:8-20, src/commands/upgrade.ts:28, src/env.ts:34,39 — plus the superrepo .gitmodules and docs links. All four in-repo legs land at exactly those lines.

New since the last round: the superrepo leg is now closed too — InsForge/instacloud .gitmodules names instacloud-cli / instacloud-skills (all nine submodules renamed). The only remaining item in that spec bullet is the insta-oss GHCR prefix, which was deliberately deferred in instacloud-oss#108 because GHCR does not redirect packages. The sweep checklist is complete for this repo. The spec says nothing about npm/OIDC — the item below is a gap in the sweep's own checklist, found by the author.

Findings

Critical

(none)

Suggestion

1. Functionality — the npm Trusted Publishing blocker is real, still unfired, and I can now date it precisely.

The body predicts the next npm publish fails, flagged "from the workflow's own documentation rather than measured". It is measurable after all, from the other side. insta@0.0.68's SLSA provenance records:

repository:    https://github.com/InsForge/insta-cli      <- OLD name
repository_id: 1283545871
gitCommit:     e2dd1baf...  (= this PR's base)

So the GitHub rename landed after the last publish (2026-09-11T20:53Z) and before this merge (23:54Z). Every release to date carried the old name and matched the npmjs config — which is why nothing has broken yet. The next publish is the first one whose OIDC claim says InsForge/instacloud-cli. The window is still open: main's tip is the merge commit, the newest tag v0.0.68 sits on the base e2dd1ba, package.json is still 0.0.68, and no version-bump PR is open. So the action item in .github/workflows/release.yml:134-138 is correctly stated and genuinely pending.

2. Functionality — the "not readable" caveat is right about the public API, but a maintainer can turn this into a runnable pre-flight.

GET /-/package/insta/trust returns 401 Bearer token authorization is required unauthenticated — confirmed, and with a positive control (the same endpoint for the npm package is also 401), so the body's caveat holds. But that is exactly the endpoint npm trust list reads, and it ships: lib/commands/trust/list.js is present in npm 12.0.2. As a maintainer of insta:

npm trust list insta        # reads GET /-/package/insta/trust — prints the configured repo
npm trust github insta --repo InsForge/instacloud-cli --file release.yml --allow-publish

Worth folding into release.yml:134-138 and the release checklist, so "check it on npmjs.com before the next release" becomes a command someone can actually run and diff. (Per docs.npmjs.com/trusted-publishers, the config is not validated on save — errors only surface at publish time — which is precisely why a pre-flight read beats eyeballing the web UI.)

3. Functionality — this PR quietly fixes a second, independent publish blocker; the body undersells itself.

npm publish --provenance (release.yml:150) additionally requires package.json repository.url to match the building repository exactly. Pre-PR that field said insta-cli while the repo is already instacloud-cli — so even with the Trusted Publisher updated, the pre-PR tree had a second failure mode. package.json:15-21 now fixes it. Framing: this PR was a prerequisite for the next release, not merely cosmetic.

4. Software engineering — the three highest-blast-radius constants are unbound by tests. Two negative controls on the merged tree, sabotage diffs verified applied before trusting either result:

  • Revert only src/env.ts:34,39RED, 2 failures (test/env-switch.test.ts:53-54, test/ensure-skills.test.ts:39). Genuinely lockstep-bound, as the body claims.
  • Revert install.sh:55 (REPO=) + src/commands/upgrade.ts:28 (INSTALL_SH) + package.json:15-21GREEN, 916/916, typecheck clean. Zero binding.

The unbound set is the consequential one: the installer's release-download target, the self-upgrade URL, and the very repository.url that finding 3 shows provenance validates. A silent drift back to the old slug in any of them ships. The idiom already exists in-repo — test/install-banner.test.ts:10 does readFileSync(new URL('../install.sh', import.meta.url), 'utf8') and asserts on the text. A three-line assertion on REPO=, INSTALL_SH and repository.url would close it.

Information

5. Functionality — if the publish does fail, the release lands half-shipped. publish-npm is needs: release (release.yml:121-122), so the tag, the GitHub release and the install.sh + binary assets are all uploaded before npm is touched. The failure is loud in CI (no continue-on-error on release.yml:150), but the outcome is asymmetric: installer users get the new version while npm i -g insta / npx insta@latest users stay on 0.0.68. Worth knowing when the next release goes out.

6. Software engineering — small doc nit in the comment this PR rewrote. release.yml:139 says "Needs npm ≥ 11.5"; docs.npmjs.com/trusted-publishers says 11.5.1 (and Node ≥ 22.14.0). Immaterial in practice — release.yml:140 installs npm@latest. Noting only because that comment block is in the diff. Related, and not a defect: npm@latest is now 12.0.2, whose engines are ^22.22.2 || ^24.15.0 || >=26.0.0; node-version: 22 currently resolves to v22.23.2, which fits, and v0.0.67/v0.0.68 already published successfully on that exact combination — so the unpinned @latest is empirically fine today, just a narrow window worth remembering if a future npm major drops the Node 22 line. (The comment's other claim checks out: Node 22.23.2 bundles npm 10.9.8, well under 11.5.1, so the upgrade step is necessary.)

7. Cosmetic leftovers on main. Deliberate or not, insta-cli/insta-skills/insta-feedback still appear in prose at README.md:1, AGENTS.md:1,22, CONTRIBUTING.md:57, src/env.ts:24, src/redact.ts:3, src/commands/feedback.ts:23. cubic flagged the last two as P3 and they were not addressed — fine to leave, but they are the ones a future reader will trip on. Correctly not swapped (they look like slugs but are wire identifiers): client_id: 'insta-cli' (src/commands/auth.ts:132,167), USER_AGENT (src/version.ts:13), $lib (src/telemetry.ts:179), insta-feedback-public-v1 (src/commands/feedback.ts:44).

8. A tripwire for whoever finishes the rename. .gitignore:13-17 allow-lists the tracked skills directory by path: !.claude/skills/developing-insta-cli/, and .claude/skills/developing-insta-cli/SKILL.md is the only tracked file under .claude/. Renaming that directory to match the sweep without editing .gitignore:17 lets .claude/skills/* re-swallow it and silently untracks the file. Out of scope here; flagging before someone does the obvious follow-up.

9. Security — no weakening, and the rename-specific supply-chain check passes. A rename frees the old name, and src/env.ts:34,39 feeds npx skills add <slug>, which writes agent-readable instructions onto user machines — so "same name" is not enough, the objects must be identical. All three redirect to the same repository IDs, i.e. the same objects, not re-registered squats: instacloud-cli = 1283545871 (independently corroborated by the repository_id in v0.0.68's provenance, recorded under the old name), instacloud-skills = 1283545599, instacloud-feedback = 1338764030. No new dependencies, no secrets or PII introduced, no auth path touched; release.yml:117-120 documents the NPM_TOKEN → OIDC move that already happened (no NPM_TOKEN/NODE_AUTH_TOKEN remains anywhere in .github/).

10. Backward compatibility — verified live, not assumed. Already-distributed installers hardcode the old slug, and install.sh fetches with curl -fsSL (-L follows). Old-slug releases/latestv0.0.68; old-slug asset download → HTTP 200 (redirecting to release-assets under repo id 1283545871); old-slug raw.githubusercontent.com → 200 already serving the new content (REPO="InsForge/instacloud-cli"). agents.instacloud.com (CloudFront) has also already refreshed to the new bytes, so the up-to-a-day stale-cache window the README warns about is closed.

11. Performance — no performance-relevant changes. String constants and comments only; no query, loop, allocation or I/O path is touched.

Verdict

approved — zero Critical findings. (Informational: the human approval on this PR was already given, and it is merged.)

The one thing to carry forward: run npm trust list insta and confirm it says InsForge/instacloud-cli before cutting the next version — that is the only leg of the rename that is still open, and by finding 1 the next publish is the first one that will actually exercise it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants