From 72e582eb15098b2f3b30a10b2a12eab39958436b Mon Sep 17 00:00:00 2001 From: HuntedByTheIRS Date: Thu, 30 Jul 2026 00:47:50 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20oracle=20review=20fixes=20=E2=80=94=20re?= =?UTF-8?q?solver=20exit=20code,=20dead=20include,=20pointer=20compose?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Exit code: plan.missing.empty() ? 0 : 1 (was always returning 0) - Removed dead include from plan.cpp - BuildStep now composes config::ResolvedPackage instead of duplicating features/config fields; PackageDef stored as const pointer --- src/main.cpp | 6 +++--- src/resolve/plan.cpp | 12 +++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a27e981..42b4e9f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -270,9 +270,9 @@ int main(int argc, char* argv[]) { for (auto& step : plan.steps) { std::cout << " " << step.name << " (" << step.dependencies.size() << " deps"; - if (!step.features.empty()) { + if (!step.resolved.features.empty()) { std::cout << ", features:"; - for (auto& [k, f] : step.features) { + for (auto& [k, f] : step.resolved.features) { if (f.enabled && !f.flag.empty()) { std::cout << " " << k; } @@ -280,7 +280,7 @@ int main(int argc, char* argv[]) { } std::cout << ")\n"; } - return plan.steps.empty() && plan.missing.empty() ? 0 : 0; + return plan.missing.empty() ? 0 : 1; } catch (const std::runtime_error& e) { handle_parse_error(file_arg, source, e); return 1; diff --git a/src/resolve/plan.cpp b/src/resolve/plan.cpp index 80e1267..c8d794d 100644 --- a/src/resolve/plan.cpp +++ b/src/resolve/plan.cpp @@ -1,7 +1,6 @@ #include "kappa/resolve/plan.hpp" #include "kappa/config/merge.hpp" -#include #include namespace kappa::resolve { @@ -23,15 +22,14 @@ BuildPlan resolve(const dsl::SystemConfig& cfg, const Registry& registry) { BuildStep step; step.name = pkg.name; - step.package = pkg; - step.features = resolved.features; - step.config = resolved.config; + step.package = &pkg; + step.resolved = std::move(resolved); for (auto& dep : pkg.depends) { if (!dep.feature.empty()) { - auto fit = step.features.find(dep.feature); - if (fit == step.features.end() || !fit->second.enabled) { - continue; // feature-gated and disabled + auto fit = step.resolved.features.find(dep.feature); + if (fit == step.resolved.features.end() || !fit->second.enabled) { + continue; } } step.dependencies.push_back({dep.name, dep.version});