Commit Graph
310 Commits
Author SHA1 Message Date
safishamsiandClaude Opus 4.8 4139885a12 release: 0.9.69
Five language-extractor enrichments (OCaml/Elixir/Fortran/Julia methods,
protocols, type-bound procs, macros/@enum, Kotlin annotations+ctor props),
tsconfig references alias resolution, spawn-safe process-pool skip,
self-loop-preserving dedup, host-based URL classification, incremental
cache_root forwarding, deterministic manifest tie-break, and a
contributor-guide/community-health docs overhaul.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-26 14:02:32 +01:00
safishamsiandClaude Opus 4.8 4000de1546 release: consolidate unreleased 0.9.69 into 0.9.68
0.9.68 was bumped locally but never published to PyPI (latest published
is 0.9.67), so fold the second triage round's five PRs into a single
contiguous 0.9.68 release rather than skipping the number. No PyPI gap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-25 16:33:01 +01:00
safishamsiandClaude Opus 4.8 636f2fe08a release: 0.9.69
Complete the skillgen --watch INPUT_PATH injection fix in the add-watch
reference (#3742), preserve cross-file edges on incremental update
(#3812), stop C# type references resolving to same-named non-type nodes
(#3815), prefer a real source location over richness in dedup (#3786),
and resolve Maven inherited groupId + ${...} properties in pom.xml
(#3823).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-25 16:22:25 +01:00
safishamsiandClaude Opus 4.8 d197ae36fa release: 0.9.68
Windows hash-seed re-exec wait (#3816/#3799), Terraform secret-named
variable-default/output redaction (#3817), COBOL fixed-format
sequence-number detection (#3813) and PERFORM...THRU both-endpoint
linking (#3814), and gate the GRAPH_REPORT undocumented-components
reason on a real semantic layer (#3828/#3801).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-25 15:54:48 +01:00
safishamsiandClaude Opus 4.8 4c735618f3 release: 0.9.67 — Windows hash-seed re-exec fix, PHP closures, absolute Python import resolution, package/module phantom-cycle fix, terraform list-secret redaction, idempotent wiki/Obsidian writes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-23 20:23:51 +01:00
safishamsiandClaude Opus 4.8 a5957aa6ef release: 0.9.66 — five new language extractors (COBOL/VB.NET/R/Solidity/Erlang), deterministic PYTHONHASHSEED builds, Go interface + Rust generic resolution, Cargo workspace/subdir handling, method-ghost dedup, serve id-aliases, install CRLF fix, labeling retry, stale-root fallbacks
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-22 22:39:40 +01:00
Abdullah 89c27c7b80 feat: add Erlang language extractor
(cherry picked from commit 3a92853329)
2026-09-21 19:19:26 +01:00
Abdullah 9f069eafea feat: add Solidity language extractor
(cherry picked from commit 41a1575e5e)
2026-09-21 19:13:40 +01:00
Abdullah d68d6012bd feat: add R language extractor
(cherry picked from commit 250395de31)
2026-09-21 19:10:13 +01:00
Abdullah ebe1f32c81 feat: add VB.NET language extractor
(cherry picked from commit 304c82fe10)
2026-09-21 19:06:50 +01:00
safishamsiandClaude Opus 4.8 7ca736cf94 release: 0.9.65 — Pillow CVE floor, Go/Swift/Java/Verilog extractor fixes, JS block scoping, fail-closed eviction deadlock fix, vis-network crash + tooltip encoding, repo-link/docs cleanup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-20 18:46:53 +01:00
viral-antuit 5f6b2a2e83 fix: security pillow updated to 12.3.0 for cve-2026-54058
(cherry picked from commit adaedf5c5e)
2026-09-20 18:00:48 +01:00
safishamsiandClaude Opus 4.8 b9cd957072 release: 0.9.64 — terraform block attributes (with secret redaction), JS in PHP script blocks, rust generic-impl self calls, kotlin/C++ cross-file member calls, npm subpath imports, stale-analysis reconstruct, markdown-family reconcile, external-vs-dangling diagnostics
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-18 22:16:16 +01:00
safishamsiandClaude Opus 4.8 eaaec1abd9 release: 0.9.63 — elixir cross-file alias/import resolution, rust self.method() across files, ruby inherited member calls, external import stub nodes (no more dangling graph.json endpoints), markdown mention edges survive rebuilds
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-16 16:51:37 +01:00
safishamsi e4399cb9ca release: 0.9.62 — sourceless-stub calls, module-level closure calls, C# cross-repo scoping, lua bare require, tokens secret FP, guard-hook timeout 2026-09-13 22:53:43 +01:00
safishamsi fe66389083 release: 0.9.61 — fix Python 3.12/3.13 breakage from 0.9.60
- chinese extra: pin jieba-py from 3.12 (was 3.14); jieba's invalid escapes are
  a hard error on 3.12+ and broke graphify.serve import.
- serve.py: suppress the tokenizer SyntaxWarning by category so -W error can't
  escalate it; catch SyntaxError as a fallback.
- hooks.py: harden the #3492 rebuild-root guard for 3.13, whose resolve() no
  longer raises on a symlink loop — require a real directory.
Verified full suite green on both 3.10 (5628) and 3.13 (5627).
2026-09-12 22:23:00 +01:00
safishamsi 7464f5b125 release: 0.9.60 — Windows os.replace fallback, unclassified-file surfacing, C/C++ newline parse, Office sidecar fix, exported-function call resolution, workspace export conditions, Python 3.14 support 2026-09-12 21:54:14 +01:00
taazbro 0fc31470b0 fix: raise vulnerable dependency floors
(cherry picked from commit 7590ec5856)
2026-09-12 21:33:43 +01:00
taazbro b42e5bc5c2 fix: support Python 3.14 optional dependencies
(cherry picked from commit 76bb841de0)
2026-09-12 21:33:43 +01:00
safishamsi 522ea9662e release: 0.9.59 — incremental dedup node-loss fix, pool-start fallback, 47% faster Python resolution, explain path::Symbol, hook rebuild-root clamp 2026-09-12 15:17:30 +01:00
safishamsi 23f2ffaa43 release: 0.9.58 — python/php/bash import resolution, dedup source-path normalization, SQL indexes, rust statics, install/labelling robustness, all-extra psycopg 2026-09-10 23:19:02 +01:00
L4XB fc179f3394 fix(packaging): include psycopg[binary] in the all extra
The postgres extra's psycopg[binary] was the sole dep missing from all; a new
union test guards the all-extra against future drift. (#3483)
2026-09-10 23:05:04 +01:00
safishamsi 3f82bf7f83 release: 0.9.57 — incremental cross-file merge fix, richer dedup survivor, C# generic call sites, JS this-member forms 2026-09-09 13:00:13 +01:00
safishamsi 67f99bd005 release: 0.9.56 — rust trait methods, Windows temp-path bound, hook-skip subshell, @/ + Node subpath imports, undirected MCP query, builtin member calls, worker cleanup, TS normalizer perf, Dart source_location 2026-09-07 20:47:42 +01:00
safishamsi c9f9901877 release: 0.9.55 — leading-comment docstrings, underscore-id collisions, ghost source_file, owned type-use sources, no-cluster labels, named re-exports, entity dedup, TS runtime imports, json_config edges, claude-cli preamble, watch semantic flag, mcp stdin 2026-09-05 22:15:39 +01:00
safishamsi 937e59a547 release: 0.9.54 — dup-edge collapse, unique memory-doc names, top-level hyperedge export, rationale scoring tier, atomic version/canvas writes, tomli runtime dep 2026-09-05 01:26:20 +01:00
dr mike d424a7ccfa fix(manifest): require tomli on Py3.10 and fail loud when missing
Declare tomli with an environment marker and raise ImportError instead of returning None, so missing parsers no longer look like empty manifests.

Fixes #3283

(cherry picked from commit c06ba2731c)
2026-09-05 01:19:09 +01:00
safishamsiandClaude Opus 4.8 33362d9692 chore: bump to 0.9.53
Ships two batches: the robot/defang/watch/semantic-guard set — Robot Framework extractor
(#3192), generalized control-token defang (#3183), watch unresolved-link preservation
(#3190), unverified-semantic-loss guard (#3203), hook-guard search detection (#3121),
stale-SKILL.md backup (#3144), report/wiki count fixes (#3148/#3127); and a rescued batch of
@Synvoya cross-language inheritance-edge corrections (JS #1790, PHP #1791, Scala #1792/#1794,
Kotlin #1793, C# #1817, Go #1818) that had been buried in the backlog for ~7 weeks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-30 16:01:33 +01:00
nshiveg 832256f824 feat: Robot Framework extractor for .robot/.resource files (#3192)
Add a Robot Framework extractor using the official robot.api parser (pure-Python, optional
[robot] extra), emitting suite/test/keyword nodes plus keyword-call, resource-import, and
library edges. Keyword resolution is case/space/underscore-insensitive (RF's real semantics)
and handles BDD prefixes and ${CURDIR}/${EXECDIR} path resolution; degrades to an actionable
error when robotframework is absent.
2026-08-30 15:14:33 +01:00
safishamsiandClaude Opus 4.8 680e3ed8ed chore: bump to 0.9.52
Ships three batches: php new Foo() calls (#3115), inherited-field receivers (#3151), objc
field-table remap (#3150), ts type-only-import cycles (#3123) and import-type args (#3185);
razor @inject cross-file (partial #3187), MCP prs isError + get_node resolver parity,
project-scoped bare hook command (#3129); and T-SQL routine recovery (#3164), watch
markdown->semantic reconcile (#3190), --help completeness, and a deepseek pricing fix. The
#3155 provenance backfill was reverted (regressed the orphan prune).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-29 19:38:37 +01:00
safishamsiandClaude Opus 4.8 281ccaa4ff chore: bump to 0.9.51
Ships three batches: the leiden-direct perf win (#3104) and git-workflow docs; TS new_expression
constructor calls (#3116), elixir when-guard-only clauses (#3111), commonlisp path-qualified
ids, and the FalkorDB wrong-service test skip; and the correctness set — shrink guard armed on
hollow/unparseable/omitting chunks (#3105), --force --code-only full rescan (#3125), carried
hyperedge survivor remap (#3102), atexit stat-index no-resurrect (#2974), and Leiden
edge-endpoint determinism.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-28 01:25:56 +01:00
safishamsiandClaude Opus 4.8 43d54acbfa chore: bump to 0.9.50
Ships two batches: the detect ignore-perf rewrite (#2226) with the globstar cycle fix and
bounded pattern cache; C#/TypeScript enum-member nodes (#3063/#3064); watch read-only
inotify filtering; the postgres tree-sitter-sql extra; Ruby suffixed-method-id preservation
(#3077) and qualified-receiver matching (#3078); HOF-wrapped CommonJS export capture
(#3035); per-input community-id offset in merge-graphs (#3014); and the Windows PowerShell
BOM fix across all .graphify_root readers (#3028).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-25 18:24:12 +01:00
Azeem1985 62371ad28d fix(postgres): carry tree-sitter-sql in the postgres extra and surface grammar errors
The postgres introspection path synthesizes DDL and parses it with the SQL grammar, but
tree-sitter-sql was not in the postgres extra, so `pip install graphifyy[postgres]` left it
unable to parse and returned a silent empty result. Add tree-sitter-sql to the extra and
raise an actionable ImportError (with the install hint) when the grammar is missing or has
an incompatible ABI, instead of reporting zero nodes.
2026-08-25 15:44:52 +01:00
safishamsiandClaude Opus 4.8 282976b2f4 chore: bump to 0.9.49
Ships four batches this cycle: tsconfig cache-clear (#2917), C# generic type args at call
sites + field position (#2911), PDF/document slicing (#2900/#2903/#2906); the LLM/cache
resilience set — zero-node retry (#2927), reasoning-JSON recovery scope (#2926),
code-only --force semantic preservation (#2923), cross-language builtin-base fix (#2812),
uv-tool hook resolution (#2852), pre-manifest obsidian adoption (#2863); language
extractors — zig enum/union methods (#2999), julia abstract supertypes (#3000), commonlisp
cross-file inherits (#3001), powershell enums (#3002); and C#/extractor/merge fixes — C#
object creation (#2997), interface dispatch (#3003), property nodes (#3006), cross-repo
shared types (#3007), SQL transactions (#2953), bash command substitution (#2978), and
C++/ObjC definition-site preservation (#2990).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-24 14:18:33 +01:00
safishamsiandClaude Opus 4.8 b2cd362674 chore: bump to 0.9.48
Ships this cycle: the LLM-resilience batch — hollow-response same-chunk retry (#2880),
reasoning-first JSON recovery (#2882), deliberately-declined data JSON not counted as
failed (#2879); extractor fixes — C++ nested types + C++/CLI (#2876), markdown vault-wide
wikilinks (#2875); export fixes — control-char no longer aborts export (#2897), graph.html
restored for large graphs (#2853); and the --no-dedup opt-out (#2881).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-20 16:33:07 +01:00
safishamsiandClaude Opus 4.8 b14b52e94e chore: bump to 0.9.47
Ships this cycle: the graph-correctness/UX batch — JS/TS factory-object methods
(#2745), stable graph.json field order (#2582), query names its graph (#2789),
ThinkingBlock-safe claude backend (#2697), manifest churn guard (#2838), C# primary
ctor refs (#2829), AST INFERRED rubric confidence_score (#2813), legacy numeric
confidence normalization; plus the small-fix batch — chunk-bisect on timeout (#2866),
symlink cache identity (#2832), sidecar cache root (#2787), driveless Windows path
guard (#2795), actionable partial-parse warning (#2788), and non-ASCII Obsidian tags
(#2862).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-19 14:11:10 +01:00
safishamsiandClaude Opus 4.8 558df6d57d chore: bump to 0.9.46
Ships: Common Lisp extractor; the graph-correctness batch (edge-relation
collapse #2803, orphaned-import sweep #2807, hyperedge member rewire #2805,
non-UTF-8 ignore #2798, id-less hyperedge #2775, Go case-only #2779,
.graphify_root validation #2603, #2694 part 2); the fresh-contributor batch
(markdown node_kind #2533, post-checkout skip #2421, underscore query #2473,
Java annotation refs #2426); and the normalize_id caseless-stability fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-17 19:21:39 +01:00
fadeandClaude Opus 4.8 038ada6f0f feat(commonlisp): add Common Lisp .lisp/.cl/.lsp/.asd extractor (optional tree-sitter-commonlisp extra)
tree-sitter-commonlisp-backed extractor for packages, classes, functions,
methods, generics, macros, variable definers, and same-file calls. Handles the
grammar's dedicated defun node (defun/defmacro/defmethod/defgeneric via
defun_header) and the generic list_lit + leading-symbol forms (defvar/defclass/
defpackage), recurses into wrapper macros (eval-when/progn) and reader
conditionals, and maps CL operator chars (= < > ? ! + *) to readable id
suffixes. Wired into detect/extract dispatch, the extractor registry, a
[commonlisp] optional extra, and the README; ships a fixture and a 23-test suite
behind an importorskip guard.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-17 16:05:33 +01:00
safishamsiandClaude Opus 4.8 0738af373a chore: bump to 0.9.45
Ships: id-less hyperedge load tolerance (#2775), per-platform version stamp
completing #2694, Go case-only symbol collision (#2779), and .graphify_root
anchor validation (#2603).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-16 21:12:56 +01:00
safishamsiandClaude Opus 4.8 4fca621532 chore: bump to 0.9.44
Ships the accumulated 0.9.44 fixes: OCaml qualified-call fix; cross-file uses
attribution (#2652), nested JS functions incl. arrow idioms (#2653), bash
source-path resolution + traversal gate (#2596), wiki verbatim links (#2597),
export MAX_PATH budgeting (#2655), external-import & function-expression
indirect_call shadows (#2757/#2752), lazy CommonJS requires (#2700), affected
absolute-seed root (#2706), cpp doctest TEST_CASE recovery (#2594), git-tracked
gitignored files (#2759), CLAUDE_CONFIG_DIR always-on install (#2694), and
committed viz-node-limit config (#2760).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-15 22:10:43 +01:00
safishamsiandClaude Opus 4.8 7281f27eac chore: bump to 0.9.43
Cuts a 0.9.43 section (OCaml extractor + #2652/#2653/#2596/#2597/#2655) and
dates the released 0.9.42.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-14 15:36:55 +01:00
safishamsiandClaude Opus 4.8 0302bfa7af feat(ocaml): add OCaml .ml/.mli extractor (optional tree-sitter-ocaml extra)
New graphify/extractors/ocaml.py handles both the implementation grammar
(language_ocaml, .ml) and the interface grammar (language_ocaml_interface,
.mli). Emits nodes for modules, top-level/module-level values and functions,
types and their variant constructors; edges for defines/contains, open ->
imports_from, and application -> calls. Qualified paths (Geo.area) resolve to
the final value name, not the module qualifier; local let ... in bindings do
not mint nodes or steal call attribution. Cross-file open/call targets are
sourceless stubs so the corpus rewire collapses them onto the unique real
definition (no #1402 sourced-stub leak).

Wired into detect.py (CODE_EXTENSIONS), extract.py (dispatch +
_EXTRA_FOR_EXTENSION), pyproject.toml ([ocaml] extra + all + dev dep), and
README. Adds tests/test_ocaml.py (behind importorskip).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-14 14:17:07 +01:00
safishamsiandClaude Opus 4.8 ded1feb88a chore: bump to 0.9.42
Correctness (#2685 loop-binding shadow, #2699 provenance, #2707 affected
seed, #2688 py subpackage imports, #2602 sql grammar, #2683 cache
integrity, #2682 report basename) + Windows portability/docs batch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-13 13:36:32 +01:00
safishamsiandClaude Opus 4.8 33283f5356 chore: bump to 0.9.41
Fixes: #2517 (JS/TS catch-binding indirect_call), #2434 (Cargo.toml
manifest), #2468 (scan-root vs parent .gitignore + NFC follow-up), #2482
(API rationale prompt).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 17:36:27 +01:00
safishamsiandClaude Opus 4.8 26128abf69 chore: bump to 0.9.40
Batch of correctness/determinism fixes (#2610/#2599, #2612, #2618, #2614,
#2582, #2467, #2544, #2493, #2568-followup, #2605, #2608, #2598).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 15:30:34 +01:00
safishamsiandClaude Opus 4.8 50556baaea fix(extract): affected traverses in-function dynamic imports; Python member-call gating; ObjC resolver arm; bump to 0.9.39 (#2584, #2586, #2589, #2591)
These land together because they are interleaved in extract.py/engine.py.

#2584 (PR #2588, thanks @phudayyy): the 0.9.38 dynamic-import dedupe keyed
only on target, so an in-function import() suppressed the file-level edge
affected follows. Dedupe now keys on the importing file, emitting one
file-level dynamic_import edge per file/target while keeping the call-site
edge.

#2586 / #2417 (PR #2586, thanks @EZZEASY): a Python member call on an
untyped receiver (x.get(...)) no longer binds by name to a same-named
module function. walk_calls now defers non-self/cls/super Python member
calls to the evidence-gated resolver; super().method() still resolves.
Known trade: same-file x = Thing(); x.method() loses its evidence-free
edge (precision over recall, per #2553).

#2589/#2591 resolver arm (in _resolve_objc_member_calls): the @protocol
exclusion and the self.field/_ivar receiver resolution (paired with the
objc.py extractor changes committed separately).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-10 18:07:20 +01:00
safishamsiandClaude Opus 4.8 10ad921b42 fix: JS/Kotlin/Swift/SQL extractor correctness batch; bump to 0.9.38 (#2568, #2565, #2561, #2577, #2575)
These changes are interleaved across engine.py/extract.py by function, so
they land as one batch.

#2568 (thanks @imagineers-tyler): the 0.9.37 #2552 callback-body fix
unioned sibling closures' local names under the shared declaration, so a
local in one callback suppressed a real indirect_call in a sibling. Locals
are now scoped per body (keyed by body id, via walk_calls' extra_locals).
Restore-only, never fabricates; #2552 capture preserved.

#2565 (thanks @kskchaitanya1993): Kotlin property initializers — class,
top-level, companion, and `by lazy {}` — now seed call extraction, so
`val repo = createRepo()` produces a calls edge; literal initializers
produce none; FQ calls compose with the #2550 resolver.

#2561 (thanks @fakewaffle): Swift receiver typing now handles
`@Environment(Store.self)` (whitelisted; @Query/keypath/dotted skipped to
avoid a wrong edge) and in-corpus factory bindings via a marked concrete
return type; opaque/array/out-of-corpus returns stay unresolved.

#2577 (thanks @wilyan09007, PR #2579): the SQL extractor no longer emits a
reads_from edge to a CTE name. WITH names are scoped per query (a subquery
CTE no longer suppresses an outer real table of the same name), so a CTE
no longer mints a bare stub that binds to an unrelated same-named symbol.

#2575 (thanks @phudayyy, PR #2574): a dynamic `import('…')` inside a nested
function or at module scope now produces an edge, dynamic_import is
included in affected, and calls inside nested named functions are
collected; a dynamic import already captured as a deferred imports_from is
not double-counted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-09 23:19:08 +01:00
safishamsiandClaude Opus 4.8 09a34ad87a fix(update,llm): retry failed extractions; surface claude-cli envelope errors; bump to 0.9.37 (#2543, #2554)
#2543 (adopts PR #2546, thanks @michaelxer): a failed extraction is no
longer stamped in the incremental manifest as up-to-date, so graphify
update retries it instead of skipping it forever; a manifest already
poisoned by the old behavior is healed on the next run; genuinely
unchanged files are not re-processed. Extended to the watch save_manifest
paths too.

#2554 (adopts PR #2555, thanks @annieyii): the claude-cli backend now
inspects the stdout envelope for an is_error result (e.g. a rate limit
returned with exit code 0) and raises it on both the zero and non-zero
exit paths, instead of parsing it as an empty success and bisecting
against a live rate limit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 23:37:49 +01:00
safishamsiandClaude Opus 4.8 3d19463484 fix(skill): make the Windows skill variant runnable on PowerShell; bump to 0.9.36 (#2528)
The Windows skill variant had a PowerShell Step 1 but its later steps came
from the shared core fragment as bash-only shell (cat-piped interpreter
invocations, rm -f, find -delete). The skillgen renderer now translates the
composed core to PowerShell for powershell-shell platforms (here-string
interpreter invocations, Remove-Item cleanup); POSIX skills are unchanged
and step / #2490 parity is enforced by a generator check. Not a regression
from 0.9.35 (skill files were unchanged between 0.9.34 and 0.9.35).

Thanks @tannermosher2015-debug.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-07 22:49:51 +01:00
safishamsiandClaude Opus 4.8 9f25a3aaa1 fix(callflow,query): direction-aware callflow; drop relational-verb seed pollution; bump to 0.9.35
#2508 (thanks @Tomaskobel): callflow loads the graph directed and recovers
direction from _src/_tgt markers (consistent with the path fix), so
caller/callee columns are correct; indirect calls are now counted.
#2507 (thanks @filipechagas): relational-intent verbs (calls/uses/extends/
...) are excluded from the per-term seed guarantee, so a decoy matching
only the verb no longer becomes a traversal root, while a verb that is a
real symbol name can still be seeded on merit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-06 17:29:18 +01:00