From d8ece6ca9b60319472dc61f73f5c4356ffa8bf7e Mon Sep 17 00:00:00 2001 From: Martin Vogel Date: Sun, 4 Oct 2026 16:39:48 +0200 Subject: [PATCH] fix(build): reconcile three call sites after concurrent merges Two pairs of pull requests merged cleanly but left main unbuildable: - #2447 added a route_mount parameter to emit_route_registration and handle_route_registration, while #2464 added a new call to each with the old argument list. The cross-language refused-route helper from #2464 now takes route_mount and passes it on, and the pass_calls.c call passes it too, as every other call site does. A route minted for a refused binding therefore gets the same Laravel api mount as any other route from that file. - #2446 added a caller of is_project_db_file, which #2526 replaced with cbm_is_project_index_db. The new caller uses the replacement, so the owning-project lookup accepts the same file names as every other project scan. Verified: build/c/test-runner and the server binary build again; suites edge_types_probe, mcp, cli and pipeline: 1081 passed, 4 platform skips. Signed-off-by: Martin Vogel --- src/mcp/mcp.c | 2 +- src/pipeline/pass_calls.c | 2 +- src/pipeline/pass_parallel.c | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mcp/mcp.c b/src/mcp/mcp.c index ce1ff7a50..aee17e797 100644 --- a/src/mcp/mcp.c +++ b/src/mcp/mcp.c @@ -12093,7 +12093,7 @@ static char *resolve_path_owner(const char *path, char *derived) { cbm_dirent_t *entry; while ((entry = cbm_readdir(d)) != NULL) { mcp_project_record_t record = {0}; - if (!is_project_db_file(entry->name, strlen(entry->name)) || + if (!cbm_is_project_index_db(entry->name) || read_project_record_identity(dir_path, entry->name, 0, &record) != PROJECT_RECORD_OK) { continue; } diff --git a/src/pipeline/pass_calls.c b/src/pipeline/pass_calls.c index 83f994419..668919682 100644 --- a/src/pipeline/pass_calls.c +++ b/src/pipeline/pass_calls.c @@ -903,7 +903,7 @@ static int resolve_single_call(cbm_pipeline_ctx_t *ctx, CBMCall *call, const CBM if (cbm_service_pattern_route_method(call->callee_name) != NULL && call->first_string_arg && call->first_string_arg[0] == '/') { handle_route_registration(ctx, call, source_node, module_qn, imp_keys, imp_vals, - imp_count); + imp_count, route_mount); return SKIP_ONE; } return 0; diff --git a/src/pipeline/pass_parallel.c b/src/pipeline/pass_parallel.c index c1cfa7e9a..a8a9f3693 100644 --- a/src/pipeline/pass_parallel.c +++ b/src/pipeline/pass_parallel.c @@ -2668,7 +2668,8 @@ static void emit_service_edge(cbm_gbuf_t *gbuf, const cbm_gbuf_node_t *source, static void emit_xlang_refused_route(cbm_gbuf_t *gbuf, const cbm_gbuf_node_t *source, const CBMCall *call, const char *module_qn, const cbm_registry_t *registry, const cbm_gbuf_t *main_gbuf, - const char **imp_keys, const char **imp_vals, int imp_count) { + const char **imp_keys, const char **imp_vals, int imp_count, + const char *route_mount) { if (cbm_service_pattern_route_method(call->callee_name) == NULL) { return; } @@ -2680,7 +2681,7 @@ static void emit_xlang_refused_route(cbm_gbuf_t *gbuf, const cbm_gbuf_node_t *so const char *route_path = find_route_path_in_args(call, &handler_ref); if (route_path) { emit_route_registration(gbuf, source, call, route_path, handler_ref, module_qn, registry, - main_gbuf, imp_keys, imp_vals, imp_count); + main_gbuf, imp_keys, imp_vals, imp_count, route_mount); } } @@ -3259,7 +3260,7 @@ static void resolve_file_calls(resolve_ctx_t *rc, resolve_worker_state_t *ws, CB * CALLS edge across a language boundary. A route registration * behind the refused binding still gets its Route. */ emit_xlang_refused_route(ws->local_edge_buf, source_node, call, module_qn, rc->registry, - rc->main_gbuf, imp_keys, imp_vals, imp_count); + rc->main_gbuf, imp_keys, imp_vals, imp_count, route_mount); continue; } if (!target_node || source_node->id == target_node->id) {