Skip to content

refactor: radical project simplification (YAGNI/KISS/DRY)#200

Open
themoriarti wants to merge 2 commits into
mainfrom
refactor/yagni-kiss-dry
Open

refactor: radical project simplification (YAGNI/KISS/DRY)#200
themoriarti wants to merge 2 commits into
mainfrom
refactor/yagni-kiss-dry

Conversation

@themoriarti

@themoriarti themoriarti commented Feb 15, 2026

Copy link
Copy Markdown
Collaborator
  • Removed docs/ directory (40+ redundant files)
  • Purged unverified backends: crun, runc, proxmox-vm
  • Rewrote build.zig to focus exclusively on Proxmox LXC
  • Consolidated all documentation into a single README.md
  • Removed legacy plugin system and unused scripts
  • Simplified core types and configuration logic

Note

Medium Risk
Medium risk due to a major build.zig simplification (removing feature-flag/libcrun-ABI wiring) and behavior changes in OCI→LXC translation via newly-parsed mount options/capabilities. Large-scale deletion of docs/policy files may also break expected release/compliance workflows.

Overview
Project simplification: Removes the Docker build/compose setup, Makefile, build logs, changelog/policy files (e.g. CHANGELOG.md, SECURITY.md, CONTRIBUTING.md, CODEOWNERS), and most content under docs/, while updating README.md and adding RELEASE_NOTES_v0.7.6.md plus a new roadmap/code-improvement plan.

Build + OCI parsing changes: Rewrites build.zig to a minimal module-wiring build (adds only basic enable_zfs/enable_proxmox_lxc options, drops pkg-config checks, libcrun ABI vendoring/linking, and related flags/includes) and bumps VERSION to 0.7.6. Updates deps/oci-spec-zig bundle parsing to convert OCI mount options arrays and process.capabilities sets into comma-separated strings for downstream LXC config generation.

Written by Cursor Bugbot for commit 543f8fe. This will update automatically on new commits. Configure here.

- Removed docs/ directory (40+ redundant files)
- Purged unverified backends: crun, runc, proxmox-vm
- Rewrote build.zig to focus exclusively on Proxmox LXC
- Consolidated all documentation into a single README.md
- Removed legacy plugin system and unused scripts
- Simplified core types and configuration logic
@cursor

cursor Bot commented Feb 15, 2026

Copy link
Copy Markdown

You have run out of free Bugbot PR reviews for this billing cycle. This will reset on March 27.

To receive reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

- OCI bundle: parse mount options and capabilities from config.json
- Remove excessive debug output from create command
- Clean up router: remove unused config_module import
- ArrayListUnmanaged fix for Zig 0.15.1 in oci-spec-zig
- Update VERSION, changelog, release notes

Made-with: Cursor

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Free Tier Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

Bugbot Autofix prepared a fix for the issue found in the latest run.

  • ✅ Fixed: Capability HashMap keys leak on deduplication and cleanup
    • The deduplication map now stores capability slices from parsed JSON directly instead of allocating duplicate key strings, eliminating both duplicate-insert and cleanup key leaks.

Create PR

Or push these changes by commenting:

@cursor push 81c117529c
Preview (81c117529c)
diff --git a/deps/oci-spec-zig/src/runtime/bundle.zig b/deps/oci-spec-zig/src/runtime/bundle.zig
--- a/deps/oci-spec-zig/src/runtime/bundle.zig
+++ b/deps/oci-spec-zig/src/runtime/bundle.zig
@@ -206,7 +206,7 @@
                             if (entry.value_ptr.* == .array) {
                                 for (entry.value_ptr.*.array.items) |cap_item| {
                                     if (cap_item == .string) {
-                                        _ = try cap_set.put(try self.allocator.dupe(u8, cap_item.string), {});
+                                        _ = try cap_set.put(cap_item.string, {});
                                     }
                                 }
                             }
This Bugbot Autofix run was free. To enable autofix for future PRs, go to the Cursor dashboard.

try parts.append(self.allocator, cap_name.*);
}
bundle_config.capabilities = try std.mem.join(self.allocator, ",", parts.items);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Capability HashMap keys leak on deduplication and cleanup

Medium Severity

The capability deduplication logic dupes each capability string before inserting into cap_set, but StringHashMap.deinit() only frees internal storage, not the key strings. All duped key strings leak. Additionally, when put encounters a duplicate key, it keeps the existing key and silently discards the newly duped string, leaking it immediately.

Fix in Cursor Fix in Web

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.

1 participant