Chapter 2. A New Operating Model for Software
The impossible questions from Chapter 1 are impossible for a reason. Answering Which services call the vulnerable method? requires knowing more than the text representation reveals. You need to know the exact type behind each symbol, which library owns it, and the resolved call site behind every reference. Take one line: logger.info("Payment received"). SLF4J, Log4j, Logback, and Apache Commons Logging all expose a method named info. As text, they’re indistinguishable. Without type attribution, a scanner flags every service that mentions the library and leaves developers and agents to sort out the real matches.
Treating the codebase as data—structured, semantic, scaled, and queryable—is the way forward, and in this chapter we’ll introduce you to the code representation that makes it possible: the Lossless Semantic Tree (LST).
The Lossless Semantic Tree Code Model
The LST is built for understanding and working on code. It’s the proven technology that underpins the open source OpenRewrite framework, as well as Moderne’s platform and agent tools. It helps developers and coding agents understand and improve code more accurately and safely by preserving all the important details about how the code is organized and how its parts interact. The name is its specification:
Lossless, meaning nothing is discarded
Semantic, meaning types and symbols are fully resolved
Tree, meaning it’s structured and traversable programmatically
Most static ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access