Skip to content

rename enterprise apps to aistor/ac, drop community minio/mc - #26

Merged
harshavardhana merged 4 commits into
mainfrom
aistor-ac-rename
Jul 30, 2026
Merged

rename enterprise apps to aistor/ac, drop community minio/mc#26
harshavardhana merged 4 commits into
mainfrom
aistor-ac-rename

Conversation

@harshavardhana

@harshavardhana harshavardhana commented Jul 30, 2026

Copy link
Copy Markdown
Member

Rebrands the enterprise apps and removes the community ones.

Rename

minio-enterpriseaistor, mc-enterpriseac.

Only the app name changes. The release directory, the binary read out of it, the package name and every dl.min.io path segment are deliberately unchanged, so published artifacts are byte-identical:

--appName Release dir Binary read Package
aistor minio-release/ minio.<release> minio
ac mc-release/ mc.<release> mcli

The dl.min.io path segments were already hardcoded literals rather than interpolated from appName, so no download URL moves. The metadata filename does: downloads-minio-enterprise.jsondownloads-aistor.json.

Verified by building real packages, not just asserting:

minio-release/linux-amd64/minio_20250312000000.0.0_amd64.deb
minio-release/linux-amd64/minio.deb -> (unchanged)
minio-release/downloads-aistor.json

Community minio/mc removed

They were the only consumers of ppc64le, so the arch list collapses to amd64+arm64 for every remaining app (aistor, ac, sidekick, warp, memkv, aimem, minfs). The eight per-app arch guards in doPackage collapse to one pkgArches loop. generateDownloadsJSON stays — now returning an empty document — because memkv/aimem/minfs still route through it and need valid JSON. minfs-cache-server is removed as unneeded.

--appName now defaults to aistor instead of minio, which named a removed app. q always passes -a explicitly, so this only affects bare invocations.

Existing download links keep working

A --package-name rename changes the package filename, which would break every already-published URL built from the old name. The old alias, the old versioned filename and its checksum are now symlinked onto the new package:

aistor-<ver>-1.x86_64.rpm                            # real package
aistor.rpm, minio.rpm             -> aistor-<ver>-1.x86_64.rpm
minio-<ver>-1.x86_64.rpm          -> aistor-<ver>-1.x86_64.rpm
minio-<ver>-1.x86_64.rpm.sha256sum -> aistor-<ver>-1.x86_64.rpm.sha256sum

The installed binary is untouched: /usr/local/bin/aistor is the only real file and /usr/local/bin/minio is a symlink, so no new binary is built and minio keeps working. Without --package-name nothing is aliased and the default path is unchanged — both halves are pinned by TestPackageRenameKeepsOldLinks and TestPackageDefaultsEmitNoLegacyLinks, which build real packages in a temp dir.

Docs

CLAUDE.md and README rewritten for the final app set. Two inherited claims were wrong and are corrected: minio.service is not vendored in this repo (q fetches it via service_file), and sidekick metadata is not "package-only" — it emits Linux binary + RPM + DEB plus Windows.

Coordination

This is a breaking change to the --appName contract and must land with:

  • miniohq/q — pipeline + asset scripts, and new packaging.binary_name / packaging.package_name keys
  • miniohq/aistor and miniohq/ec.qreleaser.yml app_name + package_name

Merge order: this PR and a pkger release first, then q, then the product repos. q/legacy-v1/ is intentionally left on the old names.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added packaging support for Aistor and AC using their updated product names.
    • Limited generated packages to Linux amd64 and arm64 architectures.
    • Added compatibility aliases and links for renamed packages to preserve existing download paths.
    • Expanded release metadata and packaging documentation, including current applications, commands, flags, and artifact conventions.
  • Documentation
    • Updated README examples, supported-app tables, packaging workflows, and rename guidance.
  • Tests
    • Updated packaging, metadata, naming, architecture, and release-directory coverage.

The enterprise products were rebranded: minio-enterprise -> aistor and
mc-enterprise -> ac. Re-key every appName switch onto the new names.

Only the app name changes. The release directory, the binary read out of
it, the package name and every dl.min.io path segment are deliberately
left alone, so published artifacts are byte-identical across the rename:

  aistor -> minio-release/, reads minio.<release>, packages as minio
  ac     -> mc-release/,    reads mc.<release>,    packages as mcli

The dl.min.io path segments were already hardcoded literals rather than
interpolated from appName, so no download URL moves. The metadata
filename does: downloads-minio-enterprise.json -> downloads-aistor.json.

Also drop the community minio and mc apps. They were the only consumers
of ppc64le, so the arch list collapses to amd64+arm64 for every remaining
app (aistor, ac, sidekick, warp, memkv, aimem, minfs) and the eight
per-app arch guards in doPackage collapse to a single pkgArches loop.
generateDownloadsJSON stays, now returning an empty document, because
memkv/aimem/minfs still route through it and need valid JSON.
minfs-cache-server is removed; it is not needed.

