Skip to content

fix(core, analyzer): Split-out incomplete summary edges - #408

Open
Saloed wants to merge 5 commits into
mainfrom
saloed/any-ap-split-summaries
Open

Saloed wants to merge 5 commits into
mainfrom
saloed/any-ap-split-summaries

Conversation

@Saloed

@Saloed Saloed commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Saloed and others added 5 commits October 1, 2026 22:25
Keep [any] in AccessPath instead of dropping it, add containsAny flags to
AccessPath and AccessTree nodes, match [any] paths semantically in
AccessTree.delta/contains/filterStartsWith, and add AccessNode.splitAny()
to partition a tree into its complete and [any] parts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018R4xeH4QFAH7RrPcKFoQGZ
Store edges with [any] in the initial or the final separately from complete
edges in the F2F, Z2F and ND-F2F tree summary storages, splitting mixed finals
with splitAny(). Tries that can hold [any] keys (any-edge F2F, fact side
effects, side-effect requirements) now return everything under an [any] key
for a pattern that reaches it. The any-suffix matcher skips nested [any] edges
instead of failing a check.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018R4xeH4QFAH7RrPcKFoQGZ
An [any] in an AccessPath is now matched exactly everywhere: against another
path it is an ordinary symbol, and against a tree (delta, contains,
filterStartsWith) it matches only the tree's own [any] edge. Drop the semantic
closure matcher and the over-approximating [any]-key lookups in the summary,
side-effect and subscription tries; a plain trie walk is now exact.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018R4xeH4QFAH7RrPcKFoQGZ
With exact [any] matching, x.[any].* is no longer the same as x.*: the former
matches only a tree with an [any] edge under x. Prepending [any] to the
abstract path now keeps it instead of normalising it away.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018R4xeH4QFAH7RrPcKFoQGZ
A path holds at most one [any]: a.[any].b.[any].c == a.[any].c. Prepending
[any] to a path keeps only the part after its existing [any]; prepending
[any] to a tree collapses every [any] below it, and a tree concat that puts
an [any] of the delta under an [any] of the fact collapses it the same way.
With the invariant restored, the any-suffix matcher keeps its original
check against nested [any] edges.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018R4xeH4QFAH7RrPcKFoQGZ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant