Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 21:03
· 4 commits to main since this release
13692be

Theme: a name says only what the reader's position does not.

Added

  • --features params. Parameter names were 14–24% of a real map and were
    the one large fact class with no name, because they sat in the always-on
    "identity" remainder alongside the trie and the type headers. They are a fact
    about the code, not the map's structure, so they are selectable now.
    Deselecting keeps arity and drops only the names — place(order,items)
    becomes place(_,_), reusing the placeholder the renderer already emits for
    an argument no extractor could name — and takes about 7% off a map that keeps
    everything else.

Changed

  • Grouped landmarks take the declared extension too. {ItemId,OrderId}.java
    now renders {ItemId,OrderId} under a # hologram ·.java header, like every
    other leaf. They had been exempt so that payload naming files could tell a
    reader the bare node above it was a directory — which cost the hoist most of
    its value exactly where it pays best, on the one-public-class-per-file
    languages whose every landmark is grouped. Worth 3.9% of the javamini
    fixture, 0.7% of a Spring corpus and 0.5% (306 tokens) of a 16,000-file Java
    codebase. The reader's rule is now simply that a node with nodes below it is a
    directory; a directory whose files are all grouped landmarks reads as a file,
    measured at about one node in fifty, and never silently — the reconstructed
    path does not exist while the directory does.
  • Call targets are named relative to the caller. The description ladder
    picked the shortest name that is unambiguous across the whole project, which
    is the right question to ask once and the wrong one to answer on every line:
    a chain inside a/b/Order.java that read > a/b/Order.java:Order.total
    spent 24 characters restating the node the reader was standing in. A target
    now carries only what the caller's own path, file and owner do not already
    say. Worth 7.9% of a monorepo of near-identical services, 2.4% of a Java
    example corpus, and 1.2% — 699 tokens — of a 16,000-file Java codebase. Two
    targets that would shorten to the same text both keep their project-wide
    names, so one name never stands for two.

Fixed

  • Framework-wired code is no longer reported as dead. ×0 means no static
    project reference, and a container's wiring is invisible to static fan-in, so
    Spring stereotypes and @Bean factories, JSR-330 @Named/@Inject,
    @PostConstruct/@PreDestroy lifecycle callbacks, JPA @Entity, and Spring
    AI/MCP @Tool surfaces now join routes, listeners and schedulers as
    entrypoints. On a Spring AI corpus this removed 63 of 113 ×0 markers — a
    @Configuration @EnableWebSecurity class and every @Bean factory had been
    reading as deletable — and made the map 38 tokens smaller in the process.