{"id":3117,"date":"2026-08-24T14:55:25","date_gmt":"2026-08-24T05:55:25","guid":{"rendered":"https:\/\/aktsk.ai\/?post_type=blog&#038;p=3117"},"modified":"2026-08-24T14:56:46","modified_gmt":"2026-08-24T05:56:46","slug":"%e8%aa%b0%e3%82%82%e4%b8%ad%e8%ba%ab%e3%82%92%e7%9f%a5%e3%82%89%e3%81%aa%e3%81%84%e3%83%ac%e3%82%ac%e3%82%b7%e3%83%bc%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%82%92%e3%80%81llm%e3%81%a7%e8%aa%ad","status":"publish","type":"blog","link":"https:\/\/aktsk.ai\/en\/blog\/3117\/","title":{"rendered":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem"},"content":{"rendered":"<div style=\"max-width: 920px; margin: 0 auto; color: #333333; font-family: 'Noto Sans JP',Helvetica,Arial,sans-serif; font-size: 16px; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The documentation describes a version replaced in 2009. The engineers who wrote it have retired. The SIer who maintained it has rotated its staff four times. What remains is behaviour \u2014 observable, load-bearing, unexplained.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Three sentences we hear in the first meeting \u2014 composite paraphrases of a recurring conversation, not quotations from any single client:<\/p>\n<div style=\"background: #eeeaff; border-left: 4px solid #5b34e6; padding: 16px 22px; margin: 0 0 10px; font-style: italic; color: #333333; line-height: 1.7; word-break: normal !important; overflow-wrap: break-word !important;\">&#8220;We know what it outputs. We don&#8217;t know why.&#8221;<\/div>\n<div style=\"background: #eeeaff; border-left: 4px solid #5b34e6; padding: 16px 22px; margin: 0 0 10px; font-style: italic; color: #333333; line-height: 1.7; word-break: normal !important; overflow-wrap: break-word !important;\">&#8220;The one person who understood the settlement batch retired this spring.&#8221;<\/div>\n<div style=\"background: #eeeaff; border-left: 4px solid #5b34e6; padding: 16px 22px; margin: 0 0 10px; font-style: italic; color: #333333; line-height: 1.7; word-break: normal !important; overflow-wrap: break-word !important;\">&#8220;We were quoted a multi-year engagement just to find out what&#8217;s in there.&#8221;<\/div>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">That last one is the real problem. Before a modernisation project can be scoped, someone has to read the system \u2014 and reading it has historically meant paying a team of engineers a year to do archaeology. This article is about why that discovery phase is now a different kind of problem, what an LLM can and cannot do to it, and the methodology that separates a useful documentation exercise from a confidently wrong one.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">This is part of our ongoing series on deploying enterprise AI under real-world constraints in Japan. The <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/aktsk.ai\/blog\/3080\/\">previous post<\/a> argued for small on-premise models where data cannot move. This is the opposite case: a task where you want the largest model you can legally point at the problem.<\/p>\n<hr style=\"border: 0; border-top: 1px solid #cccccc; margin: 32px 0;\" \/>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">01<\/span>\u00a0\u00a0The Constraint Is Comprehension, Not Code<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The framing that has dominated this conversation for eight years is METI&#8217;s 2018 DX Report and its \u300c2025\u5e74\u306e\u5d16\u300d \u2014 the warning that unaddressed legacy systems could cost the Japanese economy up to \u00a512 trillion a year from 2025 onward. The figure is widely quoted and, at this point, widely stale.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The more useful question is what happened after the deadline passed, and there is a current answer. METI convened a \u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u30e2\u30c0\u30f3\u5316\u59d4\u54e1\u4f1a (Legacy System Modernisation Committee), whose \u7dcf\u62ec\u30ec\u30dd\u30fc\u30c8 was published on 28 May 2025. It carries a market survey of roughly 4,000 user and vendor companies \u2014 799 responses, fielded 17 December 2024 to 14 February 2025 \u2014 and reports that <strong>61% of user companies still hold legacy systems, rising to 74% among large enterprises.<\/strong> The picture is not a cliff anyone fell off; it is a plateau nobody has climbed.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Two details in that report matter more than the headline percentage.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">First, its definition of a legacy system does not turn on age at all. It names five factors, and one of them is \u30d6\u30e9\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u5316 \u2014 specifications and design documents not maintained, migration and rebuild obstructed, maintenance become \u5c5e\u4eba\u7684 (dependent on specific individuals). The problem this article is about is not an unfortunate side effect of old systems; in the government&#8217;s own taxonomy it is one of the defining properties of the category.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Second, the same report explicitly calls on vendors to develop \u751f\u6210AI\u306b\u3088\u308b\u30ec\u30ac\u30b7\u30fc\u30b3\u30fc\u30c9\u89e3\u6790 \u2014 generative-AI legacy code analysis \u2014 on the express grounds that labour-intensive migration approaches will soon reach their limit as the IT workforce shrinks. The approach this article describes is not a vendor&#8217;s clever idea; it is the direction the policy documents are pointing.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Underneath the percentages sits a knowledge-transfer problem with a hard clock on it. The engineers fluent in COBOL, PL\/I, and the in-house job control that glues these systems together are reaching retirement age now. The difficulty is not a shortage of capable engineers \u2014 plenty of skilled people work productively in these technologies, and the languages themselves are learnable. The difficulty is that what these systems demand is largely <em>undocumented and organisation-specific<\/em>: forty years of accumulated decisions, exceptions, and workarounds that exist in no manual and are transferable mainly by working alongside the people who hold them. Neither hiring nor training shortcuts that, because there is no external curriculum for one company&#8217;s undocumented batch schedule. METI&#8217;s report names the same mechanism, listing the ageing and departure of engineers alongside the absence of design documentation. Every retirement that happens without a structured handover takes comprehension with it.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">So the binding constraint is not that the code is old. Old code that is understood is merely a maintenance cost. The binding constraint is that <strong>comprehension is decaying faster than the code is being replaced<\/strong>, and every year of delay makes the next attempt more expensive than the last.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">02<\/span>\u00a0\u00a0Why This Is Genuinely an LLM Problem<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">We are on record arguing against reaching for an LLM by default. This is the case where it is the right instrument, for a specific reason.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Legacy comprehension is not a code-generation task. It is a <strong>reading comprehension task over a large, messy, low-signal corpus in a dead dialect<\/strong> \u2014 200,000 lines of COBOL, forty years of stored procedures, JCL, batch schedules, and comments in Japanese written by people who assumed the reader shared their context. Static analysis handles the mechanical part well: it can build a call graph and trace a variable. What it cannot do is answer the question the client actually has \u2014 <em>&#8220;what business rule is this implementing, and why?<\/em><em>&#8220;<\/em><\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">That needs a model that can hold a large amount of unfamiliar context at once, tolerate inconsistency, and read Japanese comments alongside English identifiers. It is precisely the shape of task frontier LLMs became good at, which is why the economics changed here before the tooling did.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The second shift is agentic. Earlier attempts required the codebase be cleaned and normalised before analysis \u2014 its own multi-year project, and the reason most of these efforts died at the proposal stage. An agentic system navigates a messy repository the way an engineer does: follow a call, open the referenced copybook, check the job schedule, come back. It works on the code as it actually exists.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>One caveat governs everything below.<\/strong> In finance and the public sector, this code usually cannot be sent to an overseas API \u2014 but it is worth being precise about why, because the reasons are not interchangeable and clients notice when a vendor blurs them.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Source code is not personal information, and APPI does not restrict it as such. The binding constraints on the code itself are almost always <strong>contractual and policy-based<\/strong>: client NDAs, subcontracting and re-delegation terms, sector security guidelines, and internal rules that prohibit source leaving the corporate network. APPI becomes relevant at a different point \u2014 when personal data is actually present in what you transmit, which in practice it often is: personal data embedded in configuration, test fixtures, log samples, seed data, or production-derived extracts travelling alongside the code. Those are separate obligations, with separate owners inside the client, and treating them as one thing tends to produce a review that fails on the detail you glossed over. Either way, the architecture must support private deployment (VPC-hosted frontier models, or on-premise open-weight models) as the default, not the exception.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">03<\/span>\u00a0\u00a0The Hero Case: The Settlement Batch Nobody Will Touch<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><em>The example that follows is an illustrative composite \u2014 the recurring shape of these systems, assembled to make the methodology concrete. It is not a description of a specific client engagement, and the quantities are indicative rather than measured.<\/em><\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Take a nightly batch job of a few tens of thousands of lines that reconciles transactions and writes to the ledger. It has run without incident for two decades. It may encode several hundred business rules, of which only a fraction are documented. Some implement regulation that has since changed; some implement a workaround for a hardware limitation that no longer exists. Nobody can tell which is which.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Nobody will touch it either, because the downside of a wrong change is a regulatory incident and the upside is a slightly cleaner codebase. So it sits there and the organisation routes around it \u2014 which is exactly how a black box becomes load-bearing.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The goal is not to migrate it on day one. It is to make it <strong>legible<\/strong>: to produce, in weeks rather than quarters, a documented inventory of what it does, what depends on it, and which rules are still live \u2014 so the migration decision can be made on evidence instead of fear.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">04<\/span>\u00a0\u00a0Architecture: Extraction, Then Verification<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The pipeline is deliberately unglamorous, and it has one non-negotiable property: <strong>nothing generated by the model is treated as fact until something other than the model has confirmed it.<\/strong><\/p>\n<div style=\"display: block !important; margin: 28px 0 !important; width: 100% !important;\">\n<p style=\"display: block !important; margin: 16px 0 8px !important; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 0.05em !important; color: #f87376 !important; text-decoration: none !important; border: 0 !important;\">EXTRACTION \u00a0\u2014\u00a0 PRODUCES A DRAFT, NOT A FACT<\/p>\n<div style=\"display: grid !important; grid-template-columns: minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr) !important; column-gap: 8px !important; align-items: stretch !important; width: 100% !important; box-sizing: border-box !important;\">\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Source repo<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">COBOL \/ JCL \/ procs<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Static analysis<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">call graph, deps<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">LLM comprehension<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">reads the code<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 2px solid #f87376 !important; background: #fdeaea !important; color: #c0392b !important; text-decoration: none !important; border-bottom: 2px solid #f87376 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Rule inventory<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">draft<\/span><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\"> \u2014 unverified<\/span><\/div>\n<\/div>\n<p style=\"display: block !important; margin: 16px 0 8px !important; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 0.05em !important; color: #4c2ac7 !important; text-decoration: none !important; border: 0 !important;\">VERIFICATION \u00a0\u2014\u00a0 TWO GATES, NOT TWO STEPS<\/p>\n<div style=\"display: grid !important; grid-template-columns: minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr) !important; column-gap: 8px !important; align-items: stretch !important; width: 100% !important; box-sizing: border-box !important;\">\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Rule inventory<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">draft<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Expert sign-off<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">gate 1<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 2px solid #5b34e6 !important; background: #eeeaff !important; color: #4c2ac7 !important; text-decoration: none !important; border-bottom: 2px solid #5b34e6 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Behaviour diff<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">vs production \u2014 gate 2<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Strangler-fig<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">migration<\/span><\/div>\n<\/div>\n<p style=\"display: block !important; margin: 12px 0 0 !important; font-size: 13px !important; color: #666666 !important; text-align: center !important; font-style: italic !important; line-height: 1.6 !important; text-decoration: none !important; border: 0 !important;\">The same rule inventory, before and after the gates. Everything the LLM produces enters as a draft; only the expert sign-off and the behaviour diff turn it into something a migration may rely on. <strong style=\"border: 0 !important; text-decoration: none !important;\">No harness, no migration.<\/strong><\/p>\n<\/div>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Four things matter more than they look:<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Static analysis runs first, not instead.<\/strong> The call graph, dependency map, and dead-code detection come from deterministic tooling. That is the skeleton the model reasons over, and also the check on it \u2014 if the LLM describes a data flow the call graph does not contain, that is a caught hallucination rather than a shipped one.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Output is structured, not prose.<\/strong> The model emits a rule inventory with fields \u2014 rule ID, source location, plain-language description, inputs, outputs, confidence, open questions \u2014 not a narrative document. Structured output can be diffed, reviewed row by row, and tracked to closure. A forty-page generated document cannot be verified by anyone, which is why it never is.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Confidence is a first-class field.<\/strong> Low-confidence rules route to human review first. This inverts the usual failure mode, where reviewer attention is spread evenly across output that is 95% trivially correct and 5% quietly wrong.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>The human checkpoint is architectural.<\/strong> A domain expert \u2014 often a semi-retired engineer brought back for exactly this \u2014 signs off on the inventory. It is the highest-value use of a retiring expert&#8217;s remaining time: not writing documentation from scratch, which is slow and which they will not do, but <em>correcting a draft<\/em>, which is fast and which they will.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">05<\/span>\u00a0\u00a0Methodology: How We Reverse-Engineer Safely<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Scope by blast radius, not by size.<\/strong> Start with the subsystem whose failure would be most expensive, because that is where comprehension is worth the most \u2014 not with the easiest module, which is the instinct and which produces a successful pilot that proves nothing.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Behaviour-diff against production behaviour is the only proof that counts.<\/strong> Generated documentation is a hypothesis. The test is to run the legacy system and the candidate replacement against the same inputs and diff the outputs field by field.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Those inputs have to be production-<em>derived<\/em> rather than synthetic, because synthetic cases only exercise the behaviour someone already knew to write down \u2014 which is precisely not where the risk is. In a regulated environment, production-derived does not mean production data copied into a test rig. It means an extract handled under the client&#8217;s own data-handling rules: masked or anonymised wherever personal data is present, scoped to the fields the diff actually needs, access-restricted to the migration team, retained for a defined window, logged, and used under explicit authorisation from whoever owns that data internally. Where no extract can be approved at all, the harness runs <em>inside<\/em> the production boundary \u2014 the candidate implementation shadows live traffic in place, and only the diff results leave. <strong>We do not migrate anything for which we cannot build this harness under those controls.<\/strong> That rule has ended engagements, and it should.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Strangler fig, never big bang.<\/strong> Route one function at a time to the new implementation with the legacy path still live and comparing in shadow mode. The old system stays authoritative until the new one has matched it on real traffic for a meaningful period. Slower to demo, dramatically cheaper to be wrong in.<\/p>\n<div style=\"display: block !important; margin: 28px 0 !important; width: 100% !important;\">\n<p style=\"display: block !important; margin: 16px 0 8px !important; font-size: 12px !important; font-weight: 700 !important; letter-spacing: 0.05em !important; color: #4c2ac7 !important; text-decoration: none !important; border: 0 !important;\">STRANGLER FIG \u00a0\u2014\u00a0 THE LEGACY PATH STAYS AUTHORITATIVE<\/p>\n<div style=\"display: grid !important; grid-template-columns: minmax(0,1fr) 28px minmax(0,1fr) 28px minmax(0,1fr) !important; column-gap: 10px !important; align-items: stretch !important; width: 100% !important; box-sizing: border-box !important;\">\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Phase 1<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Legacy writes.<\/span><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\"><br \/>\nNew impl shadows + compares.<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 2px solid #5b34e6 !important; background: #eeeaff !important; color: #4c2ac7 !important; text-decoration: none !important; border-bottom: 2px solid #5b34e6 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Phase 2<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">One function cut over.<\/span><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\"><br \/>\nLegacy still comparing.<\/span><\/div>\n<div style=\"display: flex !important; align-items: center !important; justify-content: center !important; width: 28px !important; min-width: 28px !important; box-sizing: border-box !important; color: #888888 !important; font-size: 15px !important; line-height: 1 !important; border: 0 !important; text-decoration: none !important;\">\u2192<\/div>\n<div style=\"display: block !important; width: auto !important; min-width: 0 !important; box-sizing: border-box !important; padding: 10px 8px !important; text-align: center !important; line-height: 1.35 !important; border: 1px solid #d2d2d2 !important; background: #ffffff !important; color: #333333 !important; text-decoration: none !important; border-bottom: 1px solid #d2d2d2 !important;\"><strong style=\"display: block !important; font-size: 12.5px !important; line-height: 1.35 !important; margin: 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Phase 3<\/strong><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\">Legacy retired \u2014<\/span><span style=\"display: block !important; font-weight: 400 !important; color: #888888 !important; font-size: 11px !important; line-height: 1.35 !important; margin: 2px 0 0 !important; padding: 0 !important; text-decoration: none !important; border: 0 !important; white-space: nowrap !important;\"><br \/>\nonly after sustained match.<\/span><\/div>\n<\/div>\n<p style=\"display: block !important; margin: 12px 0 0 !important; font-size: 13px !important; color: #666666 !important; text-align: center !important; font-style: italic !important; line-height: 1.6 !important; text-decoration: none !important; border: 0 !important;\">Never a big-bang cutover. The new implementation runs in shadow against real traffic and is compared, not trusted, until it has matched the legacy path for a meaningful period.<\/p>\n<\/div>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\"><strong>Documentation is the deliverable, even if migration never happens.<\/strong> A verified rule inventory has standalone value: it makes the system maintainable, de-risks the next audit, and means the next retirement is not another permanent loss.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">06<\/span>\u00a0\u00a0Honest Limits \u2014 Where This Does Not Apply<\/h2>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">The failure mode of this technology is specific, and it is worth naming precisely: <strong>an LLM reading unfamiliar code produces fluent, plausible, confidently wrong explanations.<\/strong> It will describe what code of that shape usually does. When a routine contains a twenty-year-old undocumented workaround \u2014 which is the exact thing you are paying to discover \u2014 the model&#8217;s prior actively works against you. It is at its least reliable precisely where it is most needed.<\/p>\n<p style=\"margin: 0 0 24px; color: #333333; line-height: 1.9; word-break: normal !important; overflow-wrap: break-word !important;\">Concretely, this approach does not carry its weight when:<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0<strong>You cannot build a behaviour-diff harness.<\/strong> No production traffic to replay, no test environment, no way to compare. Without a verification path you have generated plausible fiction about a system that runs your business. Stop.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0<strong>The system is small enough to read.<\/strong> If a maintainer is still employed and a small team could read the thing end to end in a matter of weeks, doing exactly that is cheaper and more reliable than building a pipeline around it. Where that threshold falls depends on the language, the density of the code, and how much of the original team remains \u2014 we size it per system rather than against a line count.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0<strong>The real dependency is a person, not the code.<\/strong> If the critical knowledge is operational \u2014 <em>which<\/em> exception is safe to ignore at month-end \u2014 it is not in the source, and no amount of code comprehension recovers it. That is a <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/aktsk.ai\/blog\/\">tacit-knowledge capture<\/a> problem, and a different engagement.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0<strong>The code cannot leave the network and the on-prem hardware is not there.<\/strong> Comprehension quality is more model-dependent here than in most tasks. A small local model produces a worse inventory, and pretending otherwise is how a compliance constraint becomes a quality problem nobody admits to.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0<strong>Regulatory sign-off requires human-authored evidence.<\/strong> In some contexts AI-generated documentation cannot be the artefact of record regardless of its accuracy. It can still accelerate the humans who write it \u2014 but scope it as acceleration, not as the deliverable.<\/p>\n<h2 style=\"font-size: 26px; font-weight: bold; color: #1a1a1a; margin: 48px 0 22px; padding-bottom: 12px; border-bottom: 3px solid #4c2ac7; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6;\">07<\/span>\u00a0\u00a0Summary<\/h2>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0Japan&#8217;s legacy problem has moved past its headline deadline without being solved: METI&#8217;s May 2025 committee report finds 61% of user companies still holding legacy systems, and 74% of large enterprises.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0The binding constraint is comprehension, not code age \u2014 \u30d6\u30e9\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u5316 is one of the defining factors in METI&#8217;s own definition of a legacy system, and the same report calls for generative-AI legacy code analysis by name.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0The knowledge at risk is undocumented and organisation-specific, so retirement without a structured handover removes it permanently. This is a handover problem, not a shortage of capable engineers.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0Legacy comprehension is a genuine LLM task \u2014 large-context reading over a messy corpus in a dead dialect \u2014 and agentic systems can now navigate the code as it exists rather than requiring it be cleaned first.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0The architecture that works puts static analysis first, emits a structured rule inventory rather than prose, treats confidence as a first-class field, and puts a domain expert&#8217;s sign-off in the path.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0Nothing migrates without a behaviour-diff harness built on production-derived inputs under the client&#8217;s data-handling controls, and migration proceeds strangler-fig with the legacy path live in shadow.<\/p>\n<p style=\"margin: 0 0 12px; line-height: 1.85; color: #333333; padding-left: 22px; text-indent: -22px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0The honest limit: an LLM reading unfamiliar code is confidently wrong exactly where the undocumented workarounds are. Verification is not a phase of this method \u2014 it <em>is<\/em> the method.<\/p>\n<div style=\"margin-top: 32px; padding-top: 24px; border-top: 1px solid #d2d2d2;\">\n<p style=\"font-size: 12px; font-weight: bold; letter-spacing: 0.1em; text-transform: uppercase; color: #666666; margin: 0 0 12px; word-break: normal !important; overflow-wrap: break-word !important;\">References<\/p>\n<p style=\"margin: 0 0 8px; line-height: 1.7; color: #333333; font-size: 13px; padding-left: 20px; text-indent: -20px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0Ministry of Economy, Trade and Industry (METI), <em>DX Report \u2014 Overcoming the &#8220;2025 Digital Cliff&#8221; (\u300c2025\u5e74\u306e\u5d16\u300d)<\/em> (2018) \u2014 <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/www.meti.go.jp\/policy\/it_policy\/dx\/20180907_03.pdf\">meti.go.jp<\/a><\/p>\n<p style=\"margin: 0 0 8px; line-height: 1.7; color: #333333; font-size: 13px; padding-left: 20px; text-indent: -20px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0\u7d4c\u6e08\u7523\u696d\u7701 \u5546\u52d9\u60c5\u5831\u653f\u7b56\u5c40 \u60c5\u5831\u7523\u696d\u8ab2 \u60c5\u5831\u51e6\u7406\u57fa\u76e4\u7523\u696d\u5ba4, <em>DX\u306e\u73fe\u5728\u5730\u3068\u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u8131\u5374\u306b\u5411\u3051\u3066 \u2014 \u30ec\u30ac\u30b7\u30fc\u30b7\u30b9\u30c6\u30e0\u30e2\u30c0\u30f3\u5316\u59d4\u54e1\u4f1a \u7dcf\u62ec\u30ec\u30dd\u30fc\u30c8<\/em>, 2025\u5e745\u670828\u65e5 \u2014 legacy-system definition p.7; survey method p.15 (c. 4,000 companies surveyed, 799 responses, fielded 2024.12.17\u20132025.02.14); 61% \/ 74% retention figures p.16; generative-AI code analysis recommendation p.36 \u2014 <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/www.ipa.go.jp\/disc\/committee\/begoj90000002xuk-att\/legacy-system-modernization-committee-20250528-report.pdf\">ipa.go.jp<\/a><\/p>\n<p style=\"margin: 0 0 8px; line-height: 1.7; color: #333333; font-size: 13px; padding-left: 20px; text-indent: -20px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0\u72ec\u7acb\u884c\u653f\u6cd5\u4eba\u60c5\u5831\u51e6\u7406\u63a8\u9032\u6a5f\u69cb\uff08IPA\uff09, <em>2024\u5e74\u5ea6\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u52d5\u5411\u8abf\u67fb<\/em> \u2014 underlying response data for the above \u2014 <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/www.ipa.go.jp\/digital\/software-survey\/software-engineering\/result-software2024.html\">ipa.go.jp<\/a><\/p>\n<p style=\"margin: 0 0 8px; line-height: 1.7; color: #333333; font-size: 13px; padding-left: 20px; text-indent: -20px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0IPA \u72ec\u7acb\u884c\u653f\u6cd5\u4eba\u60c5\u5831\u51e6\u7406\u63a8\u9032\u6a5f\u69cb, <em>DX\u52d5\u54112025 \u2014 \u65e5\u7c73\u72ec\u6bd4\u8f03\u3067\u63a2\u308b\u6210\u679c\u5275\u51fa\u306e\u65b9\u5411\u6027<\/em> \u2014 <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/www.ipa.go.jp\/digital\/chousa\/dx-trend\/dx-trend-2025.html\">ipa.go.jp<\/a><\/p>\n<p style=\"margin: 0 0 8px; line-height: 1.7; color: #333333; font-size: 13px; padding-left: 20px; text-indent: -20px; word-break: normal !important; overflow-wrap: break-word !important;\"><span style=\"color: #5b34e6; font-weight: bold;\">\u25aa<\/span>\u00a0\u7d4c\u6e08\u7523\u696d\u7701, <em>\u30c7\u30b8\u30bf\u30eb\u30c8\u30e9\u30f3\u30b9\u30d5\u30a9\u30fc\u30e1\u30fc\u30b7\u30e7\u30f3\u8abf\u67fb\uff08DX\u8abf\u67fb\uff092026<\/em>, 2025\u5e7411\u6708 \u2014 <a style=\"color: #4c2ac7; text-decoration: underline;\" href=\"https:\/\/www.meti.go.jp\/policy\/it_policy\/investment\/keiei_meigara\/dxstock2026.pdf\">meti.go.jp<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"featured_media":3118,"template":"","blog-cat":[22],"class_list":["post-3117","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-cat-architecture","en-US"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"google-site-verification\" content=\"eLSunfkWxnbFTYwX6DcsHb4lYbobnB2JVV5_m0u2w1w\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/aktsk.ai\/en\/blog\/3117\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"\u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba - \u300cAI\u00d7\u4eba\u300d\u306e\u529b\u3067\u65e5\u672c\u306e\u751f\u7523\u6027\u3068\u5275\u9020\u6027\u3092\u5287\u7684\u306b\u9ad8\u3081\u308b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba\" \/>\n\t\t<meta property=\"og:description\" content=\"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/aktsk.ai\/en\/blog\/3117\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-24T05:55:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-24T05:56:46+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/aktsk.ai\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/#listItem\",\"name\":\"\\u30d6\\u30ed\\u30b0\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/#listItem\",\"position\":2,\"name\":\"\\u30d6\\u30ed\\u30b0\",\"item\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog-cat\\\/architecture\\\/#listItem\",\"name\":\"\\u751f\\u6210AI\\u30fbLLM\\u30a2\\u30fc\\u30ad\\u30c6\\u30af\\u30c1\\u30e3\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog-cat\\\/architecture\\\/#listItem\",\"position\":3,\"name\":\"\\u751f\\u6210AI\\u30fbLLM\\u30a2\\u30fc\\u30ad\\u30c6\\u30af\\u30c1\\u30e3\",\"item\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog-cat\\\/architecture\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#listItem\",\"name\":\"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \\u201cBlack Box\\u201d Problem\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/#listItem\",\"name\":\"\\u30d6\\u30ed\\u30b0\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#listItem\",\"position\":4,\"name\":\"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \\u201cBlack Box\\u201d Problem\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog-cat\\\/architecture\\\/#listItem\",\"name\":\"\\u751f\\u6210AI\\u30fbLLM\\u30a2\\u30fc\\u30ad\\u30c6\\u30af\\u30c1\\u30e3\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/#organization\",\"name\":\"\\u682a\\u5f0f\\u4f1a\\u793e\\u30a2\\u30ab\\u30c4\\u30adAI\\u30c6\\u30af\\u30ce\\u30ed\\u30b8\\u30fc\\u30ba\",\"description\":\"\\u300cAI\\u00d7\\u4eba\\u300d\\u306e\\u529b\\u3067\\u65e5\\u672c\\u306e\\u751f\\u7523\\u6027\\u3068\\u5275\\u9020\\u6027\\u3092\\u5287\\u7684\\u306b\\u9ad8\\u3081\\u308b\",\"url\":\"https:\\\/\\\/aktsk.ai\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#webpage\",\"url\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/\",\"name\":\"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \\u201cBlack Box\\u201d Problem - \\u682a\\u5f0f\\u4f1a\\u793e\\u30a2\\u30ab\\u30c4\\u30adAI\\u30c6\\u30af\\u30ce\\u30ed\\u30b8\\u30fc\\u30ba\",\"description\":\"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aktsk.ai\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#breadcrumblist\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/aktsk.ai\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Cover_en.png\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#mainImage\",\"width\":1537,\"height\":1023},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/aktsk.ai\\\/en\\\/blog\\\/3117\\\/#mainImage\"},\"datePublished\":\"2026-08-24T14:55:25+09:00\",\"dateModified\":\"2026-08-24T14:56:46+09:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aktsk.ai\\\/#website\",\"url\":\"https:\\\/\\\/aktsk.ai\\\/\",\"name\":\"\\u682a\\u5f0f\\u4f1a\\u793e\\u30a2\\u30ab\\u30c4\\u30adAI\\u30c6\\u30af\\u30ce\\u30ed\\u30b8\\u30fc\\u30ba\",\"description\":\"\\u300cAI\\u00d7\\u4eba\\u300d\\u306e\\u529b\\u3067\\u65e5\\u672c\\u306e\\u751f\\u7523\\u6027\\u3068\\u5275\\u9020\\u6027\\u3092\\u5287\\u7684\\u306b\\u9ad8\\u3081\\u308b\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/aktsk.ai\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","description":"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers","canonical_url":"https:\/\/aktsk.ai\/en\/blog\/3117\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"eLSunfkWxnbFTYwX6DcsHb4lYbobnB2JVV5_m0u2w1w","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/aktsk.ai#listItem","position":1,"name":"Home","item":"https:\/\/aktsk.ai","nextItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog\/#listItem","name":"\u30d6\u30ed\u30b0"}},{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog\/#listItem","position":2,"name":"\u30d6\u30ed\u30b0","item":"https:\/\/aktsk.ai\/en\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/#listItem","name":"\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"},"previousItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/#listItem","position":3,"name":"\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3","item":"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/","nextItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#listItem","name":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem"},"previousItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog\/#listItem","name":"\u30d6\u30ed\u30b0"}},{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#listItem","position":4,"name":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem","previousItem":{"@type":"ListItem","@id":"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/#listItem","name":"\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"}}]},{"@type":"Organization","@id":"https:\/\/aktsk.ai\/#organization","name":"\u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","description":"\u300cAI\u00d7\u4eba\u300d\u306e\u529b\u3067\u65e5\u672c\u306e\u751f\u7523\u6027\u3068\u5275\u9020\u6027\u3092\u5287\u7684\u306b\u9ad8\u3081\u308b","url":"https:\/\/aktsk.ai\/"},{"@type":"WebPage","@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#webpage","url":"https:\/\/aktsk.ai\/en\/blog\/3117\/","name":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","description":"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/aktsk.ai\/#website"},"breadcrumb":{"@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#breadcrumblist"},"image":{"@type":"ImageObject","url":"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/08\/Cover_en.png","@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#mainImage","width":1537,"height":1023},"primaryImageOfPage":{"@id":"https:\/\/aktsk.ai\/en\/blog\/3117\/#mainImage"},"datePublished":"2026-08-24T14:55:25+09:00","dateModified":"2026-08-24T14:56:46+09:00"},{"@type":"WebSite","@id":"https:\/\/aktsk.ai\/#website","url":"https:\/\/aktsk.ai\/","name":"\u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","description":"\u300cAI\u00d7\u4eba\u300d\u306e\u529b\u3067\u65e5\u672c\u306e\u751f\u7523\u6027\u3068\u5275\u9020\u6027\u3092\u5287\u7684\u306b\u9ad8\u3081\u308b","inLanguage":"en-US","publisher":{"@id":"https:\/\/aktsk.ai\/#organization"}}]},"og:locale":"en_US","og:site_name":"\u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba - \u300cAI\u00d7\u4eba\u300d\u306e\u529b\u3067\u65e5\u672c\u306e\u751f\u7523\u6027\u3068\u5275\u9020\u6027\u3092\u5287\u7684\u306b\u9ad8\u3081\u308b","og:type":"article","og:title":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","og:description":"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers","og:url":"https:\/\/aktsk.ai\/en\/blog\/3117\/","og:image":"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png","og:image:secure_url":"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png","og:image:width":1200,"og:image:height":630,"article:published_time":"2026-08-24T05:55:25+00:00","article:modified_time":"2026-08-24T05:56:46+00:00","twitter:card":"summary_large_image","twitter:title":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem - \u682a\u5f0f\u4f1a\u793e\u30a2\u30ab\u30c4\u30adAI\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u30ba","twitter:description":"Every large Japanese enterprise has at least one system like this. It runs the business. It has run the business for thirty years. It works. And there is no longer a single person in the building who can tell you, with confidence, what it does. The documentation describes a version replaced in 2009. The engineers","twitter:image":"https:\/\/aktsk.ai\/wp-content\/uploads\/2026\/04\/fb_ogp.png"},"aioseo_meta_data":{"post_id":"3117","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-08-24 05:55:26","updated":"2026-08-24 06:36:29","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aktsk.ai\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aktsk.ai\/en\/blog\/\" title=\"\u30d6\u30ed\u30b0\">\u30d6\u30ed\u30b0<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/\" title=\"\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\">\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tDecoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/aktsk.ai"},{"label":"\u30d6\u30ed\u30b0","link":"https:\/\/aktsk.ai\/en\/blog\/"},{"label":"\u751f\u6210AI\u30fbLLM\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3","link":"https:\/\/aktsk.ai\/en\/blog-cat\/architecture\/"},{"label":"Decoding Legacy Systems No One Understands with LLMs: A New Approach to the \u201cBlack Box\u201d Problem","link":"https:\/\/aktsk.ai\/en\/blog\/3117\/"}],"_links":{"self":[{"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/blog\/3117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/media\/3118"}],"wp:attachment":[{"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/media?parent=3117"}],"wp:term":[{"taxonomy":"blog-cat","embeddable":true,"href":"https:\/\/aktsk.ai\/wp-json\/wp\/v2\/blog-cat?post=3117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}