Repository navigation
Conversation
Report stored recursion signals and the static self-call omission policy alongside graph reachability totals. Preserve the metadata across cursor pages and output-budget fallback responses, and document unknown legacy metadata without changing CALLS indexing or traversal counts. Fixes DeusData#2816 Signed-off-by: pcristin <xxxokzxxx@protonmail.com>
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
|
Thank you so much, @pcristin! A recursive function reporting a bare "callees_total: 0" was easy to misread, and exposing the stored recursion signals (with an honest null for older indexes and an explicit self_call_policy) makes the trace say what the graph actually knows. We reviewed it and are happy to take it as it is: the tests fail on main and pass with your change, and the whole mcp suite passes on the merged tree. The coverage for stubs, edge filters, the output-budget floor and cursor pages is much appreciated. Main had moved on in src/mcp/mcp.c, tests/test_mcp.c and README.md since your last CI run, so we merged current main into your branch (one merge commit, dd96a98, signed off; it merged cleanly and your own change is untouched) for a fresh run. We will merge once the required checks are green. Please pull before pushing again. |
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
What does this PR do?
Fixes #2816.
A directly recursive function can currently return
callees_total: 0with relationeqand no indication of recursion. Static indexing intentionally omits direct self-call edges, even when extraction correctly records recursion on the function node.Expose the start nodes' stored
self_recursiveandrecursivesignals in tree and JSON traces. CALLS-inclusive traces also reportself_call_policy: omitted. Reachability totals and indexed edges retain their existing meaning. Across matching definitions/stubs, any recorded true wins, all recorded false yields false, and missing or invalid metadata yields null. These fields remain visible on continuation pages and budget-floor responses.For the issue's
countdownexample, the trace now includes:Tests cover direct versus cycle recursion, legacy/invalid metadata, multiple roots, callee isolation, edge filters, output budgets, and cursor continuation. The README documents the contract. No reindex is required to expose flags already stored in an index.
Written with OpenAI Codex on behalf of the submitting contributor.
Validation
scripts/test.shcompleted on Linux x86_64 using Clang 20 with ASan/UBSan: 10,026 passed, 0 failed, 10 skipped across 191 suites. All enabled final process guards passed. Compilation used a temporary external wrapper that caches preprocessed translation units and adds the C++ sanitizer runtime at link time; repository build files were unchanged.make -f Makefile.cbm lint-ci) passed with cppcheck 2.20.0 and clang-format 20. Staged diff-scoped clang-tidy 20, whitespace, memory-core and no-suppression checks passed.make -f Makefile.cbm securityaudit passed against the local test-seam binary, including source, binary strings, UI, installation, network egress, adversarial MCP inputs, and vendored integrity checks.Checklist
git commit -s);scripts/check-dco.sh HEAD^..HEADpassedscripts/test.sh)make -f Makefile.cbm lint-ci)