Commit Graph
8 Commits
Author SHA1 Message Date
Martin Vogel a19d7a45fb Use memory core for Lens response ownership
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-11 20:16:34 +02:00
Bernhard Jackiewicz 028b341fc9 fix(store): keep a top-level test/ directory as a test signal for Python
The Python exemption for a singular test/ directory was meant for shipped
packages like django/test/, but it also applied to a repository's own
test/ suite. Helpers such as test/helpers.py or SQLAlchemy's
test/orm/_fixtures.py became production components, their indexed is_test
flag was ignored, and a route handler there would count as an entry point.

Only a nested test/ is now exempt; a top-level test/ stays a test
directory for every language, together with its indexed flag. The segment
and suffix checks use small helpers instead of hand-counted lengths.
Django and the cbm control repository are unchanged.

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 20:11:35 +02:00
Bernhard Jackiewicz 7c7dce8300 fix(store): give every overview group its share of listed entries
The 4096 overview entries were picked by one global rank, so groups whose
components are all small got none. On Django the 785-component @no-source
group, js_tests and the .github test group listed zero entries, and the UI
can neither open such a group nor offer its components in the picker.

Displayed components are listed first, then each group's own top-ranked
components up to 16, and the global rank fills the rest of the 4096. With
at most 64 groups the shares always fit.

The new overview field is renamed to omitted_component_entries: it counts
overview entries left out, which the root limits.omitted_components
(components not displayed) does not.

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 20:02:01 +02:00
Bernhard Jackiewicz 7c81674f9b fix(store): skip test-registered routes and rank indexed entry points first
On Django every handler that the route rule added came from a test-client
call such as self.client.get("/get_view/"), which the extractor indexes as
a route registration: the Route's only CALLS edges come from tests/. The
four false entry points took 11 of the 12 default path slots, and main
dropped from 4 paths to 1.

A handler now counts only when its Route is registered from non-test code
or has no registration call at all (decorator routes). Indexed
is_entry_point nodes come before handlers, so paths serve main first. The
label checks move to load time.

Django: entry points main (4 paths) and delete_selected (7 paths) instead
of five with main at 1 path.

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 19:51:41 +02:00
Bernhard Jackiewicz 1c36129bfc fix(store): count route handlers as architecture entry points
The projection took entry points only from the indexed is_entry_point
flag, which the extractor sets for main and JS/TS exports. Python web
code never calls main, so Django's Behavior list stayed empty even once
the projection rendered.

Mark a Function or Method as an entry point when it has a HANDLES edge
to a Route node, the same route evidence atlas_flows.c already scores.
Handlers in test code stay out: they are fixtures, and the projection
keeps test and production roles apart everywhere else. The index and the
extractor are unchanged.

For Django 5.2.7 this adds four production handlers to main (five entry
points, 12 paths instead of 4). The other 130 indexed handlers are test
methods and stay excluded.

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 19:17:12 +02:00
Bernhard Jackiewicz 648daf71e4 fix(store): classify Python test files by name in the architecture projection
ap_test_path missed Django's app convention tests.py and treated every
file below a singular test/ directory as test code, so django/test/,
Django's public testing API, became test components.

Python discovers tests by file name, so recognize tests.py and
conftest.py next to the existing test_*.py and *_test.py rules, and stop
a singular test/ directory from being the only signal for a .py file
without a test name. The indexed is_test flag of such a file comes from
the same directory rule at extraction time, so it is set aside there as
well; otherwise the class (unflagged) and its methods (flagged) would get
different roles and split into separate components. tests/, __tests__/
and test/ for other languages keep their meaning.

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 19:09:18 +02:00
Bernhard Jackiewicz 41f73838c7 fix(store): bound the overview entries so Django-sized graphs render
get_architecture(system_structure) returned status "limited" for Django
5.2.7 (52,402 nodes, 274,549 edges, below both graph budgets). The
overview listed one entry with a full representative symbol for each of
its 12,700 components. That section alone grew the mutable document to
16.7 MB, the capped components and dependency witnesses took it to
29.4 MB, and serializing the result then crossed the 32 MB response
budget, so the whole projection fell back to the empty limited render.

List at most 4096 overview entries, chosen by the same rank that picks
the displayed components, so every displayed component keeps its entry.
Groups still carry every component id and all counts, and the omission
is explicit: overview.complete is false and overview.limits reports
omitted_components. Graphs with up to 4096 components are unchanged
apart from that new zero count.

Django now renders "ready" with 12,700 components, 256 displayed, 2048
dependencies and 4096 overview entries in a 4.1 MB result (peak 23.2 MB
of the budget, below the 8 MiB job result cap).

Signed-off-by: Bernhard Jackiewicz <bj@techport.io>
2026-10-02 18:55:02 +02:00
Martin Vogel d0f148bb5a feat(ui): expand architecture exploration and streamline workspaces
Add source-backed system structure and behavior analysis, container service maps, and graph navigation with directional edge styling. Refine repository metadata, graph focus resets, and local browser chat with a resizable Explorer graph.

Move index coverage into its own workspace and diagnostic history into System; simplify Explorer actions and header controls.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-09-13 22:10:10 +02:00