{
  "about": "The ATL/E knowledge graph. Nodes are people, companies, episodes, concepts, rooms, incidents and factories. Every edge that rests on something said carries a cite with the episode and the second. Derived from the wiki pages (markdown with typed frontmatter) and the episode data at build time.",
  "page": "https://afterthelastengineer.com/graph/",
  "nodes": [
    {
      "id": "room:intent",
      "type": "room",
      "name": "What to build",
      "note": "A place where a person can stay in the factory."
    },
    {
      "id": "room:architecture",
      "type": "room",
      "name": "Architecture",
      "note": "A place where a person can stay in the factory."
    },
    {
      "id": "room:review",
      "type": "room",
      "name": "Code review",
      "note": "A place where a person can stay in the factory."
    },
    {
      "id": "room:release",
      "type": "room",
      "name": "Release sign-off",
      "note": "A place where a person can stay in the factory."
    },
    {
      "id": "room:owner",
      "type": "room",
      "name": "Factory owner",
      "note": "A place where a person can stay in the factory."
    },
    {
      "id": "ep:00",
      "type": "episode",
      "name": "EP. 00 · We are building our podcast in public",
      "note": "Danail and Vitaliy on why they started the show, what a software dark factory is, and the question every guest will get.",
      "page": "https://afterthelastengineer.com/episodes/00-build-in-public/",
      "url": "https://www.youtube.com/watch?v=jhQdNCpBtnI"
    },
    {
      "id": "ep:01",
      "type": "episode",
      "name": "EP. 01 · Your job was never to write code",
      "note": "Vladimir pointed agents at three months of open tickets. They opened 25 pull requests at once and took a server down. Then the bottleneck kept moving, from review to CI to the one person approving each deploy.",
      "page": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/",
      "url": "https://www.youtube.com/watch?v=8ko36BavICI"
    },
    {
      "id": "ep:02",
      "type": "episode",
      "name": "EP. 02 · Is the future of software engineering a factory?",
      "note": "Tessl ran a hackathon and ended up with five or six factories. One of them took over the marketing board. Another morning, the factory had filed 15 tickets about improving itself, and nobody owned them.",
      "page": "https://afterthelastengineer.com/episodes/02-patrick-debois/",
      "url": "https://www.youtube.com/watch?v=FnCnv2tGsK0"
    },
    {
      "id": "ep:03",
      "type": "episode",
      "name": "EP. 03 · A lot more light rooms inside",
      "note": "Milko doesn’t think you can build a business on a factory that is completely dark. He keeps three rooms lit.",
      "page": "https://afterthelastengineer.com/episodes/03-milko-slavov/",
      "url": "https://www.youtube.com/watch?v=hQofr8MbSbs"
    },
    {
      "id": "ep:04",
      "type": "episode",
      "name": "EP. 04 · Episode four",
      "note": "Recorded. Out on 12 November.",
      "page": "https://afterthelastengineer.com/episodes/04-boris-paskalev/"
    },
    {
      "id": "architecture-for-failure",
      "type": "concept",
      "name": "Architecture for failure",
      "note": "The agent will find a way to delete the database. The question is how fast you can restore, and how much you lose.",
      "page": "https://afterthelastengineer.com/graph/#architecture-for-failure",
      "body": "The agent will find a way to delete the database. The question is how fast you can restore, and how much you lose."
    },
    {
      "id": "automating-disaster",
      "type": "concept",
      "name": "Automating disaster",
      "note": "Patrick's warning: a factory built on prompts and no checks automates the mistake. Make the first loop work, then automate it.",
      "page": "https://afterthelastengineer.com/graph/#automating-disaster",
      "body": "Patrick's warning: a factory built on prompts and no checks automates the mistake. Make the first loop work, then automate it."
    },
    {
      "id": "boris-paskalev",
      "type": "person",
      "name": "Boris Paskalev",
      "note": "Founder at LogicStar.",
      "page": "https://afterthelastengineer.com/graph/#boris-paskalev",
      "body": "Out on 12 November 2026. Recorded. Nothing announced yet."
    },
    {
      "id": "camplight",
      "type": "company",
      "name": "Camplight",
      "url": "https://camplight.net",
      "page": "https://afterthelastengineer.com/graph/#camplight",
      "body": "Makes the show. Builds software factories with and for companies. Appears in the outro and on this site, never in clips or titles. The show sells nothing."
    },
    {
      "id": "cobalt-code",
      "type": "company",
      "name": "Cobalt Code",
      "url": "https://cobaltcode.ai",
      "page": "https://afterthelastengineer.com/graph/#cobalt-code",
      "body": "Vladimir Petrov's software factory. Started as a Lovable clone built for fun; the big clouds were too heavy, so he built his own sandboxes [EP. 01 · 1:16]. The idea: you don't share your PC with a teammate, so why share it with an agent [EP. 01 · 1:57]."
    },
    {
      "id": "danail-arapkuliev",
      "type": "person",
      "name": "Danail Arapkuliev",
      "note": "Host. A product person who is not an engineer. Asks what a founder would ask.",
      "page": "https://afterthelastengineer.com/graph/#danail-arapkuliev",
      "body": "Co-host. Business systems. Argues from the business side.",
      "portrait": "/people/danail-arapkuliev.jpg"
    },
    {
      "id": "darkness-level",
      "type": "concept",
      "name": "Darkness level",
      "note": "L0 to L5. Five minus the number of rooms where a person still decides. L5 is lights off. Used for guests and for the 75 factories we track.",
      "page": "https://afterthelastengineer.com/graph/#darkness-level",
      "body": "L0 to L5. Five minus the number of rooms where a person still decides. L5 is lights off. Used for guests and for the 75 factories we track."
    },
    {
      "id": "eval",
      "type": "concept",
      "name": "Eval",
      "note": "A test for an agent's output. What the show counts as evidence: what shipped, what the evals caught, what it cost.",
      "page": "https://afterthelastengineer.com/graph/#eval",
      "body": "A test for an agent's output. What the show counts as evidence: what shipped, what the evals caught, what it cost."
    },
    {
      "id": "event-ai-native-devcon-2026",
      "type": "event",
      "name": "AI Native DevCon 2026",
      "url": "https://ainativedev.io",
      "page": "https://afterthelastengineer.com/graph/#event-ai-native-devcon-2026",
      "body": "Patrick Debois' conference. This year's theme is software factories and how to get there. Workshops on day one, then two days of talks. Patrick's discount code on the show: PATRICK50."
    },
    {
      "id": "factory-cobalt-code",
      "type": "factory",
      "name": "Cobalt Code",
      "page": "https://afterthelastengineer.com/graph/#factory-cobalt-code",
      "body": "Vladimir Petrov's factory. Started as a Lovable clone built for fun. The big clouds were too heavy to run it, so he built his own sandboxes: a container up in seconds, torn down, or a hundred of them. First real run: three months of open tickets, 25 pull requests at once, one server down."
    },
    {
      "id": "factory-tessl",
      "type": "factory",
      "name": "The Tessl factories",
      "page": "https://afterthelastengineer.com/graph/#factory-tessl",
      "body": "Tessl ran a hackathon and ended up with five or six factories, to learn the shape of one. One took over the marketing and sales board. One morning the factory had filed 15 tickets about improving itself. Tessl then put a team on it, the way a platform team owns a cloud."
    },
    {
      "id": "felan",
      "type": "company",
      "name": "felan.ai",
      "url": "https://felan.ai",
      "page": "https://afterthelastengineer.com/graph/#felan",
      "body": "Milko Slavov's company. Unattended agents from request to tested PR handoff. Tracked on the Dark Factory Matrix at L4."
    },
    {
      "id": "fully-dark",
      "type": "concept",
      "name": "Fully dark",
      "note": "The thing the show never recommends. What counts is what you can check.",
      "page": "https://afterthelastengineer.com/graph/#fully-dark",
      "body": "The thing the show never recommends. What counts is what you can check."
    },
    {
      "id": "governing-the-code",
      "type": "concept",
      "name": "Governing the code",
      "note": "Engineers don't disappear. They move from writing the code to governing it.",
      "page": "https://afterthelastengineer.com/graph/#governing-the-code",
      "body": "Engineers don't disappear. They move from writing the code to governing it."
    },
    {
      "id": "harness",
      "type": "concept",
      "name": "Harness",
      "note": "The code around the agent: the checks, the tools, the limits and the loop it runs in. Patrick's ladder: prompt, context, harness, loop, factory.",
      "page": "https://afterthelastengineer.com/graph/#harness",
      "body": "The code around the agent: the checks, the tools, the limits and the loop it runs in. Patrick's ladder: prompt, context, harness, loop, factory."
    },
    {
      "id": "hype",
      "type": "concept",
      "name": "Real or hype",
      "note": "Are software factories here to stay? Vladimir: not hype. Patrick: hard to turn the clock back, and the 100% doesn't matter.",
      "page": "https://afterthelastengineer.com/graph/#hype",
      "body": "Are software factories here to stay? Vladimir: not hype. Patrick: hard to turn the clock back, and the 100% doesn't matter."
    },
    {
      "id": "lesson-architect-for-restore",
      "type": "lesson",
      "name": "Architecture decides what an agent can break",
      "page": "https://afterthelastengineer.com/graph/#lesson-architect-for-restore",
      "body": "Assume the agent will find a way to delete the database. Limit its rights, cap how much it can change at once, and know how fast you can restore and how much you lose. Context and harness are not enough to survive production."
    },
    {
      "id": "lesson-make-the-first-loop-work",
      "type": "lesson",
      "name": "Make the first loop work before you automate it",
      "page": "https://afterthelastengineer.com/graph/#lesson-make-the-first-loop-work",
      "body": "A factory built on prompts and no checks does not remove the mistake, it repeats it at scale. Get the local loop reliable, then add verifiers and risk analysis, then optimise. Patrick calls the other order automating disaster."
    },
    {
      "id": "lesson-nobody-has-the-right-setup",
      "type": "lesson",
      "name": "Nobody has the right setup yet, including the people selling one",
      "page": "https://afterthelastengineer.com/graph/#lesson-nobody-has-the-right-setup",
      "body": "Said by a guest who builds and sells a factory. The whole industry is early. The way to get better is to run one and learn from the cases, not to wait for the finished pattern."
    },
    {
      "id": "lesson-somebody-owns-the-factory",
      "type": "lesson",
      "name": "A factory with no owner files tickets about itself",
      "page": "https://afterthelastengineer.com/graph/#lesson-somebody-owns-the-factory",
      "body": "Both guests so far land on the same room: ownership. Vladimir keeps someone who owns the product and decides what not to build. Patrick keeps someone who owns the factory, because a team that also has features to ship will put the factory last."
    },
    {
      "id": "lesson-structure-agents-like-people",
      "type": "lesson",
      "name": "Structure agents like people",
      "page": "https://afterthelastengineer.com/graph/#lesson-structure-agents-like-people",
      "body": "An agent left alone for two days produced code that did not work and tickets that did not matter. What fixed it was structure: dedicated agents with a job title and ownership of a task, like a team."
    },
    {
      "id": "lesson-the-bottleneck-moves",
      "type": "lesson",
      "name": "The bottleneck moves to the person who approves",
      "page": "https://afterthelastengineer.com/graph/#lesson-the-bottleneck-moves",
      "body": "When agents write most of the code, the wait does not disappear. It moves: first to review, then to CI, then to the one person who confirms each deploy. Plan for where the queue forms next, not for the queue you have."
    },
    {
      "id": "lesson-the-decision-is-what-not-to-build",
      "type": "lesson",
      "name": "When building is cheap, the decision is what not to build",
      "page": "https://afterthelastengineer.com/graph/#lesson-the-decision-is-what-not-to-build",
      "body": "A version takes five minutes. Vladimir builds what the business asked for, shows it, and throws it away if they do not want it. Patrick: the decision is more and more about which features not to build."
    },
    {
      "id": "light-rooms",
      "type": "concept",
      "name": "Light rooms",
      "note": "Milko's picture: a factory with some rooms lit and some dark. How many depends on the business.",
      "page": "https://afterthelastengineer.com/graph/#light-rooms",
      "body": "Milko's picture: a factory with some rooms lit and some dark. How many depends on the business."
    },
    {
      "id": "logicstar",
      "type": "company",
      "name": "LogicStar",
      "url": "https://logicstar.ai",
      "page": "https://afterthelastengineer.com/graph/#logicstar",
      "body": "Boris Paskalev's company. EP. 04, out 12 November 2026."
    },
    {
      "id": "milko-slavov",
      "type": "person",
      "name": "Milko Slavov",
      "note": "Planned to run his startup as one person and a team of agents. Then he hired a human engineer.",
      "page": "https://afterthelastengineer.com/graph/#milko-slavov",
      "body": "Out on 29 October 2026. Milko doesn't think you can build a business on a factory that is completely dark. He keeps three rooms lit: deciding what to build, the architecture, and the final sign-off once customers rely on you.\n\nQuotes on this page come from the episode announcement, not the transcript, until the episode is out."
    },
    {
      "id": "news-2026-10-15-ep-02",
      "type": "news",
      "name": "EP. 02 with Patrick Debois is out",
      "page": "https://afterthelastengineer.com/graph/#news-2026-10-15-ep-02",
      "body": "The second episode went live on YouTube and Spotify. Patrick on the factory that filed 15 tickets about itself, and why it cannot run without an owner."
    },
    {
      "id": "news-2026-10-29-ep-03",
      "type": "news",
      "name": "EP. 03 with Milko Slavov lands on 29 October",
      "page": "https://afterthelastengineer.com/graph/#news-2026-10-29-ep-03",
      "body": "Milko Slavov of felan.ai on which rooms to keep lit. He keeps three: what to build, the architecture, and the final sign-off."
    },
    {
      "id": "nobody-has-the-right-setup",
      "type": "concept",
      "name": "Nobody has the right setup",
      "note": "Said by someone who sells a factory. The whole industry is early.",
      "page": "https://afterthelastengineer.com/graph/#nobody-has-the-right-setup",
      "body": "Said by someone who sells a factory. The whole industry is early."
    },
    {
      "id": "ownership",
      "type": "concept",
      "name": "Ownership",
      "note": "Somebody has to own the factory, or the product it builds. The one answer two guests share so far.",
      "page": "https://afterthelastengineer.com/graph/#ownership",
      "body": "Somebody has to own the factory, or the product it builds. The one answer two guests share so far."
    },
    {
      "id": "patrick-debois",
      "type": "person",
      "name": "Patrick Debois",
      "note": "Gave the industry the word DevOps. Co-wrote the DevOps Handbook. Runs software factories at Tessl.",
      "page": "https://afterthelastengineer.com/graph/#patrick-debois",
      "body": "Ran a hackathon at Tessl and ended up with five or six factories [EP. 02 · 19:11]. One took over the marketing and sales board [EP. 02 · 14:39]. One morning the factory had filed 15 tickets about improving itself, and nobody owned them [EP. 02 · 15:50].\n\nHis one lit room is the owner. His argument is focus: a team that also has features to ship will always put the factory last [EP. 02 · 19:43].",
      "portrait": "/people/patrick-debois.jpg"
    },
    {
      "id": "software-dark-factory",
      "type": "concept",
      "name": "Software dark factory",
      "note": "An operating model where autonomous agents do most of the building, testing, reviewing and deployment, while people design the system, set the limits and stay accountable for the outcome.",
      "page": "https://afterthelastengineer.com/graph/#software-dark-factory",
      "body": "An operating model where autonomous agents do most of the building, testing, reviewing and deployment, while people design the system, set the limits and stay accountable for the outcome."
    },
    {
      "id": "structure-around-agents",
      "type": "concept",
      "name": "Structure around agents",
      "note": "Agents left alone do random work. Vladimir structures them like people: dedicated teams, ownership of a task.",
      "page": "https://afterthelastengineer.com/graph/#structure-around-agents",
      "body": "Agents left alone do random work. Vladimir structures them like people: dedicated teams, ownership of a task."
    },
    {
      "id": "tessl",
      "type": "company",
      "name": "Tessl",
      "url": "https://tessl.io",
      "page": "https://afterthelastengineer.com/graph/#tessl",
      "body": "Patrick Debois' company. Process on top of coding agents: skills registry governance, security, and bootstrapping a factory's context and harness [EP. 02 · 47:43]. Tracked on the Dark Factory Matrix at L4."
    },
    {
      "id": "the-bottleneck-moves",
      "type": "concept",
      "name": "The bottleneck moves",
      "note": "When agents write the code, the wait moves: first review, then CI, then the person approving each deploy.",
      "page": "https://afterthelastengineer.com/graph/#the-bottleneck-moves",
      "body": "When agents write the code, the wait moves: first review, then CI, then the person approving each deploy."
    },
    {
      "id": "the-factory-team",
      "type": "concept",
      "name": "The factory team",
      "note": "A factory with no team behind it gets handed over as \"here are the tools, figure it out\". Tessl put a team on it. It is a platform team, for the factory.",
      "page": "https://afterthelastengineer.com/graph/#the-factory-team",
      "body": "A factory with no team behind it gets handed over as \"here are the tools, figure it out\". Tessl put a team on it. It is a platform team, for the factory."
    },
    {
      "id": "the-standing-question",
      "type": "concept",
      "name": "Where do you still keep the lights on?",
      "note": "The question every guest gets. The answers, over time, map where people stay in real factories.",
      "page": "https://afterthelastengineer.com/graph/#the-standing-question",
      "body": "The question every guest gets. The answers, over time, map where people stay in real factories."
    },
    {
      "id": "throwaway-software",
      "type": "concept",
      "name": "Throwaway software",
      "note": "When a version takes five minutes to build, you build what the business asked for, show it, and throw it away if they don't want it.",
      "page": "https://afterthelastengineer.com/graph/#throwaway-software",
      "body": "When a version takes five minutes to build, you build what the business asked for, show it, and throw it away if they don't want it."
    },
    {
      "id": "tool-harness",
      "type": "tool",
      "name": "Harness",
      "page": "https://afterthelastengineer.com/graph/#tool-harness",
      "body": "The code around the agent: the checks, the tools, the limits and the loop it runs in. Patrick's ladder for a company: prompt, context, harness, loop, factory. Context right and harness right is still not enough to survive production."
    },
    {
      "id": "tool-sandboxes",
      "type": "tool",
      "name": "Sandboxes per agent",
      "page": "https://afterthelastengineer.com/graph/#tool-sandboxes",
      "body": "You do not share your PC with a teammate, so why share it with an agent. Cobalt gives each agent its own container, up in seconds and torn down after. Built because the big clouds were too heavy for it."
    },
    {
      "id": "tool-skills-registry",
      "type": "tool",
      "name": "Skills registry",
      "page": "https://afterthelastengineer.com/graph/#tool-skills-registry",
      "body": "Shared skills behave like libraries: people fork a popular one, then face the choice of contributing upstream or maintaining their own. Tessl looks at which skills are similar, which are used, and what the agents' logs say about them."
    },
    {
      "id": "tool-ticket-boards",
      "type": "tool",
      "name": "The ticket board as the factory's intake",
      "page": "https://afterthelastengineer.com/graph/#tool-ticket-boards",
      "body": "The factory reads its work from the board. At Tessl it read more than engineering: it took over the marketing and sales board in Linear and started commenting on the website. The intake defines the blast radius."
    },
    {
      "id": "tool-verifiers",
      "type": "tool",
      "name": "Verifiers and evals",
      "page": "https://afterthelastengineer.com/graph/#tool-verifiers",
      "body": "Tests for what the agent did: linters, deterministic checks, adversarial tests. Tessl kept translating the notes in its context into checks the agent could not argue with. Add them right after the first loop works."
    },
    {
      "id": "vitaliy-filipov",
      "type": "person",
      "name": "Vitaliy Filipov",
      "note": "Host. A senior engineer who builds autonomous delivery systems and tests where they survive contact with production.",
      "page": "https://afterthelastengineer.com/graph/#vitaliy-filipov",
      "body": "Co-host. Agentic engineering. Answers like an engineer and explains harness and eval before using them.",
      "portrait": "/people/vitaliy-filipov.jpg"
    },
    {
      "id": "vladimir-petrov",
      "type": "person",
      "name": "Vladimir Petrov",
      "note": "Has written code for 30 years. Builds a software factory at Cobalt Code.",
      "page": "https://afterthelastengineer.com/graph/#vladimir-petrov",
      "body": "Enterprise engineer turned factory builder. His team didn't want agents near the code base, so he plugged them in without telling anyone. 25 pull requests and one dead server later, the bottleneck moved from review to CI to the person who approves each deploy [EP. 01 · 25:46].\n\nHis answer to the standing question is a person who decides what to build and what not to build [EP. 01 · 39:10]. Everything else, in his words, you can give away.",
      "portrait": "/people/vladimir-petrov.jpg"
    },
    {
      "id": "what-broke",
      "type": "concept",
      "name": "What broke",
      "note": "The rule of the show: every guest says what went wrong. The demo stays home.",
      "page": "https://afterthelastengineer.com/graph/#what-broke",
      "body": "The rule of the show: every guest says what went wrong. The demo stays home."
    },
    {
      "id": "what-not-to-build",
      "type": "concept",
      "name": "What not to build",
      "note": "When building is cheap, the decision moves to which features not to build.",
      "page": "https://afterthelastengineer.com/graph/#what-not-to-build",
      "body": "When building is cheap, the decision moves to which features not to build."
    },
    {
      "id": "incident:intent",
      "type": "incident",
      "name": "What to build dark",
      "note": "Nobody said what to build. The factory took over the marketing and sales board and started commenting on the website. Nobody set the scope. Two days later: code that didn’t work and tickets that didn’t matter."
    },
    {
      "id": "incident:architecture",
      "type": "incident",
      "name": "Architecture dark",
      "note": "Nobody designed for failure. The agent deleted the database and there was no way to restore it. Context right, harness right. Still not enough to survive production."
    },
    {
      "id": "incident:review",
      "type": "incident",
      "name": "Code review dark",
      "note": "Nobody reviewing. Agents opened 25 pull requests at once."
    },
    {
      "id": "incident:release",
      "type": "incident",
      "name": "Release sign-off dark",
      "note": "Nobody at the door. One of the servers went down."
    },
    {
      "id": "incident:owner",
      "type": "incident",
      "name": "Factory owner dark",
      "note": "Nobody owned the factory. It filed 15 tickets about improving itself."
    },
    {
      "id": "factory:camplight",
      "type": "factory",
      "name": "Camplight",
      "note": "Builds dark factories with and for clients.",
      "url": "https://camplight.net",
      "level": 4
    },
    {
      "id": "factory:felan",
      "type": "factory",
      "name": "Felan",
      "note": "Unattended agents from request to tested PR handoff.",
      "url": "https://felan.ai/",
      "level": 4
    },
    {
      "id": "factory:tessl",
      "type": "factory",
      "name": "Tessl",
      "note": "Versioned agent workflows with CI gates and evaluations.",
      "url": "https://tessl.io/",
      "level": 4
    }
  ],
  "edges": [
    {
      "from": "incident:intent",
      "to": "room:intent",
      "rel": "when_dark"
    },
    {
      "from": "incident:intent",
      "to": "ep:02",
      "rel": "happened_in",
      "cite": {
        "ep": "02",
        "t": 879,
        "label": "EP. 02 · 14:39",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=879"
      },
      "note": "Nobody said what to build. The factory took over the marketing and sales board and started commenting on the website."
    },
    {
      "from": "incident:intent",
      "to": "ep:01",
      "rel": "happened_in",
      "cite": {
        "ep": "01",
        "t": 345,
        "label": "EP. 01 · 5:45",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=345"
      },
      "note": "Nobody set the scope. Two days later: code that didn’t work and tickets that didn’t matter."
    },
    {
      "from": "incident:architecture",
      "to": "room:architecture",
      "rel": "when_dark"
    },
    {
      "from": "incident:architecture",
      "to": "ep:02",
      "rel": "happened_in",
      "cite": {
        "ep": "02",
        "t": 2224,
        "label": "EP. 02 · 37:04",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2224"
      },
      "note": "Nobody designed for failure. The agent deleted the database and there was no way to restore it."
    },
    {
      "from": "incident:architecture",
      "to": "ep:02",
      "rel": "happened_in",
      "cite": {
        "ep": "02",
        "t": 2296,
        "label": "EP. 02 · 38:16",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2296"
      },
      "note": "Context right, harness right. Still not enough to survive production."
    },
    {
      "from": "incident:review",
      "to": "room:review",
      "rel": "when_dark"
    },
    {
      "from": "incident:review",
      "to": "ep:01",
      "rel": "happened_in",
      "cite": {
        "ep": "01",
        "t": 1546,
        "label": "EP. 01 · 25:46",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=1546"
      },
      "note": "Nobody reviewing. Agents opened 25 pull requests at once."
    },
    {
      "from": "incident:release",
      "to": "room:release",
      "rel": "when_dark"
    },
    {
      "from": "incident:release",
      "to": "ep:01",
      "rel": "happened_in",
      "cite": {
        "ep": "01",
        "t": 1546,
        "label": "EP. 01 · 25:46",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=1546"
      },
      "note": "Nobody at the door. One of the servers went down."
    },
    {
      "from": "incident:owner",
      "to": "room:owner",
      "rel": "when_dark"
    },
    {
      "from": "incident:owner",
      "to": "ep:02",
      "rel": "happened_in",
      "cite": {
        "ep": "02",
        "t": 950,
        "label": "EP. 02 · 15:50",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=950"
      },
      "note": "Nobody owned the factory. It filed 15 tickets about improving itself."
    },
    {
      "from": "camplight",
      "to": "factory:camplight",
      "rel": "runs"
    },
    {
      "from": "factory:camplight",
      "to": "darkness-level",
      "rel": "rated",
      "note": "L4 on the Dark Factory Matrix"
    },
    {
      "from": "felan",
      "to": "factory:felan",
      "rel": "runs"
    },
    {
      "from": "factory:felan",
      "to": "darkness-level",
      "rel": "rated",
      "note": "L4 on the Dark Factory Matrix"
    },
    {
      "from": "tessl",
      "to": "factory:tessl",
      "rel": "runs"
    },
    {
      "from": "factory:tessl",
      "to": "darkness-level",
      "rel": "rated",
      "note": "L4 on the Dark Factory Matrix"
    },
    {
      "from": "architecture-for-failure",
      "to": "incident:architecture",
      "rel": "shown_by"
    },
    {
      "from": "boris-paskalev",
      "to": "logicstar",
      "rel": "works_at"
    },
    {
      "from": "boris-paskalev",
      "to": "ep:04",
      "rel": "guest_of"
    },
    {
      "from": "danail-arapkuliev",
      "to": "camplight",
      "rel": "works_at"
    },
    {
      "from": "danail-arapkuliev",
      "to": "the-standing-question",
      "rel": "asks"
    },
    {
      "from": "darkness-level",
      "to": "the-standing-question",
      "rel": "related"
    },
    {
      "from": "darkness-level",
      "to": "light-rooms",
      "rel": "related"
    },
    {
      "from": "event-ai-native-devcon-2026",
      "to": "patrick-debois",
      "rel": "organised_by"
    },
    {
      "from": "factory-cobalt-code",
      "to": "cobalt-code",
      "rel": "run_by"
    },
    {
      "from": "factory-cobalt-code",
      "to": "ep:01",
      "rel": "seen_in",
      "cite": {
        "ep": "01",
        "t": 95,
        "label": "EP. 01 · 1:35",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=95"
      }
    },
    {
      "from": "factory-tessl",
      "to": "tessl",
      "rel": "run_by"
    },
    {
      "from": "factory-tessl",
      "to": "ep:02",
      "rel": "seen_in",
      "cite": {
        "ep": "02",
        "t": 1151,
        "label": "EP. 02 · 19:11",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1151"
      }
    },
    {
      "from": "harness",
      "to": "eval",
      "rel": "related"
    },
    {
      "from": "harness",
      "to": "automating-disaster",
      "rel": "related"
    },
    {
      "from": "lesson-architect-for-restore",
      "to": "patrick-debois",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 2224,
        "label": "EP. 02 · 37:04",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2224"
      }
    },
    {
      "from": "lesson-architect-for-restore",
      "to": "architecture-for-failure",
      "rel": "supports"
    },
    {
      "from": "lesson-make-the-first-loop-work",
      "to": "patrick-debois",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 2343,
        "label": "EP. 02 · 39:03",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2343"
      }
    },
    {
      "from": "lesson-make-the-first-loop-work",
      "to": "automating-disaster",
      "rel": "supports"
    },
    {
      "from": "lesson-nobody-has-the-right-setup",
      "to": "vladimir-petrov",
      "rel": "learned_from",
      "cite": {
        "ep": "01",
        "t": 3217,
        "label": "EP. 01 · 53:37",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=3217"
      }
    },
    {
      "from": "lesson-nobody-has-the-right-setup",
      "to": "nobody-has-the-right-setup",
      "rel": "supports"
    },
    {
      "from": "lesson-somebody-owns-the-factory",
      "to": "patrick-debois",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 1183,
        "label": "EP. 02 · 19:43",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1183"
      }
    },
    {
      "from": "lesson-somebody-owns-the-factory",
      "to": "vladimir-petrov",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 1183,
        "label": "EP. 02 · 19:43",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1183"
      }
    },
    {
      "from": "lesson-somebody-owns-the-factory",
      "to": "ownership",
      "rel": "supports"
    },
    {
      "from": "lesson-structure-agents-like-people",
      "to": "vladimir-petrov",
      "rel": "learned_from",
      "cite": {
        "ep": "01",
        "t": 345,
        "label": "EP. 01 · 5:45",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=345"
      }
    },
    {
      "from": "lesson-structure-agents-like-people",
      "to": "structure-around-agents",
      "rel": "supports"
    },
    {
      "from": "lesson-the-bottleneck-moves",
      "to": "vladimir-petrov",
      "rel": "learned_from",
      "cite": {
        "ep": "01",
        "t": 136,
        "label": "EP. 01 · 2:16",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=136"
      }
    },
    {
      "from": "lesson-the-bottleneck-moves",
      "to": "the-bottleneck-moves",
      "rel": "supports"
    },
    {
      "from": "lesson-the-decision-is-what-not-to-build",
      "to": "patrick-debois",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 2798,
        "label": "EP. 02 · 46:38",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2798"
      }
    },
    {
      "from": "lesson-the-decision-is-what-not-to-build",
      "to": "vladimir-petrov",
      "rel": "learned_from",
      "cite": {
        "ep": "02",
        "t": 2798,
        "label": "EP. 02 · 46:38",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2798"
      }
    },
    {
      "from": "lesson-the-decision-is-what-not-to-build",
      "to": "what-not-to-build",
      "rel": "supports"
    },
    {
      "from": "lesson-the-decision-is-what-not-to-build",
      "to": "throwaway-software",
      "rel": "supports"
    },
    {
      "from": "milko-slavov",
      "to": "felan",
      "rel": "works_at"
    },
    {
      "from": "milko-slavov",
      "to": "ep:03",
      "rel": "guest_of"
    },
    {
      "from": "milko-slavov",
      "to": "room:intent",
      "rel": "keeps_lit",
      "quote": "In some cases it will have a lot more light rooms inside. In some cases it will have just a few."
    },
    {
      "from": "milko-slavov",
      "to": "room:architecture",
      "rel": "keeps_lit",
      "quote": "In some cases it will have a lot more light rooms inside. In some cases it will have just a few."
    },
    {
      "from": "milko-slavov",
      "to": "room:release",
      "rel": "keeps_lit",
      "quote": "In some cases it will have a lot more light rooms inside. In some cases it will have just a few."
    },
    {
      "from": "milko-slavov",
      "to": "light-rooms",
      "rel": "says",
      "quote": "In some cases it will have a lot more light rooms inside. In some cases it will have just a few."
    },
    {
      "from": "milko-slavov",
      "to": "fully-dark",
      "rel": "doubts",
      "quote": "It doesn't work to gather them every morning and tell them what to do, and then everything will be done."
    },
    {
      "from": "news-2026-10-15-ep-02",
      "to": "ep:02",
      "rel": "about"
    },
    {
      "from": "news-2026-10-29-ep-03",
      "to": "ep:03",
      "rel": "about"
    },
    {
      "from": "ownership",
      "to": "vladimir-petrov",
      "rel": "agrees",
      "note": "Both land on the same answer. Vladimir says the product [EP. 01 · 39:10], Patrick says the factory [EP. 02 · 19:43]."
    },
    {
      "from": "patrick-debois",
      "to": "ownership",
      "rel": "agrees",
      "note": "Both land on the same answer. Vladimir says the product [EP. 01 · 39:10], Patrick says the factory [EP. 02 · 19:43]."
    },
    {
      "from": "ownership",
      "to": "incident:owner",
      "rel": "shown_by"
    },
    {
      "from": "patrick-debois",
      "to": "tessl",
      "rel": "works_at"
    },
    {
      "from": "patrick-debois",
      "to": "ep:02",
      "rel": "guest_of"
    },
    {
      "from": "patrick-debois",
      "to": "room:owner",
      "rel": "keeps_lit",
      "cite": {
        "ep": "02",
        "t": 1183,
        "label": "EP. 02 · 19:43",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1183"
      },
      "quote": "Now, can you do it without? Yes. But can you do it without ownership? No."
    },
    {
      "from": "patrick-debois",
      "to": "ownership",
      "rel": "says",
      "cite": {
        "ep": "02",
        "t": 1183,
        "label": "EP. 02 · 19:43",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1183"
      },
      "quote": "Now, can you do it without? Yes. But can you do it without ownership? No."
    },
    {
      "from": "patrick-debois",
      "to": "automating-disaster",
      "rel": "says",
      "cite": {
        "ep": "02",
        "t": 2343,
        "label": "EP. 02 · 39:03",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2343"
      },
      "quote": "If you're only doing prompts and you're yoloing towards production, I'm not gonna advise you a factory, because that's basically automating disaster."
    },
    {
      "from": "patrick-debois",
      "to": "architecture-for-failure",
      "rel": "says",
      "cite": {
        "ep": "02",
        "t": 2224,
        "label": "EP. 02 · 37:04",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2224"
      },
      "quote": "How fast can I restore it? What's my window of data loss?"
    },
    {
      "from": "patrick-debois",
      "to": "what-not-to-build",
      "rel": "says",
      "cite": {
        "ep": "02",
        "t": 2798,
        "label": "EP. 02 · 46:38",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2798"
      },
      "quote": "The decision is more and more about, like, what features should we not build."
    },
    {
      "from": "patrick-debois",
      "to": "the-factory-team",
      "rel": "says",
      "cite": {
        "ep": "02",
        "t": 1102,
        "label": "EP. 02 · 18:22",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=1102"
      },
      "quote": "Here's the tools. Engineering, figure it out."
    },
    {
      "from": "patrick-debois",
      "to": "hype",
      "rel": "doubts",
      "cite": {
        "ep": "02",
        "t": 2741,
        "label": "EP. 02 · 45:41",
        "href": "https://afterthelastengineer.com/episodes/02-patrick-debois/#t=2741"
      },
      "quote": "I don't care about the 100%."
    },
    {
      "from": "software-dark-factory",
      "to": "darkness-level",
      "rel": "related"
    },
    {
      "from": "software-dark-factory",
      "to": "governing-the-code",
      "rel": "related"
    },
    {
      "from": "software-dark-factory",
      "to": "fully-dark",
      "rel": "related"
    },
    {
      "from": "structure-around-agents",
      "to": "incident:intent",
      "rel": "shown_by"
    },
    {
      "from": "the-bottleneck-moves",
      "to": "incident:release",
      "rel": "shown_by"
    },
    {
      "from": "tool-harness",
      "to": "harness",
      "rel": "related"
    },
    {
      "from": "tool-sandboxes",
      "to": "cobalt-code",
      "rel": "used_by"
    },
    {
      "from": "tool-skills-registry",
      "to": "tessl",
      "rel": "used_by"
    },
    {
      "from": "tool-ticket-boards",
      "to": "tessl",
      "rel": "used_by"
    },
    {
      "from": "tool-verifiers",
      "to": "eval",
      "rel": "related"
    },
    {
      "from": "vitaliy-filipov",
      "to": "camplight",
      "rel": "works_at"
    },
    {
      "from": "vitaliy-filipov",
      "to": "governing-the-code",
      "rel": "says",
      "quote": "Engineers move from writing the code to governing it."
    },
    {
      "from": "vitaliy-filipov",
      "to": "the-standing-question",
      "rel": "asks"
    },
    {
      "from": "vladimir-petrov",
      "to": "cobalt-code",
      "rel": "works_at"
    },
    {
      "from": "vladimir-petrov",
      "to": "ep:01",
      "rel": "guest_of"
    },
    {
      "from": "vladimir-petrov",
      "to": "room:intent",
      "rel": "keeps_lit",
      "cite": {
        "ep": "01",
        "t": 2350,
        "label": "EP. 01 · 39:10",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=2350"
      },
      "quote": "You need to end up with someone that owns the product to say, what we want and what we don’t want."
    },
    {
      "from": "vladimir-petrov",
      "to": "ownership",
      "rel": "says",
      "cite": {
        "ep": "01",
        "t": 2350,
        "label": "EP. 01 · 39:10",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=2350"
      },
      "quote": "You need to end up with someone that owns the product to say, what we want and what we don't want."
    },
    {
      "from": "vladimir-petrov",
      "to": "structure-around-agents",
      "rel": "says",
      "cite": {
        "ep": "01",
        "t": 345,
        "label": "EP. 01 · 5:45",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=345"
      },
      "quote": "You need structure around agents."
    },
    {
      "from": "vladimir-petrov",
      "to": "hype",
      "rel": "says",
      "cite": {
        "ep": "01",
        "t": 203,
        "label": "EP. 01 · 3:23",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=203"
      },
      "quote": "They are not hype."
    },
    {
      "from": "vladimir-petrov",
      "to": "throwaway-software",
      "rel": "says",
      "cite": {
        "ep": "01",
        "t": 1324,
        "label": "EP. 01 · 22:04",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=1324"
      },
      "quote": "You can keep the stuff you love, and you can just give away everything else."
    },
    {
      "from": "vladimir-petrov",
      "to": "the-bottleneck-moves",
      "rel": "says",
      "cite": {
        "ep": "01",
        "t": 136,
        "label": "EP. 01 · 2:16",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=136"
      },
      "quote": "The biggest blocker was actually the manual confirmation when it deployed."
    },
    {
      "from": "vladimir-petrov",
      "to": "nobody-has-the-right-setup",
      "rel": "admits",
      "cite": {
        "ep": "01",
        "t": 3217,
        "label": "EP. 01 · 53:37",
        "href": "https://afterthelastengineer.com/episodes/01-vladimir-petrov/#t=3217"
      },
      "quote": "Everybody's experimenting with software factories, but I don't think anyone has the right setup now."
    },
    {
      "from": "what-broke",
      "to": "eval",
      "rel": "related"
    },
    {
      "from": "room:intent",
      "to": "the-standing-question",
      "rel": "answers"
    },
    {
      "from": "room:architecture",
      "to": "the-standing-question",
      "rel": "answers"
    },
    {
      "from": "room:review",
      "to": "the-standing-question",
      "rel": "answers"
    },
    {
      "from": "room:release",
      "to": "the-standing-question",
      "rel": "answers"
    },
    {
      "from": "room:owner",
      "to": "the-standing-question",
      "rel": "answers"
    }
  ]
}