Description
check <ref> reports [FAIL] signatures for symbols that live in files added since <ref>. A brand-new file has no previous signature to compare against, so every exported function in it is flagged as a signature break. On a branch that adds files this makes the diff-predicate mode of check fail unconditionally, which defeats its use as a CI gate.
Steps to Reproduce
On optave/core-orchestrator-svc at commit ca32aee92 (branch claude/opus-sonnet-orchestration-94be94, which adds 33 files relative to origin/main):
npx -y @optave/codegraph@3.17.0 build --no-incremental
npx -y @optave/codegraph@3.17.0 check # manifesto rules only: 0 FAIL, 345 WARN (complexity thresholds), fine
npx -y @optave/codegraph@3.17.0 check origin/main # diff predicates vs the base branch
git diff --name-status origin/main...HEAD | grep '^A' # the added files
Minimal shape: any repo, create a branch, add one new file exporting a function, codegraph build, codegraph check <base>.
Expected Behavior
signatures compares the signature of symbols that exist on both sides and reports only real changes. Symbols in files with git status A (added) have no baseline and should be skipped, or reported under an "added" heading that is not a failure.
Actual Behavior
check origin/main prints [FAIL] signatures listing 21 symbols. Cross-checking each symbol's file against git diff --name-status origin/main...HEAD shows all 21 are in files marked A; none is a modified signature in a pre-existing file. check with no ref (manifesto rules only) passes on the same tree.
Codegraph Version
3.17.0 (npx -y @optave/codegraph@3.17.0)
Node.js Version
v22.18.0
Operating System
Windows 11 Pro 10.0.26200 (x64), Git Bash shell
Parser Engine
native (Active engine : native (v3.17.0))
Additional Context
Description
check <ref>reports[FAIL] signaturesfor symbols that live in files added since<ref>. A brand-new file has no previous signature to compare against, so every exported function in it is flagged as a signature break. On a branch that adds files this makes the diff-predicate mode ofcheckfail unconditionally, which defeats its use as a CI gate.Steps to Reproduce
On
optave/core-orchestrator-svcat commitca32aee92(branchclaude/opus-sonnet-orchestration-94be94, which adds 33 files relative toorigin/main):Minimal shape: any repo, create a branch, add one new file exporting a function,
codegraph build,codegraph check <base>.Expected Behavior
signaturescompares the signature of symbols that exist on both sides and reports only real changes. Symbols in files with git statusA(added) have no baseline and should be skipped, or reported under an "added" heading that is not a failure.Actual Behavior
check origin/mainprints[FAIL] signatureslisting 21 symbols. Cross-checking each symbol's file againstgit diff --name-status origin/main...HEADshows all 21 are in files markedA; none is a modified signature in a pre-existing file.checkwith no ref (manifesto rules only) passes on the same tree.Codegraph Version
3.17.0 (
npx -y @optave/codegraph@3.17.0)Node.js Version
v22.18.0
Operating System
Windows 11 Pro 10.0.26200 (x64), Git Bash shell
Parser Engine
native (
Active engine : native (v3.17.0))Additional Context
-Ton 3.17.0 also excludestests/utilities/*, socycles --functions -Tnow reports 0 where the 2026-08-09 baseline recorded the one benign cycle intests/utilities/dependency-analyzer.js; without-Tthe cycle is still reported.