1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Add semantic flow and convergence web views

This commit is contained in:
Andraxion 2026-07-25 17:34:58 -04:00
parent f9f7105983
commit 6609edc804
14 changed files with 616 additions and 128 deletions

View file

@ -1,4 +1,4 @@
# DocForge 0.13 contract
# DocForge 0.14 contract
## Authority boundary
@ -19,7 +19,7 @@ commit when Git is available; it cannot change repository state.
- Result envelope: `schemas/result.schema.json`, version 1.
- Changeset schema: `schemas/changeset.schema.json`, version 1.
- Index schema: version 1, disposable and reproducible.
- Core, CLI, and MCP server: version 0.13.1.
- Core, CLI, and MCP server: version 0.14.0.
Schema files describe the generic interchange contract. Runtime validation remains responsible for
path confinement, source hashing, relationship resolution, dependency cycles, project limits, stale
@ -99,12 +99,13 @@ random token is part of every accepted URL path. Only `GET` and `HEAD` are suppo
no-store caching, a restrictive content-security policy, frame denial, MIME sniffing protection,
and no-referrer policy. The built-in template uses only same-origin JSON endpoints for graph
overview, bounded search, exact descriptor-category filtering, exact node content, bounded
incoming-and-outgoing neighborhoods, and one node's bounded project-confined source file.
incoming-and-outgoing neighborhoods, semantic Flow ancestry, convergence Web context, and one
node's bounded project-confined source file.
Descriptor filtering accepts only
family, authority, status, or tag plus one exact value. There is no write endpoint, arbitrary query
endpoint, static filesystem handler, external asset, or project-selection control.
The `graph-browser@12` template provides mouse-wheel zoom centered on the pointer, left-button drag
The `graph-browser@14` template provides mouse-wheel zoom centered on the pointer, left-button drag
pan, explicit zoom-in and zoom-out buttons, a reset-view button, and a live zoom percentage. A
four-pixel drag threshold defers pointer capture and preserves node activation for ordinary clicks.
Loading another root node fits the viewport to the returned neighborhood, including a useful
@ -122,31 +123,35 @@ Right-clicking or pressing Shift+Enter opens the complete inspector. Inspection
the current neighborhood or reset the viewport. Both dialogs support Escape, explicit close
controls, and backdrop dismissal. Loading the inspected node as the new root requires the separate
Explore neighborhood action. Non-focus nodes may be hidden from the presentation and restored
without mutating graph state. Source actions open the project-confined source and navigate to
without mutating graph state. Flow and Web recompute focus reachability after each hide so
disconnected upstream-only branches are pruned while downstream convergence remains visible.
Source actions open the project-confined source and navigate to
supported line, TOML, heading, or text anchors. Both side panels support pointer and keyboard
resizing. The unblurred full inspector supports native resizing, constrained title-bar dragging,
and a fixed header/footer surrounding a scrollable body.
The header exposes a Nodes/Flow segmented selector. Nodes displays the complete bounded
neighborhood. Flow displays an upstream lineage ending at the current root. Calls, dispatches,
launches, activations, and writes retain their declared source-to-target direction. Reads, imports,
and dependencies reverse for lineage presentation because the declared target feeds the source.
Structural, evidence, and context relations remain available in Nodes but are excluded from Flow.
This is a presentation transform over the validated bounded snapshot; it does not add or change
project relationships.
The header exposes a Nodes/Flow/Web segmented selector. Nodes displays the complete bounded
neighborhood. Flow displays semantic ancestry ending at the current root. Structural and execution
edges retain their declared source-to-target direction. Reads, imports, dependencies, inheritance,
and `tested_by` reverse because their declared target feeds or qualifies the source. Documentation
and context relations remain available in Nodes and Web but are excluded from Flow. Web follows
all relationship types as bounded semantic contributors into the current root. It also reverses
direct root-owned members and execution dependencies into adjacent contributor branches. Traversal
does not fan back out through unrelated siblings. These are presentation transforms over the
validated snapshot; they do not add or change project relationships.
Both views color edges by relationship semantics and retain direction with visible SVG endpoint
All three views color edges by relationship semantics and retain direction with visible SVG endpoint
symbols. Line patterns provide a non-color cue. A static canvas key shows the exact symbol, color,
label, and visible count for each displayed relation, including a deterministic fallback for
project-defined relations. Nodes and Flow use the same map.
project-defined relations. Nodes, Flow, and Web use the same map.
The browser derives node presentation roles only from the returned bounded graph. The current root
is the focus. In Nodes, nodes reachable through outgoing edges are shown as outgoing paths; the
remaining visible nodes are incoming or lateral context. In Flow, lineage predecessors are shown as
upstream nodes. These roles receive distinct palettes and navigation sections. An undirected
shortest-hop calculation places Nodes on distance rings; Flow uses left-to-right distance layers
with the destination on the right. Each role palette darkens progressively by distance, capped at
fifty percent.
upstream nodes. In Web, all retained contributors share the convergence role. These roles receive
distinct palettes and navigation sections. An undirected shortest-hop calculation places Nodes on
distance rings; Flow and Web use left-to-right distance layers with the destination on the right.
Each role palette darkens progressively by distance, capped at fifty percent.
Each invocation creates or reuses one worker through the separately supervised, per-user viewer
manager. The manager is outside the short-lived MCP transport and owns all child workers as one OS