A --package-name rename changes the package filename, which would break
every already-published URL built from the old name. Symlink the old
alias, the old versioned filename and its .sha256sum onto the new
package so both resolve:

  aistor-<ver>-1.x86_64.rpm                 (real)
  aistor.rpm, minio.rpm                  -> aistor-<ver>-1.x86_64.rpm
  minio-<ver>-1.x86_64.rpm               -> aistor-<ver>-1.x86_64.rpm
  minio-<ver>-1.x86_64.rpm.sha256sum     -> ...rpm.sha256sum

Without --package-name nothing is aliased, so the default path is
unchanged. Both halves are pinned by tests that build real packages.

The --appName default moves from minio (a removed app) to aistor.
CLAUDE.md and README are rewritten for the final app set; two inherited
claims were wrong and are corrected -- minio.service is not vendored in
this repo, and sidekick metadata is not package-only.
@harshavardhana
harshavardhana requested a review from Copilot July 30, 2026 07:21

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@harshavardhana

Copy link
Copy Markdown
Member Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@harshavardhana, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 36 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 955b9be5-2f62-4c34-8e18-8114b6ef2fb1

📥 Commits

Reviewing files that changed from the base of the PR and between a03e8ec and a712fa5.

📒 Files selected for processing (6)
  • .github/workflows/go.yml
  • .github/workflows/vulncheck.yml
  • CLAUDE.md
  • README.md
  • main.go
  • main_test.go
📝 Walkthrough

Walkthrough

The PR updates pkger for the aistor and ac application names, limits packaging to amd64 and arm64, revises download metadata and compatibility symlinks, and synchronizes README, CLAUDE.md, and tests with the new behavior.

Changes

Packaging and release alignment

Layer / File(s) Summary
Documentation and downstream contract
CLAUDE.md, README.md
Documents the current supported apps, CLI flags, release layout, metadata naming, architecture limits, and rename compatibility behavior.
Application identity and download metadata
main.go, main_test.go
Maps aistor and ac through defaults, release directories, package names, enterprise download metadata, and empty fallback JSON behavior.
Architecture and package compatibility outputs
main.go, main_test.go
Restricts packaging to amd64 and arm64 and validates versioned package files, aliases, checksums, and legacy rename symlinks.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • minio/pkger#24: Updates related aistor/minio rename and compatibility symlink behavior.
  • minio/pkger#25: Covers related enterprise rename handling through --binary-name and --package-name.

Suggested reviewers: donatello

Poem

A rabbit packs names in a neat little row,
With amd64 and arm64 ready to go.
Old links still hop to the packages they knew,
While AIStor’s new paths make the metadata new.
Tests nibble each alias, checksum, and flag—
Then this fluffy release bounds off with its bag.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main change: renaming enterprise apps to aistor/ac and removing the community minio/mc apps.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

The repo only ran govulncheck, so the unit tests never ran in CI --
including the ones this branch adds, which build real packages to pin the
rename's symlink compatibility.

Adds a Go workflow running gofmt -l, go build, go vet and
go test -v ./..., on the same Go version and trigger branches as the
existing VulnCheck workflow.

@coderabbitai coderabbitai 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.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CLAUDE.md`:
- Around line 174-187: Add the text language identifier to the fenced
repository-layout block in CLAUDE.md (lines 174-187) and the package-artifact
listing block in README.md (lines 104-110), without changing their contents.

In `@main_test.go`:
- Around line 207-210: Rename the real slice variable in the affected test to a
descriptive non-predeclared identifier, and update all references to it while
preserving the existing test behavior.
- Around line 516-518: Update the empty fallback assertion in the test to also
verify that result.Docker and result.Kubernetes contain no entries, alongside
Linux, MacOS, and Windows. Preserve the existing empty-document validation and
error message context.
- Around line 176-195: The runDoPackage test fixture currently creates only the
linux-amd64 input while doPackage packages both amd64 and arm64. Update the
fixture setup around archDir and src to also create the corresponding
linux-arm64 directory and binary with the expected naming and permissions,
ensuring every architecture in pkgArches has a valid source file.

In `@main.go`:
- Around line 997-1021: The link setup around the local link closure must stop
discarding Remove, Symlink, and Chdir failures: build release, alias, legacy
package, and checksum link paths as absolute paths, return any operation error,
and remove the process-working-directory mutation via Chdir. Preserve creation
of all latest and legacy aliases, versioned package links, and checksum links
when packageName is renamed.
- Around line 991-994: Update the package-name selection logic around the
appName mapping so both default and renamed “ac” outputs preserve the historical
“mc” latest alias, while retaining the existing “mcli” compatibility artifacts
for renamed packages. Add regression coverage verifying artifact names for both
default and explicitly renamed ac builds.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d1c93dee-01ac-4a68-87b6-ce29643c2fe0

📥 Commits

Reviewing files that changed from the base of the PR and between 1ec111d and a03e8ec.

📒 Files selected for processing (4)
  • CLAUDE.md
  • README.md
  • main.go
  • main_test.go

Comment thread CLAUDE.md Outdated
Comment thread main_test.go Outdated
Comment thread main_test.go Outdated
Comment thread main_test.go Outdated
Comment thread main.go
Comment thread main.go Outdated
Return link failures instead of discarding them. A failed Remove/Symlink
left a required alias absent while packaging reported success -- the exact
way this PR's "old download links keep working" guarantee would break
silently. Link paths are now absolute and errors propagate; targets stay
bare filenames so the symlinks remain relative, which is what the
os.Chdir dance was for, so the process-cwd mutation is gone too.

Stage fixtures for every arch in pkgArches. runDoPackage only created
linux-amd64, so the arm64 iteration was silently skipped via --ignore and
the tests only ever covered amd64. Both arches are now staged and
--ignore is off, so a packaging failure on any arch fails the test. This
also caught a latent bug in the helper: it derived the release dir from
defaultPkgName, which happens to match for aistor (minio-release) but not
for ac (mcli-release vs mc-release); it now calls releaseDirName().

Extend both symlink tests to ac as well as aistor, pinning ac's default
alias (ac.*, package mcli_*) and its renamed output (acli.* plus legacy
mcli.* aliases and versioned links). Assert link targets are relative.

Rename the `real` local, which shadowed a predeclared identifier, and
assert Docker and Kubernetes are empty in the fallback JSON test.

Docs: mark the two bare fenced blocks as text (MD040) and correct the
stale "Go 1.25+" note -- go.mod requires 1.26.

Not applied: the suggestion to derive the ac alias from
defaultBinarySrcName. It passes two arguments to a one-arg function so it
would not compile, and it conflates the binary name with the alias.
mc-enterprise historically published mc-enterprise.*, not mc.*, so there
is no mc alias to preserve; the shipping config (--package-name acli) now
emits both acli.* and mcli.*. Covered by tests instead.
@harshavardhana

Copy link
Copy Markdown
Member Author

Fixes Applied Successfully

Fixed 4 file(s) based on 6 CodeRabbit feedback item(s) — 5 applied, 1 covered by tests instead.

Files modified:

  • main.go
  • main_test.go
  • CLAUDE.md
  • README.md

Commit: 321d43a

Applied

  • Do not ignore compatibility-link failures — link errors now propagate. A failed Remove/Symlink previously left a required alias absent while packaging reported success, which is exactly how this PR's "old download links keep working" guarantee would break silently. Link paths are absolute and targets stay bare filenames, so symlinks remain relative — which is what the os.Chdir was for, so the process-cwd mutation is gone.
  • Create arm64 package fixtures for every architecture doPackage builds — confirmed by probing: arm64 was caught at validation and silently skipped via --ignore, so the tests only ever covered amd64. Both arches are now staged with --ignore off. This surfaced a latent helper bug: it derived the release dir from defaultPkgName, which matches for aistor (minio-release) but not ac (mcli-release vs mc-release); it now calls releaseDirName().
  • Rename real to satisfy the configured linter
  • Assert every fallback metadata section is emptyDocker and Kubernetes included.
  • Add language identifiers to both fenced blocks — plus a stale "Go 1.25+" note corrected; go.mod requires 1.26.

Not applied

Preserve the mc latest alias for ac — the suggested return defaultBinarySrcName(appName, "") passes two arguments to a one-arg function, so it would not compile, and it conflates the binary name with the alias. The premise is also off: mc-enterprise historically published mc-enterprise.*, not mc.*, so there is no mc alias to preserve. In the shipping config (--package-name acli) both acli.* and mcli.* are emitted. Took the report's other suggestion instead and added regression coverage for both default and renamed ac output, so the behavior is now pinned and visible.

Validation: gofmt -l, go vet ./..., go test -v ./... and prettier --check all clean.

The latest autofix changes are on the aistor-ac-rename branch.

Neither workflow had workflow_dispatch, so there was no way to re-run
them when a run is needed on an unchanged commit -- which came up when
GitHub created no runs at all for a pushed commit on this PR.
@harshavardhana
harshavardhana merged commit c0ab6ec into main Jul 30, 2026
5 checks passed
@harshavardhana
harshavardhana deleted the aistor-ac-rename branch July 30, 2026 07:53
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