Skip to content
Open
1 change: 1 addition & 0 deletions scripts/security-allowlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ src/pipeline/pass_githistory.c:popen:via cbm_popen wrapper call
# ── Pipeline: artifact persistence (git HEAD hash, merge driver config) ────
src/pipeline/artifact.c:cbm_popen:git rev-parse HEAD for artifact metadata (hardcoded cmd)
src/pipeline/artifact.c:cbm_popen:git config merge.ours.driver for gitattributes (hardcoded cmd)
src/pipeline/artifact.c:cbm_popen:git diff/ls-files/ls-tree/cat-file for bootstrap hash reconciliation (commit hex-validated via is_hex_oid, repo path shell-validated via cbm_validate_shell_arg)
src/pipeline/artifact.c:popen:via cbm_popen wrapper calls

# ── UI: HTTP server process management ─────────────────────────────────────
Expand Down
8 changes: 7 additions & 1 deletion src/mcp/mcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -3246,7 +3246,13 @@ static void try_artifact_bootstrap(const char *project_name, const char *repo_pa
project_db_path(project_name, db_buf, sizeof(db_buf));
if (cbm_file_size(db_buf) < 0 && cbm_artifact_exists(repo_path)) {
cbm_log_info("index.artifact_bootstrap", "project", project_name);
cbm_artifact_import(repo_path, db_buf);
if (cbm_artifact_import(repo_path, db_buf) == 0) {
/* Reconcile imported (foreign-mtime) hash rows against the local
* working tree so the first incremental run classifies by actual
* git diff instead of re-parsing ~everything. Best-effort: a -1
* return leaves rows foreign and falls back to today's behavior. */
(void)cbm_artifact_reconcile_hashes(repo_path, db_buf, project_name);
}
}
}

Expand Down
Loading
Loading