Add function-scoped Logic visualization
This commit is contained in:
parent
9fcafc290c
commit
9b4258c852
22 changed files with 1420 additions and 62 deletions
|
|
@ -296,6 +296,30 @@ Adjacent traversal is deliberately bounded. After DocForge includes a direct mem
|
|||
dependency owned by the focus, it continues toward that branch rather than fanning back out
|
||||
through unrelated siblings. Depth and edge limits provide a second guard against an unbounded web.
|
||||
|
||||
### Logic: possible control paths
|
||||
|
||||
**Logic** answers: “What decisions and actions can occur inside this function or method?”
|
||||
|
||||
Logic appears when the focused node owns a function-scoped `LogicProjection`. It loads that
|
||||
projection on demand instead of adding statements and conditions to the primary architecture
|
||||
graph. The view presents:
|
||||
|
||||
- **Entry** and **Exit** terminals.
|
||||
- **Decision** cards for `if`, `elif`, compound booleans, loop conditions, `match` cases, and
|
||||
assertions.
|
||||
- **Action** cards for executable statement blocks and calls.
|
||||
- **Control** cards for loops, `break`, and `continue`.
|
||||
- **Merge** cards where alternate paths converge.
|
||||
- **Terminal** cards for returns and raised exceptions.
|
||||
|
||||
Edges use explicit labels and independent colors for `TRUE`, `FALSE`, `NEXT`, `CASE`, `LOOP`,
|
||||
`EXCEPTION`, `RETURN`, `RAISE`, `BREAK`, and `CONTINUE`. Long predicates wrap on the card. The full
|
||||
expression and source anchor remain available through inspection and source navigation.
|
||||
|
||||
Logic is static analysis. It shows paths the indexed source permits, not the branch that ran for a
|
||||
particular request or the runtime value of a boolean. Dynamic dispatch, reflection, generated
|
||||
behavior, and values returned by other processes may require runtime tracing to resolve.
|
||||
|
||||
### Reading graph cards
|
||||
|
||||
The canvas presents nodes as compact semantic cards rather than anonymous circles:
|
||||
|
|
@ -332,6 +356,9 @@ index, or future graph queries. The focus cannot be hidden; focus another node f
|
|||
- In **Nodes**, hiding removes only the selected node and its incident edges.
|
||||
- In **Flow** and **Web**, hiding removes the selected node, then prunes every upstream ancestor
|
||||
whose only remaining route to the focus passed through it.
|
||||
- In **Logic**, hiding removes the selected control-flow step and inserts an `omitted` bridge
|
||||
between its visible predecessors and successors. This preserves the readable path without
|
||||
pretending the hidden code disappeared from the indexed source.
|
||||
- Descendant nodes between the hidden node and the focus remain visible.
|
||||
- Ancestors with another valid path to the focus remain visible through that alternate path.
|
||||
- The status line reports how many nodes were hidden or isolated.
|
||||
|
|
@ -452,6 +479,7 @@ Example MCP client configuration:
|
|||
- `docforge_project_info`
|
||||
- `docforge_get_contract`
|
||||
- `docforge_get_node`
|
||||
- `docforge_get_logic`
|
||||
- `docforge_search`
|
||||
- `docforge_filter_nodes`
|
||||
- `docforge_backlinks`
|
||||
|
|
@ -523,8 +551,9 @@ canonical sources first. Incremental compilation then notices those changed sour
|
|||
it never treats an unapplied proposal as canonical.
|
||||
|
||||
Function-scoped `LogicProjection` data is cached alongside its owning source but remains separate
|
||||
from the primary Nodes, Flow, and Web graph. This is the storage boundary for a future boolean and
|
||||
control-flow view without adding every condition and basic block to ordinary graph traversal.
|
||||
from the primary Nodes, Flow, and Web graph. The Logic tab and `docforge_get_logic` load one
|
||||
function or method on demand without adding every condition and basic block to ordinary graph
|
||||
traversal.
|
||||
|
||||
See [Incremental Adapter Indexing](INCREMENTAL_INDEXING.md) for the complete contract, cache
|
||||
invalidation rules, manual-application lifecycle, and lazy Logic boundary.
|
||||
|
|
@ -606,7 +635,7 @@ ambiguous adapter evidence.
|
|||
### Full inspector content does not fit
|
||||
|
||||
DocForge 1.0 uses a fixed header and footer with a scrollable inspector body. If an older page is
|
||||
still open, stop and reopen the visualization so it loads the current `graph-browser@15` template.
|
||||
still open, stop and reopen the visualization so it loads the current `graph-browser@16` template.
|
||||
|
||||
### Render output is stale
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue