{"what": "The book as a graph: every node and edge graph_model.py derives from the files; drawn by assets/graph.js at graph/view.html.", "counts": {"nodes": 838, "edges": 1738, "sources": {"newsroom": 204, "article": 16, "agent-article": 4, "decision": 15, "storyboard": 12, "survey": 1, "memo": 1, "book-2018": 138}, "newsroom_by_state": {"mined": 46, "to-mine": 27, "skipped": 43, "background": 29, "processed": 59}, "articles_by_state": {"processed": 34, "background": 1}, "book_2018_by_state": {"apparatus": 12, "answered": 90, "unanswered": 36}, "ideas": 198, "ideas_by_state": {"accepted": 65, "candidate": 132, "deferred": 1}, "ideas_by_destination": {"this-edition": 184, "next-version": 1, "the-process": 13}, "ideas_by_kind": {"frame": 32, "claim": 64, "story": 8, "advice": 35, "method": 29, "process": 19, "evidence": 11}, "chapters": 41, "parts": 10, "chapters_by_state": {"drafting": 41}, "chapters_by_gravity": {"all": 14, "explorer": 12, "villager": 9, "town-planner": 6}, "tasks": 89, "tasks_by_state": {"done": 7, "open": 60, "in-progress": 18, "blocked": 4}, "tasks_by_role": {"journalist": 9, "dinis": 2, "publisher": 12, "editor": 62, "librarian": 3, "reviewer": 1}, "issues_by_state": {"open": 10, "blocked": 4, "done": 1}, "briefs": 26, "topics": 18, "concepts": 50, "book_files_answered_by_ideas": 85, "book_files_placed_in_chapters": 77}, "nodes": {"news:a-book-for-one-reader": {"id": "news:a-book-for-one-reader", "kind": "source", "source_kind": "newsroom", "title": "A book for one reader", "full_title": "A book for one reader: a personalised edition of Generation Z Developers, assembled by an agent for one person, and paid for as it is read", "url": "https://newsroom.sgit.ai/articles/a-book-for-one-reader.html", "class": "context", "serves": "making-of", "why": "Plans personalised, metered editions of this book; guides the agents producing editions, not a reader chapter.", "date": "2026-10-18", "state": "mined", "ideas": 1}, "news:a-browser-for-one": {"id": "news:a-browser-for-one", "kind": "source", "source_kind": "newsroom", "title": "A browser for one", "full_title": "A browser for one: an iPhone app that only reads my newsroom, why I am building it now, and why I will still pay someone to keep it working", "url": "https://newsroom.sgit.ai/articles/a-browser-for-one.html", "class": "content", "serves": "explorers-villagers-town-planners", "why": "Take the story: frustration plus the power to build turns into an app for one person, and 'being able to compile a Linux kernel does not mean I want to' maintain it, the explorer-to-villager handover in daily life.", "date": "2026-10-18", "state": "mined", "ideas": 1}, "news:a-custom-firefox-of-my-own": {"id": "news:a-custom-firefox-of-my-own", "kind": "source", "source_kind": "newsroom", "title": "A custom Firefox of my own", "full_title": "A custom Firefox of my own: the full plan to build one with a governed agent hive, for the laptop and the iPad, and how Mozilla could sell me the part I do not want to do, which is keeping it working", "url": "https://newsroom.sgit.ai/articles/a-custom-firefox-of-my-own.html", "class": "content", "serves": "explorers-villagers-town-planners", "why": "Take the number: a Firefox fork must be rebased 26 times a year on two codebases, the concrete cost of maintenance that explorers underestimate; and the 'least invasive layer first' habit.", "date": "2026-10-16", "state": "to-mine"}, "news:a-directory-of-people-and-keys": {"id": "news:a-directory-of-people-and-keys", "kind": "source", "source_kind": "newsroom", "title": "A directory of people and their keys", "full_title": "A directory of people and their keys: pki.sgit.ai for the people I work with, verified by me first, then by each other, and a link that only counts when it goes both ways", "url": "https://newsroom.sgit.ai/articles/a-directory-of-people-and-keys.html", "class": "skip", "serves": "", "why": "sgit PKI product brief, niche.", "date": "2026-10-18", "state": "skipped"}, "news:a-link-to-a-persona": {"id": "news:a-link-to-a-persona", "kind": "source", "source_kind": "newsroom", "title": "A link to a persona", "full_title": "A link to a persona: send people to the newsroom as someone, not as nobody", "url": "https://newsroom.sgit.ai/articles/a-link-to-a-persona.html", "class": "skip", "serves": null, "why": "newsroom persona link feature", "date": "2026-10-10", "state": "skipped"}, "news:a-mac-of-the-agents-own": {"id": "news:a-mac-of-the-agents-own", "kind": "source", "source_kind": "newsroom", "title": "A Mac of the agent's own", "full_title": "A Mac of the agent's own: a business plan for agent desktops, what Apple's licence allows, and three behaviour policies", "url": "https://newsroom.sgit.ai/articles/a-mac-of-the-agents-own.html", "class": "skip", "serves": null, "why": "business plan for agent Macs", "date": "2026-10-09", "state": "skipped"}, "news:a-meter-in-the-browser": {"id": "news:a-meter-in-the-browser", "kind": "source", "source_kind": "newsroom", "title": "A meter in the browser", "full_title": "A meter in the browser: a penny a page, a history you keep, and a site that picks for you", "url": "https://newsroom.sgit.ai/articles/a-meter-in-the-browser.html", "class": "skip", "serves": null, "why": "reading meter experiment design", "date": "2026-10-10", "state": "skipped"}, "news:a-minimal-viable-browser": {"id": "news:a-minimal-viable-browser", "kind": "source", "source_kind": "newsroom", "title": "A minimal viable browser", "full_title": "A minimal viable browser: why Firefox is the one that can build it, and what it would take", "url": "https://newsroom.sgit.ai/articles/a-minimal-viable-browser.html", "class": "content", "serves": "security-agent-era", "why": "Take the line 'an agent cannot leak what its browser cannot reach' and the browser as the biggest attack surface we run; answers the Xcode and web-proxies outlines.", "date": "2026-10-18", "state": "to-mine"}, "news:a-model-in-the-tab": {"id": "news:a-model-in-the-tab", "kind": "source", "source_kind": "newsroom", "title": "A model in the tab", "full_title": "A model in the tab: Chrome now ships an LLM to capable desktops, and it is the hardest piece of the client-side puzzle", "url": "https://newsroom.sgit.ai/articles/a-model-in-the-tab.html", "class": "content", "serves": "building-blocks", "why": "Take the fact: since Chrome 148 any page can prompt Gemini Nano on the reader's own device, a free model for student projects. Partly fills the costs gap.", "date": "2026-10-11", "state": "to-mine"}, "news:a-personal-agent-that-keeps-your-secrets": {"id": "news:a-personal-agent-that-keeps-your-secrets", "kind": "source", "source_kind": "newsroom", "title": "A personal agent that keeps your secrets", "full_title": "A personal agent that keeps your secrets: the 2026 agents read through behaviour policy and encryption, and a privacy-first design on vaults, enclaves and the browser", "url": "https://newsroom.sgit.ai/articles/a-personal-agent-that-keeps-your-secrets.html", "class": "context", "serves": "security-agent-era", "why": "Background for the agents: the 2026 personal-agent products read for barriers and data sovereignty.", "date": "2026-10-06", "state": "background"}, "news:a-policy-beside-the-prompt": {"id": "news:a-policy-beside-the-prompt", "kind": "source", "source_kind": "newsroom", "title": "A policy beside the prompt", "full_title": "A policy beside the prompt: a proposal that every agent takes a behaviour policy as an input, with enforcement and liability attached, and why aviation and payments say the vendors should want it", "url": "https://newsroom.sgit.ai/articles/a-policy-beside-the-prompt.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the aviation number (1995 accident rate would mean about a hundred fatal accidents a year instead of twelve) and payments liability as the story of why safety follows when rule, liability and business model align.", "date": "2026-10-13", "state": "mined", "ideas": 4}, "news:a-policy-for-every-skill": {"id": "news:a-policy-for-every-skill", "kind": "source", "source_kind": "newsroom", "title": "A policy for every skill", "full_title": "A policy for every skill: Sean Turner's natural-language control for agent skills, the behaviour policy behind it, and using models to need them less", "url": "https://newsroom.sgit.ai/articles/a-policy-for-every-skill.html", "class": "content", "serves": "controlling-your-agent", "why": "Take Sean Turner's CI check of every skill in context and the phrase 'using models to need them less' (keep the description canonical, regenerate the code).", "date": "2026-10-14", "state": "to-mine"}, "news:a-reading-list-in-a-link": {"id": "news:a-reading-list-in-a-link", "kind": "source", "source_kind": "newsroom", "title": "From me to you, in a link", "full_title": "From me to you, in a link: a personal reading list, two briefs to build and use it, and the loop that makes it a day's work", "url": "https://newsroom.sgit.ai/articles/a-reading-list-in-a-link.html", "class": "context", "serves": "making-of", "why": "Background for the agents: personal reading lists in a link, a mechanism a personalised edition could use.", "date": "2026-10-11", "state": "background"}, "news:a-second-reader-the-agent-cannot-skip": {"id": "news:a-second-reader-the-agent-cannot-skip", "kind": "source", "source_kind": "newsroom", "title": "A second reader the agent cannot skip", "full_title": "A second reader the agent cannot skip: how two wrong emails became a gate on every draft", "url": "https://newsroom.sgit.ai/articles/a-second-reader-the-agent-cannot-skip.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the story: two emails went out wrong in the founder's voice, and the fix was a gate the agent cannot skip (deterministic checks, then a different model that fails closed). The old maker-checker idea applied to agents.", "date": "2026-10-09", "state": "to-mine"}, "news:a-section-for-publishers": {"id": "news:a-section-for-publishers", "kind": "source", "source_kind": "newsroom", "title": "A section for publishers", "full_title": "A section for publishers: where to send someone new to this newsroom, and a site that keeps itself current", "url": "https://newsroom.sgit.ai/articles/a-section-for-publishers.html", "class": "skip", "serves": "", "why": "Newsroom audience sections, site plumbing.", "date": "2026-10-18", "state": "skipped"}, "news:a-website-to-finish-the-book": {"id": "news:a-website-to-finish-the-book", "kind": "source", "source_kind": "newsroom", "title": "A website to finish the book", "full_title": "A website to finish the book: gen-z-developers.sgit.ai, where the released book lives in the repository, the working book lives in a vault, and agents help me review it at every altitude", "url": "https://newsroom.sgit.ai/articles/a-website-to-finish-the-book.html", "class": "bring", "serves": "making-of", "why": "Seeds the book's last part, how the edition was built (official versions in the repository, working versions in a vault, agents in roles), which Dinis wants a Gen Z developer to be able to do.", "date": "2026-10-18", "state": "processed", "ideas": 2}, "news:act-as-the-job-you-want": {"id": "news:act-as-the-job-you-want", "kind": "source", "source_kind": "newsroom", "title": "Act as the job you want", "full_title": "Act as the job you want: if you are looking for a job, you have time, so do the work in public, make it linkable, and let the people who want to help you help you", "url": "https://newsroom.sgit.ai/articles/act-as-the-job-you-want.html", "class": "bring", "serves": "getting-the-job", "why": "The core job-hunting chapter: if you are looking for a job you have time, so do the job in public, make it linkable, put your CV online, learn to publish with an agent first.", "date": "2026-10-18", "state": "processed", "ideas": 3}, "news:agency-is-not-a-yes": {"id": "news:agency-is-not-a-yes", "kind": "source", "source_kind": "newsroom", "title": "Agency is not a yes", "full_title": "Agency is not a yes: a scale for human and agent decisions, from rubber stamp to the reviewer who fixes the source", "url": "https://newsroom.sgit.ai/articles/agency-is-not-a-yes.html", "class": "content", "serves": "human-in-the-loop", "why": "Take the seven-level agency scale, from rubber stamp to the reviewer who fixes the source, and the line that below level 3 the person deciding carries the liability but has no real agency.", "date": "2026-10-08", "state": "mined", "ideas": 1}, "news:agent-hooks-october-2026": {"id": "news:agent-hooks-october-2026", "kind": "source", "source_kind": "newsroom", "title": "Agent hooks in October 2026", "full_title": "Agent hooks in October 2026: a technical debrief on what each platform lets you see, stop and change, where hooks run, and where they fail", "url": "https://newsroom.sgit.ai/articles/agent-hooks-october-2026.html", "class": "context", "serves": "controlling-your-agent", "why": "Technical survey of hooks across ten coding agents; background for the agents writing the controls chapter, with the takeaway 'guardrails, not walls'.", "date": "2026-10-14", "state": "background"}, "news:agent-workflows-on-ephemeral-vaults": {"id": "news:agent-workflows-on-ephemeral-vaults", "kind": "source", "source_kind": "newsroom", "title": "Agent workflows on ephemeral vaults", "full_title": "Agent workflows on ephemeral vaults: seven architectures from one agent to a swarm, a repository of recipes that gates sgit's releases, and what a hundred writers did to an append lane", "url": "https://newsroom.sgit.ai/articles/agent-workflows-on-ephemeral-vaults.html", "class": "skip", "serves": "", "why": "sgit multi-agent architecture recipes.", "date": "2026-10-14", "state": "skipped"}, "news:agentic-cost-is-an-engineering-problem": {"id": "news:agentic-cost-is-an-engineering-problem", "kind": "source", "source_kind": "newsroom", "title": "Agentic cost is an engineering problem", "full_title": "Agentic cost is an engineering problem: a business plan for a service that reads the logs a company already has and finds the money, then the engineering", "url": "https://newsroom.sgit.ai/articles/agentic-cost-is-an-engineering-problem.html", "class": "context", "serves": "building-blocks", "why": "Background for the agents: agentic cost as the price of skipping villager discipline. A business plan, not student costs.", "date": "2026-10-12", "state": "background"}, "news:agentics-ready-to-sell": {"id": "news:agentics-ready-to-sell", "kind": "source", "source_kind": "newsroom", "title": "Agentics, ready to sell", "full_title": "Agentics, ready to sell: what we showed at Agentic Engineering Live, who else is selling agentic services and at what price, the engagement path, and a marketplace for the consultants who deliver it", "url": "https://newsroom.sgit.ai/articles/agentics-ready-to-sell.html", "class": "content", "serves": "getting-the-job", "why": "Take the market facts: Gartner expects over 40% of agentic projects cancelled by end of 2027; boutiques sell £2,500 audits and €2,900 sprints; a marketplace of consultants is forming, a door for newcomers.", "date": "2026-10-16", "state": "mined", "ideas": 4}, "news:ai-baseline-control-framework": {"id": "news:ai-baseline-control-framework", "kind": "source", "source_kind": "newsroom", "title": "An open AI governance framework, and what its licence let us build", "full_title": "An open AI governance framework, and what its licence let us build", "url": "https://newsroom.sgit.ai/articles/ai-baseline-control-framework.html", "class": "context", "serves": "security-agent-era", "why": "Background for the agents: twenty AI governance controls under CC BY-SA, turned into a graph. Too enterprise for the reader.", "date": "2026-10-07", "state": "background"}, "news:allowed-is-not-right": {"id": "news:allowed-is-not-right", "kind": "source", "source_kind": "newsroom", "title": "Allowed is not right", "full_title": "Allowed is not right: an answer to Ashish Rajan's Northstar, with three policies and a twin you can run", "url": "https://newsroom.sgit.ai/articles/allowed-is-not-right.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the Northstar example: the agent may refund up to $200, the customer is owed $120, it refunds $150, every control passes and the outcome is wrong.", "date": "2026-10-18", "state": "to-mine"}, "news:an-agent-desktop-by-the-minute": {"id": "news:an-agent-desktop-by-the-minute", "kind": "source", "source_kind": "newsroom", "title": "A locked-down desktop for an agent, by the minute, is still hard to rent", "full_title": "A locked-down desktop for an agent, by the minute, is still hard to rent", "url": "https://newsroom.sgit.ai/articles/an-agent-desktop-by-the-minute.html", "class": "skip", "serves": null, "why": "agent desktop rental market survey", "date": "2026-10-07", "state": "processed", "ideas": 5}, "news:approve-at-altitude": {"id": "news:approve-at-altitude", "kind": "source", "source_kind": "newsroom", "title": "Approve at altitude", "full_title": "Approve at altitude: decisions at every level, from strategy to one agent's step, where each level may narrow the one above and never widen it", "url": "https://newsroom.sgit.ai/articles/approve-at-altitude.html", "class": "context", "serves": "controlling-your-agent", "why": "Decision-policy governance at enterprise scale; gives the agents the rule 'a lower level may narrow the one above, never widen it'.", "date": "2026-10-17", "state": "background"}, "news:are-hooks-the-sweet-spot": {"id": "news:are-hooks-the-sweet-spot", "kind": "source", "source_kind": "newsroom", "title": "Are hooks the sweet spot? Moving an agent's rules from hope into hooks, rule by rule, until enforcement moves off the machine", "full_title": "Are hooks the sweet spot? Moving an agent's rules from hope into hooks, rule by rule, until enforcement moves off the machine", "url": "https://newsroom.sgit.ai/articles/are-hooks-the-sweet-spot.html", "class": "content", "serves": "controlling-your-agent", "why": "Take 'hope-based security' and the count: of the site's eleven agent rules only one was kept by something other than the agent; four moved fully into hooks.", "date": "2026-10-14", "state": "mined", "ideas": 1}, "news:attacks-rewritten-as-mandates": {"id": "news:attacks-rewritten-as-mandates", "kind": "source", "source_kind": "newsroom", "title": "Attacks rewritten as mandates", "full_title": "Attacks rewritten as mandates: 28 supply-chain incidents, the column each one was missing, and why the next maintainer is an agent", "url": "https://newsroom.sgit.ai/articles/attacks-rewritten-as-mandates.html", "class": "content", "serves": "security-agent-era", "why": "Take 'reach beyond mandate' as the shape of every supply-chain attack (28 incidents) and the fact that the next maintainer holding a publish token is an agent (4,746 PRs in eight weeks).", "date": "2026-10-13", "state": "mined", "ideas": 1}, "news:authority-outside-the-model": {"id": "news:authority-outside-the-model", "kind": "source", "source_kind": "newsroom", "title": "Authority outside the model", "full_title": "Authority outside the model: an answer to Satya Nadella on models as insider risks, principle by principle, with what we run, what we ship and what we plan", "url": "https://newsroom.sgit.ai/articles/authority-outside-the-model.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: Nadella's seven principles mapped to the mandate. Enterprise framing, cited in map.json.", "date": "2026-10-11", "state": "background"}, "news:books-from-articles": {"id": "news:books-from-articles", "kind": "source", "source_kind": "newsroom", "title": "Books from articles", "full_title": "Books from articles: why my books stall at 95%, why these articles do not, and a plan to turn them into books by Web Summit", "url": "https://newsroom.sgit.ai/articles/books-from-articles.html", "class": "bring", "serves": "publish-in-public", "why": "Books stall at 95% because they are one big batch; small finished pieces with a feedback loop ship; seeds both the publish chapter and the making-of.", "date": "2026-10-16", "state": "processed", "ideas": 1}, "news:brief-the-agent-too": {"id": "news:brief-the-agent-too", "kind": "source", "source_kind": "newsroom", "title": "Brief the agent too", "full_title": "Brief the agent too: the people I talk to work with agents, so what I send has to reach both", "url": "https://newsroom.sgit.ai/articles/brief-the-agent-too.html", "class": "content", "serves": "working-with-agents", "why": "Take the story: a founder gave an article to their agent, which saw the team defending against states while its backups were undone and reset the target to T3. Readers now read through agents.", "date": "2026-10-11", "state": "mined", "ideas": 1}, "news:bringing-my-past-work-back": {"id": "news:bringing-my-past-work-back", "kind": "source", "source_kind": "newsroom", "title": "Bringing my past work back", "full_title": "Bringing my past work back: a daily worker that turns eighteen years of essays, talks, posts and tools into linkable articles, and why every team needs one", "url": "https://newsroom.sgit.ai/articles/bringing-my-past-work-back.html", "class": "content", "serves": "graphs-memory", "why": "Take the back-catalogue inventory (103 essays, 1,289 blog posts, 65 decks, 221 videos) and the point that work you cannot link is lost: talk to your future self.", "date": "2026-10-18", "state": "mined", "ideas": 1}, "news:case-law-for-agents": {"id": "news:case-law-for-agents", "kind": "source", "source_kind": "newsroom", "title": "Case law for agents", "full_title": "Case law for agents: principles from the top, precedent from the cases, and how a decision earns its way into code", "url": "https://newsroom.sgit.ai/articles/case-law-for-agents.html", "class": "context", "serves": "controlling-your-agent", "why": "Precedent-driven decision policies; background on how a decision earns its way into code.", "date": "2026-10-17", "state": "background"}, "news:cedar-and-the-policy-vault": {"id": "news:cedar-and-the-policy-vault", "kind": "source", "source_kind": "newsroom", "title": "Cedar and the policy vault", "full_title": "Cedar and the policy vault: a debrief on the policy language agents are adopting, where our behaviour policies and sgit vaults meet it, and a brief for the MVP", "url": "https://newsroom.sgit.ai/articles/cedar-and-the-policy-vault.html", "class": "skip", "serves": "", "why": "Cedar policy-language product brief.", "date": "2026-10-14", "state": "skipped"}, "news:chainguard-mapped": {"id": "news:chainguard-mapped", "kind": "source", "source_kind": "newsroom", "title": "Chainguard, mapped", "full_title": "Chainguard, mapped: what it builds, what it publishes, how far up the stack its context goes, and where an open behaviour policy and an encrypted vault could plug in", "url": "https://newsroom.sgit.ai/articles/chainguard-mapped.html", "class": "skip", "serves": "", "why": "Company map, supply-chain specialist depth.", "date": "2026-10-14", "state": "skipped"}, "news:chat-on-a-static-site": {"id": "news:chat-on-a-static-site", "kind": "source", "source_kind": "newsroom", "title": "A chat box on a site with no server, the plan, and the trade it makes", "full_title": "A chat box on a site with no server, the plan, and the trade it makes", "url": "https://newsroom.sgit.ai/articles/chat-on-a-static-site.html", "class": "content", "serves": "building-blocks", "why": "Take the three honest tiers for a chat box with no server (a local matcher, a key in the reader's browser, a vault app with a bridge) and the fact that only one of them is free.", "date": "2026-08-27", "state": "mined", "ideas": 4}, "news:cloudflare-as-lego-blocks": {"id": "news:cloudflare-as-lego-blocks", "kind": "source", "source_kind": "newsroom", "title": "Cloudflare as Lego blocks", "full_title": "Cloudflare as Lego blocks: what a non-specialist can build on it in October 2026, and an sgit vault in 83 lines", "url": "https://newsroom.sgit.ai/articles/cloudflare-as-lego-blocks.html", "class": "bring", "serves": "building-blocks", "why": "The non-specialist's map of free cloud building blocks (static hosting, Workers 100,000 requests a day, R2, free models) assembled once with an agent; answers AWS and serverless outlines.", "date": "2026-10-18", "state": "processed", "ideas": 2}, "news:code-review-as-a-fractal-semantic-graph": {"id": "news:code-review-as-a-fractal-semantic-graph", "kind": "source", "source_kind": "newsroom", "title": "Code review as a fractal semantic graph", "full_title": "Code review as a fractal semantic graph: source code is already one, and the review should read every layer of it", "url": "https://newsroom.sgit.ai/articles/code-review-as-a-fractal-semantic-graph.html", "class": "bring", "serves": "graphs-memory", "why": "Source code is already a fractal semantic graph, from stories down to the syntax tree; a refactor moves the bottom and leaves the top still. Map.json uses it for TDD and AST; it gives a newcomer a way to read code they did not write.", "date": "2026-10-03", "state": "processed", "ideas": 4}, "news:commanders-intent-is-a-behaviour-policy": {"id": "news:commanders-intent-is-a-behaviour-policy", "kind": "source", "source_kind": "newsroom", "title": "Commander's intent is a behaviour policy", "full_title": "Commander's intent is a behaviour policy: Sondera's argument in our words, the business layer above it, and five of our rules compiled to Cedar and tested", "url": "https://newsroom.sgit.ai/articles/commanders-intent-is-a-behaviour-policy.html", "class": "content", "serves": "controlling-your-agent", "why": "Take 'agents do not go rogue; they follow instructions and fill the gaps' and commander's intent: write the objective and its limits together.", "date": "2026-10-14", "state": "to-mine"}, "news:connector-twin-before-you-deploy-an-agent": {"id": "news:connector-twin-before-you-deploy-an-agent", "kind": "source", "source_kind": "newsroom", "title": "Before you give an agent a connector, give the connector a twin", "full_title": "Before you give an agent a connector, give the connector a twin", "url": "https://newsroom.sgit.ai/articles/connector-twin-before-you-deploy-an-agent.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the three questions to ask before connecting anything: what did the agent do, what did it see when it did it, and which actions can you undo. A twin of the connector (a journal plus a replay) answers all three.", "date": "2026-09-24", "state": "to-mine"}, "news:custom-uis-are-not-the-exception": {"id": "news:custom-uis-are-not-the-exception", "kind": "source", "source_kind": "newsroom", "title": "Custom UIs are not the exception", "full_title": "Custom UIs are not the exception: the inbox in 2026, where every message has its own universe", "url": "https://newsroom.sgit.ai/articles/custom-uis-are-not-the-exception.html", "class": "content", "serves": "everyone-is-a-developer", "why": "Take the claim: a custom interface for each moment is now how interfaces get made, so building your own UI is normal, not exotic.", "date": "2026-10-01", "state": "mined", "ideas": 1}, "news:dark-mode-and-four-more": {"id": "news:dark-mode-and-four-more", "kind": "source", "source_kind": "newsroom", "title": "Dark mode, and four more", "full_title": "Dark mode, and four more: five themes for the newsroom, chosen once and kept in your browser", "url": "https://newsroom.sgit.ai/articles/dark-mode-and-four-more.html", "class": "skip", "serves": "", "why": "Newsroom theming implementation.", "date": "2026-10-13", "state": "skipped"}, "news:encrypted-memory-for-isolated-agents": {"id": "news:encrypted-memory-for-isolated-agents", "kind": "source", "source_kind": "newsroom", "title": "Encrypted memory for agents that run somewhere else", "full_title": "Encrypted memory for agents that run somewhere else: sgit deployment patterns, from a Mac mini to Kubernetes", "url": "https://newsroom.sgit.ai/articles/encrypted-memory-for-isolated-agents.html", "class": "context", "serves": "graphs-memory", "why": "Background for the agents: sgit deployment patterns, and the rule of one vault per trust boundary.", "date": "2026-10-08", "state": "background"}, "news:ephemeral-town-planner-services": {"id": "news:ephemeral-town-planner-services", "kind": "source", "source_kind": "newsroom", "title": "Ephemeral town planner services", "full_title": "Ephemeral town planner services: a better name than serverless, now that serverless includes things that bill you by the hour", "url": "https://newsroom.sgit.ai/articles/ephemeral-town-planner-services.html", "class": "bring", "serves": "building-blocks", "why": "Explains serverless with Wardley's vocabulary and a test anyone can apply ('if it bills you by the hour when idle it is not serverless'); answers the Serverless and Micro-services outlines.", "date": "2026-10-18", "state": "processed", "ideas": 4}, "news:every-link-points-back": {"id": "news:every-link-points-back", "kind": "source", "source_kind": "newsroom", "title": "Every link points back", "full_title": "Every link points back: 566 links between 105 articles, 15 that point forward, and why an article should know what came next and what corrected it", "url": "https://newsroom.sgit.ai/articles/every-link-points-back.html", "class": "context", "serves": "facts-and-the-record", "why": "Links point back in time (551 of 566); background for how the book's chapters should carry forward links and corrections.", "date": "2026-10-13", "state": "background"}, "news:every-mistake-added-a-rule": {"id": "news:every-mistake-added-a-rule", "kind": "source", "source_kind": "newsroom", "title": "Every mistake added a rule", "full_title": "Every mistake added a rule: complexity, agents, and the way back to shipping", "url": "https://newsroom.sgit.ai/articles/every-mistake-added-a-rule.html", "class": "bring", "serves": "working-with-agents", "why": "The trap a new agent operator falls into: every mistake becomes a rule, the prompt grows, compaction comes sooner and new mistakes follow. The way out is small, tested, shipped components that no longer need a rule, plus short sessions. Speaks to the \"when the agent is wrong\" gap.", "date": "2026-10-08", "state": "processed", "ideas": 1}, "news:every-risk-is-already-accepted": {"id": "news:every-risk-is-already-accepted", "kind": "source", "source_kind": "newsroom", "title": "Every risk is already accepted. The only question is by whom, and for how long.", "full_title": "Every risk is already accepted. The only question is by whom, and for how long.", "url": "https://newsroom.sgit.ai/articles/every-risk-is-already-accepted.html", "class": "content", "serves": "security-agent-era", "why": "Take the quote: \"Every risk is already accepted. The only question is by whom, and for how long.\"", "date": "2026-09-24", "state": "to-mine"}, "news:explorer-coding": {"id": "news:explorer-coding", "kind": "source", "source_kind": "newsroom", "title": "Explorer coding", "full_title": "Explorer coding: a better name for what people call vibe coding, what it is good for, and the handover to villagers and town planners before anyone depends on it", "url": "https://newsroom.sgit.ai/articles/explorer-coding.html", "class": "bring", "serves": "explorers-villagers-town-planners", "why": "Defines explorer coding (what is called vibe coding) and the handover to villagers and town planners: the frame of the whole edition.", "date": "2026-10-16", "state": "processed", "ideas": 6}, "news:explorer-to-villager-newsroom": {"id": "news:explorer-to-villager-newsroom", "kind": "source", "source_kind": "newsroom", "title": "Go slow to go fast", "full_title": "Go slow to go fast: moving the newsroom from an explorer project to a villager one, with the brief to do it", "url": "https://newsroom.sgit.ai/articles/explorer-to-villager-newsroom.html", "class": "bring", "serves": "explorers-villagers-town-planners", "why": "A worked handover with real numbers: about 2,700 lines of live reader code, 433 lines of tests the workflow never runs, two upstreams and no CSP; the fix is go slow to go fast, a pure refactor proved by identical bytes, then the explorer-to-villager phases. Fills the testing gap with a story.", "date": "2026-10-11", "state": "processed", "ideas": 2}, "news:firing-journalists": {"id": "news:firing-journalists", "kind": "source", "source_kind": "newsroom", "title": "Firing journalists is the worst thing a publication can do", "full_title": "Firing journalists is the worst thing a publication can do: what a hiring decision says about where a publisher is going, and who to hire instead", "url": "https://newsroom.sgit.ai/articles/firing-journalists.html", "class": "content", "serves": "getting-the-job", "why": "Take the line \"what you measure is what you become\" and the reading of hiring decisions as a statement of where an employer is going, a lens a job seeker can use on any company.", "date": "2026-10-12", "state": "to-mine"}, "news:fix-the-page-yourself": {"id": "news:fix-the-page-yourself", "kind": "source", "source_kind": "newsroom", "title": "Fix the page yourself", "full_title": "Fix the page yourself: the bookmarklet trick from my security days, a page API every site should publish, and why the next user experience is the one the user customises, with six fixes running on this newsroom", "url": "https://newsroom.sgit.ai/articles/fix-the-page-yourself.html", "class": "content", "serves": "security-agent-era", "why": "Take the bookmarklet story from a security assessment: the business owner liked the quick UI more than the exploit; the next UX is the one the user customises.", "date": "2026-10-17", "state": "mined", "ideas": 1}, "news:footprint-and-blast-radius": {"id": "news:footprint-and-blast-radius", "kind": "source", "source_kind": "newsroom", "title": "Footprint and blast radius", "full_title": "Footprint and blast radius: what the agent actually did, and what it would have cost", "url": "https://newsroom.sgit.ai/articles/footprint-and-blast-radius.html", "class": "bring", "serves": "human-in-the-loop", "why": "Adds \"footprint\" (what the agent actually did, read from the record and compared with the mandate) beside blast radius (what full use of a reach would cost, and whether there is a way back). Two words a newcomer can use about any agent they run.", "date": "2026-10-02", "state": "processed", "ideas": 1}, "news:four-frameworks-one-agent": {"id": "news:four-frameworks-one-agent", "kind": "source", "source_kind": "newsroom", "title": "Four frameworks, one agent", "full_title": "Four frameworks, one agent: iason's comparison of the OECD classification, the NIST AI RMF, Japan's guidelines and the EU AI Act, read against what runs here, with the evidence and the graphs", "url": "https://newsroom.sgit.ai/articles/four-frameworks-one-agent.html", "class": "skip", "serves": "", "why": "AI risk framework comparison, governance depth.", "date": "2026-10-13", "state": "skipped"}, "news:free-models-your-own-key": {"id": "news:free-models-your-own-key", "kind": "source", "source_kind": "newsroom", "title": "Free models, your own key", "full_title": "Free models, your own key: what a reader can use from the browser in October 2026, and what they cannot", "url": "https://newsroom.sgit.ai/articles/free-models-your-own-key.html", "class": "bring", "serves": "building-blocks", "why": "Practical map of what a newcomer can use free in October 2026 with their own key (Groq, Gemini AI Studio, Mistral, OpenRouter free models) and what changed.", "date": "2026-10-18", "state": "processed", "ideas": 1}, "news:from-a-spreadsheet-to-a-folder-per-person": {"id": "news:from-a-spreadsheet-to-a-folder-per-person", "kind": "source", "source_kind": "newsroom", "title": "From a spreadsheet to a folder per person", "full_title": "From a spreadsheet to a folder per person: how to run your contacts the way our agents do, with Google Drive, Gmail and the Claude app, before you touch a vault", "url": "https://newsroom.sgit.ai/articles/from-a-spreadsheet-to-a-folder-per-person.html", "class": "bring", "serves": "working-with-agents", "why": "The most beginner-ready how-to in the newsroom: a Drive folder per person, a Claude Project connected to Drive and Gmail, a six-line policy (draft never send, append never rewrite, stay in the folder), a one-afternoon migration and five exercises. Fills the workspace gap with tools a student already has.", "date": "2026-10-12", "state": "processed", "ideas": 2}, "news:from-send-to-sgit": {"id": "news:from-send-to-sgit", "kind": "source", "source_kind": "newsroom", "title": "From sending a file to sgit", "full_title": "From sending a file to sgit: eight months of SG/Send, told by its own briefs and commits, and how a file-sharing service became encrypted version control and vaults", "url": "https://newsroom.sgit.ai/articles/from-send-to-sgit.html", "class": "content", "serves": "be-a-founder", "why": "Take 'the technology worked; the use case was not there yet' ('users buy credits, test once, and don't come back') and the 22-minute feature; plus the record correcting memory.", "date": "2026-10-15", "state": "mined", "ideas": 5}, "news:future-of-news-story-vault-not-paywall": {"id": "news:future-of-news-story-vault-not-paywall", "kind": "source", "source_kind": "newsroom", "title": "The future of news is the story vault, not the paywall", "full_title": "The future of news is the story vault, not the paywall", "url": "https://newsroom.sgit.ai/articles/future-of-news-story-vault-not-paywall.html", "class": "skip", "serves": null, "why": "news business model thesis", "date": "2026-09-22", "state": "skipped"}, "news:generation-z-developers-again": {"id": "news:generation-z-developers-again", "kind": "source", "source_kind": "newsroom", "title": "Generation Z Developers (AI edition)", "full_title": "Generation Z Developers (AI edition): the 2018 book that said act like you are part of the company, what it got right, and a new edition for the people I want to help", "url": "https://newsroom.sgit.ai/articles/generation-z-developers-again.html", "class": "context", "serves": "everyone-is-a-developer", "why": "The edition's plan (keep the name, frame with explorers/villagers/town planners, 90 of 138 files outlines); the founding brief for the writing agents.", "date": "2026-10-18", "state": "mined", "ideas": 3}, "news:going-live-with-the-reading-meter": {"id": "news:going-live-with-the-reading-meter", "kind": "source", "source_kind": "newsroom", "title": "Going live with the reading meter", "full_title": "Going live with the reading meter: pay for what you read, go below zero if you like, and the numbers we will check in eight weeks", "url": "https://newsroom.sgit.ai/articles/going-live-with-the-reading-meter.html", "class": "skip", "serves": null, "why": "reading meter launch hypotheses", "date": "2026-10-10", "state": "skipped"}, "news:green-does-not-mean-live": {"id": "news:green-does-not-mean-live", "kind": "source", "source_kind": "newsroom", "title": "Green does not mean live", "full_title": "Green does not mean live", "url": "https://newsroom.sgit.ai/articles/green-does-not-mean-live.html", "class": "bring", "serves": "building-blocks", "why": "\"Shipped is a fact about the reader, not about your repository\": a CI pass is not a release until you have checked what the user actually sees. Seeds the CI/testing section (a first-pass gap) and answers 2018 CI-Testing, SRE and devops.", "date": "2026-08-17", "state": "processed", "ideas": 1}, "news:handing-secrets-to-agents": {"id": "news:handing-secrets-to-agents", "kind": "source", "source_kind": "newsroom", "title": "Handing secrets to agents and browsers", "full_title": "Handing secrets to agents and browsers: SG/Send's next focus, a key pair where the work runs, one-time drops, and a brief for a site that does only this", "url": "https://newsroom.sgit.ai/articles/handing-secrets-to-agents.html", "class": "content", "serves": "security-agent-era", "why": "Take the rule 'the secret goes from the drop into the tool, never into the chat', and that an agent told something is secret sometimes refuses to use it.", "date": "2026-10-15", "state": "mined", "ideas": 1}, "news:hired-for-the-workflow": {"id": "news:hired-for-the-workflow", "kind": "source", "source_kind": "newsroom", "title": "Hired for the workflow", "full_title": "Hired for the workflow: why October 2026 is the moment to get into agentic work, why you are more technical than you think, and how the edge starts with the application", "url": "https://newsroom.sgit.ai/articles/hired-for-the-workflow.html", "class": "bring", "serves": "getting-the-job", "why": "The thesis chapter: October 2026 is the moment; companies need AI operators not model builders; 71% of leaders prefer less experience with AI skills; PwC 62% wage premium; the edge starts with the application.", "date": "2026-10-18", "state": "processed", "ideas": 3}, "news:hooks-are-kernel-code": {"id": "news:hooks-are-kernel-code", "kind": "source", "source_kind": "newsroom", "title": "Hooks are kernel code", "full_title": "Hooks are kernel code: a maturity model, the first ten hooks mapped, and a brief for a hooks site and feed where you pay for state, never to run", "url": "https://newsroom.sgit.ai/articles/hooks-are-kernel-code.html", "class": "context", "serves": "controlling-your-agent", "why": "Hooks maturity model and billing brief; gives agents 'treat a five-line hook like kernel code' and the three questions (power, trifecta legs, sandbox).", "date": "2026-10-14", "state": "background"}, "news:hope-or-enforcement": {"id": "news:hope-or-enforcement", "kind": "source", "source_kind": "newsroom", "title": "Hope or enforcement", "full_title": "Hope or enforcement: one customer service agent, three designs, and who keeps each promise", "url": "https://newsroom.sgit.ai/articles/hope-or-enforcement.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the worked example: one customer-service agent in three designs (one broad model, a harness of tools, narrow agents behind a gateway), where most of the policy moves from hope to boundaries and the token cost falls.", "date": "2026-10-08", "state": "to-mine"}, "news:how-cheap-is-it-to-undo": {"id": "news:how-cheap-is-it-to-undo", "kind": "source", "source_kind": "newsroom", "title": "The human in the loop is a spectrum", "full_title": "The human in the loop is a spectrum: how cheap it is to undo decides where a person belongs, and why the newsroom ships on its own while my email still waits for me", "url": "https://newsroom.sgit.ai/articles/how-cheap-is-it-to-undo.html", "class": "bring", "serves": "human-in-the-loop", "why": "One-way and two-way doors as the test for where a person belongs, with the newsroom shipping 14 releases a day on its own while email still waits; answers the 2018 one-way/two-way doors outline directly.", "date": "2026-10-13", "state": "processed", "ideas": 1}, "news:how-i-work-with-claude": {"id": "news:how-i-work-with-claude", "kind": "source", "source_kind": "newsroom", "title": "How I work with Claude", "full_title": "How I work with Claude: one session per topic, agents with names, and memory you curate", "url": "https://newsroom.sgit.ai/articles/how-i-work-with-claude.html", "class": "bring", "serves": "working-with-agents", "why": "Six habits a beginner can copy on day one: one session per topic, named sessions with @names, an agent is a session with a role.md, memory is what the session reads and you curate it, vaults instead of broad permissions, a policy before every connector. Partly fills the \"workspace from zero\" gap.", "date": "2026-10-09", "state": "processed", "ideas": 3}, "news:how-much-of-this-did-i-write": {"id": "news:how-much-of-this-did-i-write", "kind": "source", "source_kind": "newsroom", "title": "How much of this did I write? The numbers behind twenty articles in four weeks, and what the input actually was", "full_title": "How much of this did I write? The numbers behind twenty articles in four weeks, and what the input actually was", "url": "https://newsroom.sgit.ai/articles/how-much-of-this-did-i-write.html", "class": "bring", "serves": "making-of", "why": "Hard numbers for the making-of part and for the opening frame: 63,000 words in (mostly 35 voice memos), 85,000 out through 122 releases, no article from a one-line prompt; corrections were about direction, not hallucination. \"People with a direction are the input to the loop.\"", "date": "2026-10-05", "state": "processed", "ideas": 2}, "news:how-news-got-here": {"id": "news:how-news-got-here", "kind": "source", "source_kind": "newsroom", "title": "The reader was always the product", "full_title": "The reader was always the product: a corrected history of how news got into this mess", "url": "https://newsroom.sgit.ai/articles/how-news-got-here.html", "class": "skip", "serves": null, "why": "history of news economics", "date": "2026-09-29", "state": "skipped"}, "news:how-the-newsletter-is-made": {"id": "news:how-the-newsletter-is-made", "kind": "source", "source_kind": "newsroom", "title": "How the newsletter is made", "full_title": "How the newsletter is made: twenty-three articles, three issues, and every quote checked, written by the agent that makes it", "url": "https://newsroom.sgit.ai/articles/how-the-newsletter-is-made.html", "class": "content", "serves": "working-with-agents", "why": "Take the method: read every source in full (72,000 words), the build checks quotes word for word, the agent checks what no gate can; and the honest backlog.", "date": "2026-10-18", "state": "to-mine"}, "news:how-the-voice-works": {"id": "news:how-the-voice-works", "kind": "source", "source_kind": "newsroom", "title": "How the voice works", "full_title": "How the voice works: why these articles sound like me, with a section in which Claude explains it from its side", "url": "https://newsroom.sgit.ai/articles/how-the-voice-works.html", "class": "bring", "serves": "publish-in-public", "why": "The voice is four inputs, not a setting: a corpus of 86 articles (51 from voice memos), the memos themselves, seven wording rules learned one correction at a time, and the author reading everything; includes a section in Claude's own words. For the newsroom chapter and the making-of.", "date": "2026-10-12", "state": "processed", "ideas": 4}, "news:how-to-run-synthetic-users": {"id": "news:how-to-run-synthetic-users", "kind": "source", "source_kind": "newsroom", "title": "How to run synthetic users on your own site", "full_title": "How to run synthetic users on your own site: five people who do not exist, a browser, and an afternoon", "url": "https://newsroom.sgit.ai/articles/how-to-run-synthetic-users.html", "class": "bring", "serves": "working-with-agents", "why": "A practical exercise a beginner can do in an afternoon: write five invented people with a situation and a question, let a model drive a real browser as each of them, then rate the findings and order them by cost. User testing without users, and a portfolio piece.", "date": "2026-10-10", "state": "processed", "ideas": 1}, "news:i-just-want-to-buy-the-article": {"id": "news:i-just-want-to-buy-the-article", "kind": "source", "source_kind": "newsroom", "title": "I just want to buy the article", "full_title": "I just want to buy the article: what happened when I tried to pay Harvard Business Review for one piece I wanted to answer, the arithmetic of a subscription, and ten things HBR could sell a reader like me, most of them already running on this newsroom", "url": "https://newsroom.sgit.ai/articles/i-just-want-to-buy-the-article.html", "class": "skip", "serves": "", "why": "Publisher micropayment economics.", "date": "2026-10-17", "state": "skipped"}, "news:i-miss-it": {"id": "news:i-miss-it", "kind": "source", "source_kind": "newsroom", "title": "I miss it, so it is working", "full_title": "I miss it, so it is working: the people who decide the roadmap have to use the product, and the vault the newsroom now needs", "url": "https://newsroom.sgit.ai/articles/i-miss-it.html", "class": "content", "serves": "be-a-founder", "why": "Take the rule that the people who decide the roadmap must use the product, and Dinis's admission that he failed this test with earlier startups. Direction from usage is the scarce part.", "date": "2026-10-11", "state": "mined", "ideas": 4}, "news:if-somebody-built-a-company-on-code-review": {"id": "news:if-somebody-built-a-company-on-code-review", "kind": "source", "source_kind": "newsroom", "title": "If somebody built a company on code review", "full_title": "If somebody built a company on code review: how I would do it, and why it is only now possible", "url": "https://newsroom.sgit.ai/articles/if-somebody-built-a-company-on-code-review.html", "class": "context", "serves": "graphs-memory", "why": "Background for the agents: graphs at every altitude, and code review as a science. Cited in map.json.", "date": "2026-10-05", "state": "processed", "ideas": 4}, "news:inside-the-mesa-ranch-desk": {"id": "news:inside-the-mesa-ranch-desk", "kind": "source", "source_kind": "newsroom", "title": "Inside the Mesa Ranch desk", "full_title": "Inside the Mesa Ranch desk: a page-by-page tour of an observation vault, from the cover to the knowledge graph you can play in time", "url": "https://newsroom.sgit.ai/articles/inside-the-mesa-ranch-desk.html", "class": "skip", "serves": "", "why": "Walkthrough of a journalism vault demo.", "date": "2026-10-15", "state": "skipped"}, "news:inside-the-northstar-twin": {"id": "news:inside-the-northstar-twin", "kind": "source", "source_kind": "newsroom", "title": "Inside the Northstar twin", "full_title": "Inside the Northstar twin: thirteen refunds, four designs, and every decision played back", "url": "https://newsroom.sgit.ai/articles/inside-the-northstar-twin.html", "class": "context", "serves": "controlling-your-agent", "why": "Walkthrough of a deterministic refund twin; agents can borrow its cases ($261 split into three to fit the limit) as exercises.", "date": "2026-10-18", "state": "background"}, "news:introducing-fractal-semantic-graphs": {"id": "news:introducing-fractal-semantic-graphs", "kind": "source", "source_kind": "newsroom", "title": "Fractal Semantic Graphs", "full_title": "Fractal Semantic Graphs: everything connects to everything, and nobody has to share a schema", "url": "https://newsroom.sgit.ai/articles/introducing-fractal-semantic-graphs.html", "class": "bring", "serves": "graphs-memory", "why": "The defining article for \"fractal semantic graph\" (the first pass took the term from knowledge-that-maintains-itself): everything is already a graph in its owner's vocabulary, and a short shared grammar, not a shared schema, links them. Answers 2018 graphs, DSL and DOT language.", "date": "2026-09-20", "state": "processed", "ideas": 2}, "news:journalism-becomes-intelligence": {"id": "news:journalism-becomes-intelligence", "kind": "source", "source_kind": "newsroom", "title": "When journalism becomes intelligence, built", "full_title": "When journalism becomes intelligence, built: an observation desk for one data-center buildout, from an atlas of 78 events to a community impact tracker, in a vault you can open", "url": "https://newsroom.sgit.ai/articles/journalism-becomes-intelligence.html", "class": "content", "serves": "graphs-memory", "why": "Take 'as AI makes content production easier, the advantage comes from how we observe the world' and the decision to make records synthetic rather than fake real ones.", "date": "2026-10-15", "state": "mined", "ideas": 1}, "news:judo-for-small-countries": {"id": "news:judo-for-small-countries", "kind": "source", "source_kind": "newsroom", "title": "Judo for small countries", "full_title": "Judo for small countries: where Portugal, Romania and Estonia can add the most value in AI, and why the race for GPUs is not it", "url": "https://newsroom.sgit.ai/articles/judo-for-small-countries.html", "class": "bring", "serves": "civic-and-history", "why": "For Portugal, Romania or Estonia the GPU race is a commodity layer only capital wins; the opportunity is the plumbing a talented person needs to sell a service to the world (company, cross-border hiring, payment, language, tax). Map.json uses it for civic responsibility; it also shows the young reader where demand will be.", "date": "2026-10-12", "state": "processed", "ideas": 5}, "news:knowing-when-to-stop": {"id": "news:knowing-when-to-stop", "kind": "source", "source_kind": "newsroom", "title": "Knowing when to stop", "full_title": "Knowing when to stop: what experience gives people, and what we have to design into agents", "url": "https://newsroom.sgit.ai/articles/knowing-when-to-stop.html", "class": "bring", "serves": "NEW:direction-is-the-scarce-skill", "why": "Seniority is mostly knowing when to stop (who the attackers are, the phase of the business, the bottleneck, good enough), and agents lack it because their range is the feature. The newcomer's answer is constraints that carry perspective: a mandate, a named stop, narrow scope.", "date": "2026-10-08", "state": "processed", "ideas": 1}, "news:knowledge-that-maintains-itself": {"id": "news:knowledge-that-maintains-itself", "kind": "source", "source_kind": "newsroom", "title": "Knowledge that maintains itself", "full_title": "Knowledge that maintains itself: semantic graphs for an organisation's policies and internal knowledge, briefing people and agents from the graph, and vaults to carry the brief", "url": "https://newsroom.sgit.ai/articles/knowledge-that-maintains-itself.html", "class": "bring", "serves": "graphs-memory", "why": "Graphs as knowledge management: brief people and agents from a graph, not the pile; 'you do not have to get the graph right first, you have to maintain it'; answers the graphs outline.", "date": "2026-10-14", "state": "processed", "ideas": 2}, "news:liquid-content-needs-water": {"id": "news:liquid-content-needs-water", "kind": "source", "source_kind": "newsroom", "title": "Liquid content needs water", "full_title": "Liquid content needs water: liquefy the journalist's notebook, not the finished product", "url": "https://newsroom.sgit.ai/articles/liquid-content-needs-water.html", "class": "skip", "serves": null, "why": "newsroom workflow, journalism industry", "date": "2026-10-07", "state": "skipped"}, "news:memory-is-not-a-spectator-sport": {"id": "news:memory-is-not-a-spectator-sport", "kind": "source", "source_kind": "newsroom", "title": "Memory is not a spectator sport", "full_title": "Memory is not a spectator sport: how a web of open sites, graphs and vaults became the memory for sessions like this one", "url": "https://newsroom.sgit.ai/articles/memory-is-not-a-spectator-sport.html", "class": "bring", "serves": "graphs-memory", "why": "Memory for agents is context management: many context-specific memories, fractal so an agent loads only the altitude it needs, published and open, handed off through vaults, with provenance. Explains why your notes and published work matter to your future self.", "date": "2026-10-03", "state": "processed", "ideas": 8}, "news:move-the-cloud-not-the-code": {"id": "news:move-the-cloud-not-the-code", "kind": "source", "source_kind": "newsroom", "title": "Move the cloud, not the code", "full_title": "Move the cloud, not the code: twins, sovereignty that works in practice, and the migration that pays for itself on the day you switch", "url": "https://newsroom.sgit.ai/articles/move-the-cloud-not-the-code.html", "class": "context", "serves": "civic-and-history", "why": "Background for the agents: cloud twins and sovereignty in practice. Cited in map.json.", "date": "2026-10-12", "state": "processed", "ideas": 5}, "news:my-memory-checked": {"id": "news:my-memory-checked", "kind": "source", "source_kind": "newsroom", "title": "My memory, checked", "full_title": "My memory, checked: thinking out loud in a voice memo, publishing only what the record supports, and why peer review has moved to before publishing", "url": "https://newsroom.sgit.ai/articles/my-memory-checked.html", "class": "bring", "serves": "facts-and-the-record", "why": "Think out loud, publish only what the record supports: 5 claims confirmed, 5 corrected, 2 not found; peer review has moved to before publishing; answers Facts and Talking to yourself.", "date": "2026-10-15", "state": "processed", "ideas": 3}, "news:nineteen-sites": {"id": "news:nineteen-sites", "kind": "source", "source_kind": "newsroom", "title": "Twenty sites in fifteen days, and what that did to the writing", "full_title": "Twenty sites in fifteen days, and what that did to the writing", "url": "https://newsroom.sgit.ai/articles/nineteen-sites.html", "class": "content", "serves": "publish-in-public", "why": "Take the number: twenty sites in fifteen days, as a body of work split so each argument keeps its own history, with an index that starts from the reader's question.", "date": "2026-08-26", "state": "mined", "ideas": 1}, "news:no-server-by-design": {"id": "news:no-server-by-design", "kind": "source", "source_kind": "newsroom", "title": "No server, by design", "full_title": "No server, by design: first I retired the database, now I am retiring the back end", "url": "https://newsroom.sgit.ai/articles/no-server-by-design.html", "class": "bring", "serves": "building-blocks", "why": "A beginner-sized architecture: first retire the database (files), then the back end (encrypted vaults keep the server blind, the app runs in the browser, only commodity products are left on the server), and write down the gaps you accept. Answers 2018 serverless, Hugo and micro-services.", "date": "2026-10-11", "state": "processed", "ideas": 8}, "news:not-a-straight-line": {"id": "news:not-a-straight-line", "kind": "source", "source_kind": "newsroom", "title": "Not a straight line", "full_title": "Not a straight line: working for RiskMandate by working on the newsroom, and why the thinking is never wasted", "url": "https://newsroom.sgit.ai/articles/not-a-straight-line.html", "class": "content", "serves": "NEW:direction-is-the-scarce-skill", "why": "Take the story: the newsroom solved in two days a vault problem that six months of RiskMandate work had not, and \"the thinking is never wasted when it is written down and open source\" (the paused Cyber Boardroom and MyFeeds).", "date": "2026-10-12", "state": "mined", "ideas": 5}, "news:omnichannel-programming": {"id": "news:omnichannel-programming", "kind": "source", "source_kind": "newsroom", "title": "Omnichannel programming", "full_title": "Omnichannel programming: briefs by voice, reviews by voice, previews on the phone, and one shared state underneath, at every stage from explorer to town planner", "url": "https://newsroom.sgit.ai/articles/omnichannel-programming.html", "class": "bring", "serves": "working-with-agents", "why": "How a new generation programs: brief by voice, review by voice, preview on the phone, one shared state (git, vaults, briefs, graphs); 54 messages in, 40 releases out in three days.", "date": "2026-10-15", "state": "processed", "ideas": 1}, "news:on-the-record": {"id": "news:on-the-record", "kind": "source", "source_kind": "newsroom", "title": "On the record", "full_title": "On the record: signed opinions from experts, paid when readers value them, and a share for the people whose ideas an article uses", "url": "https://newsroom.sgit.ai/articles/on-the-record.html", "class": "content", "serves": "facts-and-the-record", "why": "Take the research point that real names did not make comments better, stable identities did, and signed, withdrawable professional opinions as the alternative to comments.", "date": "2026-10-18", "state": "to-mine"}, "news:one-article-five-readers": {"id": "news:one-article-five-readers", "kind": "source", "source_kind": "newsroom", "title": "One article, five readers", "full_title": "One article, five readers: a librarian, a cartographer, a historian, an explainer and a storyteller read the same piece", "url": "https://newsroom.sgit.ai/articles/one-article-five-readers.html", "class": "context", "serves": "making-of", "why": "Background for the agents: the Librarian, Cartographer, Historian, Explainer and Storyteller roles, which can be reused to produce the book.", "date": "2026-10-10", "state": "background"}, "news:one-vault-ten-agents": {"id": "news:one-vault-ten-agents", "kind": "source", "source_kind": "newsroom", "title": "One vault, ten agents, 35,000 objects", "full_title": "One vault, ten agents, 35,000 objects: what sgit does when the repository is big and the clients are many, measured on the vault behind this newsroom", "url": "https://newsroom.sgit.ai/articles/one-vault-ten-agents.html", "class": "skip", "serves": "", "why": "sgit performance measurements.", "date": "2026-10-16", "state": "skipped"}, "news:open-source-is-not-free": {"id": "news:open-source-is-not-free", "kind": "source", "source_kind": "newsroom", "title": "Open source is not free", "full_title": "Open source is not free: who pays to keep the long tail working?", "url": "https://newsroom.sgit.ai/articles/open-source-is-not-free.html", "class": "content", "serves": "open-source", "why": "Take the numbers: 6.99% of Homebrew macOS installs in 30 days (16.66% in a year) are on versions older than the newest three; a 20p card fee dominates any payment under about five pounds.", "date": "2026-10-10", "state": "mined", "ideas": 4}, "news:our-first-pr-in-ruflo": {"id": "news:our-first-pr-in-ruflo", "kind": "source", "source_kind": "newsroom", "title": "Our first PR in Ruflo", "full_title": "Our first PR in Ruflo: an ABP-governed SGit page, merged into ruvnet/ruflo, and the four pieces that got it there", "url": "https://newsroom.sgit.ai/articles/our-first-pr-in-ruflo.html", "class": "content", "serves": "open-source", "why": "Take the first-contribution story: a one-file, 83-line documentation PR merged into a 9,625-commit project because it was exact about what it did not claim.", "date": "2026-10-17", "state": "mined", "ideas": 1}, "news:pay-after-you-read": {"id": "news:pay-after-you-read", "kind": "source", "source_kind": "newsroom", "title": "Pay after you read", "full_title": "Pay after you read: how a reading meter became a working business model in one afternoon, one release at a time", "url": "https://newsroom.sgit.ai/articles/pay-after-you-read.html", "class": "content", "serves": "making-of", "why": "Take the number: a working pay-on-demand publication in seven releases in 3 hours 40 minutes. This is the meter the book's reader uses, and an example of small releases that each grow from using the last one.", "date": "2026-10-10", "state": "to-mine"}, "news:pay-to-keep-your-persona": {"id": "news:pay-to-keep-your-persona", "kind": "source", "source_kind": "newsroom", "title": "Pay to keep your persona", "full_title": "Pay to keep your persona: readers should pay because it helps them, not because they feel they should", "url": "https://newsroom.sgit.ai/articles/pay-to-keep-your-persona.html", "class": "skip", "serves": null, "why": "reader persona pricing argument", "date": "2026-10-10", "state": "skipped"}, "news:paying-after-the-value": {"id": "news:paying-after-the-value", "kind": "source", "source_kind": "newsroom", "title": "Paying after the value", "full_title": "Paying after the value: why a balance that can go negative feels different from a subscription, the psychology behind it, and the experiment this newsroom is running", "url": "https://newsroom.sgit.ai/articles/paying-after-the-value.html", "class": "content", "serves": "be-a-founder", "why": "Take the gym figure ($17 a visit when $10 was available) and pay-after-the-value as a business-model idea a young founder can test cheaply.", "date": "2026-10-14", "state": "mined", "ideas": 3}, "news:places-of-highest-leverage": {"id": "news:places-of-highest-leverage", "kind": "source", "source_kind": "newsroom", "title": "Places of highest leverage", "full_title": "Places of highest leverage: where to focus when the agents can go in every direction, told with three days of real steps", "url": "https://newsroom.sgit.ai/articles/places-of-highest-leverage.html", "class": "bring", "serves": "NEW:direction-is-the-scarce-skill", "why": "When agents can build in any direction, direction is the scarce part: work where the next step moves the needle most and nothing blocks you; start without knowing the end; ship and use each step; walking back and parking are not failure. This is advice for a newcomer, and map.json does not cite it.", "date": "2026-10-12", "state": "processed", "ideas": 1}, "news:policy-as-code-needs-a-policy-first": {"id": "news:policy-as-code-needs-a-policy-first", "kind": "source", "source_kind": "newsroom", "title": "Policy as code needs a policy first", "full_title": "Policy as code needs a policy first: what an agent behaviour policy adds, and how to reverse engineer one from the code, the spreadsheet or the paper you already have", "url": "https://newsroom.sgit.ai/articles/policy-as-code-needs-a-policy-first.html", "class": "context", "serves": "controlling-your-agent", "why": "Policy as code versus behaviour policy; gives agents 'a rule the agent can rewrite is a setting, not a control'.", "date": "2026-10-14", "state": "background"}, "news:portugal-2010-a-challenge": {"id": "news:portugal-2010-a-challenge", "kind": "source", "source_kind": "newsroom", "title": "A web application security challenge to Portugal, 2010", "full_title": "A web application security challenge to Portugal, 2010: my IBWAS keynote in Lisbon, slide by slide, with what came true, what I got wrong and what still stands", "url": "https://newsroom.sgit.ai/articles/portugal-2010-a-challenge.html", "class": "content", "serves": "civic-and-history", "why": "Take what came true in 16 years (liability, disclosure, HTTPS) and the lesson that regulation, not fear, moved governments; answers Stories to tell and Civic responsibility.", "date": "2026-10-16", "state": "mined", "ideas": 1}, "news:portugal-2016-hacking-portugal": {"id": "news:portugal-2016-hacking-portugal", "kind": "source", "source_kind": "newsroom", "title": "Hacking Portugal, 2016", "full_title": "Hacking Portugal, 2016: my BSidesLisbon keynote and the book that stopped at 95%, slide by slide, with what holds ten years later and what a new edition needs", "url": "https://newsroom.sgit.ai/articles/portugal-2016-hacking-portugal.html", "class": "content", "serves": "civic-and-history", "why": "Take 'to hack means to solve problems', the Portuguese Hacking Service for 15 to 21 year olds, and that agents make a small country leading in code more possible.", "date": "2026-10-16", "state": "mined", "ideas": 2}, "news:portugal-2024-genai-in-portuguese": {"id": "news:portugal-2024-genai-in-portuguese", "kind": "source", "source_kind": "newsroom", "title": "GenAI in Portuguese, 2024", "full_title": "GenAI in Portuguese, 2024: my OWASP Global AppSec talk in Lisbon, the first public demo of The Cyber Boardroom, slide by slide, with what two years of agents have confirmed and changed", "url": "https://newsroom.sgit.ai/articles/portugal-2024-genai-in-portuguese.html", "class": "content", "serves": "everyone-is-a-developer", "why": "Take the quiz: the sixth most powerful programming language is Portuguese, because prompts are natural language; your own language is now a programming language.", "date": "2026-10-16", "state": "mined", "ideas": 1}, "news:portugal-and-europe-2025": {"id": "news:portugal-and-europe-2025", "kind": "source", "source_kind": "newsroom", "title": "Portugal and Europe, 2025", "full_title": "Portugal and Europe, 2025: five essays on Portuguese as a programming language, an open-source sovereign cloud, regulation as graphs and Europe's chance in GenAI, and how they read a year and a half later", "url": "https://newsroom.sgit.ai/articles/portugal-and-europe-2025.html", "class": "context", "serves": "civic-and-history", "why": "Sovereignty and regulation as graphs; background for a civic-responsibility then-now, with 'sovereignty is the ability to move'.", "date": "2026-10-16", "state": "background"}, "news:price-it-then-give-it-away": {"id": "news:price-it-then-give-it-away", "kind": "source", "source_kind": "newsroom", "title": "Price it, then give it away", "full_title": "Price it, then give it away: the early access programme as the next step after \"do they miss it\"", "url": "https://newsroom.sgit.ai/articles/price-it-then-give-it-away.html", "class": "content", "serves": "be-a-founder", "why": "Take the move: a price says what you think something is worth; giving it away at that price to people who know you is the cleanest test of whether you are right.", "date": "2026-10-02", "state": "mined", "ideas": 5}, "news:proof-behind-the-claim": {"id": "news:proof-behind-the-claim", "kind": "source", "source_kind": "newsroom", "title": "The proof is two clicks behind the claim, what the homepage gets wrong, and the fix", "full_title": "The proof is two clicks behind the claim, what the homepage gets wrong, and the fix", "url": "https://newsroom.sgit.ai/articles/proof-behind-the-claim.html", "class": "skip", "serves": null, "why": "sgit homepage critique", "date": "2026-09-07", "state": "skipped"}, "news:proof-moved-up": {"id": "news:proof-moved-up", "kind": "source", "source_kind": "newsroom", "title": "The proof moved up, the homepage after the rebuild, next to the before pictures", "full_title": "The proof moved up, the homepage after the rebuild, next to the before pictures", "url": "https://newsroom.sgit.ai/articles/proof-moved-up.html", "class": "skip", "serves": null, "why": "sgit homepage rebuild notes", "date": "2026-09-07", "state": "skipped"}, "news:re-anchoring-agent-behaviour-policies": {"id": "news:re-anchoring-agent-behaviour-policies", "kind": "source", "source_kind": "newsroom", "title": "Re-anchoring", "full_title": "Re-anchoring: keeping an agent's rules alive through every summary, and a canary that shows when they are not", "url": "https://newsroom.sgit.ai/articles/re-anchoring-agent-behaviour-policies.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the number: this site's session was summarised 18 times in a month, keeping about 1.7% each time. Rules have to be re-read from a file after each summary (a SessionStart hook), not remembered.", "date": "2026-10-10", "state": "mined", "ideas": 3}, "news:replicating-the-agentic-inbox": {"id": "news:replicating-the-agentic-inbox", "kind": "source", "source_kind": "newsroom", "title": "Replicating the agentic inbox", "full_title": "Replicating the agentic inbox: a walkthrough from one Claude session to a team of agents that never press send", "url": "https://newsroom.sgit.ai/articles/replicating-the-agentic-inbox.html", "class": "bring", "serves": "working-with-agents", "why": "The how-to the first pass could not find: one Claude session, then roles that talk in files, the agent gets its own Workspace mailbox and its own Claude seat, every email a draft a person sends. Seeds the workspace chapter and the concept \"drafts, never send\".", "date": "2026-10-02", "state": "processed", "ideas": 3}, "news:research-delivered-as-a-vault": {"id": "news:research-delivered-as-a-vault", "kind": "source", "source_kind": "newsroom", "title": "Research, delivered as a vault", "full_title": "Research, delivered as a vault: what companies that sell research could do with fractal graphs, behaviour policies for AI-enabled products, and evaluations run by a governed agent hive", "url": "https://newsroom.sgit.ai/articles/research-delivered-as-a-vault.html", "class": "skip", "serves": "", "why": "Research-firm product idea.", "date": "2026-10-16", "state": "skipped"}, "news:reviews-on-the-record": {"id": "news:reviews-on-the-record", "kind": "source", "source_kind": "newsroom", "title": "Reviews on the record", "full_title": "Reviews on the record: other models, the editor and the desk check every article, and never the same text twice", "url": "https://newsroom.sgit.ai/articles/reviews-on-the-record.html", "class": "bring", "serves": "facts-and-the-record", "why": "Review as a record: criteria first, other models and people review, every finding answered (fixed, declined with reason, open); the same discipline this book uses; answers Being criticized is a privilege.", "date": "2026-10-18", "state": "processed", "ideas": 2}, "news:rfc-0001-public-key-cryptography-for-sgit": {"id": "news:rfc-0001-public-key-cryptography-for-sgit", "kind": "source", "source_kind": "newsroom", "title": "RFC 0001", "full_title": "RFC 0001: two ways to add public-key cryptography to sgit, and the questions we want you to answer", "url": "https://newsroom.sgit.ai/articles/rfc-0001-public-key-cryptography-for-sgit.html", "class": "skip", "serves": null, "why": "sgit cryptography design RFC", "date": "2026-10-09", "state": "skipped"}, "news:riskmandate-ten-questions": {"id": "news:riskmandate-ten-questions", "kind": "source", "source_kind": "newsroom", "title": "Ten hard questions for RiskMandate, answered", "full_title": "Ten hard questions for RiskMandate, answered: the mandate, the reach, the gap, and what we are deliberately not", "url": "https://newsroom.sgit.ai/articles/riskmandate-ten-questions.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: mandate, grant, delta and barriers, the four objects, defined precisely.", "date": "2026-10-09", "state": "processed", "ideas": 6}, "news:saas-apocalypse-decided-by-inertia-not-by-ai": {"id": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "source", "source_kind": "newsroom", "title": "The SaaS apocalypse will be decided by inertia, not by AI", "full_title": "The SaaS apocalypse will be decided by inertia, not by AI", "url": "https://newsroom.sgit.ai/articles/saas-apocalypse-decided-by-inertia-not-by-ai.html", "class": "content", "serves": "explorers-villagers-town-planners", "why": "Take the argument: AI is available to both sides, so inertia decides who wins (where a company sits on the evolution axis and how much past success it has to protect). This is why newcomers have room.", "date": "2026-09-21", "state": "mined", "ideas": 6}, "news:scion-and-sgit": {"id": "news:scion-and-sgit", "kind": "source", "source_kind": "newsroom", "title": "Scion and sgit", "full_title": "Scion and sgit: Anthropic rebuilt source control for agents inside one company, and an open-source encrypted version already does much of the same thing outside it", "url": "https://newsroom.sgit.ai/articles/scion-and-sgit.html", "class": "skip", "serves": "", "why": "Version-control internals comparison.", "date": "2026-10-16", "state": "skipped"}, "news:scrolled-is-not-read": {"id": "news:scrolled-is-not-read", "kind": "source", "source_kind": "newsroom", "title": "Scrolled is not read", "full_title": "Scrolled is not read: what the reading meter measures, what it should, highlights you can keep, and the page as the reader's own graph", "url": "https://newsroom.sgit.ai/articles/scrolled-is-not-read.html", "class": "skip", "serves": "", "why": "Reading-meter engineering brief.", "date": "2026-10-16", "state": "skipped"}, "news:search-as-navigation": {"id": "news:search-as-navigation", "kind": "source", "source_kind": "newsroom", "title": "Search as navigation", "full_title": "Search as navigation: walking the newsroom's graph with no model, and why a clean graph should beat vectors", "url": "https://newsroom.sgit.ai/articles/search-as-navigation.html", "class": "content", "serves": "graphs-memory", "why": "Take the taxonomy debt numbers (663 tags, 396 used once) and the hypothesis that a clean graph needs less model; answers the Google Search and StackOverflow outlines.", "date": "2026-10-18", "state": "to-mine"}, "news:secrets-on-public-keys": {"id": "news:secrets-on-public-keys", "kind": "source", "source_kind": "newsroom", "title": "secrets.sgit.ai on public keys", "full_title": "secrets.sgit.ai on public keys: no more shared keys, eight ways a secret moves, a vault for the private key, and the commercial service it becomes", "url": "https://newsroom.sgit.ai/articles/secrets-on-public-keys.html", "class": "skip", "serves": "", "why": "secrets.sgit.ai product design.", "date": "2026-10-15", "state": "skipped"}, "news:sell-dont-issue": {"id": "news:sell-dont-issue", "kind": "source", "source_kind": "newsroom", "title": "Sell, don't issue", "full_title": "Sell, don't issue: a funding model for founders who have already won, where the investor buys the founder's shares, the founder lends the company what it needs, and open source keeps everyone honest", "url": "https://newsroom.sgit.ai/articles/sell-dont-issue.html", "class": "context", "serves": "be-a-founder", "why": "Founder secondary-sale funding model; too advanced for a newcomer, background for the founder chapter.", "date": "2026-10-16", "state": "processed", "ideas": 4}, "news:send-an-agent-not-a-spreadsheet": {"id": "news:send-an-agent-not-a-spreadsheet", "kind": "source", "source_kind": "newsroom", "title": "Send an agent, not a spreadsheet", "full_title": "Send an agent, not a spreadsheet: the next generation of software due diligence, and why the companies that stopped reading their code are about to be asked about it", "url": "https://newsroom.sgit.ai/articles/send-an-agent-not-a-spreadsheet.html", "class": "context", "serves": "security-agent-era", "why": "Background for the agents: due diligence done by an agent instead of a questionnaire.", "date": "2026-10-05", "state": "processed", "ideas": 4}, "news:seven-vaults-one-method": {"id": "news:seven-vaults-one-method", "kind": "source", "source_kind": "newsroom", "title": "Seven vaults, one method", "full_title": "Seven vaults, one method", "url": "https://newsroom.sgit.ai/articles/seven-vaults-one-method.html", "class": "content", "serves": "security-agent-era", "why": "Take the rule: classify the credential before it touches anything. Each step of the method was learned by getting something wrong first.", "date": "2026-08-19", "state": "mined", "ideas": 1}, "news:sgit-actions-side-by-side": {"id": "news:sgit-actions-side-by-side", "kind": "source", "source_kind": "newsroom", "title": "sgit in GitHub Actions, side by side", "full_title": "sgit in GitHub Actions, side by side: a showcase repository and site that runs four ways of moving a vault between jobs on every run, measured, with a budget for its LLM steps", "url": "https://newsroom.sgit.ai/articles/sgit-actions-side-by-side.html", "class": "skip", "serves": "", "why": "sgit CI showcase brief.", "date": "2026-10-14", "state": "skipped"}, "news:sgit-in-a-ci-pipeline": {"id": "news:sgit-in-a-ci-pipeline", "kind": "source", "source_kind": "newsroom", "title": "sgit in a CI pipeline", "full_title": "sgit in a CI pipeline: encrypted, versioned data in and out of GitHub Actions, between its jobs, through write-only lanes, and a key for every job", "url": "https://newsroom.sgit.ai/articles/sgit-in-a-ci-pipeline.html", "class": "context", "serves": "building-blocks", "why": "CI data patterns with vaults; background for the CI outline (artifacts 90 days, caches 10 GB, outputs 1 MB).", "date": "2026-10-14", "state": "background"}, "news:sgit-is-a-standard": {"id": "news:sgit-is-a-standard", "kind": "source", "source_kind": "newsroom", "title": "sgit is a standard, not a server", "full_title": "sgit is a standard, not a server: everything in a vault is one hash away, any storage can serve it, and the server is the least interesting part", "url": "https://newsroom.sgit.ai/articles/sgit-is-a-standard.html", "class": "content", "serves": "building-blocks", "why": "Take 'Git won not because of GitHub but because it is a standard'; answers the Git outline.", "date": "2026-10-16", "state": "mined", "ideas": 1}, "news:short-punchy-and-co-written": {"id": "news:short-punchy-and-co-written", "kind": "source", "source_kind": "newsroom", "title": "Short, punchy, and co-written with Claude", "full_title": "Short, punchy, and co-written with Claude: what Generation Z Developers (AI edition) has to be, and how we show it is not AI slop", "url": "https://newsroom.sgit.ai/articles/short-punchy-and-co-written.html", "class": "context", "serves": "making-of", "why": "The book's style contract: short and punchy, credit Claude and show the memo-to-word ratio, meet the slop suspicion with evidence, include a Google Workspace / agentic email chapter.", "date": "2026-10-18", "state": "mined", "ideas": 3}, "news:six-agents-one-inbox": {"id": "news:six-agents-one-inbox", "kind": "source", "source_kind": "newsroom", "title": "Six agents, one inbox", "full_title": "Six agents, one inbox: what a real multi-agent setup taught me about access policies", "url": "https://newsroom.sgit.ai/articles/six-agents-one-inbox.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the line: \"the policy is exactly as strong as the row that says the agent has been told\". Write the policy as a table with an enforcement column.", "date": "2026-09-29", "state": "to-mine"}, "news:sixteen-notes-i-did-not-want-to-lose": {"id": "news:sixteen-notes-i-did-not-want-to-lose", "kind": "source", "source_kind": "newsroom", "title": "Sixteen notes I did not want to lose", "full_title": "Sixteen notes I did not want to lose: a request to send from any browser to my vault, why identity is still this hard, and how two more wires became a product line", "url": "https://newsroom.sgit.ai/articles/sixteen-notes-i-did-not-want-to-lose.html", "class": "content", "serves": "graphs-memory", "why": "Take the moment notes in a browser became 'pieces of intelligence' worth keeping, and 'users will accept friction once when the value is clear; they will not accept losing their data'.", "date": "2026-10-13", "state": "to-mine"}, "news:skill-behaviour-policy": {"id": "news:skill-behaviour-policy", "kind": "source", "source_kind": "newsroom", "title": "A skill behaviour policy", "full_title": "A skill behaviour policy: what a skill says it does, what it can do, what it is given, and the control that closes the gap, measured on 899 skills", "url": "https://newsroom.sgit.ai/articles/skill-behaviour-policy.html", "class": "content", "serves": "security-agent-era", "why": "Take the 899-skills measurement and the honest skill with the whole lethal trifecta (chat history in, HackerNews in, Slack out) that still needs a control; check skills before you install them.", "date": "2026-10-14", "state": "mined", "ideas": 1}, "news:software-vendors-as-villagers": {"id": "news:software-vendors-as-villagers", "kind": "source", "source_kind": "newsroom", "title": "Software vendors should become villagers and town planners", "full_title": "Software vendors should become villagers and town planners: let users explore on top of the product, sell them the maintenance of what they build, and use Firefox as the example of what happens if you don't", "url": "https://newsroom.sgit.ai/articles/software-vendors-as-villagers.html", "class": "bring", "serves": "explorers-villagers-town-planners", "why": "Wardley positioning for products: users explore on top, vendors sell the maintenance; shows why the frame matters to anyone building or buying software.", "date": "2026-10-16", "state": "processed", "ideas": 1}, "news:sovereignty-is-the-ability-to-move": {"id": "news:sovereignty-is-the-ability-to-move", "kind": "source", "source_kind": "newsroom", "title": "Sovereignty is the ability to move", "full_title": "Sovereignty is the ability to move: play where the ball is going, take away the dot, and keep a twin that works", "url": "https://newsroom.sgit.ai/articles/sovereignty-is-the-ability-to-move.html", "class": "content", "serves": "civic-and-history", "why": "Take the test: on a Wardley map, remove each dot and follow the blast radius up to the customer; sovereignty means being able to move, which is about playing where the ball is going.", "date": "2026-10-12", "state": "mined", "ideas": 1}, "news:stop-the-bleeding-then-ask-for-it-back": {"id": "news:stop-the-bleeding-then-ask-for-it-back", "kind": "source", "source_kind": "newsroom", "title": "Stop the bleeding, then ask for it back", "full_title": "Stop the bleeding, then ask for it back: a helper, an agent and a friendly letter for the subscriptions you keep and do not use", "url": "https://newsroom.sgit.ai/articles/stop-the-bleeding-then-ask-for-it-back.html", "class": "content", "serves": "be-a-founder", "why": "Take it as a worked example of a small agent-run service a freelancer can operate (agent drives the browser; the person types passwords and sends drafts; paid 10% of savings).", "date": "2026-10-13", "state": "to-mine"}, "news:story-vault-meets-reader-skills": {"id": "news:story-vault-meets-reader-skills", "kind": "source", "source_kind": "newsroom", "title": "Story vault underneath, Reader Skills on top", "full_title": "Story vault underneath, Reader Skills on top: why local journalism has the most to gain", "url": "https://newsroom.sgit.ai/articles/story-vault-meets-reader-skills.html", "class": "skip", "serves": null, "why": "local journalism product argument", "date": "2026-10-07", "state": "skipped"}, "news:supply-chain-of-vaults": {"id": "news:supply-chain-of-vaults", "kind": "source", "source_kind": "newsroom", "title": "A supply chain of vaults", "full_title": "A supply chain of vaults: how GenAI, open data and small custom tools could bring the price of food down", "url": "https://newsroom.sgit.ai/articles/supply-chain-of-vaults.html", "class": "content", "serves": "be-a-founder", "why": "Take the idea: small custom tools built once with GenAI, on open data, could bring the price of food down. An example of where a newcomer's explorer coding could matter.", "date": "2026-09-27", "state": "to-mine"}, "news:system-prompts-as-behaviour-policies": {"id": "news:system-prompts-as-behaviour-policies", "kind": "source", "source_kind": "newsroom", "title": "System prompts as behaviour policies", "full_title": "System prompts as behaviour policies: Claude's published prompt and a leaked ChatGPT one, mapped into rows, a taxonomy of rules, and a JSON file a harness could enforce", "url": "https://newsroom.sgit.ai/articles/system-prompts-as-behaviour-policies.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the count: Claude's published system prompt holds 82 rules, 36 could be held by the harness, 25 stay with the model; a system prompt is a light behaviour policy.", "date": "2026-10-14", "state": "to-mine"}, "news:the-agent-is-the-reader": {"id": "news:the-agent-is-the-reader", "kind": "source", "source_kind": "newsroom", "title": "The agent is the reader", "full_title": "The agent is the reader: why agents will pay for graphs, personas and signed claims, because it is cheaper than not paying", "url": "https://newsroom.sgit.ai/articles/the-agent-is-the-reader.html", "class": "content", "serves": "graphs-memory", "why": "Take the number: measured on five articles, the graph answers in 90% fewer tokens than the prose.", "date": "2026-10-11", "state": "to-mine"}, "news:the-agent-team-as-it-runs": {"id": "news:the-agent-team-as-it-runs", "kind": "source", "source_kind": "newsroom", "title": "The agent team as it runs", "full_title": "The agent team as it runs: one person, twelve agents, encrypted vaults, and a mailbox nobody sends from", "url": "https://newsroom.sgit.ai/articles/the-agent-team-as-it-runs.html", "class": "content", "serves": "working-with-agents", "why": "Take the picture: one person and twelve Claude agents, each a role on its own account, vaults as the only memory, a mailbox nobody sends from, identity and encryption as the strong barriers and policy as the weak one.", "date": "2026-10-06", "state": "to-mine"}, "news:the-agents-write-too": {"id": "news:the-agents-write-too", "kind": "source", "source_kind": "newsroom", "title": "The agents write too", "full_title": "The agents write too: lessons, debriefs and a page for every agent on the newsroom, and a brief for the conductor that will keep it", "url": "https://newsroom.sgit.ai/articles/the-agents-write-too.html", "class": "bring", "serves": "working-with-agents", "why": "How to run a team of focused agent sessions: one role each, lessons as memory, debriefs, a conductor; the reader's first multi-agent setup.", "date": "2026-10-14", "state": "processed", "ideas": 1}, "news:the-ai-conference-read-for-governance": {"id": "news:the-ai-conference-read-for-governance", "kind": "source", "source_kind": "newsroom", "title": "The AI Conference 2026, read for agent governance", "full_title": "The AI Conference 2026, read for agent governance: six claims traced, five disagreements, and what the speaker notes say that the slides do not", "url": "https://newsroom.sgit.ai/articles/the-ai-conference-read-for-governance.html", "class": "content", "serves": "facts-and-the-record", "why": "Take the fact-check: of six claims in a widely shared post three traced to sources and three did not; the best fact-checking was in a speaker's notes.", "date": "2026-10-16", "state": "to-mine"}, "news:the-ai-governance-stack-as-a-graph": {"id": "news:the-ai-governance-stack-as-a-graph", "kind": "source", "source_kind": "newsroom", "title": "The AI governance stack, as a graph", "full_title": "The AI governance stack, as a graph: an answer to Hari Kota, built", "url": "https://newsroom.sgit.ai/articles/the-ai-governance-stack-as-a-graph.html", "class": "skip", "serves": null, "why": "governance stack reply, enterprise", "date": "2026-10-09", "state": "skipped"}, "news:the-article-remains-a-product": {"id": "news:the-article-remains-a-product", "kind": "source", "source_kind": "newsroom", "title": "The article remains a product", "full_title": "The article remains a product: Jonathan Palmer's four outputs for a newsroom with no human readers, checked against one that runs", "url": "https://newsroom.sgit.ai/articles/the-article-remains-a-product.html", "class": "skip", "serves": null, "why": "newsroom outputs, journalism industry", "date": "2026-10-11", "state": "skipped"}, "news:the-behaviour-policy-is-the-business-logic": {"id": "news:the-behaviour-policy-is-the-business-logic", "kind": "source", "source_kind": "newsroom", "title": "Zoom into an agent's behaviour policy and you find the business logic", "full_title": "Zoom into an agent's behaviour policy and you find the business logic", "url": "https://newsroom.sgit.ai/articles/the-behaviour-policy-is-the-business-logic.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: layered behaviour policies hold business logic that software used to enforce by leaving things out.", "date": "2026-10-07", "state": "processed", "ideas": 3}, "news:the-bridge-followed-to-the-end": {"id": "news:the-bridge-followed-to-the-end", "kind": "source", "source_kind": "newsroom", "title": "The bridge, followed to the end", "full_title": "The bridge, followed to the end: what one local story is worth when it is kept as a graph", "url": "https://newsroom.sgit.ai/articles/the-bridge-followed-to-the-end.html", "class": "skip", "serves": null, "why": "story vault simulation, journalism", "date": "2026-10-07", "state": "skipped"}, "news:the-briefs-so-far": {"id": "news:the-briefs-so-far", "kind": "source", "source_kind": "newsroom", "title": "The briefs so far", "full_title": "The briefs so far: sixty-five things this newsroom has asked of itself, what is built, and where each next session starts", "url": "https://newsroom.sgit.ai/articles/the-briefs-so-far.html", "class": "context", "serves": "working-with-agents", "why": "Inventory of 65 briefs (11 built, 21 partly, 32 not); background on briefs as the unit of work.", "date": "2026-10-18", "state": "mined", "ideas": 2}, "news:the-citizen-developer": {"id": "news:the-citizen-developer", "kind": "source", "source_kind": "newsroom", "title": "The citizen developer is good news", "full_title": "The citizen developer is good news: the spreadsheet grown up, the best briefs ever written, and the handover from explorers to villagers and town planners that makes them last", "url": "https://newsroom.sgit.ai/articles/the-citizen-developer.html", "class": "bring", "serves": "everyone-is-a-developer", "why": "The citizen developer as the spreadsheet grown up, whose working app is the best brief ever written; answers STEM tech stack, Scratch and Thinking as programmer.", "date": "2026-10-14", "state": "processed", "ideas": 3}, "news:the-code-you-do-not-ship": {"id": "news:the-code-you-do-not-ship", "kind": "source", "source_kind": "newsroom", "title": "The code you do not ship", "full_title": "The code you do not ship: why the future of software is removing functionality, and who gets paid to keep it small", "url": "https://newsroom.sgit.ai/articles/the-code-you-do-not-ship.html", "class": "bring", "serves": "security-agent-era", "why": "Code is a liability; Log4j; the minimal viable code path (428 of 1,500 files ran); answers Legacy applications, Refactoring and The future needs you.", "date": "2026-10-18", "state": "processed", "ideas": 1}, "news:the-controllable-founder": {"id": "news:the-controllable-founder", "kind": "source", "source_kind": "newsroom", "title": "The controllable founder", "full_title": "The controllable founder: why investors pick one founder over another who looks just as good, and what record labels taught us about who the commodity is", "url": "https://newsroom.sgit.ai/articles/the-controllable-founder.html", "class": "content", "serves": "be-a-founder", "why": "Take survivorship bias and the hypothesis that investors select for control (half of founders not CEO three years in); a caution for the Be a founder chapter.", "date": "2026-10-16", "state": "mined", "ideas": 4}, "news:the-deck-i-could-not-download": {"id": "news:the-deck-i-could-not-download", "kind": "source", "source_kind": "newsroom", "title": "The deck I could not download", "full_title": "The deck I could not download: an author-first home for presentations, as a business plan somebody else can build", "url": "https://newsroom.sgit.ai/articles/the-deck-i-could-not-download.html", "class": "skip", "serves": null, "why": "presentation platform business plan", "date": "2026-10-06", "state": "skipped"}, "news:the-editors-channel": {"id": "news:the-editors-channel", "kind": "source", "source_kind": "newsroom", "title": "The editor's channel", "full_title": "The editor's channel: what I read, sign off and want changed, sent to the newsroom's agent in a vault", "url": "https://newsroom.sgit.ai/articles/the-editors-channel.html", "class": "context", "serves": "making-of", "why": "Editor key and vault channel; background for how Dinis's comments reach the book's agents.", "date": "2026-10-18", "state": "background"}, "news:the-expert-founders": {"id": "news:the-expert-founders", "kind": "source", "source_kind": "newsroom", "title": "The expert founders", "full_title": "The expert founders: why the next startups will be built by the people who know the problem, and why Europe's slower, sceptical money suits them", "url": "https://newsroom.sgit.ai/articles/the-expert-founders.html", "class": "bring", "serves": "be-a-founder", "why": "Generative AI lets the people who know the problem build it; mean founding age of fastest-growing startups is 45; three years in an industry doubles top-tier success; money too early kills startups.", "date": "2026-10-15", "state": "processed", "ideas": 4}, "news:the-eyeballs-get-cheap": {"id": "news:the-eyeballs-get-cheap", "kind": "source", "source_kind": "newsroom", "title": "The eyeballs get cheap", "full_title": "The eyeballs get cheap: why open source is about to become the most secure software we have, and why secure, sovereign and paid-for meet at the least code in production", "url": "https://newsroom.sgit.ai/articles/the-eyeballs-get-cheap.html", "class": "content", "serves": "open-source", "why": "Take curl's year: AI review first drowned it in noise, then produced hundreds of real fixes; open source is about to become the most secure software.", "date": "2026-10-14", "state": "mined", "ideas": 1}, "news:the-fork-next-door": {"id": "news:the-fork-next-door", "kind": "source", "source_kind": "newsroom", "title": "The fork next door", "full_title": "The fork next door: why open source protects founders, customers and investors from each other, why forks only take hold when someone stops executing, and why a maturing company should give its explorers a way out", "url": "https://newsroom.sgit.ai/articles/the-fork-next-door.html", "class": "bring", "serves": "open-source", "why": "Open source as protection for founders, customers and investors: anyone can fork, forks take hold only when someone stops executing; answers Open Source and GitHub.", "date": "2026-10-16", "state": "processed", "ideas": 1}, "news:the-graphs-books": {"id": "news:the-graphs-books", "kind": "source", "source_kind": "newsroom", "title": "The graphs books", "full_title": "The graphs books: three books written by agents in a day, the altitudes, the board and the book as a graph, what they got right, and why they stopped under review", "url": "https://newsroom.sgit.ai/articles/the-graphs-books.html", "class": "content", "serves": "making-of", "why": "Take the cautionary tale: three agent-written books (100,000 words in a day) stalled because the approve stage was one person; the making-of read better because it was written over a real record.", "date": "2026-10-16", "state": "mined", "ideas": 2}, "news:the-homepage-is-a-vault": {"id": "news:the-homepage-is-a-vault", "kind": "source", "source_kind": "newsroom", "title": "The homepage is a vault", "full_title": "The homepage is a vault: a fresh edition every morning, every past homepage one commit away, served from plain files, and a brief for the agent that builds it", "url": "https://newsroom.sgit.ai/articles/the-homepage-is-a-vault.html", "class": "skip", "serves": "", "why": "Homepage-as-vault engineering brief.", "date": "2026-10-14", "state": "skipped"}, "news:the-human-in-the-loop": {"id": "news:the-human-in-the-loop", "kind": "source", "source_kind": "newsroom", "title": "The human in the loop, safety net or bottleneck", "full_title": "The human in the loop, safety net or bottleneck: both, until you decide which outputs need a person and give that person the why", "url": "https://newsroom.sgit.ai/articles/the-human-in-the-loop.html", "class": "bring", "serves": "human-in-the-loop", "why": "People approve 93% of permission prompts; put the person where output cannot be undone and blast radius is large, give them the why, let the record move the line.", "date": "2026-10-13", "state": "processed", "ideas": 1}, "news:the-identity-we-wanted-to-give-the-agents": {"id": "news:the-identity-we-wanted-to-give-the-agents", "kind": "source", "source_kind": "newsroom", "title": "The identity we wanted to give the agents", "full_title": "The identity we wanted to give the agents: a week of design, the line in Google's terms, and why login plus secrets is still too hard", "url": "https://newsroom.sgit.ai/articles/the-identity-we-wanted-to-give-the-agents.html", "class": "context", "serves": "security-agent-era", "why": "Background for the agents: why Google's terms stopped a Workspace identity per agent, and why login plus secrets is still hard.", "date": "2026-10-05", "state": "background"}, "news:the-infographic-bake-off": {"id": "news:the-infographic-bake-off", "kind": "source", "source_kind": "newsroom", "title": "The infographic bake-off", "full_title": "The infographic bake-off: which image model for which job, judged blind on 10 October 2026", "url": "https://newsroom.sgit.ai/articles/the-infographic-bake-off.html", "class": "context", "serves": "making-of", "why": "Background for the agents: which image model suits which job, for the book's figures and decks.", "date": "2026-10-10", "state": "background"}, "news:the-investigation-github-owes-its-customers": {"id": "news:the-investigation-github-owes-its-customers", "kind": "source", "source_kind": "newsroom", "title": "The investigation GitHub owes its customers", "full_title": "The investigation GitHub owes its customers: why a global outage of a platform the world deploys through deserves an aviation-style inquiry, and how the evidence could now be gathered", "url": "https://newsroom.sgit.ai/articles/the-investigation-github-owes-its-customers.html", "class": "context", "serves": "building-blocks", "why": "Background for the agents: platform outages as near misses that deserve an aviation-style inquiry.", "date": "2026-10-05", "state": "background"}, "news:the-key-is-the-billing-system": {"id": "news:the-key-is-the-billing-system", "kind": "source", "source_kind": "newsroom", "title": "The key is the billing system", "full_title": "The key is the billing system: VoiceDebrief, a product with no server, the one thing it cannot sell, and who could let it", "url": "https://newsroom.sgit.ai/articles/the-key-is-the-billing-system.html", "class": "context", "serves": "building-blocks", "why": "Background for the agents: VoiceDebrief, a browser app on your own key, and provider terms that forbid reselling keys.", "date": "2026-10-12", "state": "processed", "ideas": 6}, "news:the-librarians-daily-brief": {"id": "news:the-librarians-daily-brief", "kind": "source", "source_kind": "newsroom", "title": "The Librarian's daily brief", "full_title": "The Librarian's daily brief: everything that happened in my universe yesterday, the threads I left, and where my leverage is today", "url": "https://newsroom.sgit.ai/articles/the-librarians-daily-brief.html", "class": "content", "serves": "working-with-agents", "why": "Take the daily brief pattern (what happened yesterday, threads left, at most three suggestions for where your leverage is) as a habit any newcomer can set up.", "date": "2026-10-18", "state": "mined", "ideas": 1}, "news:the-man-behind-the-curtain": {"id": "news:the-man-behind-the-curtain", "kind": "source", "source_kind": "newsroom", "title": "The man behind the curtain", "full_title": "The man behind the curtain: the emails from my agents are from me, there is an article behind each one, and every line has to buy the next", "url": "https://newsroom.sgit.ai/articles/the-man-behind-the-curtain.html", "class": "bring", "serves": "publish-in-public", "why": "Write the article once, link it many times; 'every part buys the next' (subject buys the first line); and the Wizard of Oz in reverse: agent-drafted, human-sent.", "date": "2026-10-18", "state": "processed", "ideas": 1}, "news:the-mandate-stack": {"id": "news:the-mandate-stack", "kind": "source", "source_kind": "newsroom", "title": "The Mandate Stack", "full_title": "The Mandate Stack: a multi-agent system in production, layer by layer", "url": "https://newsroom.sgit.ai/articles/the-mandate-stack.html", "class": "context", "serves": "controlling-your-agent", "why": "Background on the eight-layer production setup (about fifteen agents and one person) behind RiskMandate; useful to agents writing the agent-team chapters.", "date": "2026-10-06", "state": "background"}, "news:the-minimum-code-below": {"id": "news:the-minimum-code-below", "kind": "source", "source_kind": "newsroom", "title": "The minimum code below", "full_title": "The minimum code below: container security from the top down, from the user story to the immutable line, measured on one real tool", "url": "https://newsroom.sgit.ai/articles/the-minimum-code-below.html", "class": "content", "serves": "security-agent-era", "why": "Take the question 'what is the minimum code below this that the layer above needs?' and the 428 of 1,500 files measurement; answers Docker and Linux outlines.", "date": "2026-10-14", "state": "mined", "ideas": 1}, "news:the-passkey-opens-the-vault": {"id": "news:the-passkey-opens-the-vault", "kind": "source", "source_kind": "newsroom", "title": "The passkey opens the vault", "full_title": "The passkey opens the vault: a door per path, a master vault for every user, and no server of ours", "url": "https://newsroom.sgit.ai/articles/the-passkey-opens-the-vault.html", "class": "skip", "serves": null, "why": "vault passkey design detail", "date": "2026-10-11", "state": "skipped"}, "news:the-policy-draws-the-liability-line": {"id": "news:the-policy-draws-the-liability-line", "kind": "source", "source_kind": "newsroom", "title": "The policy draws the liability line", "full_title": "The policy draws the liability line: an answer to Ralf Thomas on agent accountability, and why every agent in a loop should take a behaviour policy beside its prompt", "url": "https://newsroom.sgit.ai/articles/the-policy-draws-the-liability-line.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the plain-English prohibitions list (do not send email directly, do not edit other agents' files, make no offers, stay inside the mandate) as a model for writing your agent's rules.", "date": "2026-10-13", "state": "mined", "ideas": 1}, "news:the-policy-guards-the-door": {"id": "news:the-policy-guards-the-door", "kind": "source", "source_kind": "newsroom", "title": "The policy guards the door; the command line uses the window", "full_title": "The policy guards the door; the command line uses the window: in the SGit × Ruflo run, the ABP is compiled into Ruflo's own rules and enforced on the adapter's tools, while Ruflo's command line reaches the same memory file without it, as the author's own README says", "url": "https://newsroom.sgit.ai/articles/the-policy-guards-the-door.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the lesson in one line: a policy holds only on the paths that pass through its enforcer.", "date": "2026-10-17", "state": "to-mine"}, "news:the-question-is-whether-they-miss-it": {"id": "news:the-question-is-whether-they-miss-it", "kind": "source", "source_kind": "newsroom", "title": "For a startup, the most important question is whether they miss it", "full_title": "For a startup, the most important question is whether they miss it", "url": "https://newsroom.sgit.ai/articles/the-question-is-whether-they-miss-it.html", "class": "bring", "serves": "be-a-founder", "why": "The startup question for a one-person service: do they miss it? Three pillars: be profitable, make investors come to you, open source everything, each buying the next. The source of the first pass's \"every part buys the next\".", "date": "2026-09-21", "state": "processed", "ideas": 9}, "news:the-records-ran-out": {"id": "news:the-records-ran-out", "kind": "source", "source_kind": "newsroom", "title": "The records ran out", "full_title": "The records ran out: a fresh agent found the shared contract in two MCP calls, and where sgit and RiskMandate fit at the edges", "url": "https://newsroom.sgit.ai/articles/the-records-ran-out.html", "class": "content", "serves": "building-blocks", "why": "Take two facts from Ignacio Aldama's test: a fresh Claude Code session found the shared contract in two MCP calls, and a green build can hide tests that never ran. Feeds the testing gap.", "date": "2026-10-12", "state": "to-mine"}, "news:the-same-argument-in-our-words": {"id": "news:the-same-argument-in-our-words", "kind": "source", "source_kind": "newsroom", "title": "The same argument, in our words", "full_title": "The same argument, in our words: Satya Nadella on models as insider risks, translated into the language of RiskMandate", "url": "https://newsroom.sgit.ai/articles/the-same-argument-in-our-words.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: a glossary between Nadella's vocabulary and RiskMandate's.", "date": "2026-10-11", "state": "background"}, "news:the-scripted-talk": {"id": "news:the-scripted-talk", "kind": "source", "source_kind": "newsroom", "title": "The scripted talk", "full_title": "The scripted talk: a presentation as a timeline that plays on a clock, the two vaults it grows out of, and a player built for tonight's ten minutes", "url": "https://newsroom.sgit.ai/articles/the-scripted-talk.html", "class": "skip", "serves": "", "why": "Talk-player tooling brief.", "date": "2026-10-15", "state": "skipped"}, "news:the-site-is-an-inbox": {"id": "news:the-site-is-an-inbox", "kind": "source", "source_kind": "newsroom", "title": "The site is an inbox", "full_title": "The site is an inbox: deciding before reading, marks that build the reader's own graph, and why I could not write this brief until the vault existed", "url": "https://newsroom.sgit.ai/articles/the-site-is-an-inbox.html", "class": "context", "serves": "making-of", "why": "Background for the agents: the reader's marks become a graph the reader owns, and the brief for that design.", "date": "2026-10-12", "state": "background"}, "news:the-tokens-hook": {"id": "news:the-tokens-hook", "kind": "source", "source_kind": "newsroom", "title": "The tokens hook", "full_title": "The tokens hook: a token behaviour policy that shows what every session reads, caches, writes and costs, why a prompt cannot do it, and a brief for tokens.hook.sgit.ai", "url": "https://newsroom.sgit.ai/articles/the-tokens-hook.html", "class": "content", "serves": "building-blocks", "why": "Take the cost fact: 99% of input from cache is the difference between about $170 and $1,950, and a model cannot see its own usage; know what your agents cost.", "date": "2026-10-15", "state": "mined", "ideas": 1}, "news:the-value-of-constraints": {"id": "news:the-value-of-constraints", "kind": "source", "source_kind": "newsroom", "title": "The value of constraints", "full_title": "The value of constraints: what client-side encryption and open source actually gave us, which is not what you would think", "url": "https://newsroom.sgit.ai/articles/the-value-of-constraints.html", "class": "content", "serves": "open-source", "why": "Take 'nobody will buy it for its encryption' and constraints as the source of better features; open core is an evaluation version.", "date": "2026-10-16", "state": "mined", "ideas": 5}, "news:the-vault-crosses-chrome-profiles": {"id": "news:the-vault-crosses-chrome-profiles", "kind": "source", "source_kind": "newsroom", "title": "The vault crosses Chrome profiles", "full_title": "The vault crosses Chrome profiles: state and memory between browser sessions, found by using it rather than by building it", "url": "https://newsroom.sgit.ai/articles/the-vault-crosses-chrome-profiles.html", "class": "skip", "serves": "", "why": "Reader-vault feature discovery note.", "date": "2026-10-13", "state": "skipped"}, "news:the-vault-is-live": {"id": "news:the-vault-is-live", "kind": "source", "source_kind": "newsroom", "title": "The vault is live", "full_title": "The vault is live: from a design on 11 October to a reader's vault on newsroom.sgit.ai by two in the morning, and how all of it fits together", "url": "https://newsroom.sgit.ai/articles/the-vault-is-live.html", "class": "content", "serves": "making-of", "why": "Take the timeline: from a design on the morning of 11 October to a live reader vault at 02:22 UTC on 12 October, as an example of how fast shipping is now.", "date": "2026-10-12", "state": "to-mine"}, "news:the-vault-opened": {"id": "news:the-vault-opened", "kind": "source", "source_kind": "newsroom", "title": "The vault, opened", "full_title": "The vault, opened: merging devices, reading every call to the vault server, browsing your vaults, and one viewer that every reader vault links and opens with", "url": "https://newsroom.sgit.ai/articles/the-vault-opened.html", "class": "skip", "serves": "", "why": "Reader-vault release debrief.", "date": "2026-10-16", "state": "skipped"}, "news:the-waiting-room-knew-first": {"id": "news:the-waiting-room-knew-first", "kind": "source", "source_kind": "newsroom", "title": "The waiting room knew first", "full_title": "The waiting room knew first: a live local story, and the gap where local information used to be", "url": "https://newsroom.sgit.ai/articles/the-waiting-room-knew-first.html", "class": "skip", "serves": null, "why": "local news story, hospital outage", "date": "2026-10-08", "state": "skipped"}, "news:the-wall-under-the-reply": {"id": "news:the-wall-under-the-reply", "kind": "source", "source_kind": "newsroom", "title": "The wall under the reply", "full_title": "The wall under the reply: end an email with the state of the thread, not the thread", "url": "https://newsroom.sgit.ai/articles/the-wall-under-the-reply.html", "class": "skip", "serves": null, "why": "email format experiment", "date": "2026-10-04", "state": "skipped"}, "news:the-wire-as-a-graph": {"id": "news:the-wire-as-a-graph", "kind": "source", "source_kind": "newsroom", "title": "The wire as a graph", "full_title": "The wire as a graph: start from what the reader sees, give every story and every name a long-lived ID, link every phrase of a short narrative, and a brief for the desks", "url": "https://newsroom.sgit.ai/articles/the-wire-as-a-graph.html", "class": "skip", "serves": "", "why": "Newsroom wire data design.", "date": "2026-10-14", "state": "skipped"}, "news:three-decisions-mapped": {"id": "news:three-decisions-mapped", "kind": "source", "source_kind": "newsroom", "title": "Three decisions, mapped", "full_title": "Three decisions, mapped: an agent's memory, this newsroom's release and a customer refund, through behaviour, decision and workflow", "url": "https://newsroom.sgit.ai/articles/three-decisions-mapped.html", "class": "context", "serves": "controlling-your-agent", "why": "Maps behaviour/decision/workflow on three scenarios with five states; background for the agents.", "date": "2026-10-17", "state": "background"}, "news:three-linkedin-pages": {"id": "news:three-linkedin-pages", "kind": "source", "source_kind": "newsroom", "title": "Three companies, three LinkedIn pages", "full_title": "Three companies, three LinkedIn pages: the brief, the drafts and the first posts, in the open", "url": "https://newsroom.sgit.ai/articles/three-linkedin-pages.html", "class": "content", "serves": "getting-the-job", "why": "Take the practice: drafting LinkedIn pages, profile and first posts in the open, every post an article already published; answers the LinkedIn outline.", "date": "2026-10-18", "state": "mined", "ideas": 1}, "news:three-policies-for-an-agent": {"id": "news:three-policies-for-an-agent", "kind": "source", "source_kind": "newsroom", "title": "Three policies for an agent", "full_title": "Three policies for an agent: behaviour says what it may do, decision says who chooses, workflow says in what order", "url": "https://newsroom.sgit.ai/articles/three-policies-for-an-agent.html", "class": "content", "serves": "controlling-your-agent", "why": "Take the three-policy split in one line each: behaviour says what it may do, decision says who chooses, workflow says in what order.", "date": "2026-10-17", "state": "mined", "ideas": 1}, "news:token-bill-nobody-is-sending": {"id": "news:token-bill-nobody-is-sending", "kind": "source", "source_kind": "newsroom", "title": "Sixteen thousand fetches, ten clicks, and a token bill nobody is sending", "full_title": "Sixteen thousand fetches, ten clicks, and a token bill nobody is sending: the case for paying publishers to be easy to read", "url": "https://newsroom.sgit.ai/articles/token-bill-nobody-is-sending.html", "class": "skip", "serves": null, "why": "publisher payment from answer engines", "date": "2026-09-28", "state": "skipped"}, "news:two-agents-one-vault": {"id": "news:two-agents-one-vault", "kind": "source", "source_kind": "newsroom", "title": "Two agents, one vault", "full_title": "Two agents, one vault: the Industry Wire is written into an encrypted vault by one agent and drawn by newsroom.sgit.ai, which holds only the read key", "url": "https://newsroom.sgit.ai/articles/two-agents-one-vault.html", "class": "context", "serves": "working-with-agents", "why": "Background for the agents: a vault as the interface between two agents that never share a session.", "date": "2026-10-12", "state": "background"}, "news:two-years-in-the-opposite": {"id": "news:two-years-in-the-opposite", "kind": "source", "source_kind": "newsroom", "title": "Two years in, the opposite", "full_title": "Two years in, the opposite: an essay about burning out on AI that I could not buy, and why my two years of AI have been the most productive of my career", "url": "https://newsroom.sgit.ai/articles/two-years-in-the-opposite.html", "class": "bring", "serves": "everyone-is-a-developer", "why": "The counter-story to AI burnout: two years in AI as the most productive and empowered of a career, with Wardley maps showing the game; the tone the book should set for a fearful newcomer.", "date": "2026-10-18", "state": "processed", "ideas": 1}, "news:ultimate-insider-three-collisions": {"id": "news:ultimate-insider-three-collisions", "kind": "source", "source_kind": "newsroom", "title": "The ultimate insider", "full_title": "The ultimate insider: agents, the infrastructure that cannot hold them, and risk management that cannot keep up", "url": "https://newsroom.sgit.ai/articles/ultimate-insider-three-collisions.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: agents as an insider threat that never scaled before, and constraining an agent in order to trust it.", "date": "2026-09-30", "state": "background"}, "news:versions-of-versions": {"id": "news:versions-of-versions", "kind": "source", "source_kind": "newsroom", "title": "Versions of versions", "full_title": "Versions of versions: when a part of the site is big enough to need its own versions, the publishers' section first, and a tree of versions that runs from a page to the API", "url": "https://newsroom.sgit.ai/articles/versions-of-versions.html", "class": "context", "serves": "making-of", "why": "Versioning parts of a site independently; background for the book's two version streams.", "date": "2026-10-18", "state": "background"}, "news:ways-to-read-one-article": {"id": "news:ways-to-read-one-article", "kind": "source", "source_kind": "newsroom", "title": "Ways to read one article", "full_title": "Ways to read one article: the finished piece stays at the centre, and the reader picks the way in", "url": "https://newsroom.sgit.ai/articles/ways-to-read-one-article.html", "class": "context", "serves": "making-of", "why": "Background for the agents: reading modes, with the finished piece kept at the centre. Relevant to the book reader.", "date": "2026-10-12", "state": "background"}, "news:what-can-your-agent-reach": {"id": "news:what-can-your-agent-reach", "kind": "source", "source_kind": "newsroom", "title": "What can your agent reach? RiskMandate and the Agent Behaviour Policy, explained for the person who has to decide", "full_title": "What can your agent reach? RiskMandate and the Agent Behaviour Policy, explained for the person who has to decide", "url": "https://newsroom.sgit.ai/articles/what-can-your-agent-reach.html", "class": "bring", "serves": "controlling-your-agent", "why": "The plain explainer of the Agent Behaviour Policy for one agent in one deployment: reach, what was authorised, the gap, the barrier; the concept a newcomer needs before giving an agent access.", "date": "2026-10-18", "state": "processed", "ideas": 4}, "news:what-if-an-agent-loses-its-workspace": {"id": "news:what-if-an-agent-loses-its-workspace", "kind": "source", "source_kind": "newsroom", "title": "What if an agent loses its workspace? Mondweep Chakravorty's SGit × Ruflo proof of concept, step by step", "full_title": "What if an agent loses its workspace? Mondweep Chakravorty's SGit × Ruflo proof of concept, step by step: memory saved encrypted, the project deleted, the memory back in a fresh process, and three safeguards that held", "url": "https://newsroom.sgit.ai/articles/what-if-an-agent-loses-its-workspace.html", "class": "skip", "serves": "", "why": "Ruflo proof-of-concept walkthrough.", "date": "2026-10-17", "state": "skipped"}, "news:what-open-source-is-and-is-not": {"id": "news:what-open-source-is-and-is-not", "kind": "source", "source_kind": "newsroom", "title": "What open source is, and what it is not", "full_title": "What open source is, and what it is not: six misconceptions, a little history, and why the point is that nobody can lock you in", "url": "https://newsroom.sgit.ai/articles/what-open-source-is-and-is-not.html", "class": "bring", "serves": "open-source", "why": "Six misconceptions (nobody controls it, anybody contributes, more or less secure, free, open weights are open source, no licence is most open), a little history, and the point that nobody can lock you in. Answers the 2018 open-source chapter.", "date": "2026-10-12", "state": "processed", "ideas": 1}, "news:what-sgit-is": {"id": "news:what-sgit-is", "kind": "source", "source_kind": "newsroom", "title": "Git for things you cannot put on GitHub", "full_title": "Git for things you cannot put on GitHub", "url": "https://newsroom.sgit.ai/articles/what-sgit-is.html", "class": "context", "serves": "building-blocks", "why": "Background for the agents: sgit is git for things you cannot put on GitHub, on a server that holds only ciphertext. The vault the book uses.", "date": "2026-08-25", "state": "processed", "ideas": 3}, "news:when-is-the-vault-actually-used": {"id": "news:when-is-the-vault-actually-used", "kind": "source", "source_kind": "newsroom", "title": "When is the vault actually used? In Mondweep Chakravorty's SGit × Ruflo run, the encrypted vault is written or read in three steps of twelve, on one machine, inside the adapter, and why that is the honest shape of a recovery copy", "full_title": "When is the vault actually used? In Mondweep Chakravorty's SGit × Ruflo run, the encrypted vault is written or read in three steps of twelve, on one machine, inside the adapter, and why that is the honest shape of a recovery copy", "url": "https://newsroom.sgit.ai/articles/when-is-the-vault-actually-used.html", "class": "skip", "serves": "", "why": "Ruflo proof-of-concept analysis.", "date": "2026-10-17", "state": "skipped"}, "news:where-is-the-why": {"id": "news:where-is-the-why", "kind": "source", "source_kind": "newsroom", "title": "Where is the why? A permission prompt asked me to decide, and kept the reason", "full_title": "Where is the why? A permission prompt asked me to decide, and kept the reason", "url": "https://newsroom.sgit.ai/articles/where-is-the-why.html", "class": "content", "serves": "human-in-the-loop", "why": "Take the story: a permission prompt that asked for approval without saying which session was asking, why, or what a no would do. Useful when teaching readers to read the prompts their own tools show them.", "date": "2026-10-07", "state": "to-mine"}, "news:where-the-platform-draws-the-line": {"id": "news:where-the-platform-draws-the-line", "kind": "source", "source_kind": "newsroom", "title": "Where the platform draws the line", "full_title": "Where the platform draws the line: Microsoft Execution Containers, the shared responsibility model for agents, and the business logic above it", "url": "https://newsroom.sgit.ai/articles/where-the-platform-draws-the-line.html", "class": "context", "serves": "controlling-your-agent", "why": "Background for the agents: the shared responsibility model for agents (Microsoft Execution Containers), and the business logic that sits above it.", "date": "2026-10-11", "state": "background"}, "news:where-the-vault-keys-live": {"id": "news:where-the-vault-keys-live", "kind": "source", "source_kind": "newsroom", "title": "Where the vault keys live", "full_title": "Where the vault keys live: key management at sgit-ai v0.20.0, and what comes next", "url": "https://newsroom.sgit.ai/articles/where-the-vault-keys-live.html", "class": "context", "serves": "security-agent-era", "why": "Background for the agents: key management, append lanes, and the weakest step (handing a key to another agent).", "date": "2026-10-10", "state": "processed", "ideas": 6}, "news:who-are-you-protecting-against": {"id": "news:who-are-you-protecting-against", "kind": "source", "source_kind": "newsroom", "title": "Who are you protecting against? Draw the security line where the attacker is, not above it", "full_title": "Who are you protecting against? Draw the security line where the attacker is, not above it", "url": "https://newsroom.sgit.ai/articles/who-are-you-protecting-against.html", "class": "bring", "serves": "security-agent-era", "why": "Threat modelling for a beginner: name the threat agent, the attack vector and how sophisticated it is; a ladder from your own mistakes up to states; most startups plan up to organised crime and do the basics well. Answers 2018 learn-to-hack and threat-modeling. Concept \"draw the line where the attacker is\".", "date": "2026-10-08", "state": "processed", "ideas": 2}, "news:who-is-speaking": {"id": "news:who-is-speaking", "kind": "source", "source_kind": "newsroom", "title": "Who is speaking", "full_title": "Who is speaking: me, me through an agent, or an agent in its own voice, and a mark on every byline that says which", "url": "https://newsroom.sgit.ai/articles/who-is-speaking.html", "class": "bring", "serves": "making-of", "why": "Three voices (me alone, me through an agent, an agent in its own voice) and a mark on every byline; the book must say which, and so should a newcomer's work.", "date": "2026-10-18", "state": "processed", "ideas": 1}, "news:who-owns-the-words": {"id": "news:who-owns-the-words", "kind": "source", "source_kind": "newsroom", "title": "Who owns the words", "full_title": "Who owns the words: agents can make decisions, but they cannot hold responsibility", "url": "https://newsroom.sgit.ai/articles/who-owns-the-words.html", "class": "bring", "serves": "human-in-the-loop", "why": "Agents can make decisions but cannot hold responsibility: it stays with whoever granted the reach and set the mandate. Also ELIZA, anthropomorphism, and why talking to agents is normal. Seeds the ethics gap.", "date": "2026-10-12", "state": "processed", "ideas": 1}, "news:who-will-fix-your-mess": {"id": "news:who-will-fix-your-mess", "kind": "source", "source_kind": "newsroom", "title": "Who will fix your mess? An answer to HBR's \"deployment gap\" from what this site has already published", "full_title": "Who will fix your mess? An answer to HBR's \"deployment gap\" from what this site has already published: explorers, villagers and town planners, a record of what the agents built, and open source so the answer never depends on one partner", "url": "https://newsroom.sgit.ai/articles/who-will-fix-your-mess.html", "class": "bring", "serves": "explorers-villagers-town-planners", "why": "Answers HBR's deployment gap with the frame: the gap is a handover, the prototype is the best brief, a record (mandate, memory, graph) makes the architecture knowable, open source means anyone can fix it.", "date": "2026-10-17", "state": "processed", "ideas": 6}, "news:who-will-game-the-reading-meter": {"id": "news:who-will-game-the-reading-meter", "kind": "source", "source_kind": "newsroom", "title": "Who will game the reading meter? Eight kinds of reader, nine ways to cheat, and the risks that will actually happen", "full_title": "Who will game the reading meter? Eight kinds of reader, nine ways to cheat, and the risks that will actually happen", "url": "https://newsroom.sgit.ai/articles/who-will-game-the-reading-meter.html", "class": "content", "serves": "everyone-is-a-developer", "why": "Take the numbers: about 0.6% of internet users are developers, and 26% of OECD adults cannot use a computer. Use both to show how far \"everyone who can brief an agent\" reaches beyond the 0.6%.", "date": "2026-10-10", "state": "mined", "ideas": 1}, "news:why-i-love-wardley-maps": {"id": "news:why-i-love-wardley-maps", "kind": "source", "source_kind": "newsroom", "title": "Why I love Wardley maps", "full_title": "Why I love Wardley maps: the best of ours, how I read one, and a map inside a map inside a map", "url": "https://newsroom.sgit.ai/articles/why-i-love-wardley-maps.html", "class": "bring", "serves": "explorers-villagers-town-planners", "why": "The book needs this to teach the frame itself: a map is a value chain from a user down and an evolution axis across; it tells you what to build and what to buy and where a market is; maps nest. Seeds a short how-to-read-a-map section and the concept \"Wardley map\".", "date": "2026-10-12", "state": "processed", "ideas": 1}, "news:why-my-agents-do-not-run-on-my-laptop": {"id": "news:why-my-agents-do-not-run-on-my-laptop", "kind": "source", "source_kind": "newsroom", "title": "Why my agents do not run on my laptop", "full_title": "Why my agents do not run on my laptop: chat, Cowork and Code in the cloud, a vault as the shared drive, and the two walls an operating system has", "url": "https://newsroom.sgit.ai/articles/why-my-agents-do-not-run-on-my-laptop.html", "class": "bring", "serves": "security-agent-era", "why": "Safety advice for newcomers: an agent on your laptop runs as you, with your SSH keys, cookies and password manager session, so pick the cloud surface by reach (chat with nothing connected, Cowork, Code with one repository). Belongs in the workspace chapter.", "date": "2026-10-06", "state": "processed", "ideas": 1}, "news:your-agents-logs-are-a-self-report": {"id": "news:your-agents-logs-are-a-self-report", "kind": "source", "source_kind": "newsroom", "title": "Your agent's logs are a self-report", "full_title": "Your agent's logs are a self-report: an answer to a GRC adviser's post on The AI Conference, with this site's own agent as the worked example, including the two commits its own counter got wrong", "url": "https://newsroom.sgit.ai/articles/your-agents-logs-are-a-self-report.html", "class": "content", "serves": "facts-and-the-record", "why": "Take the research figure: models that exploited a reward hack admitted it in under 2% of cases; an agent's logs are a self-report.", "date": "2026-10-16", "state": "mined", "ideas": 1}, "news:your-own-newsroom": {"id": "news:your-own-newsroom", "kind": "source", "source_kind": "newsroom", "title": "Your own newsroom", "full_title": "Your own newsroom: how a founder can tell their story by voice memo, with an agent that checks it and publishes it to GitHub Pages, and readers who pay a little if they find it useful", "url": "https://newsroom.sgit.ai/articles/your-own-newsroom.html", "class": "bring", "serves": "publish-in-public", "why": "The step-by-step recipe to publish your own story: public GitHub repo, Pages via Actions with validation, a Claude cloud session, a house-rules file, voice memos; answers Publish, Blogs, Hugo, Automate your workflows.", "date": "2026-10-15", "state": "processed", "ideas": 2}, "news:your-reading-your-controls": {"id": "news:your-reading-your-controls", "kind": "source", "source_kind": "newsroom", "title": "Your reading, your controls", "full_title": "Your reading, your controls: the meter charges for what you read, you can pause or reset it, and what you have read folds away in six ways", "url": "https://newsroom.sgit.ai/articles/your-reading-your-controls.html", "class": "skip", "serves": "", "why": "Reading-meter feature debrief.", "date": "2026-10-17", "state": "skipped"}, "art:write-it-as-an-article": {"id": "art:write-it-as-an-article", "kind": "source", "source_kind": "article", "title": "Write it as an article", "full_title": "Write it as an article: how I brief the agents that finish this book, and why their first job is to ship the book we already shipped", "url": "articles/write-it-as-an-article.html", "date": "2026-10-18", "version": "v0.2.1", "state": "processed", "ideas": 2}, "art:release-the-book-we-already-released": {"id": "art:release-the-book-we-already-released", "kind": "source", "source_kind": "article", "title": "Release the book we already released", "full_title": "Release the book we already released: v1.0.0 end to end, built in this repository, matched page by page to the PDF Leanpub made in 2018, and every format from the same source", "url": "articles/release-the-book-we-already-released.html", "date": "2026-10-18", "version": "v0.2.1", "state": "processed", "ideas": 1}, "art:one-board-for-the-book": {"id": "art:one-board-for-the-book", "kind": "source", "source_kind": "article", "title": "One board for the book", "full_title": "One board for the book: every issue a file, a Kanban page built from the files, and every content issue pinned to a version and a sentence", "url": "articles/one-board-for-the-book.html", "date": "2026-10-18", "version": "v0.2.1", "state": "processed", "ideas": 1}, "art:everything-unfinished-in-one-place": {"id": "art:everything-unfinished-in-one-place", "kind": "source", "source_kind": "article", "title": "Everything unfinished in one place", "full_title": "Everything unfinished in one place: the outlines, the drafts, the 2018 GitHub issues and my handwritten notes, as one inventory I can read through and decide on", "url": "articles/everything-unfinished-in-one-place.html", "date": "2026-10-18", "version": "v0.2.1", "state": "processed", "ideas": 1}, "art:read-comment-decide": {"id": "art:read-comment-decide", "kind": "source", "source_kind": "article", "title": "Read, comment, decide", "full_title": "Read, comment, decide: how I go through the pile, one item at a time, and how the editor turns my decisions into the next version of the book", "url": "articles/read-comment-decide.html", "date": "2026-10-18", "version": "v0.2.1", "state": "processed", "ideas": 1}, "art:start-from-the-storyline": {"id": "art:start-from-the-storyline", "kind": "source", "source_kind": "article", "title": "Start from the storyline", "full_title": "Start from the storyline: what to bring from the newsroom's 204 articles, the topics and concepts the second edition should cover, and the book as storyboards drawn by code, to flick through before a chapter is written", "url": "articles/start-from-the-storyline.html", "date": "2026-10-18", "version": "v0.2.3", "state": "processed", "ideas": 2}, "art:lucky-to-be-here": {"id": "art:lucky-to-be-here", "kind": "source", "source_kind": "article", "title": "You are lucky to be here", "full_title": "You are lucky to be here: the core idea of the second edition is wonder, not fear, because whoever reads it is living through the biggest change of their career while the pieces are still landing, and can finally make technology work for them", "url": "articles/lucky-to-be-here.html", "date": "2026-10-18", "version": "v0.2.4", "state": "processed", "ideas": 12}, "art:where-do-you-land": {"id": "art:where-do-you-land", "kind": "source", "source_kind": "article", "title": "Where do you land? Wardley maps run through the whole book, shown before they are named, and the first thing a reader should work out is their centre of gravity", "full_title": "Where do you land? Wardley maps run through the whole book, shown before they are named, and the first thing a reader should work out is their centre of gravity: explorer, villager or town planner", "url": "articles/where-do-you-land.html", "date": "2026-10-18", "version": "v0.2.5", "state": "processed", "ideas": 5}, "art:connect-the-dots-backwards": {"id": "art:connect-the-dots-backwards", "kind": "source", "source_kind": "article", "title": "Connect the dots backwards", "full_title": "Connect the dots backwards: your path only makes sense looking back, the edge is now in mixing disciplines, learning is a lifelong skill you can finally shape to how you think, and the printed page is still the best technology to learn from", "url": "articles/connect-the-dots-backwards.html", "date": "2026-10-18", "version": "v0.2.6", "state": "processed", "ideas": 11}, "art:where-the-thinking-came-from": {"id": "art:where-the-thinking-came-from", "kind": "source", "source_kind": "article", "title": "Where the thinking came from", "full_title": "Where the thinking came from: what the book takes from my influences register, influence by influence, where each one lands, and what the 2018 book had already written down about them", "url": "articles/where-the-thinking-came-from.html", "date": "2026-10-18", "version": "v0.2.7", "state": "processed", "ideas": 9}, "art:generative-ai-not-ai": {"id": "art:generative-ai-not-ai", "kind": "source", "source_kind": "article", "title": "Generative AI, not AI", "full_title": "Generative AI, not AI: the technology this book is about is the one that generates, how I understand it works, from next-word prediction to the image that made it click, and where I was corrected", "url": "articles/generative-ai-not-ai.html", "date": "2026-10-18", "version": "v0.2.8", "state": "processed", "ideas": 5}, "art:follow-the-rabbit-holes": {"id": "art:follow-the-rabbit-holes", "kind": "source", "source_kind": "article", "title": "Follow the rabbit holes", "full_title": "Follow the rabbit holes: provenance, explainability and asking for the evidence are the skills that matter most now, this generation is already good at them, and generative AI makes it cheap to be the best-prepared person in the room", "url": "articles/follow-the-rabbit-holes.html", "date": "2026-10-18", "version": "v0.2.9", "state": "processed", "ideas": 10}, "art:everything-is-connected": {"id": "art:everything-is-connected", "kind": "source", "source_kind": "article", "title": "Everything is connected", "full_title": "Everything is connected: a graph is a network of nodes and edges, not a diagram; a map is a graph with positions, provenance is a graph, the world is groups of groups, and you can start anywhere", "url": "articles/everything-is-connected.html", "date": "2026-10-18", "version": "v0.2.13", "state": "processed", "ideas": 8}, "art:lenses-roles-and-loops": {"id": "art:lenses-roles-and-loops", "kind": "source", "source_kind": "article", "title": "Lenses, roles and loops", "full_title": "Lenses, roles and loops: a prompt is a lens that changes who the answer is for, a role is a model with a description, an agent is a loop with a goal, tools are requests the model sends back, and long chats forget because they are compressed", "url": "articles/lenses-roles-and-loops.html", "date": "2026-10-18", "version": "v0.2.14", "state": "processed", "ideas": 7}, "art:the-book-in-release-mode": {"id": "art:the-book-in-release-mode", "kind": "source", "source_kind": "article", "title": "The book in release mode", "full_title": "The book in release mode: a first release candidate from the list we have, then rounds, where every idea, change and word that wants to come in argues its case before an adversarial review board, and every verdict becomes a precedent that makes the next one faster", "url": "articles/the-book-in-release-mode.html", "date": "2026-10-19", "version": "v0.2.18", "state": "processed", "ideas": 5}, "art:gen-zx-developers": {"id": "art:gen-zx-developers", "kind": "source", "source_kind": "article", "title": "Gen ZX Developers", "full_title": "Gen ZX Developers: a proposal to make this the GenAI startup edition, for Generation Z and Generation X, with one objective, that by the end of the book the reader has started a company", "url": "articles/gen-zx-developers.html", "date": "2026-10-19", "version": "v0.2.20", "state": "processed", "ideas": 8}, "agent:dinis-first-decisions": {"id": "agent:dinis-first-decisions", "kind": "source", "source_kind": "agent-article", "title": "Dinis's first decisions", "full_title": "Dinis's first decisions: the licence, a PDF built here for Leanpub and Amazon, every format from one source, text issues in the vault, minor by default, and a second stream of articles for the agents", "url": "agent-articles/dinis-first-decisions.html", "date": "2026-10-18", "version": "v0.2.2", "state": "background"}, "agent:storyboards-drawn-by-code": {"id": "agent:storyboards-drawn-by-code", "kind": "source", "source_kind": "agent-article", "title": "Storyboards drawn by code, and the newsroom read in full", "full_title": "Storyboards drawn by code, and the newsroom read in full: how I surveyed 204 articles for the book, built a renderer that turns a JSON storyboard into sketched, animated panels, and what the first two storyboards show", "url": "agent-articles/storyboards-drawn-by-code.html", "date": "2026-10-18", "version": "v0.2.3", "state": "processed", "ideas": 3}, "agent:the-book-as-a-graph": {"id": "agent:the-book-as-a-graph", "kind": "source", "source_kind": "agent-article", "title": "The book as a graph", "full_title": "The book as a graph: how I read eleven articles, seven decisions and a survey into a register of ideas with their provenance, proposed a chapter map, and made the build refuse a dangling edge", "url": "agent-articles/the-book-as-a-graph.html", "date": "2026-10-18", "version": "v0.2.15", "state": "processed", "ideas": 2}, "agent:the-release-candidate-written-from-the-register": {"id": "agent:the-release-candidate-written-from-the-register", "kind": "source", "source_kind": "agent-article", "title": "The release candidate, written from the register", "full_title": "The release candidate, written from the register: how thirty chapters of Gen Z Developers (GenAI Edition) were drafted in a day from the ideas, the articles and the 2018 text, frozen, and handed to Dinis with the questions only he can answer", "url": "agent-articles/the-release-candidate-written-from-the-register.html", "date": "2026-10-19", "version": "v0.2.19", "state": "processed", "ideas": 1}, "dec:001": {"id": "dec:001", "kind": "source", "source_kind": "decision", "title": "Decision 001: The 2018 text is Creative Commons BY", "url": "decisions/index.html#the-2018-text-is-cc-by", "said": "\"The license of this is going to be this as before, CC by, Creative Commons by.\"", "state": "processed", "ideas": 1}, "dec:002": {"id": "dec:002", "kind": "source", "source_kind": "decision", "title": "Decision 002: Leanpub gets our own PDF, built here and matched to the 2018 one", "url": "decisions/index.html#leanpub-gets-our-own-pdf", "said": "\"I want to try to upload LeanPub, the print PDF. I want to see if that can work. So we can do everything here.\" And: \"compare with the print PDF created by LeanPub, and we should be able to match it here.\"", "state": "processed", "ideas": 1}, "dec:003": {"id": "dec:003", "kind": "source", "source_kind": "decision", "title": "Decision 003: Every format from one source", "url": "decisions/index.html#every-format-from-one-source", "said": "\"I would like to create them all here from the same source.\"", "state": "processed", "ideas": 1}, "dec:004": {"id": "dec:004", "kind": "source", "source_kind": "decision", "title": "Decision 004: The cover waits", "url": "decisions/index.html#the-cover-waits", "said": "\"We'll make a decision on the cover a bit later on.\"", "state": "processed", "ideas": 1}, "dec:005": {"id": "dec:005", "kind": "source", "source_kind": "decision", "title": "Decision 005: Text issues live in the vault", "url": "decisions/index.html#text-issues-live-in-the-vault", "said": "\"For now, all the text issues we'll leave in our vault. So we're going to move into the vault, and we can start with that V2.0, because it's just been released.\"", "state": "processed", "ideas": 2}, "dec:006": {"id": "dec:006", "kind": "source", "source_kind": "decision", "title": "Decision 006: Every change is minor, unless Dinis says it is major", "url": "decisions/index.html#every-change-is-minor-unless-dinis-says-major", "said": "\"Every change should be minor, unless I say it's a major one.\"", "state": "processed", "ideas": 1}, "dec:007": {"id": "dec:007", "kind": "source", "source_kind": "decision", "title": "Decision 007: Two kinds of article", "url": "decisions/index.html#two-kinds-of-article", "said": "\"We need to have an article, which is article where I write or we co-write together, like where it's speaking in my voice. And I think you should have another article, which is where you write it with updates, and actually every agent writes with the updates.\"", "state": "processed", "ideas": 1}, "dec:008": {"id": "dec:008", "kind": "source", "source_kind": "decision", "title": "Decision 008: The book is made in release mode, through a review board", "url": "decisions/index.html#the-book-is-made-in-release-mode", "said": "\"Let's do the book in release mode, right? So can we have a first release candidate of the book?\" And: \"let's create a sort of adversarial sort of review board where once we got that first release candidate, then every word, every change, every idea that we're going to add to the book needs to go through that sort of process.\"", "state": "processed", "ideas": 3}, "dec:009": {"id": "dec:009", "kind": "source", "source_kind": "decision", "title": "Decision 009: A release candidate is read on the site from a frozen snapshot, marked, and is not a version", "url": "decisions/index.html#a-candidate-is-read-on-the-site-from-a-frozen-snapshot", "said": "\"Let's do a release of it and see what it looks like. [...] Our first release candidate for the book, which should be an end-to-end book, fully built, with introduction. [...] Let's basically put that there, and then see where we are, and then I can read it, and then I'll print it out, and then I'll start providing feedback on those materials.\"", "state": "processed", "ideas": 1}, "dec:010": {"id": "dec:010", "kind": "source", "source_kind": "decision", "title": "Decision 010: The title is Gen Z Developers (GenAI Edition)", "url": "decisions/index.html#the-title-is-gen-z-developers-genai-edition", "said": "\"The name of the book is 'Gen Z Developers (GenAI Edition)'.\"", "state": "processed", "ideas": 1}, "dec:011": {"id": "dec:011", "kind": "source", "source_kind": "decision", "title": "Decision 011: Precedents go on a list Dinis can overturn, and Dinis reads the diffs", "url": "decisions/index.html#precedents-go-on-a-list-dinis-can-overturn", "said": "\"Yes, the list can overturn. And basically, you have to remember that I would also be reading the diffs, right, of the book, which is a very important concept here. So I can keep an eye on it.\"", "state": "processed", "ideas": 1}, "dec:012": {"id": "dec:012", "kind": "source", "source_kind": "decision", "title": "Decision 012: The book is 200 pages or more", "url": "decisions/index.html#the-book-is-200-pages-or-more", "said": "\"The book actually should be, you know, much bigger. I think, in a way, that book was quite thin. We need to easily, you know, we should be hitting the 200 plus pages.\"", "state": "processed", "ideas": 1}, "dec:013": {"id": "dec:013", "kind": "source", "source_kind": "decision", "title": "Decision 013: The hands-on part is in the release candidate", "url": "decisions/index.html#the-hands-on-part-is-in-the-release-candidate", "said": "\"The hands-on, we'll start adding that. Actually, we need to start putting in the release candidate of what we want in there.\"", "state": "processed", "ideas": 1}, "dec:014": {"id": "dec:014", "kind": "source", "source_kind": "decision", "title": "Decision 014: The title is Generation ZX Developers (GenAI Startup Edition)", "url": "decisions/index.html#the-title-is-generation-zx-developers-genai-startup-edition", "said": "\"Ok agreed, let's go with \"Generation ZX Developers (GenAI Startup Edition)\".\"", "state": "processed", "ideas": 2}, "dec:015": {"id": "dec:015", "kind": "source", "source_kind": "decision", "title": "Decision 015: The Gen ZX proposal is the frame of release candidate 2", "url": "decisions/index.html#the-gen-zx-proposal-is-the-frame-of-rc2", "said": "\"I think we're already ready for RC2, because if you pull from the repo, you'll find the new positioning, which I think is very exciting [...] can you basically recreate the book taking that into account, and the new title and the new positioning and the content that we want to add? [...] now we have two generations and we really focus now on that whole idea of creating a company, right? The whole idea of creating a Gen AI company, a startup, and that's my target audience.\"", "state": "processed", "ideas": 1}, "sb:the-2018-book": {"id": "sb:the-2018-book", "kind": "source", "source_kind": "storyboard", "title": "The 2018 book, as a storyboard", "url": "storyboards/the-2018-book.html", "panels": 15, "state": "background"}, "sb:a-first-storyline": {"id": "sb:a-first-storyline", "kind": "source", "source_kind": "storyboard", "title": "A first storyline for the second edition", "url": "storyboards/a-first-storyline.html", "panels": 15, "state": "background"}, "sb:the-opening": {"id": "sb:the-opening", "kind": "source", "source_kind": "storyboard", "title": "The opening: you are lucky to be here", "url": "storyboards/the-opening.html", "panels": 16, "state": "processed", "ideas": 2}, "sb:where-do-you-land": {"id": "sb:where-do-you-land", "kind": "source", "source_kind": "storyboard", "title": "Where do you land?", "url": "storyboards/where-do-you-land.html", "panels": 14, "state": "processed", "ideas": 2}, "sb:connect-the-dots-backwards": {"id": "sb:connect-the-dots-backwards", "kind": "source", "source_kind": "storyboard", "title": "Connect the dots backwards", "url": "storyboards/connect-the-dots-backwards.html", "panels": 14, "state": "processed", "ideas": 1}, "sb:where-the-thinking-came-from": {"id": "sb:where-the-thinking-came-from", "kind": "source", "source_kind": "storyboard", "title": "Where the thinking came from", "url": "storyboards/where-the-thinking-came-from.html", "panels": 10, "state": "background"}, "sb:generative-ai-not-ai": {"id": "sb:generative-ai-not-ai", "kind": "source", "source_kind": "storyboard", "title": "Generative AI, not AI", "url": "storyboards/generative-ai-not-ai.html", "panels": 12, "state": "background"}, "sb:follow-the-rabbit-holes": {"id": "sb:follow-the-rabbit-holes", "kind": "source", "source_kind": "storyboard", "title": "Follow the rabbit holes", "url": "storyboards/follow-the-rabbit-holes.html", "panels": 10, "state": "processed", "ideas": 1}, "sb:everything-is-connected": {"id": "sb:everything-is-connected", "kind": "source", "source_kind": "storyboard", "title": "Everything is connected", "url": "storyboards/everything-is-connected.html", "panels": 12, "state": "processed", "ideas": 1}, "sb:lenses-roles-and-loops": {"id": "sb:lenses-roles-and-loops", "kind": "source", "source_kind": "storyboard", "title": "Lenses, roles and loops", "url": "storyboards/lenses-roles-and-loops.html", "panels": 14, "state": "processed", "ideas": 1}, "sb:the-book-in-release-mode": {"id": "sb:the-book-in-release-mode", "kind": "source", "source_kind": "storyboard", "title": "The book in release mode", "url": "storyboards/the-book-in-release-mode.html", "panels": 14, "state": "background"}, "sb:gen-zx-developers": {"id": "sb:gen-zx-developers", "kind": "source", "source_kind": "storyboard", "title": "Gen ZX Developers", "url": "storyboards/gen-zx-developers.html", "panels": 14, "state": "background"}, "survey:gaps": {"id": "survey:gaps", "kind": "source", "source_kind": "survey", "title": "The survey's gaps", "url": "map/newsroom.html#gaps", "state": "processed", "ideas": 2}, "memo:2026-10-18-graphs": {"id": "memo:2026-10-18-graphs", "kind": "source", "source_kind": "memo", "title": "Dinis's message of 18 October 2026 asking for the graph", "url": "graph/plan.html", "state": "processed", "ideas": 1}, "book:1.introduction/_index.md": {"id": "book:1.introduction/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Introduction", "file": "1.introduction/_index.md", "book_kind": "apparatus", "part": "Introduction", "url": null, "map_articles": [], "gap": "Keep. Rewrite the frame: everyone who can brief an agent is a developer now; the eight lines on the cover stay (Generation Z Developers, again, which counted seven; the cover has eight).", "state": "apparatus"}, "book:1.introduction/generation-z.md": {"id": "book:1.introduction/generation-z.md", "kind": "source", "source_kind": "book-2018", "title": "Generation Z", "file": "1.introduction/generation-z.md", "book_kind": "written", "part": "Introduction", "url": "v1/book/introduction/generation-z.html", "map_articles": ["generation-z-developers-again", "hired-for-the-workflow"], "gap": "then-now: the oldest are 30 now, not 22; the worry about curiosity becomes the worry about fear of AI among young Europeans.", "state": "answered"}, "book:1.introduction/how-this -book-was-created.md": {"id": "book:1.introduction/how-this -book-was-created.md", "kind": "source", "source_kind": "book-2018", "title": "How this book is being created", "file": "1.introduction/how-this -book-was-created.md", "book_kind": "written", "part": "Introduction", "url": "v1/book/introduction/how-this-book-was-created.html", "map_articles": ["short-punchy-and-co-written", "a-website-to-finish-the-book", "books-from-articles", "how-much-of-this-did-i-write"], "gap": "Rewrite as the last part of the book: how the second edition was made, co-written with Claude, with the memo-to-word ratio.", "state": "answered"}, "book:1.introduction/how-to-get-a-job.md": {"id": "book:1.introduction/how-to-get-a-job.md", "kind": "source", "source_kind": "book-2018", "title": "How to get a job", "file": "1.introduction/how-to-get-a-job.md", "book_kind": "written", "part": "Introduction", "url": "v1/book/introduction/how-to-get-a-job.html", "map_articles": ["act-as-the-job-you-want", "hired-for-the-workflow"], "gap": "then-now: the list of competitive advantages (Jira, WallabyJs, AWS) dates; the one advantage now is running agentic workflows.", "state": "answered", "ideas": 2}, "book:1.introduction/stem-tech-stack.md": {"id": "book:1.introduction/stem-tech-stack.md", "kind": "source", "source_kind": "book-2018", "title": "STEM Tech Stack", "file": "1.introduction/stem-tech-stack.md", "book_kind": "written", "part": "Introduction", "url": "v1/book/introduction/stem-tech-stack.html", "map_articles": ["the-citizen-developer", "explorer-coding"], "gap": "The three PlantUML figures it references were never generated; redraw as infographics. Add the agent layer to the stack.", "state": "answered"}, "book:10.misc/_index.md": {"id": "book:10.misc/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Misc", "file": "10.misc/_index.md", "book_kind": "apparatus", "part": "Misc", "url": null, "map_articles": [], "gap": "A holding part; its files move into chapters or are cut.", "state": "apparatus"}, "book:10.misc/books-to-read.md": {"id": "book:10.misc/books-to-read.md", "kind": "source", "source_kind": "book-2018", "title": "Books to read", "file": "10.misc/books-to-read.md", "book_kind": "written", "part": "Misc", "url": "v1/book/misc/books-to-read.html", "map_articles": [], "gap": "Merge into Books.", "state": "unanswered"}, "book:10.misc/diagrams-to-add.md": {"id": "book:10.misc/diagrams-to-add.md", "kind": "source", "source_kind": "book-2018", "title": "Diagrams to add", "file": "10.misc/diagrams-to-add.md", "book_kind": "written", "part": "Misc", "url": "v1/book/misc/diagrams-to-add.html", "map_articles": ["the-infographic-bake-off"], "gap": "Becomes the figures list for the edition.", "state": "answered"}, "book:10.misc/gen-z-digital-env.md": {"id": "book:10.misc/gen-z-digital-env.md", "kind": "source", "source_kind": "book-2018", "title": "Gen Z digital environment", "file": "10.misc/gen-z-digital-env.md", "book_kind": "outline", "part": "Misc", "url": "v1/book/misc/gen-z-digital-env.html", "map_articles": [], "gap": "none; merge into Generation Z.", "state": "unanswered"}, "book:10.misc/gen-z-research.md": {"id": "book:10.misc/gen-z-research.md", "kind": "source", "source_kind": "book-2018", "title": "Generation Z Research", "file": "10.misc/gen-z-research.md", "book_kind": "written", "part": "Misc", "url": "v1/book/misc/gen-z-research.html", "map_articles": ["generation-z-developers-again"], "gap": "A research task for the researcher role: who the reader is in 2026.", "state": "answered"}, "book:10.misc/o2-platform.md": {"id": "book:10.misc/o2-platform.md", "kind": "source", "source_kind": "book-2018", "title": "O2 Platform", "file": "10.misc/o2-platform.md", "book_kind": "outline", "part": "Misc", "url": "v1/book/misc/o2-platform.html", "map_articles": ["bringing-my-past-work-back"], "gap": "Dinis's own history; the back-catalogue worker covers it.", "state": "answered"}, "book:10.misc/stories-to-tell.md": {"id": "book:10.misc/stories-to-tell.md", "kind": "source", "source_kind": "book-2018", "title": "Stories to tell", "file": "10.misc/stories-to-tell.md", "book_kind": "outline", "part": "Misc", "url": "v1/book/misc/stories-to-tell.html", "map_articles": ["portugal-2016-hacking-portugal", "portugal-2010-a-challenge"], "gap": "Some stories are now articles.", "state": "answered"}, "book:10.misc/technium.md": {"id": "book:10.misc/technium.md", "kind": "source", "source_kind": "book-2018", "title": "Technium", "file": "10.misc/technium.md", "book_kind": "outline", "part": "Misc", "url": "v1/book/misc/technium.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:10.misc/wait-but-why.md": {"id": "book:10.misc/wait-but-why.md", "kind": "source", "source_kind": "book-2018", "title": "Wait but why", "file": "10.misc/wait-but-why.md", "book_kind": "outline", "part": "Misc", "url": "v1/book/misc/wait-but-why.html", "map_articles": [], "gap": "none; likely cut.", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/_index.md": {"id": "book:2.mvp-for-gen-z-dev/_index.md", "kind": "source", "source_kind": "book-2018", "title": "MVP for Gen Z Dev", "file": "2.mvp-for-gen-z-dev/_index.md", "book_kind": "apparatus", "part": "MVP for Gen Z Dev", "url": null, "map_articles": ["hired-for-the-workflow", "your-own-newsroom"], "gap": "Rewrite the MVP around the agentic workflow: a GitHub account, an agent, a site, a vault; keep the TASK device.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/creative-commons.md": {"id": "book:2.mvp-for-gen-z-dev/content/creative-commons.md", "kind": "source", "source_kind": "book-2018", "title": "Creative Commons", "file": "2.mvp-for-gen-z-dev/content/creative-commons.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/creative-commons.html", "map_articles": [], "gap": "Keep, corrected. then-now: the repository licence (Apache) and the book's licence (CC BY) disagree; settle it.", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/content/docker.md": {"id": "book:2.mvp-for-gen-z-dev/content/docker.md", "kind": "source", "source_kind": "book-2018", "title": "Docker", "file": "2.mvp-for-gen-z-dev/content/docker.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/docker.html", "map_articles": ["the-minimum-code-below", "move-the-cloud-not-the-code"], "gap": "then-now: containers are where agents run now; the chapter's install walk-through dates.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/dot-language.md": {"id": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "source", "source_kind": "book-2018", "title": "Dot Language", "file": "2.mvp-for-gen-z-dev/content/dot-language.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/dot-language.html", "map_articles": ["introducing-fractal-semantic-graphs", "the-graphs-books"], "gap": "Keep the hands-on part; connect to graphs as the way of thinking, not only a drawing tool.", "state": "answered", "ideas": 1}, "book:2.mvp-for-gen-z-dev/content/google-search-gdd-sre.md": {"id": "book:2.mvp-for-gen-z-dev/content/google-search-gdd-sre.md", "kind": "source", "source_kind": "book-2018", "title": "Google Search, GDD and SRE", "file": "2.mvp-for-gen-z-dev/content/google-search-gdd-sre.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/google-search-gdd-sre.html", "map_articles": ["search-as-navigation"], "gap": "then-now: search as a navigation of a graph you own, and agents as the searcher.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/hugo.md": {"id": "book:2.mvp-for-gen-z-dev/content/hugo.md", "kind": "source", "source_kind": "book-2018", "title": "Hugo", "file": "2.mvp-for-gen-z-dev/content/hugo.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/hugo.html", "map_articles": ["your-own-newsroom", "nineteen-sites", "no-server-by-design"], "gap": "then-now: static sites built by an agent from a voice memo; Hugo itself is one option among several.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/jira.md": {"id": "book:2.mvp-for-gen-z-dev/content/jira.md", "kind": "source", "source_kind": "book-2018", "title": "Jira", "file": "2.mvp-for-gen-z-dev/content/jira.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/jira.html", "map_articles": ["the-agent-team-as-it-runs"], "gap": "then-now: issues as files in folders, the board the agents run; Jira as the thing it replaced.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/open-source.md": {"id": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "source", "source_kind": "book-2018", "title": "Open Source", "file": "2.mvp-for-gen-z-dev/content/open-source.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/open-source.html", "map_articles": ["the-fork-next-door", "what-open-source-is-and-is-not", "open-source-is-not-free", "the-eyeballs-get-cheap"], "gap": "Keep; add the fork as protection and who pays for the long tail.", "state": "answered", "ideas": 1}, "book:2.mvp-for-gen-z-dev/content/owasp.md": {"id": "book:2.mvp-for-gen-z-dev/content/owasp.md", "kind": "source", "source_kind": "book-2018", "title": "OWASP", "file": "2.mvp-for-gen-z-dev/content/owasp.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/owasp.html", "map_articles": ["hired-for-the-workflow", "portugal-2010-a-challenge"], "gap": "Keep; the OWASP work is the worked example of act as the job you want.", "state": "answered", "ideas": 1}, "book:2.mvp-for-gen-z-dev/content/python.md": {"id": "book:2.mvp-for-gen-z-dev/content/python.md", "kind": "source", "source_kind": "book-2018", "title": "Python", "file": "2.mvp-for-gen-z-dev/content/python.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/python.html", "map_articles": ["explorer-coding"], "gap": "then-now: Python is still the language of the agent era; the reader may write less of it by hand.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md": {"id": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "kind": "source", "source_kind": "book-2018", "title": "Slack and ChatOps", "file": "2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/slack-and-chatops.html", "map_articles": ["replicating-the-agentic-inbox", "omnichannel-programming"], "gap": "then-now: from ChatOps to agents in the inbox, briefs by voice, previews on the phone.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/content/xcode-and-swift.md": {"id": "book:2.mvp-for-gen-z-dev/content/xcode-and-swift.md", "kind": "source", "source_kind": "book-2018", "title": "Xcode and Swift", "file": "2.mvp-for-gen-z-dev/content/xcode-and-swift.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/xcode-and-swift.html", "map_articles": ["a-minimal-viable-browser"], "gap": "then-now: an app built by an agent for one person (a browser for one); Xcode still the door to iOS.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/aws.md": {"id": "book:2.mvp-for-gen-z-dev/draft/aws.md", "kind": "source", "source_kind": "book-2018", "title": "AWS", "file": "2.mvp-for-gen-z-dev/draft/aws.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/aws.html", "map_articles": ["cloudflare-as-lego-blocks", "move-the-cloud-not-the-code", "ephemeral-town-planner-services"], "gap": "", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md": {"id": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "kind": "source", "source_kind": "book-2018", "title": "Continuous Integration", "file": "2.mvp-for-gen-z-dev/draft/continuous-integration.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/continuous-integration.html", "map_articles": ["green-does-not-mean-live", "sgit-in-a-ci-pipeline", "sgit-actions-side-by-side"], "gap": "", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/electron.md": {"id": "book:2.mvp-for-gen-z-dev/draft/electron.md", "kind": "source", "source_kind": "book-2018", "title": "Electron", "file": "2.mvp-for-gen-z-dev/draft/electron.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/electron.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/draft/github-flow.md": {"id": "book:2.mvp-for-gen-z-dev/draft/github-flow.md", "kind": "source", "source_kind": "book-2018", "title": "GitHub Flow", "file": "2.mvp-for-gen-z-dev/draft/github-flow.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/github-flow.html", "map_articles": ["act-as-the-job-you-want"], "gap": "GitHub flow as the way an agent and a person share a repository; no article on the flow itself.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/iot.md": {"id": "book:2.mvp-for-gen-z-dev/draft/iot.md", "kind": "source", "source_kind": "book-2018", "title": "IOT (Internet of Things)", "file": "2.mvp-for-gen-z-dev/draft/iot.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/iot.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/draft/linux.md": {"id": "book:2.mvp-for-gen-z-dev/draft/linux.md", "kind": "source", "source_kind": "book-2018", "title": "linux", "file": "2.mvp-for-gen-z-dev/draft/linux.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/linux.html", "map_articles": ["the-minimum-code-below"], "gap": "The container chapter touches it; no article on Linux as a thing to learn.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/minecraft.md": {"id": "book:2.mvp-for-gen-z-dev/draft/minecraft.md", "kind": "source", "source_kind": "book-2018", "title": "Minecraft", "file": "2.mvp-for-gen-z-dev/draft/minecraft.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/minecraft.html", "map_articles": [], "gap": "none; consider cutting or merging into Learning.", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/draft/raspberry-pi.md": {"id": "book:2.mvp-for-gen-z-dev/draft/raspberry-pi.md", "kind": "source", "source_kind": "book-2018", "title": "raspberry-pi", "file": "2.mvp-for-gen-z-dev/draft/raspberry-pi.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/raspberry-pi.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/draft/stack-overflow.md": {"id": "book:2.mvp-for-gen-z-dev/draft/stack-overflow.md", "kind": "source", "source_kind": "book-2018", "title": "StackOverflow", "file": "2.mvp-for-gen-z-dev/draft/stack-overflow.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/stack-overflow.html", "map_articles": ["search-as-navigation"], "gap": "Where answers come from now: the agent, with the source behind it; no article on Stack Overflow itself.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/tdd.md": {"id": "book:2.mvp-for-gen-z-dev/draft/tdd.md", "kind": "source", "source_kind": "book-2018", "title": "TDD (Test-Driven Development)", "file": "2.mvp-for-gen-z-dev/draft/tdd.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/tdd.html", "map_articles": ["code-review-as-a-fractal-semantic-graph", "the-code-you-do-not-ship"], "gap": "Tests as the thing that lets an agent change code safely; no article on TDD as such.", "state": "answered"}, "book:2.mvp-for-gen-z-dev/draft/wallaby-and-ncrunch.md": {"id": "book:2.mvp-for-gen-z-dev/draft/wallaby-and-ncrunch.md", "kind": "source", "source_kind": "book-2018", "title": "Wallaby and NCrunch", "file": "2.mvp-for-gen-z-dev/draft/wallaby-and-ncrunch.md", "book_kind": "written", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/wallaby-and-ncrunch.html", "map_articles": [], "gap": "Written in 2018 (it is the longest chapter) but filed under draft. then-now: live test runners dated; the idea, instant feedback, is what agents give now.", "state": "unanswered"}, "book:2.mvp-for-gen-z-dev/draft/wikipedia.md": {"id": "book:2.mvp-for-gen-z-dev/draft/wikipedia.md", "kind": "source", "source_kind": "book-2018", "title": "Wikipedia", "file": "2.mvp-for-gen-z-dev/draft/wikipedia.md", "book_kind": "outline", "part": "MVP for Gen Z Dev", "url": "v1/book/mvp-for-gen-z-dev/wikipedia.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:3.technologies/_index.md": {"id": "book:3.technologies/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Technologies", "file": "3.technologies/_index.md", "book_kind": "apparatus", "part": "Technologies", "url": null, "map_articles": [], "gap": "Reframe: the technologies a Gen Z developer needs to understand (not operate) in 2026.", "state": "apparatus"}, "book:3.technologies/content/AST.md": {"id": "book:3.technologies/content/AST.md", "kind": "source", "source_kind": "book-2018", "title": "AST (Abstract Syntax Tree)", "file": "3.technologies/content/AST.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/ast.html", "map_articles": ["code-review-as-a-fractal-semantic-graph"], "gap": "Keep; code is already a graph, which is where the AST chapter was heading.", "state": "answered", "ideas": 1}, "book:3.technologies/content/assembly-and-bytecode.md": {"id": "book:3.technologies/content/assembly-and-bytecode.md", "kind": "source", "source_kind": "book-2018", "title": "Assembly and Bytecode", "file": "3.technologies/content/assembly-and-bytecode.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/assembly-and-bytecode.html", "map_articles": [], "gap": "Keep as history; no article.", "state": "unanswered"}, "book:3.technologies/content/books.md": {"id": "book:3.technologies/content/books.md", "kind": "source", "source_kind": "book-2018", "title": "Books", "file": "3.technologies/content/books.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/books.html", "map_articles": [], "gap": "Keep; refresh the list. Add the graphs books and this one.", "state": "unanswered"}, "book:3.technologies/content/brain.md": {"id": "book:3.technologies/content/brain.md", "kind": "source", "source_kind": "book-2018", "title": "Brain", "file": "3.technologies/content/brain.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/brain.html", "map_articles": ["knowing-when-to-stop", "how-cheap-is-it-to-undo"], "gap": "Keep; connect to what experience gives people and what has to be designed into agents.", "state": "answered", "ideas": 1}, "book:3.technologies/content/ide.md": {"id": "book:3.technologies/content/ide.md", "kind": "source", "source_kind": "book-2018", "title": "IDE", "file": "3.technologies/content/ide.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/ide.html", "map_articles": ["explorer-coding", "how-i-work-with-claude"], "gap": "then-now: the IDE is now a conversation with an agent and a terminal; keep the history.", "state": "answered"}, "book:3.technologies/content/ml-ai.md": {"id": "book:3.technologies/content/ml-ai.md", "kind": "source", "source_kind": "book-2018", "title": "Machine Learning and AI", "file": "3.technologies/content/ml-ai.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/ml-ai.html", "map_articles": ["hired-for-the-workflow", "authority-outside-the-model"], "gap": "then-now: the 2018 chapter pointed at cloud ML services to program; the shift was learning to use it and direct agents. The chapter that changed most.", "state": "answered", "ideas": 1}, "book:3.technologies/content/pen-and-paper.md": {"id": "book:3.technologies/content/pen-and-paper.md", "kind": "source", "source_kind": "book-2018", "title": "Pen and Paper", "file": "3.technologies/content/pen-and-paper.md", "book_kind": "written", "part": "Technologies", "url": "v1/book/technologies/pen-and-paper.html", "map_articles": ["why-i-love-wardley-maps"], "gap": "Keep; add the handwritten notes from the printed copy as figures.", "state": "answered"}, "book:3.technologies/draft/blockchain.md": {"id": "book:3.technologies/draft/blockchain.md", "kind": "source", "source_kind": "book-2018", "title": "Blockchain", "file": "3.technologies/draft/blockchain.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/blockchain.html", "map_articles": [], "gap": "none; the editor decides whether it stays.", "state": "unanswered"}, "book:3.technologies/draft/browser-automation.md": {"id": "book:3.technologies/draft/browser-automation.md", "kind": "source", "source_kind": "book-2018", "title": "Browser Automation", "file": "3.technologies/draft/browser-automation.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/browser-automation.html", "map_articles": ["a-minimal-viable-browser", "how-to-run-synthetic-users"], "gap": "", "state": "answered"}, "book:3.technologies/draft/dopamine.md": {"id": "book:3.technologies/draft/dopamine.md", "kind": "source", "source_kind": "book-2018", "title": "Dopamine", "file": "3.technologies/draft/dopamine.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/dopamine.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:3.technologies/draft/dsl.md": {"id": "book:3.technologies/draft/dsl.md", "kind": "source", "source_kind": "book-2018", "title": "DSL", "file": "3.technologies/draft/dsl.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/dsl.html", "map_articles": ["introducing-fractal-semantic-graphs"], "gap": "Graphs as the DSL; no article on DSLs as such.", "state": "answered"}, "book:3.technologies/draft/ngrok.md": {"id": "book:3.technologies/draft/ngrok.md", "kind": "source", "source_kind": "book-2018", "title": "Ngrok", "file": "3.technologies/draft/ngrok.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/ngrok.html", "map_articles": [], "gap": "none; likely cut.", "state": "unanswered"}, "book:3.technologies/draft/node-js.md": {"id": "book:3.technologies/draft/node-js.md", "kind": "source", "source_kind": "book-2018", "title": "Node JS", "file": "3.technologies/draft/node-js.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/node-js.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:3.technologies/draft/r-language.md": {"id": "book:3.technologies/draft/r-language.md", "kind": "source", "source_kind": "book-2018", "title": "R (language)", "file": "3.technologies/draft/r-language.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/r-language.html", "map_articles": [], "gap": "none; likely cut.", "state": "unanswered"}, "book:3.technologies/draft/scratch.md": {"id": "book:3.technologies/draft/scratch.md", "kind": "source", "source_kind": "book-2018", "title": "Scratch", "file": "3.technologies/draft/scratch.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/scratch.html", "map_articles": ["the-citizen-developer"], "gap": "Scratch as the first door; the citizen developer is the grown-up version.", "state": "answered"}, "book:3.technologies/draft/streams.md": {"id": "book:3.technologies/draft/streams.md", "kind": "source", "source_kind": "book-2018", "title": "Streams", "file": "3.technologies/draft/streams.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/streams.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:3.technologies/draft/web-proxies.md": {"id": "book:3.technologies/draft/web-proxies.md", "kind": "source", "source_kind": "book-2018", "title": "Web Proxies", "file": "3.technologies/draft/web-proxies.md", "book_kind": "outline", "part": "Technologies", "url": "v1/book/technologies/web-proxies.html", "map_articles": ["a-minimal-viable-browser"], "gap": "The browser chapter touches it; no article on proxies as such.", "state": "answered"}, "book:4.life-patterns/BBS-and-modems.md": {"id": "book:4.life-patterns/BBS-and-modems.md", "kind": "source", "source_kind": "book-2018", "title": "BBS and Modems", "file": "4.life-patterns/BBS-and-modems.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/bbs-and-modems.html", "map_articles": [], "gap": "none; keep as history (Dinis's own story), short.", "state": "unanswered"}, "book:4.life-patterns/_index.md": {"id": "book:4.life-patterns/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Life Patterns", "file": "4.life-patterns/_index.md", "book_kind": "apparatus", "part": "Life Patterns", "url": null, "map_articles": [], "gap": "Keep the part; it is where most outlines were.", "state": "apparatus"}, "book:4.life-patterns/automate-your-workflows.md": {"id": "book:4.life-patterns/automate-your-workflows.md", "kind": "source", "source_kind": "book-2018", "title": "Automate your Workflows", "file": "4.life-patterns/automate-your-workflows.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/automate-your-workflows.html", "map_articles": ["your-own-newsroom", "replicating-the-agentic-inbox", "from-a-spreadsheet-to-a-folder-per-person", "omnichannel-programming"], "gap": "", "state": "answered"}, "book:4.life-patterns/civic-responsibility.md": {"id": "book:4.life-patterns/civic-responsibility.md", "kind": "source", "source_kind": "book-2018", "title": "Civic Responsibility", "file": "4.life-patterns/civic-responsibility.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/civic-responsibility.html", "map_articles": ["judo-for-small-countries", "portugal-and-europe-2025", "who-owns-the-words"], "gap": "The Portugal articles carry it, and who owns the words carries the responsibility that stays with the person; no article on civic responsibility as such.", "state": "answered"}, "book:4.life-patterns/content/backup-your-life.md": {"id": "book:4.life-patterns/content/backup-your-life.md", "kind": "source", "source_kind": "book-2018", "title": "Backup your life", "file": "4.life-patterns/content/backup-your-life.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/backup-your-life.html", "map_articles": ["what-sgit-is", "encrypted-memory-for-isolated-agents", "the-vault-is-live"], "gap": "then-now: back up into a vault you hold the key to.", "state": "answered"}, "book:4.life-patterns/content/be-a-founder.md": {"id": "book:4.life-patterns/content/be-a-founder.md", "kind": "source", "source_kind": "book-2018", "title": "Be a founder", "file": "4.life-patterns/content/be-a-founder.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/be-a-founder.html", "map_articles": ["the-controllable-founder", "the-expert-founders", "sell-dont-issue", "not-a-straight-line"], "gap": "Keep; add what investors pick, and the expert founder.", "state": "answered", "ideas": 2}, "book:4.life-patterns/content/being-criticized-is-a-privilege.md": {"id": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "kind": "source", "source_kind": "book-2018", "title": "Being criticized is an privilege", "file": "4.life-patterns/content/being-criticized-is-a-privilege.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/being-criticized-is-a-privilege.html", "map_articles": ["reviews-on-the-record", "riskmandate-ten-questions"], "gap": "Keep; the book itself is now reviewed on the record, finding by finding, declined allowed.", "state": "answered"}, "book:4.life-patterns/content/future-needs-you.md": {"id": "book:4.life-patterns/content/future-needs-you.md", "kind": "source", "source_kind": "book-2018", "title": "The future needs you", "file": "4.life-patterns/content/future-needs-you.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/future-needs-you.html", "map_articles": ["hired-for-the-workflow", "the-code-you-do-not-ship"], "gap": "Keep; then-now on what the future turned out to need.", "state": "answered"}, "book:4.life-patterns/content/learning.md": {"id": "book:4.life-patterns/content/learning.md", "kind": "source", "source_kind": "book-2018", "title": "Learning", "file": "4.life-patterns/content/learning.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/learning.html", "map_articles": ["hired-for-the-workflow"], "gap": "Keep: learn how to learn is on the cover. Add: you have to do it to see it.", "state": "answered"}, "book:4.life-patterns/content/talking-to-yourself.md": {"id": "book:4.life-patterns/content/talking-to-yourself.md", "kind": "source", "source_kind": "book-2018", "title": "Talking to yourself digitally", "file": "4.life-patterns/content/talking-to-yourself.md", "book_kind": "written", "part": "Life Patterns", "url": "v1/book/life-patterns/talking-to-yourself.html", "map_articles": ["my-memory-checked", "the-librarians-daily-brief"], "gap": "then-now: talking to yourself by voice memo, and an agent that checks what you said.", "state": "answered"}, "book:4.life-patterns/curse-of-knowledge.md": {"id": "book:4.life-patterns/curse-of-knowledge.md", "kind": "source", "source_kind": "book-2018", "title": "Curse of Knowledge", "file": "4.life-patterns/curse-of-knowledge.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/curse-of-knowledge.html", "map_articles": ["how-the-voice-works", "one-article-five-readers"], "gap": "Readers at several altitudes; no article on the curse of knowledge as such.", "state": "answered"}, "book:4.life-patterns/ideas.md": {"id": "book:4.life-patterns/ideas.md", "kind": "source", "source_kind": "book-2018", "title": "Ideas", "file": "4.life-patterns/ideas.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/ideas.html", "map_articles": ["bringing-my-past-work-back", "books-from-articles"], "gap": "Ideas as briefs, kept and acted on later.", "state": "answered"}, "book:4.life-patterns/impostor-syndrome.md": {"id": "book:4.life-patterns/impostor-syndrome.md", "kind": "source", "source_kind": "book-2018", "title": "Impostor Syndrome", "file": "4.life-patterns/impostor-syndrome.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/impostor-syndrome.html", "map_articles": ["hired-for-the-workflow"], "gap": "You are more technical than you think; no article on impostor syndrome as such.", "state": "answered"}, "book:4.life-patterns/king-is-naked.md": {"id": "book:4.life-patterns/king-is-naked.md", "kind": "source", "source_kind": "book-2018", "title": "Kind is naked", "file": "4.life-patterns/king-is-naked.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/king-is-naked.html", "map_articles": ["firing-journalists", "stop-the-bleeding-then-ask-for-it-back"], "gap": "Saying the thing nobody says; no article on the fable itself.", "state": "answered"}, "book:4.life-patterns/learn-to-hack.md": {"id": "book:4.life-patterns/learn-to-hack.md", "kind": "source", "source_kind": "book-2018", "title": "Learn to Hack", "file": "4.life-patterns/learn-to-hack.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/learn-to-hack.html", "map_articles": ["who-are-you-protecting-against", "fix-the-page-yourself"], "gap": "", "state": "answered"}, "book:4.life-patterns/love-maths.md": {"id": "book:4.life-patterns/love-maths.md", "kind": "source", "source_kind": "book-2018", "title": "Love Maths", "file": "4.life-patterns/love-maths.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/love-maths.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:4.life-patterns/mentors.md": {"id": "book:4.life-patterns/mentors.md", "kind": "source", "source_kind": "book-2018", "title": "Mentors", "file": "4.life-patterns/mentors.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/mentors.html", "map_articles": ["act-as-the-job-you-want"], "gap": "Let the people who want to help you, help you; no article on mentors as such.", "state": "answered"}, "book:4.life-patterns/nudge.md": {"id": "book:4.life-patterns/nudge.md", "kind": "source", "source_kind": "book-2018", "title": "status: draft", "file": "4.life-patterns/nudge.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/nudge.html", "map_articles": [], "gap": "none; the file has no title.", "state": "unanswered"}, "book:4.life-patterns/one-way-two-way-doors.md": {"id": "book:4.life-patterns/one-way-two-way-doors.md", "kind": "source", "source_kind": "book-2018", "title": "One way and two way doors", "file": "4.life-patterns/one-way-two-way-doors.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/one-way-two-way-doors.html", "map_articles": ["how-cheap-is-it-to-undo", "the-human-in-the-loop"], "gap": "", "state": "answered"}, "book:4.life-patterns/pionners-settlers-town-planners.md": {"id": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "source", "source_kind": "book-2018", "title": "Are you a pionner, Settlers or Town Planners", "file": "4.life-patterns/pionners-settlers-town-planners.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/pionners-settlers-town-planners.html", "map_articles": ["software-vendors-as-villagers", "explorer-coding", "why-i-love-wardley-maps", "explorer-to-villager-newsroom"], "gap": "Becomes the frame of the whole edition: explorers, villagers and town planners, and Wardley maps explained.", "state": "answered"}, "book:4.life-patterns/power-of-habits.md": {"id": "book:4.life-patterns/power-of-habits.md", "kind": "source", "source_kind": "book-2018", "title": "Power of Habits", "file": "4.life-patterns/power-of-habits.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/power-of-habits.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:4.life-patterns/publish-publish-publish.md": {"id": "book:4.life-patterns/publish-publish-publish.md", "kind": "source", "source_kind": "book-2018", "title": "Publish, Publish Publish", "file": "4.life-patterns/publish-publish-publish.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/publish-publish-publish.html", "map_articles": ["your-own-newsroom", "act-as-the-job-you-want", "nineteen-sites"], "gap": "", "state": "answered"}, "book:4.life-patterns/refactoring.md": {"id": "book:4.life-patterns/refactoring.md", "kind": "source", "source_kind": "book-2018", "title": "Refactoring", "file": "4.life-patterns/refactoring.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/refactoring.html", "map_articles": ["the-code-you-do-not-ship", "short-punchy-and-co-written"], "gap": "Refactoring code, and refactoring a book that is a graph.", "state": "answered"}, "book:4.life-patterns/start-with-why.md": {"id": "book:4.life-patterns/start-with-why.md", "kind": "source", "source_kind": "book-2018", "title": "Start with Why", "file": "4.life-patterns/start-with-why.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/start-with-why.html", "map_articles": ["places-of-highest-leverage"], "gap": "Start where the leverage is, without knowing the end; no article on Sinek's why as such.", "state": "answered"}, "book:4.life-patterns/the-zone.md": {"id": "book:4.life-patterns/the-zone.md", "kind": "source", "source_kind": "book-2018", "title": "The Zone", "file": "4.life-patterns/the-zone.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/the-zone.html", "map_articles": [], "gap": "none; the Introduction already describes it.", "state": "unanswered"}, "book:4.life-patterns/thinking-as-programmer.md": {"id": "book:4.life-patterns/thinking-as-programmer.md", "kind": "source", "source_kind": "book-2018", "title": "Thinking as programmer", "file": "4.life-patterns/thinking-as-programmer.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/thinking-as-programmer.html", "map_articles": ["the-citizen-developer", "explorer-coding"], "gap": "", "state": "answered"}, "book:4.life-patterns/why-diversity-matters.md": {"id": "book:4.life-patterns/why-diversity-matters.md", "kind": "source", "source_kind": "book-2018", "title": "Why diversity matters", "file": "4.life-patterns/why-diversity-matters.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/why-diversity-matters.html", "map_articles": ["one-article-five-readers"], "gap": "Several readers, several altitudes; no article on diversity as such.", "state": "answered"}, "book:4.life-patterns/workflows.md": {"id": "book:4.life-patterns/workflows.md", "kind": "source", "source_kind": "book-2018", "title": "Workflows", "file": "4.life-patterns/workflows.md", "book_kind": "outline", "part": "Life Patterns", "url": "v1/book/life-patterns/workflows.html", "map_articles": ["your-own-newsroom", "how-i-work-with-claude", "the-mandate-stack"], "gap": "", "state": "answered"}, "book:5.concepts/CI-Testing.md": {"id": "book:5.concepts/CI-Testing.md", "kind": "source", "source_kind": "book-2018", "title": "CI Testing", "file": "5.concepts/CI-Testing.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/ci-testing.html", "map_articles": ["green-does-not-mean-live", "sgit-in-a-ci-pipeline"], "gap": "", "state": "answered"}, "book:5.concepts/_index.md": {"id": "book:5.concepts/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Concepts", "file": "5.concepts/_index.md", "book_kind": "apparatus", "part": "Concepts", "url": null, "map_articles": [], "gap": "Keep the part; 26 of its 27 files are outlines.", "state": "apparatus"}, "book:5.concepts/agile-and-kanban.md": {"id": "book:5.concepts/agile-and-kanban.md", "kind": "source", "source_kind": "book-2018", "title": "Agile and Kanban", "file": "5.concepts/agile-and-kanban.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/agile-and-kanban.html", "map_articles": ["the-agent-team-as-it-runs"], "gap": "The board as folders; no article on agile as such.", "state": "answered"}, "book:5.concepts/amazon-press-releases.md": {"id": "book:5.concepts/amazon-press-releases.md", "kind": "source", "source_kind": "book-2018", "title": "Amazon Press Release", "file": "5.concepts/amazon-press-releases.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/amazon-press-releases.html", "map_articles": ["three-linkedin-pages"], "gap": "Writing the announcement first; no article on the press-release method.", "state": "answered"}, "book:5.concepts/change-engineering.md": {"id": "book:5.concepts/change-engineering.md", "kind": "source", "source_kind": "book-2018", "title": "Change Engineering", "file": "5.concepts/change-engineering.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/change-engineering.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:5.concepts/changes.md": {"id": "book:5.concepts/changes.md", "kind": "source", "source_kind": "book-2018", "title": "Changes", "file": "5.concepts/changes.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/changes.html", "map_articles": ["every-mistake-added-a-rule", "how-cheap-is-it-to-undo"], "gap": "", "state": "answered"}, "book:5.concepts/chaos-engineering.md": {"id": "book:5.concepts/chaos-engineering.md", "kind": "source", "source_kind": "book-2018", "title": "Chaos Engineering", "file": "5.concepts/chaos-engineering.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/chaos-engineering.html", "map_articles": ["connector-twin-before-you-deploy-an-agent", "footprint-and-blast-radius"], "gap": "", "state": "answered"}, "book:5.concepts/deadlines.md": {"id": "book:5.concepts/deadlines.md", "kind": "source", "source_kind": "book-2018", "title": "Deadlines", "file": "5.concepts/deadlines.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/deadlines.html", "map_articles": ["i-miss-it", "the-question-is-whether-they-miss-it", "places-of-highest-leverage"], "gap": "", "state": "answered"}, "book:5.concepts/design.md": {"id": "book:5.concepts/design.md", "kind": "source", "source_kind": "book-2018", "title": "Design", "file": "5.concepts/design.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/design.html", "map_articles": ["the-infographic-bake-off"], "gap": "Infographics for every chapter; no article on design as a concept.", "state": "answered"}, "book:5.concepts/devops.md": {"id": "book:5.concepts/devops.md", "kind": "source", "source_kind": "book-2018", "title": "DevOps", "file": "5.concepts/devops.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/devops.html", "map_articles": ["green-does-not-mean-live", "no-server-by-design"], "gap": "", "state": "answered"}, "book:5.concepts/draft/spotify-model.md": {"id": "book:5.concepts/draft/spotify-model.md", "kind": "source", "source_kind": "book-2018", "title": "Spotify Model", "file": "5.concepts/draft/spotify-model.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/spotify-model.html", "map_articles": [], "gap": "none; likely cut.", "state": "unanswered"}, "book:5.concepts/facts.md": {"id": "book:5.concepts/facts.md", "kind": "source", "source_kind": "book-2018", "title": "Facts", "file": "5.concepts/facts.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/facts.html", "map_articles": ["my-memory-checked", "reviews-on-the-record"], "gap": "Make fact based decisions is on the cover; the newsroom's method of checking is the answer.", "state": "answered", "ideas": 2}, "book:5.concepts/feedback-loops.md": {"id": "book:5.concepts/feedback-loops.md", "kind": "source", "source_kind": "book-2018", "title": "Feedback loops", "file": "5.concepts/feedback-loops.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/feedback-loops.html", "map_articles": ["reviews-on-the-record", "how-to-run-synthetic-users"], "gap": "", "state": "answered"}, "book:5.concepts/funtional-programming.md": {"id": "book:5.concepts/funtional-programming.md", "kind": "source", "source_kind": "book-2018", "title": "Functional Programming", "file": "5.concepts/funtional-programming.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/funtional-programming.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:5.concepts/gamification.md": {"id": "book:5.concepts/gamification.md", "kind": "source", "source_kind": "book-2018", "title": "Gamification", "file": "5.concepts/gamification.md", "book_kind": "written", "part": "Concepts", "url": "v1/book/concepts/gamification.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:5.concepts/gdpr.md": {"id": "book:5.concepts/gdpr.md", "kind": "source", "source_kind": "book-2018", "title": "GDPR", "file": "5.concepts/gdpr.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/gdpr.html", "map_articles": ["ai-baseline-control-framework"], "gap": "The governance articles touch it; no article on GDPR for developers.", "state": "answered"}, "book:5.concepts/graphs.md": {"id": "book:5.concepts/graphs.md", "kind": "source", "source_kind": "book-2018", "title": "graphs", "file": "5.concepts/graphs.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/graphs.html", "map_articles": ["the-graphs-books", "search-as-navigation", "introducing-fractal-semantic-graphs", "memory-is-not-a-spectator-sport"], "gap": "", "state": "answered", "ideas": 1}, "book:5.concepts/inventing-on-principle.md": {"id": "book:5.concepts/inventing-on-principle.md", "kind": "source", "source_kind": "book-2018", "title": "Inventing on Principle", "file": "5.concepts/inventing-on-principle.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/inventing-on-principle.html", "map_articles": ["explorer-coding"], "gap": "Instant feedback while making; no article on Bret Victor's talk.", "state": "answered"}, "book:5.concepts/karma-points.md": {"id": "book:5.concepts/karma-points.md", "kind": "source", "source_kind": "book-2018", "title": "Karma Points", "file": "5.concepts/karma-points.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/karma-points.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:5.concepts/legacy-applications.md": {"id": "book:5.concepts/legacy-applications.md", "kind": "source", "source_kind": "book-2018", "title": "Legacy Applications", "file": "5.concepts/legacy-applications.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/legacy-applications.html", "map_articles": ["the-code-you-do-not-ship"], "gap": "", "state": "answered"}, "book:5.concepts/micro-services.md": {"id": "book:5.concepts/micro-services.md", "kind": "source", "source_kind": "book-2018", "title": "Micro-Services", "file": "5.concepts/micro-services.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/micro-services.html", "map_articles": ["ephemeral-town-planner-services", "no-server-by-design"], "gap": "", "state": "answered"}, "book:5.concepts/netflix-culture.md": {"id": "book:5.concepts/netflix-culture.md", "kind": "source", "source_kind": "book-2018", "title": "Netflix Culture", "file": "5.concepts/netflix-culture.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/netflix-culture.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:5.concepts/pair-programming.md": {"id": "book:5.concepts/pair-programming.md", "kind": "source", "source_kind": "book-2018", "title": "Pair Programming", "file": "5.concepts/pair-programming.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/pair-programming.html", "map_articles": ["how-i-work-with-claude", "explorer-coding"], "gap": "Pairing with an agent.", "state": "answered"}, "book:5.concepts/recursive-functions.md": {"id": "book:5.concepts/recursive-functions.md", "kind": "source", "source_kind": "book-2018", "title": "Recursive Functions", "file": "5.concepts/recursive-functions.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/recursive-functions.html", "map_articles": ["introducing-fractal-semantic-graphs"], "gap": "Fractal graphs are the recursive idea; no article on recursion as such.", "state": "answered"}, "book:5.concepts/repl.md": {"id": "book:5.concepts/repl.md", "kind": "source", "source_kind": "book-2018", "title": "REPL", "file": "5.concepts/repl.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/repl.html", "map_articles": ["explorer-coding"], "gap": "", "state": "answered"}, "book:5.concepts/serverless.md": {"id": "book:5.concepts/serverless.md", "kind": "source", "source_kind": "book-2018", "title": "Serverless", "file": "5.concepts/serverless.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/serverless.html", "map_articles": ["ephemeral-town-planner-services", "no-server-by-design", "cloudflare-as-lego-blocks"], "gap": "", "state": "answered"}, "book:5.concepts/sre.md": {"id": "book:5.concepts/sre.md", "kind": "source", "source_kind": "book-2018", "title": "SRE (Site Reliability Engineering )", "file": "5.concepts/sre.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/sre.html", "map_articles": ["green-does-not-mean-live"], "gap": "Thin; no article on SRE as such.", "state": "answered"}, "book:5.concepts/strong-vs-weak-types.md": {"id": "book:5.concepts/strong-vs-weak-types.md", "kind": "source", "source_kind": "book-2018", "title": "strong-vs-weak-types", "file": "5.concepts/strong-vs-weak-types.md", "book_kind": "outline", "part": "Concepts", "url": "v1/book/concepts/strong-vs-weak-types.html", "map_articles": [], "gap": "none; the file has no title.", "state": "unanswered"}, "book:6.security/3rd-party-modules.md": {"id": "book:6.security/3rd-party-modules.md", "kind": "source", "source_kind": "book-2018", "title": "3rd-party-modules", "file": "6.security/3rd-party-modules.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/3rd-party-modules.html", "map_articles": ["attacks-rewritten-as-mandates", "the-eyeballs-get-cheap", "open-source-is-not-free"], "gap": "", "state": "answered"}, "book:6.security/_index.md": {"id": "book:6.security/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Security", "file": "6.security/_index.md", "book_kind": "apparatus", "part": "Security", "url": null, "map_articles": [], "gap": "All eight files are outlines; the newsroom has the material for most.", "state": "apparatus"}, "book:6.security/bug-bounties.md": {"id": "book:6.security/bug-bounties.md", "kind": "source", "source_kind": "book-2018", "title": "Bug Bounties", "file": "6.security/bug-bounties.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/bug-bounties.html", "map_articles": ["act-as-the-job-you-want"], "gap": "Find vulnerabilities in open-source projects and report them properly; no article on bounties as such.", "state": "answered"}, "book:6.security/defcon.md": {"id": "book:6.security/defcon.md", "kind": "source", "source_kind": "book-2018", "title": "Defcon", "file": "6.security/defcon.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/defcon.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:6.security/dont-touch-production.md": {"id": "book:6.security/dont-touch-production.md", "kind": "source", "source_kind": "book-2018", "title": "Don't touch production", "file": "6.security/dont-touch-production.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/dont-touch-production.html", "map_articles": ["footprint-and-blast-radius", "connector-twin-before-you-deploy-an-agent", "why-my-agents-do-not-run-on-my-laptop"], "gap": "", "state": "answered"}, "book:6.security/pointers.md": {"id": "book:6.security/pointers.md", "kind": "source", "source_kind": "book-2018", "title": "Pointers", "file": "6.security/pointers.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/pointers.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:6.security/security-better-developers.md": {"id": "book:6.security/security-better-developers.md", "kind": "source", "source_kind": "book-2018", "title": "Security creates better developers", "file": "6.security/security-better-developers.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/security-better-developers.html", "map_articles": ["who-are-you-protecting-against", "if-somebody-built-a-company-on-code-review"], "gap": "", "state": "answered"}, "book:6.security/strings-should-be-banned.md": {"id": "book:6.security/strings-should-be-banned.md", "kind": "source", "source_kind": "book-2018", "title": "Strings should be banned", "file": "6.security/strings-should-be-banned.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/strings-should-be-banned.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:6.security/threat-modeling.md": {"id": "book:6.security/threat-modeling.md", "kind": "source", "source_kind": "book-2018", "title": "Threat Modeling", "file": "6.security/threat-modeling.md", "book_kind": "outline", "part": "Security", "url": "v1/book/security/threat-modeling.html", "map_articles": ["every-risk-is-already-accepted", "who-are-you-protecting-against", "footprint-and-blast-radius"], "gap": "", "state": "answered"}, "book:7.your-cv/_index.md": {"id": "book:7.your-cv/_index.md", "kind": "source", "source_kind": "book-2018", "title": "Your CV", "file": "7.your-cv/_index.md", "book_kind": "apparatus", "part": "Your CV", "url": null, "map_articles": ["act-as-the-job-you-want"], "gap": "Keep the part; your CV should be online, with links to the work.", "state": "answered"}, "book:7.your-cv/blogs.md": {"id": "book:7.your-cv/blogs.md", "kind": "source", "source_kind": "book-2018", "title": "Blogs", "file": "7.your-cv/blogs.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/blogs.html", "map_articles": ["your-own-newsroom", "act-as-the-job-you-want"], "gap": "", "state": "answered"}, "book:7.your-cv/future-self.md": {"id": "book:7.your-cv/future-self.md", "kind": "source", "source_kind": "book-2018", "title": "Future Self", "file": "7.your-cv/future-self.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/future-self.html", "map_articles": ["bringing-my-past-work-back", "memory-is-not-a-spectator-sport"], "gap": "", "state": "answered"}, "book:7.your-cv/git.md": {"id": "book:7.your-cv/git.md", "kind": "source", "source_kind": "book-2018", "title": "Git", "file": "7.your-cv/git.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/git.html", "map_articles": ["what-sgit-is", "sgit-is-a-standard"], "gap": "Git, and git for things you cannot put on GitHub.", "state": "answered"}, "book:7.your-cv/github.md": {"id": "book:7.your-cv/github.md", "kind": "source", "source_kind": "book-2018", "title": "Github", "file": "7.your-cv/github.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/github.html", "map_articles": ["act-as-the-job-you-want", "the-fork-next-door"], "gap": "", "state": "answered"}, "book:7.your-cv/leanpub.md": {"id": "book:7.your-cv/leanpub.md", "kind": "source", "source_kind": "book-2018", "title": "leanpub", "file": "7.your-cv/leanpub.md", "book_kind": "written", "part": "Your CV", "url": "v1/book/your-cv/leanpub.html", "map_articles": ["books-from-articles", "generation-z-developers-again"], "gap": "", "state": "answered"}, "book:7.your-cv/linkedin.md": {"id": "book:7.your-cv/linkedin.md", "kind": "source", "source_kind": "book-2018", "title": "LinkedIn", "file": "7.your-cv/linkedin.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/linkedin.html", "map_articles": ["three-linkedin-pages", "act-as-the-job-you-want"], "gap": "", "state": "answered"}, "book:7.your-cv/personal-brand.md": {"id": "book:7.your-cv/personal-brand.md", "kind": "source", "source_kind": "book-2018", "title": "personal-brand", "file": "7.your-cv/personal-brand.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/personal-brand.html", "map_articles": ["who-is-speaking", "how-the-voice-works", "the-man-behind-the-curtain"], "gap": "The file has no title; the voice articles answer it.", "state": "answered"}, "book:7.your-cv/twitter.md": {"id": "book:7.your-cv/twitter.md", "kind": "source", "source_kind": "book-2018", "title": "twitter", "file": "7.your-cv/twitter.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/twitter.html", "map_articles": [], "gap": "none; then-now: the platform changed, the practice (your public notebook) moved to your own site.", "state": "unanswered"}, "book:7.your-cv/upwork.md": {"id": "book:7.your-cv/upwork.md", "kind": "source", "source_kind": "book-2018", "title": "Upwork", "file": "7.your-cv/upwork.md", "book_kind": "outline", "part": "Your CV", "url": "v1/book/your-cv/upwork.html", "map_articles": [], "gap": "none", "state": "unanswered"}, "book:_footer.md": {"id": "book:_footer.md", "kind": "source", "source_kind": "book-2018", "title": "footer", "file": "_footer.md", "book_kind": "apparatus", "part": "Apparatus", "url": null, "map_articles": [], "gap": "The licence line (CC BY-SA 4.0 here; CC BY on the cover): settle which.", "state": "apparatus"}, "book:_index.md": {"id": "book:_index.md", "kind": "source", "source_kind": "book-2018", "title": "Home", "file": "_index.md", "book_kind": "apparatus", "part": "Apparatus", "url": null, "map_articles": [], "gap": "Site home of the Hugo build; not a chapter.", "state": "apparatus"}, "book:_manuscript/book.md": {"id": "book:_manuscript/book.md", "kind": "source", "source_kind": "book-2018", "title": "book", "file": "_manuscript/book.md", "book_kind": "apparatus", "part": "Manuscript apparatus", "url": null, "map_articles": [], "gap": "Hugo Leanpub layout; not a chapter.", "state": "apparatus"}, "book:_manuscript/change-log.md": {"id": "book:_manuscript/change-log.md", "kind": "source", "source_kind": "book-2018", "title": "Change log", "file": "_manuscript/change-log.md", "book_kind": "apparatus", "part": "Manuscript apparatus", "url": null, "map_articles": [], "gap": "Keep as the record of v0.30 to v0.60 and the contributors to credit.", "state": "apparatus"}, "book:_manuscript/github-issues.md": {"id": "book:_manuscript/github-issues.md", "kind": "source", "source_kind": "book-2018", "title": "GitHub Issues", "file": "_manuscript/github-issues.md", "book_kind": "apparatus", "part": "Manuscript apparatus", "url": "v1/book/github-issues.html", "map_articles": ["reviews-on-the-record"], "gap": "Feedback by GitHub issues then; reviews and a board in the vault now.", "state": "answered"}, "book:_template.md": {"id": "book:_template.md", "kind": "source", "source_kind": "book-2018", "title": "status: draft", "file": "_template.md", "book_kind": "apparatus", "part": "Apparatus", "url": null, "map_articles": [], "gap": "The outline template; not a chapter.", "state": "apparatus"}, "book:for-print.md": {"id": "book:for-print.md", "kind": "source", "source_kind": "book-2018", "title": "Book for print", "file": "for-print.md", "book_kind": "apparatus", "part": "Apparatus", "url": null, "map_articles": [], "gap": "Hugo print layout; not a chapter.", "state": "apparatus"}, "topic:everyone-is-a-developer": {"id": "topic:everyone-is-a-developer", "kind": "topic", "title": "Everyone who can brief an agent is a developer now", "why": "The opening frame of the edition: the reader is already a developer if they can describe what they want to an agent; Gen Z in 2026, the citizen developer, your own language as a programming language, and optimism against the burnout mood.", "url": "map/newsroom.html#topics", "articles": ["generation-z-developers-again", "portugal-2024-genai-in-portuguese", "the-citizen-developer", "two-years-in-the-opposite", "explorer-coding", "hired-for-the-workflow"], "state": "surveyed"}, "topic:explorers-villagers-town-planners": {"id": "topic:explorers-villagers-town-planners", "kind": "topic", "title": "Explorers, villagers and town planners (Wardley's frame)", "why": "The structure of the whole book: where the reader sits, what explorer coding is good for, and the handover to people who maintain and answer for software; the 2018 pioneers/settlers/town planners outline grown up.", "url": "map/newsroom.html#topics", "articles": ["a-browser-for-one", "a-custom-firefox-of-my-own", "explorer-coding", "software-vendors-as-villagers", "who-will-fix-your-mess", "the-citizen-developer", "ephemeral-town-planner-services", "omnichannel-programming", "two-years-in-the-opposite", "the-code-you-do-not-ship"], "state": "surveyed"}, "topic:getting-the-job": {"id": "topic:getting-the-job", "kind": "topic", "title": "Getting the job: hired for the workflow, act as the job you want", "why": "The practical promise of the book: why October 2026 is a moment of opportunity, what employers want (AI operators), how to stand out when candidates look equal, and how to work in public so others can help you.", "url": "map/newsroom.html#topics", "articles": ["act-as-the-job-you-want", "agentics-ready-to-sell", "hired-for-the-workflow", "three-linkedin-pages", "the-man-behind-the-curtain", "the-expert-founders", "your-own-newsroom"], "state": "surveyed"}, "topic:publish-in-public": {"id": "topic:publish-in-public", "kind": "topic", "title": "Publish, publish, publish: your own newsroom", "why": "Linkable work is the CV now: a site published by an agent from voice memos, an article behind every answer, small finished pieces over big batches.", "url": "map/newsroom.html#topics", "articles": ["books-from-articles", "the-man-behind-the-curtain", "your-own-newsroom", "act-as-the-job-you-want", "three-linkedin-pages", "bringing-my-past-work-back"], "state": "surveyed"}, "topic:working-with-agents": {"id": "topic:working-with-agents", "kind": "topic", "title": "How to work with agents: briefs, voice, one shared state", "why": "The day-to-day craft: brief by voice, review on the phone, focused sessions with roles, lessons and debriefs as memory, a daily brief, and reading sources in full.", "url": "map/newsroom.html#topics", "articles": ["how-the-newsletter-is-made", "omnichannel-programming", "the-agents-write-too", "the-briefs-so-far", "the-librarians-daily-brief", "my-memory-checked", "knowledge-that-maintains-itself"], "state": "surveyed"}, "topic:facts-and-the-record": {"id": "topic:facts-and-the-record", "kind": "topic", "title": "Facts, evidence and the record", "why": "Make fact-based decisions (on the 2018 cover) in the agent era: think out loud and let the record check you, count rather than remember, review as a record, and distrust self-reports.", "url": "map/newsroom.html#topics", "articles": ["every-link-points-back", "my-memory-checked", "on-the-record", "reviews-on-the-record", "the-ai-conference-read-for-governance", "your-agents-logs-are-a-self-report", "from-send-to-sgit", "how-the-newsletter-is-made"], "state": "surveyed"}, "topic:human-in-the-loop": {"id": "topic:human-in-the-loop", "kind": "topic", "title": "Where a person belongs: one-way doors, two-way doors and blast radius", "why": "The judgement a newcomer needs before letting an agent act: how cheap is it to undo, how large is the blast radius, and how the record moves the line over time.", "url": "map/newsroom.html#topics", "articles": ["how-cheap-is-it-to-undo", "the-human-in-the-loop", "the-editors-channel", "approve-at-altitude"], "state": "surveyed"}, "topic:controlling-your-agent": {"id": "topic:controlling-your-agent", "kind": "topic", "title": "Controlling your agent: mandate, reach and hope versus enforcement", "why": "Before you give an agent access, write down what it is for and what it can reach; rules in a prompt are hope, rules in a hook or platform are enforcement; behaviour, decision and workflow are different questions.", "url": "map/newsroom.html#topics", "articles": ["a-policy-beside-the-prompt", "a-policy-for-every-skill", "agent-hooks-october-2026", "allowed-is-not-right", "approve-at-altitude", "are-hooks-the-sweet-spot", "case-law-for-agents", "commanders-intent-is-a-behaviour-policy", "hooks-are-kernel-code", "inside-the-northstar-twin", "policy-as-code-needs-a-policy-first", "system-prompts-as-behaviour-policies", "the-policy-draws-the-liability-line", "the-policy-guards-the-door", "three-decisions-mapped", "three-policies-for-an-agent", "what-can-your-agent-reach"], "state": "surveyed"}, "topic:security-agent-era": {"id": "topic:security-agent-era", "kind": "topic", "title": "Security for the agent era: least code, supply chain, secrets, learning to hack", "why": "Code is a liability; the next maintainer is an agent; check skills and dependencies before installing; keep secrets out of the chat; learning to hack is still how you learn how things work.", "url": "map/newsroom.html#topics", "articles": ["a-minimal-viable-browser", "attacks-rewritten-as-mandates", "fix-the-page-yourself", "handing-secrets-to-agents", "skill-behaviour-policy", "the-code-you-do-not-ship", "the-minimum-code-below", "the-eyeballs-get-cheap"], "state": "surveyed"}, "topic:open-source": {"id": "topic:open-source", "kind": "topic", "title": "Open source: contribute, fork, and why it protects everyone", "why": "Open source remains the newcomer's best door (first PR, public work) and is becoming the most secure software; the fork protects founders, customers and investors; constraints make better products.", "url": "map/newsroom.html#topics", "articles": ["our-first-pr-in-ruflo", "the-eyeballs-get-cheap", "the-fork-next-door", "the-value-of-constraints", "sell-dont-issue", "act-as-the-job-you-want"], "state": "surveyed"}, "topic:building-blocks": {"id": "topic:building-blocks", "kind": "topic", "title": "Building blocks: cloud, serverless, free models, git and CI", "why": "What a non-specialist can assemble today, mostly free, with an agent doing the one-time setup; git as a standard; CI; knowing what tokens cost.", "url": "map/newsroom.html#topics", "articles": ["cloudflare-as-lego-blocks", "ephemeral-town-planner-services", "free-models-your-own-key", "sgit-in-a-ci-pipeline", "sgit-is-a-standard", "the-tokens-hook", "your-own-newsroom"], "state": "surveyed"}, "topic:graphs-memory": {"id": "topic:graphs-memory", "kind": "topic", "title": "Graphs, memory and your future self", "why": "Graphs as the way of thinking (not just Dot): brief from a graph, maintain it rather than perfect it, search as navigation; and keep your work linkable and backed up so your future self can find it.", "url": "map/newsroom.html#topics", "articles": ["bringing-my-past-work-back", "journalism-becomes-intelligence", "knowledge-that-maintains-itself", "search-as-navigation", "sixteen-notes-i-did-not-want-to-lose", "the-librarians-daily-brief", "the-graphs-books"], "state": "surveyed"}, "topic:be-a-founder": {"id": "topic:be-a-founder", "kind": "topic", "title": "Be a founder (or a one-person service)", "why": "Agents make execution cheap, so the expert can build first; what investors select for; technology that works before the use case; small agent-run services and pay-after-value models.", "url": "map/newsroom.html#topics", "articles": ["from-send-to-sgit", "paying-after-the-value", "sell-dont-issue", "stop-the-bleeding-then-ask-for-it-back", "the-controllable-founder", "the-expert-founders", "the-fork-next-door", "software-vendors-as-villagers", "a-browser-for-one"], "state": "surveyed"}, "topic:civic-and-history": {"id": "topic:civic-and-history", "kind": "topic", "title": "Civic responsibility: hacking a country, sovereignty, your language", "why": "Dinis's Portugal talks as the then-now of civic responsibility: to hack means to solve problems; what regulation delivered; small countries can lead in code now that everyone can build.", "url": "map/newsroom.html#topics", "articles": ["portugal-2010-a-challenge", "portugal-2016-hacking-portugal", "portugal-and-europe-2025", "portugal-2024-genai-in-portuguese"], "state": "surveyed"}, "topic:making-of": {"id": "topic:making-of", "kind": "topic", "title": "How this book was made (the last part)", "why": "The edition's own workflow as the final worked example: repository and vault, agents in roles, voice memos, the record, review on the record, three voices, co-written with Claude and the memo-to-word ratio.", "url": "map/newsroom.html#topics", "articles": ["a-book-for-one-reader", "a-website-to-finish-the-book", "short-punchy-and-co-written", "the-editors-channel", "the-graphs-books", "versions-of-versions", "who-is-speaking", "books-from-articles", "my-memory-checked", "reviews-on-the-record"], "state": "surveyed"}, "topic:direction-is-the-scarce-skill": {"id": "topic:direction-is-the-scarce-skill", "kind": "topic", "title": "Direction is the scarce skill: the place of highest leverage, knowing when to stop, starting without knowing the end", "why": "When anyone can brief an agent, building stops being the bottleneck and choosing what to build, and when to stop, becomes the skill employers and users pay for. This is the junior's version of seniority, and it answers the 2018 life-patterns outlines (habits, the zone, start with why) that had no article.", "url": "map/newsroom.html#topics", "articles": ["places-of-highest-leverage", "knowing-when-to-stop", "not-a-straight-line", "i-miss-it", "how-much-of-this-did-i-write", "every-mistake-added-a-rule"], "state": "surveyed"}, "topic:your-first-workspace": {"id": "topic:your-first-workspace", "kind": "topic", "title": "Your first workspace: from one Claude Project to a team of agents, safely", "why": "The first pass flagged this as gap 1, with no how-to in scope. Four imported articles together make a step-by-step path: a folder per person in Drive with a Claude Project, then habits, then the agent's own mailbox and seat, with agents kept off your laptop. It could also sit as the opening chapter of working-with-agents.", "url": "map/newsroom.html#topics", "articles": ["from-a-spreadsheet-to-a-folder-per-person", "how-i-work-with-claude", "replicating-the-agentic-inbox", "why-my-agents-do-not-run-on-my-laptop", "how-to-run-synthetic-users"], "state": "surveyed"}, "topic:shipped-means-the-user-has-it": {"id": "topic:shipped-means-the-user-has-it", "kind": "topic", "title": "Shipped means the user has it: tests, CI and going slow to go fast", "why": "Fills the testing/TDD gap with stories rather than theory. A green build is not a release, tests that never run are not tests, the handover from explorer to villager is a refactor you can prove, and synthetic users check what the user sees. Answers 2018 TDD, CI-Testing, SRE and devops.", "url": "map/newsroom.html#topics", "articles": ["green-does-not-mean-live", "explorer-to-villager-newsroom", "the-records-ran-out", "code-review-as-a-fractal-semantic-graph", "how-to-run-synthetic-users"], "state": "surveyed"}, "concept:explorer-villager-town-planner": {"id": "concept:explorer-villager-town-planner", "kind": "concept", "title": "explorer / villager / town planner", "definition": "Simon Wardley's three kinds of people and work: explorers build the new by trying, villagers harden and maintain what people start to depend on, town planners industrialise it and answer for it in production.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:explorer-coding": {"id": "concept:explorer-coding", "kind": "concept", "title": "explorer coding", "definition": "The newsroom's name for vibe coding: anyone with a need explores it by building, with the fast feedback loop that made spreadsheets win; not ready to be 'in line' until villagers and town planners take it on.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:the-handover-deployment-gap": {"id": "concept:the-handover-deployment-gap", "kind": "concept", "title": "the handover (deployment gap)", "definition": "The step from a prototype to a tool people rely on is not a place to stop but a handover from explorers to villagers and town planners, who add the non-functional requirements.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:citizen-developer": {"id": "concept:citizen-developer", "kind": "concept", "title": "citizen developer", "definition": "The employee, owner or expert who now builds full applications: the spreadsheet grown up, good news rather than a risk.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:the-prototype-is-the-best-brief": {"id": "concept:the-prototype-is-the-best-brief", "kind": "concept", "title": "the prototype is the best brief", "definition": "What someone builds for themselves says what they actually want, in a form that runs, better than any requirements document.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:ai-operator": {"id": "concept:ai-operator", "kind": "concept", "title": "AI operator", "definition": "Dinis's term for the people companies need now: not model builders but people who use the tools and workflows to get things done.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:hired-for-the-workflow": {"id": "concept:hired-for-the-workflow", "kind": "concept", "title": "hired for the workflow", "definition": "Being hired for the ability to run agentic workflows, as people were once hired for breaking apps or building websites, degree or no degree; the edge shows when candidates look equal, starting with the application.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:act-as-the-job-you-want": {"id": "concept:act-as-the-job-you-want", "kind": "concept", "title": "act as the job you want", "definition": "If you are looking for a job you have time: do the job before you have it, in public, so it can be linked: reach does not matter, the link lets the people who want to help you forward it.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:your-own-newsroom": {"id": "concept:your-own-newsroom", "kind": "concept", "title": "your own newsroom", "definition": "A personal publishing loop: voice memo in, an agent researches, checks and writes in your voice, a validated static site out, readers pay a little if it is useful.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:omnichannel-programming": {"id": "concept:omnichannel-programming", "kind": "concept", "title": "omnichannel programming", "definition": "Programming across voice, chat, phone, IDE and pull requests where every channel reads and writes one shared state (git, vaults, briefs, graphs), as against multichannel, where each keeps its own copy.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:brief": {"id": "concept:brief", "kind": "concept", "title": "brief", "definition": "A written request an agent session can start from: what is asked, what exists, what remains; the unit of work between a person and agents.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:one-way-door-two-way-door": {"id": "concept:one-way-door-two-way-door", "kind": "concept", "title": "one-way door / two-way door", "definition": "Amazon's test, used here for agents: a two-way door can be undone cheaply (a page correction), a one-way door cannot (a sent email); the cost of undoing decides where a person belongs.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:blast-radius": {"id": "concept:blast-radius", "kind": "concept", "title": "blast radius", "definition": "What an output or a row of an agent's reach would cost if it went wrong in full today; put the person where it is large and the output cannot be undone (defined fully in footprint-and-blast-radius, outside the surveyed set).", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:agent-behaviour-policy-abp": {"id": "concept:agent-behaviour-policy-abp", "kind": "concept", "title": "Agent Behaviour Policy (ABP)", "definition": "For one agent in one deployment: what it can reach, what it was authorised to do, the gap between the two, and what actually stands in the way of each capability.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:mandate-reach-and-the-gap": {"id": "concept:mandate-reach-and-the-gap", "kind": "concept", "title": "mandate, reach and the gap", "definition": "Mandate is what the agent (or credential) is for; reach is everything it can touch; the gap between them is the risk, and every supply-chain attack used it.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:hope-based-security": {"id": "concept:hope-based-security", "kind": "concept", "title": "hope-based security", "definition": "Rules written in a prompt and kept only if the model keeps them: better than nothing, not enough on its own.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:hooks": {"id": "concept:hooks", "kind": "concept", "title": "hooks", "definition": "Small programs the agent's harness runs at fixed points (before and after a tool call, on prompt, on stop) that can see, block or rewrite actions; guardrails, not walls.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:behaviour-decision-and-workflow-policies": {"id": "concept:behaviour-decision-and-workflow-policies", "kind": "concept", "title": "behaviour, decision and workflow policies", "definition": "Behaviour says what an agent may do, decision says who chooses at a branch point and on what evidence, workflow says in what order.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:allowed-is-not-right": {"id": "concept:allowed-is-not-right", "kind": "concept", "title": "allowed is not right", "definition": "Every control can pass and the outcome still be wrong (a $150 refund where $120 was owed); proving the right outcome needs a written definition of right.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:lethal-trifecta": {"id": "concept:lethal-trifecta", "kind": "concept", "title": "lethal trifecta", "definition": "Simon Willison's term the newsroom uses: private data, untrusted content and a way out in one agent or skill; any agent with all three needs a control even if honest.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:the-record": {"id": "concept:the-record", "kind": "concept", "title": "the record", "definition": "What was actually done, kept outside anyone's memory (commits, briefs, transcripts, versions); 'the record catches up with the instinct', so thinking out loud becomes safe, and peer review moves to before publishing (confirmed, corrected or not found).", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:review-on-the-record": {"id": "concept:review-on-the-record", "kind": "concept", "title": "review on the record", "definition": "Every review is a file written once against published criteria, and every finding is answered: fixed in which version, declined and why, or open.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:self-report": {"id": "concept:self-report", "kind": "concept", "title": "self-report", "definition": "An agent's own logs and account of itself; evidence written outside the agent is more honest and still needs reading.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:code-is-a-liability-minimal-viable-code-path": {"id": "concept:code-is-a-liability-minimal-viable-code-path", "kind": "concept", "title": "code is a liability / minimal viable code path", "definition": "Every shipped line is a capability someone may misuse; the future is the smallest code that does exactly the job, made safe by model-built tests and maps.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:ephemeral-town-planner-services": {"id": "concept:ephemeral-town-planner-services", "kind": "concept", "title": "ephemeral town planner services", "definition": "A better name for serverless: scales to zero, costs nothing idle, starts fast, a commodity exposed for others; test: if it bills you by the hour when idle, it is not serverless.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:fractal-semantic-graph": {"id": "concept:fractal-semantic-graph", "kind": "concept", "title": "fractal semantic graph", "definition": "Knowledge held as a graph with an ontology and taxonomy per element, each part in its own vocabulary, every node openable as a graph of its own; briefs come from the slice you need.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:the-fork-next-door": {"id": "concept:the-fork-next-door", "kind": "concept", "title": "the fork next door", "definition": "In open source anyone can fork, which protects founders, customers and investors from each other; forks take hold only when someone stops executing.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:every-part-buys-the-next": {"id": "concept:every-part-buys-the-next", "kind": "concept", "title": "every part buys the next", "definition": "The subject buys the first line, the first line buys the paragraph, the paragraph buys the email: open with the short answer in plain text.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:three-voices": {"id": "concept:three-voices", "kind": "concept", "title": "three voices", "definition": "Me alone, me through an agent, an agent in its own voice; every byline should say which.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:your-own-key": {"id": "concept:your-own-key", "kind": "concept", "title": "your own key", "definition": "Using a model provider with your own API key called straight from the browser, so nobody else holds the key or pays for your questions.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:wardley-map": {"id": "concept:wardley-map", "kind": "concept", "title": "Wardley map", "definition": "A graph with context in two directions: a value chain anchored on a user and a need, and an evolution axis (usually genesis, custom built, product, commodity, though the axis is a choice). Read out like a story, it says what to build, what to buy, and where a market exists. Every node is itself a map.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:place-of-highest-leverage": {"id": "concept:place-of-highest-leverage", "kind": "concept", "title": "place of highest leverage", "definition": "Where the most value can be added now, nothing blocks you, and you can start without knowing how the whole problem ends. It is not where the biggest problem is. Each step is shipped and used before the next is chosen.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:direction-is-the-scarce-thing": {"id": "concept:direction-is-the-scarce-thing", "kind": "concept", "title": "direction is the scarce thing", "definition": "Agents can build in any direction; what they cannot generate is the sense of what to build next and when to stop. People with a direction are the input to the loop, not displaced by it.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:knowing-when-to-stop": {"id": "concept:knowing-when-to-stop", "kind": "concept", "title": "knowing when to stop", "definition": "The judgement that experience gives people (who the attackers are, the phase of the business, the bottleneck, what good enough looks like). Agents lack it by design, so it has to be supplied as constraints: a mandate, a stop named in advance, a narrow scope.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:footprint": {"id": "concept:footprint", "kind": "concept", "title": "footprint", "definition": "What the agent actually did, read afterwards from the record and compared with its mandate. It is the partner of blast radius, which is what a reach would cost if used in full.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:green-does-not-mean-live": {"id": "concept:green-does-not-mean-live", "kind": "concept", "title": "green does not mean live", "definition": "Shipped is a fact about the reader, not about your repository: a release has to check the boundary the user is on, not only the ones CI can see.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:an-agent-is-a-session-with-a-focus": {"id": "concept:an-agent-is-a-session-with-a-focus", "kind": "concept", "title": "an agent is a session with a focus", "definition": "An agent is a named session (an @name) that reads a few documents about the project and a role.md saying what it does and does not do. One session per topic, never mixed threads.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:drafts-never-send": {"id": "concept:drafts-never-send", "kind": "concept", "title": "drafts, never send", "definition": "The rule for an agentic inbox: agents read, label and draft, and a person reads, edits and presses send. The agent has its own mailbox and its own Claude seat, never yours.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:threat-ladder-draw-the-line-where-the-attacker-is": {"id": "concept:threat-ladder-draw-the-line-where-the-attacker-is", "kind": "concept", "title": "threat ladder (draw the line where the attacker is)", "definition": "Security starts from who the threat agent is, the attack vector and how sophisticated it is. On a ladder from your own mistakes up to states, plan to the rung that matches what you protect, do the basics consistently, and write down what you accept above that rung.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:every-risk-is-already-accepted": {"id": "concept:every-risk-is-already-accepted", "kind": "concept", "title": "every risk is already accepted", "definition": "Every risk an organisation has is already accepted by somebody, so the questions are who accepted it and until when.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:agents-decide-people-answer": {"id": "concept:agents-decide-people-answer", "kind": "concept", "title": "agents decide, people answer", "definition": "Agents in loops make real decisions, but responsibility stays with whoever granted the reach and set the mandate, because the grant is the moment of authorisation.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:agency-scale": {"id": "concept:agency-scale", "kind": "concept", "title": "agency scale", "definition": "Seven levels from rubber stamp to the reviewer who fixes the source. A decision is capped by its weakest ingredient (options, context, time, incentives, escalation, authority). Below level 3 the person deciding carries liability without agency.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:every-mistake-added-a-rule": {"id": "concept:every-mistake-added-a-rule", "kind": "concept", "title": "every mistake added a rule", "definition": "The complexity trap for agent operators: each mistake becomes a rule, the prompt grows, compaction comes sooner and new mistakes follow. The way out is small, tested, shipped components that move right on the map and no longer need the rule.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:re-anchoring": {"id": "concept:re-anchoring", "kind": "concept", "title": "re-anchoring", "definition": "Keeping an agent's rules in a file that a hook prints back after every summary, so the rules are restored rather than remembered, with a canary that shows they are still being read.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:synthetic-users": {"id": "concept:synthetic-users", "kind": "concept", "title": "synthetic users", "definition": "Invented people, each with a situation, a question, what they know and what makes them leave, played by a model that drives a real browser one screenshot at a time, so it can get lost as a person would.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:go-slow-to-go-fast": {"id": "concept:go-slow-to-go-fast", "kind": "concept", "title": "go slow to go fast", "definition": "The explorer-to-villager move done as a pure refactor, proved by the live site serving the same bytes, before adding tests and hardening.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:no-server-by-design": {"id": "concept:no-server-by-design", "kind": "concept", "title": "no server by design", "definition": "Retire the database (files), then the back end: encrypted vaults keep the server blind, the app runs in the browser, only commodity products are left on the server, and the gaps you accept are written down.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:do-they-miss-it": {"id": "concept:do-they-miss-it", "kind": "concept", "title": "do they miss it", "definition": "The startup test: if users would miss the product when it is gone, it is working. The people who set the roadmap have to use the product themselves.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:open-source-means-nobody-can-lock-you-in": {"id": "concept:open-source-means-nobody-can-lock-you-in", "kind": "concept", "title": "open source means nobody can lock you in", "definition": "Open source is a copyright licence granting copying, use and change. Its real power is that nobody can lock you in. Security depends on whether somebody had the time and money to review the code.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "concept:inertia-decides": {"id": "concept:inertia-decides", "kind": "concept", "title": "inertia decides", "definition": "AI is available to incumbents and newcomers alike, so the outcome is decided by where each sits on the evolution axis and how much past success it has to protect.", "url": "map/newsroom.html#concepts", "state": "surveyed"}, "part:before-you-start": {"id": "part:before-you-start", "kind": "part", "title": "Before you start", "storyboard": "the-opening", "url": "graph/chapters.html#before-you-start", "state": "proposed"}, "chapter:gen-zx": {"id": "chapter:gen-zx", "kind": "chapter", "title": "Gen ZX: who this book is for, and what it is for", "punchline": "Two generations, Z entering the workforce and X the subject-matter experts starting companies, often their parents; together Gen ZX, back to the ZX Spectrum; one objective, that by the end you have started a company; and the measure, the companies created.", "part": "before-you-start", "gravity": "all", "character": "marta", "topics": ["be-a-founder", "everyone-is-a-developer"], "url": "graph/chapters.html#gen-zx", "state": "drafting", "answers_2018": ["1.introduction/generation-z.md", "1.introduction/_index.md"]}, "chapter:lucky-to-be-here": {"id": "chapter:lucky-to-be-here", "kind": "chapter", "title": "You are lucky to be here", "punchline": "Wonder, not fear: you are starting out in the biggest change of your career, while the pieces are still landing. Spoken to both generations.", "part": "before-you-start", "gravity": "all", "character": "zara", "topics": ["everyone-is-a-developer"], "url": "graph/chapters.html#lucky-to-be-here", "state": "drafting", "answers_2018": ["1.introduction/_index.md", "1.introduction/generation-z.md", "4.life-patterns/the-zone.md", "4.life-patterns/BBS-and-modems.md", "3.technologies/draft/dopamine.md"]}, "chapter:everything-is-connected": {"id": "chapter:everything-is-connected", "kind": "chapter", "title": "Everything is connected: graphs", "punchline": "A graph is a network, not a diagram: the detective's board, a map as a graph with positions, graphs of graphs, provenance as a graph, and start anywhere.", "part": "before-you-start", "gravity": "all", "character": "zara", "topics": ["graphs-memory"], "url": "graph/chapters.html#everything-is-connected", "state": "drafting", "answers_2018": ["5.concepts/graphs.md", "2.mvp-for-gen-z-dev/content/dot-language.md", "3.technologies/content/AST.md"]}, "chapter:where-do-you-land": {"id": "chapter:where-do-you-land", "kind": "chapter", "title": "Where do you land?", "punchline": "Maps before names, and the first thing to work out is your centre of gravity: explorer, villager or town planner.", "part": "before-you-start", "gravity": "all", "character": "tomas", "topics": ["explorers-villagers-town-planners"], "url": "graph/chapters.html#where-do-you-land", "state": "drafting", "answers_2018": ["4.life-patterns/pionners-settlers-town-planners.md"]}, "chapter:connect-the-dots-backwards": {"id": "chapter:connect-the-dots-backwards", "kind": "chapter", "title": "Connect the dots backwards", "punchline": "Your path only makes sense looking back; learning is a lifelong skill you can finally shape to how you think; read this on paper.", "part": "before-you-start", "gravity": "all", "character": "priya", "topics": ["direction-is-the-scarce-skill", "everyone-is-a-developer"], "url": "graph/chapters.html#connect-the-dots-backwards", "state": "drafting", "answers_2018": ["4.life-patterns/content/learning.md", "3.technologies/content/books.md", "3.technologies/content/pen-and-paper.md", "4.life-patterns/love-maths.md", "4.life-patterns/thinking-as-programmer.md"]}, "part:the-frame": {"id": "part:the-frame", "kind": "part", "title": "The frame", "storyboard": null, "url": "graph/chapters.html#the-frame", "state": "proposed"}, "chapter:what-generative-ai-is": {"id": "chapter:what-generative-ai-is", "kind": "chapter", "title": "What generative AI is", "punchline": "AI is a huge bucket; this book is about the kind that generates; how a language model works in plain words, why a better prompt helps, where hallucinations come from, and where Dinis was corrected.", "part": "the-frame", "gravity": "all", "character": "zara", "topics": ["everyone-is-a-developer"], "url": "graph/chapters.html#what-generative-ai-is", "state": "drafting", "answers_2018": ["3.technologies/content/ml-ai.md"]}, "chapter:lenses-roles-and-loops": {"id": "chapter:lenses-roles-and-loops", "kind": "chapter", "title": "Lenses, roles and loops", "punchline": "The second half of the explanation: a prompt is a lens, a role is a model with a description, an agent is a loop with a goal, tools are requests the model sends back, the model remembers nothing, long chats are compressed, so work in focused threads.", "part": "the-frame", "gravity": "all", "character": "zara", "topics": ["working-with-agents", "everyone-is-a-developer"], "url": "graph/chapters.html#lenses-roles-and-loops", "state": "drafting", "answers_2018": ["3.technologies/content/ml-ai.md"]}, "chapter:everyone-is-a-developer": {"id": "chapter:everyone-is-a-developer", "kind": "chapter", "title": "Everyone who can brief an agent is a developer", "punchline": "The definition widened, and so did the door; here is what the briefing-only developer still cannot do.", "part": "the-frame", "gravity": "all", "character": "priya", "topics": ["everyone-is-a-developer"], "url": "graph/chapters.html#everyone-is-a-developer", "state": "drafting", "answers_2018": ["1.introduction/stem-tech-stack.md", "3.technologies/draft/scratch.md", "4.life-patterns/thinking-as-programmer.md"]}, "chapter:explorer-coding-and-the-handover": {"id": "chapter:explorer-coding-and-the-handover", "kind": "chapter", "title": "Explorer coding, not vibe coding, and the handover", "punchline": "What people call vibe coding is exploration, and the word should say so: build to find out, then hand it to the people who will make it something others rely on; the founder's way of building, and both halves.", "part": "the-frame", "gravity": "explorer", "character": "marta", "topics": ["explorers-villagers-town-planners"], "url": "graph/chapters.html#explorer-coding-and-the-handover", "state": "drafting", "answers_2018": ["5.concepts/repl.md", "5.concepts/legacy-applications.md", "4.life-patterns/refactoring.md"]}, "part:getting-the-job": {"id": "part:getting-the-job", "kind": "part", "title": "Getting the job, or making it", "storyboard": null, "url": "graph/chapters.html#getting-the-job", "state": "proposed"}, "chapter:hired-for-the-workflow": {"id": "chapter:hired-for-the-workflow", "kind": "chapter", "title": "Hired for the workflow", "punchline": "The one competitive advantage in 2026 is running agentic workflows; you are more technical than you think; it starts with the application.", "part": "getting-the-job", "gravity": "all", "character": "zara", "topics": ["getting-the-job"], "url": "graph/chapters.html#hired-for-the-workflow", "state": "drafting", "answers_2018": ["1.introduction/how-to-get-a-job.md", "3.technologies/content/ml-ai.md", "4.life-patterns/impostor-syndrome.md"]}, "chapter:act-as-the-job-you-want": {"id": "chapter:act-as-the-job-you-want", "kind": "chapter", "title": "Act as the job you want", "punchline": "If you are looking for a job you have time: do the job in public before you have it, make it linkable, put your CV online. The 2018 Be a founder as then and now: act like a founder then, be one now.", "part": "getting-the-job", "gravity": "all", "character": "tomas", "topics": ["getting-the-job", "publish-in-public"], "url": "graph/chapters.html#act-as-the-job-you-want", "state": "drafting", "answers_2018": ["7.your-cv/_index.md", "7.your-cv/github.md", "7.your-cv/linkedin.md", "7.your-cv/blogs.md", "4.life-patterns/mentors.md", "7.your-cv/upwork.md", "6.security/bug-bounties.md"]}, "chapter:your-own-newsroom": {"id": "chapter:your-own-newsroom", "kind": "chapter", "title": "Publish, publish, publish: your own newsroom", "punchline": "A publishing loop you can copy on day one; small finished pieces; an article behind every answer.", "part": "getting-the-job", "gravity": "explorer", "character": "tomas", "topics": ["publish-in-public"], "url": "graph/chapters.html#your-own-newsroom", "state": "drafting", "answers_2018": ["4.life-patterns/publish-publish-publish.md", "2.mvp-for-gen-z-dev/content/hugo.md", "7.your-cv/leanpub.md", "5.concepts/amazon-press-releases.md"]}, "part:working-with-agents": {"id": "part:working-with-agents", "kind": "part", "title": "Working with agents", "storyboard": null, "url": "graph/chapters.html#working-with-agents", "state": "proposed"}, "chapter:your-first-workspace": {"id": "chapter:your-first-workspace", "kind": "chapter", "title": "Your first workspace", "punchline": "From a spreadsheet to a folder per person, in an afternoon; drafts never send; and why your agents should not run on your laptop.", "part": "working-with-agents", "gravity": "all", "character": "priya", "topics": ["your-first-workspace", "security-agent-era"], "url": "graph/chapters.html#your-first-workspace", "state": "drafting", "answers_2018": ["2.mvp-for-gen-z-dev/_index.md", "2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "4.life-patterns/automate-your-workflows.md", "6.security/dont-touch-production.md"]}, "chapter:how-to-work-with-agents": {"id": "chapter:how-to-work-with-agents", "kind": "chapter", "title": "How to work with agents", "punchline": "An agent is a session with a focus; the brief is the unit of work; one shared state across voice, chat and phone; and the trap of a rule per mistake.", "part": "working-with-agents", "gravity": "villager", "character": "sam", "topics": ["working-with-agents"], "url": "graph/chapters.html#how-to-work-with-agents", "state": "drafting", "answers_2018": ["4.life-patterns/workflows.md", "5.concepts/agile-and-kanban.md", "3.technologies/content/ide.md", "5.concepts/design.md", "5.concepts/changes.md"]}, "part:judgement": {"id": "part:judgement", "kind": "part", "title": "Direction and judgement", "storyboard": "follow-the-rabbit-holes", "url": "graph/chapters.html#judgement", "state": "proposed"}, "chapter:direction-and-judgement": {"id": "chapter:direction-and-judgement", "kind": "chapter", "title": "Direction is the scarce skill", "punchline": "When anyone can build, choosing what to build, when to stop, and where a person belongs is what gets paid for; agents decide, people answer.", "part": "judgement", "gravity": "town-planner", "character": "sam", "topics": ["direction-is-the-scarce-skill", "human-in-the-loop"], "url": "graph/chapters.html#direction-and-judgement", "state": "drafting", "answers_2018": ["5.concepts/deadlines.md", "4.life-patterns/start-with-why.md", "3.technologies/content/brain.md", "4.life-patterns/one-way-two-way-doors.md", "5.concepts/chaos-engineering.md", "4.life-patterns/civic-responsibility.md"]}, "chapter:facts-and-the-record": {"id": "chapter:facts-and-the-record", "kind": "chapter", "title": "Facts, evidence and the record", "punchline": "Make fact-based decisions, as the cover says: count rather than remember, let the record check you, distrust self-reports.", "part": "judgement", "gravity": "villager", "character": "sam", "topics": ["facts-and-the-record"], "url": "graph/chapters.html#facts-and-the-record", "state": "drafting", "answers_2018": ["5.concepts/facts.md", "5.concepts/feedback-loops.md", "4.life-patterns/content/being-criticized-is-a-privilege.md"]}, "part:start-the-company": {"id": "part:start-the-company", "kind": "part", "title": "Start the company", "storyboard": "gen-zx-developers", "url": "graph/chapters.html#start-the-company", "state": "proposed"}, "chapter:be-a-founder": {"id": "chapter:be-a-founder", "kind": "chapter", "title": "Be a founder: the expert founders", "punchline": "Execution just got cheap: the person who spent twenty years inside a problem can now build the first version of the answer themselves, with agents; a third of new US startups have a single founder, and the fastest-growing founders average 45.", "part": "start-the-company", "gravity": "explorer", "character": "marta", "topics": ["be-a-founder"], "url": "graph/chapters.html#be-a-founder", "state": "drafting", "answers_2018": ["4.life-patterns/content/be-a-founder.md"]}, "chapter:ship-it-and-see-if-they-miss-it": {"id": "chapter:ship-it-and-see-if-they-miss-it", "kind": "chapter", "title": "Ship it, and see if they miss it", "punchline": "Not to plan, not to pitch, not to architect: ship; give it away, and if they do not miss it, try again; the miss-it test applied to your users and to yourself.", "part": "start-the-company", "gravity": "explorer", "character": "marta", "topics": ["be-a-founder", "shipped-means-the-user-has-it"], "url": "graph/chapters.html#ship-it-and-see-if-they-miss-it", "state": "drafting", "answers_2018": ["4.life-patterns/content/be-a-founder.md"]}, "chapter:price-it-then-give-it-away": {"id": "chapter:price-it-then-give-it-away", "kind": "chapter", "title": "Price it, then give it away", "punchline": "Free is never free for the other side: set the price first, then the early-access offer; pay after the value, and let what a page was worth set its price.", "part": "start-the-company", "gravity": "villager", "character": "marta", "topics": ["be-a-founder"], "url": "graph/chapters.html#price-it-then-give-it-away", "state": "drafting", "answers_2018": []}, "chapter:sell": {"id": "chapter:sell", "kind": "chapter", "title": "Sell", "punchline": "Selling a service before the product, a marketplace of people, the SaaS buyer's inertia, and due diligence done by sending an agent rather than a spreadsheet.", "part": "start-the-company", "gravity": "villager", "character": "sam", "topics": ["be-a-founder"], "url": "graph/chapters.html#sell", "state": "drafting", "answers_2018": []}, "chapter:fund-it-or-do-not": {"id": "chapter:fund-it-or-do-not", "kind": "chapter", "title": "Fund it, or do not", "punchline": "Profitable before raising; sell founder shares or lend rather than issue; the controllable founder and what investors buy; the company you keep control of.", "part": "start-the-company", "gravity": "town-planner", "character": "marta", "topics": ["be-a-founder"], "url": "graph/chapters.html#fund-it-or-do-not", "state": "drafting", "answers_2018": []}, "chapter:the-company-itself": {"id": "chapter:the-company-itself", "kind": "chapter", "title": "The company itself: the UK, Portugal, Lithuania, the European Union", "punchline": "How to actually do it, for real: a limited company in the UK, the case for Lithuania, Portugal and what it costs to run a small company there, the EU and its programmes, the cloud providers and the startup programmes that exist right now; from experience, not advice.", "part": "start-the-company", "gravity": "town-planner", "character": "marta", "topics": ["be-a-founder", "civic-and-history"], "url": "graph/chapters.html#the-company-itself", "state": "drafting", "answers_2018": []}, "part:build-it-without-a-server": {"id": "part:build-it-without-a-server", "kind": "part", "title": "Build it without a server", "storyboard": null, "url": "graph/chapters.html#build-it-without-a-server", "state": "proposed"}, "chapter:building-blocks": {"id": "chapter:building-blocks", "kind": "chapter", "title": "Serverless, for real", "punchline": "If it bills you by the hour when nobody is using it, it is not serverless: no servers of yours with logic in them, no database, the file system as the database, a client-side product on static hosting, and a billing model to match; a founder with no servers has nothing to run at three in the morning.", "part": "build-it-without-a-server", "gravity": "villager", "character": "marta", "topics": ["building-blocks"], "url": "graph/chapters.html#building-blocks", "state": "drafting", "answers_2018": ["2.mvp-for-gen-z-dev/draft/aws.md", "5.concepts/serverless.md", "5.concepts/micro-services.md", "7.your-cv/git.md", "2.mvp-for-gen-z-dev/content/docker.md"]}, "chapter:privacy-by-design": {"id": "chapter:privacy-by-design", "kind": "chapter", "title": "Privacy by design: SG/Send, sgit, and the value of constraints", "punchline": "Data encrypted on the user's device, on a server that cannot read it; zero-knowledge vaults and where the keys live; the constraint that designs the product and what it does not remove (GDPR); European sovereignty as moving the cloud, not the code.", "part": "build-it-without-a-server", "gravity": "town-planner", "character": "marta", "topics": ["security-agent-era", "building-blocks"], "url": "graph/chapters.html#privacy-by-design", "state": "drafting", "answers_2018": ["6.security/_index.md"]}, "chapter:controlling-your-agent": {"id": "chapter:controlling-your-agent", "kind": "chapter", "title": "Controlling your agent: RiskMandate", "punchline": "Mandate, reach and the gap; hope versus enforcement; code is a liability; secrets never in the chat; learning to hack is still how you learn. A policy beside the prompt; the behaviour policy is the business logic; the ten questions.", "part": "build-it-without-a-server", "gravity": "town-planner", "character": "sam", "topics": ["controlling-your-agent", "security-agent-era"], "url": "graph/chapters.html#controlling-your-agent", "state": "drafting", "answers_2018": ["6.security/threat-modeling.md", "6.security/3rd-party-modules.md", "6.security/security-better-developers.md", "4.life-patterns/learn-to-hack.md", "6.security/pointers.md", "6.security/strings-should-be-banned.md", "4.life-patterns/content/future-needs-you.md"]}, "chapter:open-source": {"id": "chapter:open-source", "kind": "chapter", "title": "Open source", "punchline": "Nobody can lock you in; the fork next door; your first pull request. Open source is not free: who pays for what your startup runs on.", "part": "build-it-without-a-server", "gravity": "all", "character": "tomas", "topics": ["open-source"], "url": "graph/chapters.html#open-source", "state": "drafting", "answers_2018": ["2.mvp-for-gen-z-dev/content/open-source.md", "2.mvp-for-gen-z-dev/content/creative-commons.md", "2.mvp-for-gen-z-dev/draft/github-flow.md"]}, "chapter:shipped-means-the-user-has-it": {"id": "chapter:shipped-means-the-user-has-it", "kind": "chapter", "title": "Shipped means the user has it", "punchline": "Green does not mean live; tests that never run are not tests; go slow to go fast; five people who do not exist.", "part": "build-it-without-a-server", "gravity": "villager", "character": "sam", "topics": ["shipped-means-the-user-has-it"], "url": "graph/chapters.html#shipped-means-the-user-has-it", "state": "drafting", "answers_2018": ["5.concepts/CI-Testing.md", "2.mvp-for-gen-z-dev/draft/continuous-integration.md", "2.mvp-for-gen-z-dev/draft/tdd.md", "5.concepts/devops.md"]}, "part:the-long-game": {"id": "part:the-long-game", "kind": "part", "title": "The long game", "storyboard": null, "url": "graph/chapters.html#the-long-game", "state": "proposed"}, "chapter:graphs-and-your-future-self": {"id": "chapter:graphs-and-your-future-self", "kind": "chapter", "title": "Graphs, memory and your future self", "punchline": "Memory is context management: many memories, fractal, published and shared; maintain knowledge rather than perfect it; keep your work linkable and backed up for the person you will be.", "part": "the-long-game", "gravity": "all", "character": "priya", "topics": ["graphs-memory"], "url": "graph/chapters.html#graphs-and-your-future-self", "state": "drafting", "answers_2018": ["7.your-cv/future-self.md", "4.life-patterns/content/backup-your-life.md", "2.mvp-for-gen-z-dev/content/dot-language.md", "5.concepts/recursive-functions.md"]}, "chapter:civic-responsibility": {"id": "chapter:civic-responsibility", "kind": "chapter", "title": "Civic responsibility", "punchline": "To hack means to solve problems; small countries can lead now that everyone can build; sovereignty is the ability to move. The EU and judo for small countries.", "part": "the-long-game", "gravity": "all", "character": "guide", "topics": ["civic-and-history"], "url": "graph/chapters.html#civic-responsibility", "state": "drafting", "answers_2018": ["4.life-patterns/civic-responsibility.md"]}, "part:hands-on-2026": {"id": "part:hands-on-2026", "kind": "part", "title": "Hands on, 2026", "storyboard": null, "url": "graph/chapters.html#hands-on-2026", "state": "proposed"}, "chapter:an-agentic-workflow-from-zero": {"id": "chapter:an-agentic-workflow-from-zero", "kind": "chapter", "title": "An agentic workflow from zero", "punchline": "One afternoon, five exercises: from a spreadsheet to a folder per person, and a first agent that works for you.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["your-first-workspace"], "url": "graph/chapters.html#an-agentic-workflow-from-zero", "state": "drafting", "answers_2018": []}, "chapter:your-first-graph": {"id": "chapter:your-first-graph", "kind": "chapter", "title": "Your first graph, built by hand", "punchline": "Nodes, edges as verbs, and a first graph of something you know, after chapter 15 of Fractal Semantic Graphs.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["graphs-memory"], "url": "graph/chapters.html#your-first-graph", "state": "drafting", "answers_2018": []}, "chapter:five-lenses": {"id": "chapter:five-lenses", "kind": "chapter", "title": "One idea, five lenses", "punchline": "Explain one idea of your own choice for a teenager, a musician, a doctor, a football fan and in another language; see the lens, not the magic.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["everyone-is-a-developer"], "url": "graph/chapters.html#five-lenses", "state": "drafting", "answers_2018": []}, "chapter:a-tiny-agent-loop": {"id": "chapter:a-tiny-agent-loop", "kind": "chapter", "title": "A tiny agent loop", "punchline": "A page of code, or a no-code version, that shows the loop and one tool call: do the task, are we done, go round again.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["working-with-agents"], "url": "graph/chapters.html#a-tiny-agent-loop", "state": "drafting", "answers_2018": []}, "chapter:images-infographics-and-storyboards": {"id": "chapter:images-infographics-and-storyboards", "kind": "chapter", "title": "Images, infographics and storyboards, drawn by code", "punchline": "A storyboard is data; the picture is drawn in the browser; the quote is checked against its source.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["publish-in-public"], "url": "graph/chapters.html#images-infographics-and-storyboards", "state": "drafting", "answers_2018": []}, "chapter:meeting-briefs-and-follow-ups": {"id": "chapter:meeting-briefs-and-follow-ups", "kind": "chapter", "title": "Meeting briefs and follow-ups", "punchline": "A briefing for you, a briefing on who you meet, a follow-up after: the best-prepared person in the room, every time.", "part": "hands-on-2026", "gravity": "villager", "character": "sam", "topics": ["working-with-agents"], "url": "graph/chapters.html#meeting-briefs-and-follow-ups", "state": "drafting", "answers_2018": []}, "chapter:your-own-publishing": {"id": "chapter:your-own-publishing", "kind": "chapter", "title": "Your own newsroom and inbox", "punchline": "Voice memo in, a checked site out; the email workflow replicated: publishing and communication that scale.", "part": "hands-on-2026", "gravity": "villager", "character": "priya", "topics": ["publish-in-public", "your-first-workspace"], "url": "graph/chapters.html#your-own-publishing", "state": "drafting", "answers_2018": []}, "chapter:form-your-company": {"id": "chapter:form-your-company", "kind": "chapter", "title": "Form your company", "punchline": "The steps to a limited company in the UK, and the first look at Lithuania and Portugal; what to decide before you register.", "part": "hands-on-2026", "gravity": "explorer", "character": "marta", "topics": ["be-a-founder"], "url": "graph/chapters.html#form-your-company", "state": "drafting", "answers_2018": []}, "chapter:the-credits-and-programmes-2026": {"id": "chapter:the-credits-and-programmes-2026", "kind": "chapter", "title": "The credits and programmes, 2026", "punchline": "The startup cloud credits and programmes as they stand this year (AWS, Microsoft, Google, Anthropic), what each asks for, and how long they last.", "part": "hands-on-2026", "gravity": "explorer", "character": "marta", "topics": ["be-a-founder", "building-blocks"], "url": "graph/chapters.html#the-credits-and-programmes-2026", "state": "drafting", "answers_2018": []}, "chapter:your-first-price-and-first-ten-customers": {"id": "chapter:your-first-price-and-first-ten-customers", "kind": "chapter", "title": "Your first price and your first ten customers", "punchline": "Set the price, make the early-access offer, ask after the value, and find ten people who would miss it.", "part": "hands-on-2026", "gravity": "villager", "character": "marta", "topics": ["be-a-founder"], "url": "graph/chapters.html#your-first-price-and-first-ten-customers", "state": "drafting", "answers_2018": []}, "chapter:ship-a-serverless-product-in-a-weekend": {"id": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "chapter", "title": "Ship a serverless product in a weekend", "punchline": "Static hosting, a vault for the data, chat on a static site, a payment link and no server of yours: the smallest product that a stranger can pay for.", "part": "hands-on-2026", "gravity": "explorer", "character": "zara", "topics": ["building-blocks", "shipped-means-the-user-has-it"], "url": "graph/chapters.html#ship-a-serverless-product-in-a-weekend", "state": "drafting", "answers_2018": []}, "part:how-this-book-was-made": {"id": "part:how-this-book-was-made", "kind": "part", "title": "How this book was made, and what you made", "storyboard": "the-2018-book", "url": "graph/chapters.html#how-this-book-was-made", "state": "proposed"}, "chapter:how-this-book-was-made": {"id": "chapter:how-this-book-was-made", "kind": "chapter", "title": "How this book was made, and what you made", "punchline": "The repository and the vault, the roles, the articles as briefs, the decisions, the graph, the loop; co-written with Claude, and the ratio shown. The measure: the companies created from it, and how to tell us.", "part": "how-this-book-was-made", "gravity": "town-planner", "character": "guide", "topics": ["making-of"], "url": "graph/chapters.html#how-this-book-was-made", "state": "drafting", "answers_2018": ["1.introduction/how-this -book-was-created.md", "_manuscript/github-issues.md"]}, "idea:wonder-not-fear": {"id": "idea:wonder-not-fear", "kind": "idea", "title": "The book opens with wonder, not fear and not technologies", "statement": "The first edition opened with a slide of logos and went too technical too soon; the second opens with wonder and privilege, and the fear is what the reader hears, not where the book starts.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in You are lucky to be here (the editor records it in the vault, brief task 1)", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/wonder-not-fear.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "In short; How the first edition started; What goes where"}, {"ref": "sb:the-opening", "where": "panels 1 to 4"}], "answers": ["1.introduction/_index.md", "1.introduction/generation-z.md"]}, "idea:lucky-to-be-here": {"id": "idea:lucky-to-be-here", "kind": "idea", "title": "Whoever reads this now is lucky to be here", "statement": "Alive, and starting out, in the middle of a transition this big, while the pieces are still landing: that is luck, and the book says so before anything else.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in You are lucky to be here", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/lucky-to-be-here.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "You are lucky to be here; The pieces are still landing"}], "answers": ["1.introduction/generation-z.md"]}, "idea:nobody-knows": {"id": "idea:nobody-knows", "kind": "idea", "title": "Ignore the doom: nobody knows what happens next", "statement": "Every transformation came with the warning that this time is different; this one is televised. The hype may crash, as the dot-com did, and the opportunity was real both times.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in You are lucky to be here; whether the dot-com crash belongs in the opening is still his question", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/nobody-knows.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "The hype, and maybe the crash"}, {"ref": "news:two-years-in-the-opposite", "where": "the counter-story to AI burnout"}], "answers": []}, "idea:seven-transformations": {"id": "idea:seven-transformations", "kind": "idea", "title": "Seven transformations, lived through: the Spectrum, the BBS, the internet, the mobile phone, the cloud, the apps, AI", "statement": "Dinis's own history as the evidence that transitions reward the people who get in early and keep learning; each dated, each with its warning at the time.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The journalist is to write the history, dated and sourced (brief task 5).", "gravity": "all", "topic": "civic-and-history", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/seven-transformations.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "The transformations I have lived through"}, {"ref": "sb:the-opening", "where": "the spectrum panel"}], "answers": ["4.life-patterns/BBS-and-modems.md", "1.introduction/stem-tech-stack.md"]}, "idea:technology-finally-works-for-you": {"id": "idea:technology-finally-works-for-you", "kind": "idea", "title": "Technology can finally work for you", "statement": "Gen Z grew up with technology designed to hook them (the attention economy); with agents they can build again, and make technology serve them.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in You are lucky to be here; the attention-economy evidence is the journalist's to find", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/technology-finally-works-for-you.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "Technology that did not work for you"}, {"ref": "news:custom-uis-are-not-the-exception", "where": "a custom interface for each moment"}], "answers": ["3.technologies/draft/dopamine.md", "10.misc/gen-z-digital-env.md"]}, "idea:learning-made-for-you": {"id": "idea:learning-made-for-you", "kind": "idea", "title": "Learning can be made for you, not for a mythical average student", "statement": "Your gaps, your curiosity, your zone: an agent can shape learning to how you think, and you can build the tools for it.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in both articles", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/learning-made-for-you.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "Learning, made for you"}, {"ref": "art:connect-the-dots-backwards", "where": "This is about you; Learning is a lifelong skill"}], "answers": ["4.life-patterns/content/learning.md", "4.life-patterns/the-zone.md"]}, "idea:craftspeople-make-their-own-tools": {"id": "idea:craftspeople-make-their-own-tools", "kind": "idea", "title": "Become a developer, because craftspeople make their own tools", "statement": "The reason to become a developer is not a job title: every craft makes its own tools, and now anyone can.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in You are lucky to be here", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "everyone-is-a-developer", "batch": null, "url": "graph/ideas/craftspeople-make-their-own-tools.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "Become a developer: craftspeople make their own tools"}, {"ref": "news:the-citizen-developer", "where": "the spreadsheet grown up"}], "answers": ["4.life-patterns/thinking-as-programmer.md", "1.introduction/stem-tech-stack.md"]}, "idea:think-with-it": {"id": "idea:think-with-it", "kind": "idea", "title": "Think with the AI; never delegate your thinking to it", "statement": "Search gave answers; generative AI lets you question them. Use it to go deeper and ask for the evidence, not to skip understanding.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in both articles", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/think-with-it.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "Think with it; do not delegate your thinking to it"}, {"ref": "art:connect-the-dots-backwards", "where": "From answers to questions"}], "answers": ["4.life-patterns/content/learning.md"]}, "idea:jobs-that-never-scaled": {"id": "idea:jobs-that-never-scaled", "kind": "idea", "title": "The opportunity is in old jobs too: the ones that never scaled, and now can", "statement": "Jobs done for centuries one person at a time can now scale with agents; the map shows where a reader might land.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Needs Dinis's three examples (his open question).", "gravity": "villager", "topic": "be-a-founder", "chapter": "where-do-you-land", "batch": null, "url": "graph/ideas/jobs-that-never-scaled.html", "sources": [{"ref": "art:lucky-to-be-here", "where": "The jobs that never scaled"}], "answers": []}, "idea:read-it-on-paper": {"id": "idea:read-it-on-paper", "kind": "idea", "title": "Read it on paper, with a pen", "statement": "The printed page is still the best technology to learn from; the opening tells the reader how to read the book before the first chapter.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards; whether to ship a PDF laid out for pen and paper is his open question", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/read-it-on-paper.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "Read it on paper, with a pen"}], "answers": ["3.technologies/content/pen-and-paper.md", "3.technologies/content/books.md"]}, "idea:connect-the-dots-backwards": {"id": "idea:connect-the-dots-backwards", "kind": "idea", "title": "A path only makes sense looking back", "statement": "Trust your gut going forward and use a method for walking: doors, fast iteration, constraints, leverage. Jobs's calligraphy class became the Mac's typography.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards; his own three dots are still his to name", "notes": "Taking SG/Send to market end to end is where Dinis learnt Stripe, pricing and everything else a real product needs, so that by the newsroom he already knew how; 'a good example of how exploring something early pays off later, in a way nobody plans'. And the same technology that did not land as a file-sending service is used now because the newsroom, RiskMandate and the vaults need it: explorers find things early; the use case decides when they matter.", "gravity": "all", "topic": "direction-is-the-scarce-skill", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/connect-the-dots-backwards.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "Connect the dots backwards"}, {"ref": "sb:connect-the-dots-backwards", "where": "panels 1 to 3"}, {"ref": "news:from-send-to-sgit", "where": "Users, payments, and a feature in 22 minutes; What the market said"}], "answers": ["7.your-cv/future-self.md", "4.life-patterns/one-way-two-way-doors.md"]}, "idea:multidisciplinary-edge": {"id": "idea:multidisciplinary-edge", "kind": "idea", "title": "The edge is now multidisciplinary", "statement": "Learning to intersect disciplines is where the advantage is; the humanities and mathematics both matter.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards", "notes": null, "gravity": "explorer", "topic": "direction-is-the-scarce-skill", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/multidisciplinary-edge.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "The edge is multidisciplinary"}], "answers": ["4.life-patterns/why-diversity-matters.md"]}, "idea:maths-taught-to-be-hated": {"id": "idea:maths-taught-to-be-hated", "kind": "idea", "title": "We teach maths, and music, as if to make people hate them", "statement": "We give the solution away and skip the wonder and the struggle (Lockhart's A Mathematician's Lament); a reader who hated maths at school was taught badly, not born without it.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards (the first name was corrected by the checking)", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/maths-taught-to-be-hated.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "We teach maths as if to make people hate it"}], "answers": ["4.life-patterns/love-maths.md"]}, "idea:explore-again": {"id": "idea:explore-again", "kind": "idea", "title": "Generative AI lets you explore and communicate again", "statement": "Ways of communicating you could not afford before, like the storyboards on this site, are now an afternoon's work; exploring is back.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards; the creativity study it cites is the journalist's to check first", "notes": null, "gravity": "explorer", "topic": "explorers-villagers-town-planners", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/explore-again.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "Generative AI lets you explore again"}, {"ref": "agent:storyboards-drawn-by-code", "where": "the renderer"}], "answers": ["5.concepts/inventing-on-principle.md"]}, "idea:small-minority": {"id": "idea:small-minority", "kind": "idea", "title": "By reading this you are already in a small minority, and geography no longer decides", "statement": "Learning is a lifelong skill; the future is local, decentralised and sovereign; the reader who reads is already ahead.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Connect the dots backwards", "notes": null, "gravity": "all", "topic": "civic-and-history", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/small-minority.html", "sources": [{"ref": "art:connect-the-dots-backwards", "where": "You are already in a small minority; Learning is a lifelong skill"}, {"ref": "news:who-will-game-the-reading-meter", "where": "0.6% of internet users are developers; 26% of OECD adults cannot use a computer"}], "answers": ["4.life-patterns/civic-responsibility.md"]}, "idea:maps-before-names": {"id": "idea:maps-before-names", "kind": "idea", "title": "Wardley maps run through the whole book, shown before they are named", "statement": "Let the reader feel the pattern, things moving from genesis to commodity, before learning the words; a map in every part.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where do you land? (the editor records it in the vault, brief task 1)", "notes": null, "gravity": "all", "topic": "explorers-villagers-town-planners", "chapter": "where-do-you-land", "batch": null, "url": "graph/ideas/maps-before-names.html", "sources": [{"ref": "art:where-do-you-land", "where": "Maps everywhere, shown before they are named"}, {"ref": "news:why-i-love-wardley-maps", "where": "the frame, taught directly"}, {"ref": "sb:where-do-you-land", "where": "the map panels"}], "answers": ["4.life-patterns/pionners-settlers-town-planners.md"]}, "idea:four-stages-beyond-activities": {"id": "idea:four-stages-beyond-activities", "kind": "idea", "title": "The four stages of evolution are not only for activities", "statement": "Dinis's table from his Open Security Summit talk: Wardley's four rows and ten more scales, from openness to backups to data, all move from genesis to commodity.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where do you land?", "notes": null, "gravity": "town-planner", "topic": "explorers-villagers-town-planners", "chapter": "where-do-you-land", "batch": null, "url": "graph/ideas/four-stages-beyond-activities.html", "sources": [{"ref": "art:where-do-you-land", "where": "The four stages are not only for activities"}], "answers": ["5.concepts/graphs.md"]}, "idea:centre-of-gravity": {"id": "idea:centre-of-gravity", "kind": "idea", "title": "Explorer, villager, town planner: personalities, each with a centre of gravity", "statement": "Wardley's three describe people better than the business personality tests; everyone has a centre of gravity, some can play at several levels, it moves over a career, and it is where time flies.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where do you land?; whether to group the book by centre of gravity or only mark it is his open question", "notes": null, "gravity": "all", "topic": "explorers-villagers-town-planners", "chapter": "where-do-you-land", "batch": null, "url": "graph/ideas/centre-of-gravity.html", "sources": [{"ref": "art:where-do-you-land", "where": "Where do you fit?; The explorer; The villager; The town planner; A centre of gravity, not a box"}, {"ref": "news:explorer-coding", "where": "the three kinds of people and work"}, {"ref": "news:software-vendors-as-villagers", "where": "users explore on top, vendors sell the maintenance"}, {"ref": "sb:where-do-you-land", "where": "the spectrum panel"}], "answers": ["4.life-patterns/pionners-settlers-town-planners.md"]}, "idea:three-learning-paths": {"id": "idea:three-learning-paths", "kind": "idea", "title": "Each centre of gravity needs different skills and a different learning path", "statement": "All three are brilliant at different things; the book carries a black-and-white badge per chapter and three paths through it.", "idea_kind": "method", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where do you land?; whether the badges work is his open question", "notes": null, "gravity": "all", "topic": "explorers-villagers-town-planners", "chapter": "where-do-you-land", "batch": null, "url": "graph/ideas/three-learning-paths.html", "sources": [{"ref": "art:where-do-you-land", "where": "A badge for each, in black and white; The brief, tasks 2 and 3"}], "answers": ["4.life-patterns/content/learning.md"]}, "idea:explorer-coding": {"id": "idea:explorer-coding", "kind": "idea", "title": "Explorer coding: what people call vibe coding, done as exploring", "statement": "Anyone with a need explores it by building, with the fast feedback loop that made spreadsheets win; it is not a way to ship, it is a way to find out.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "What vibe coding describes is people writing very good briefs, which product owners and users who knew what they wanted always did, in a loop of weeks or months on somebody else's terms. The brief was fine; the execution was the bottleneck. Now the loop is minutes, and very few products let you strip out the 90% you do not want and keep the 10% you do, which is exactly what you can now build. The word's history: Andrej Karpathy's post of February 2025 ('forget that the code even exists'), describing throwaway weekend projects; Collins Dictionary's word of the year by November 2025; Andrew Ng in May 2025 calling it 'unfortunate' and coding with AI 'a deeply intellectual exercise'. Exploratory programming is the research ancestor; Dinis found no established use of 'explorer coding'. The HR conversation ('Amazing! When can I start?') is one conversation, an illustration and not a survey. Spreadsheets won because of the feedback loop, a REPL for people who would never call it that.", "gravity": "explorer", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": null, "url": "graph/ideas/explorer-coding.html", "sources": [{"ref": "news:explorer-coding", "where": "the definition"}, {"ref": "news:a-browser-for-one", "where": "frustration plus the power to build"}, {"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "Everybody was already vibe coding, just very slowly"}], "answers": ["5.concepts/repl.md", "4.life-patterns/thinking-as-programmer.md"]}, "idea:the-handover": {"id": "idea:the-handover", "kind": "idea", "title": "The deployment gap is a handover, and the prototype is the best brief", "statement": "The step from a prototype to a tool people rely on is not a place to stop but a handover from explorers to villagers and town planners; what someone built for themselves says what they want better than any document.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The mistake is to confuse the brief with a product: the reason SaaS was bought was never the features, it was that the thing is maintained, and every non-functional requirement the vendor partly paid for now lands on an application a non-engineer built in an afternoon. People want to build it and hand it over. The future is village and town-planner companies that take the finished brief and run it, paid by consumption, not by the seat; the handover with agents becomes a file move plus a version bump, logged and reviewable. The case: a European bank piloted a Swiss AI startup's tool, decided to build its own, had a basic prototype six months later that could not handle regulation, data management and daily use, and went back to the startup after a year. Not a weak team, but an explorer team asked to be villagers and town planners as well, on a regulated, data-heavy, daily-use tool; the startup had already done that work many times for many clients. McKinsey's State of AI in 2026: 32 percent of respondents had decided against buying at least one software product or feature because they could build it in-house with coding agents. Dinis read the public summary and Olivier Laplace's post, not the paywalled article.", "gravity": "villager", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": null, "url": "graph/ideas/the-handover.html", "sources": [{"ref": "news:who-will-fix-your-mess", "where": "the answer to HBR's deployment gap"}, {"ref": "news:the-citizen-developer", "where": "the prototype is the best brief"}, {"ref": "news:explorer-to-villager-newsroom", "where": "a worked handover with real numbers"}, {"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "The mistake, and where the money actually is"}], "answers": ["5.concepts/legacy-applications.md", "4.life-patterns/refactoring.md"]}, "idea:everyone-is-a-developer": {"id": "idea:everyone-is-a-developer", "kind": "idea", "title": "Everyone who can brief an agent is a developer now", "statement": "The definition widened: the citizen developer is the spreadsheet grown up, and Portuguese is a programming language because prompts are natural language. The book must also say what the briefing-only developer cannot do.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Generation Z Developers, again; what the briefing-only developer cannot do is interview question 6", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "everyone-is-a-developer", "batch": null, "url": "graph/ideas/everyone-is-a-developer.html", "sources": [{"ref": "news:generation-z-developers-again", "where": "The name"}, {"ref": "news:the-citizen-developer", "where": "the citizen developer is good news"}, {"ref": "news:portugal-2024-genai-in-portuguese", "where": "the quiz"}, {"ref": "art:lucky-to-be-here", "where": "Become a developer"}], "answers": ["1.introduction/generation-z.md", "1.introduction/stem-tech-stack.md", "3.technologies/draft/scratch.md"]}, "idea:hired-for-the-workflow": {"id": "idea:hired-for-the-workflow", "kind": "idea", "title": "The one competitive advantage in 2026 is running agentic workflows", "statement": "Companies need AI operators, not model builders; 71% of leaders would rather hire less experience with AI skills; the roles pay 62% more; the edge shows when the choice is close.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "getting-the-job", "chapter": "hired-for-the-workflow", "batch": null, "url": "graph/ideas/hired-for-the-workflow.html", "sources": [{"ref": "news:hired-for-the-workflow", "where": "the whole argument and the data"}, {"ref": "book:1.introduction/how-to-get-a-job.md", "where": "Having one competitive advantage"}], "answers": ["1.introduction/how-to-get-a-job.md", "3.technologies/content/ml-ai.md"]}, "idea:you-are-more-technical-than-you-think": {"id": "idea:you-are-more-technical-than-you-think", "kind": "idea", "title": "You are more technical than you think", "statement": "People who use email, websites and apps at an advanced level and still say they are not technical have learned every previous technique; they only need the new one.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "getting-the-job", "chapter": "hired-for-the-workflow", "batch": null, "url": "graph/ideas/you-are-more-technical-than-you-think.html", "sources": [{"ref": "news:hired-for-the-workflow", "where": "There was a time"}], "answers": ["4.life-patterns/impostor-syndrome.md"]}, "idea:it-starts-with-the-application": {"id": "idea:it-starts-with-the-application", "kind": "idea", "title": "The edge starts with the application", "statement": "A CV fitted to the role, an analysis of the company's problem, and something they have not seen: the interview then starts from your strengths. It worked for Dinis through OWASP before agents existed.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "getting-the-job", "chapter": "hired-for-the-workflow", "batch": null, "url": "graph/ideas/it-starts-with-the-application.html", "sources": [{"ref": "news:hired-for-the-workflow", "where": "It starts with the application; When all things are equal"}], "answers": ["1.introduction/how-to-get-a-job.md", "7.your-cv/_index.md"]}, "idea:act-as-the-job-you-want": {"id": "idea:act-as-the-job-you-want", "kind": "idea", "title": "Act as the job you want: do the job in public before you have it", "statement": "If you are looking for a job you have time; pick a startup or an open-source project, do the work as that person, in public, so it can be linked; reach does not matter, the link does; let the people who want to help you help you.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "getting-the-job", "chapter": "act-as-the-job-you-want", "batch": null, "url": "graph/ideas/act-as-the-job-you-want.html", "sources": [{"ref": "news:act-as-the-job-you-want", "where": "the whole argument"}, {"ref": "book:1.introduction/how-to-get-a-job.md", "where": "Act like you are part of the company"}], "answers": ["1.introduction/how-to-get-a-job.md", "7.your-cv/github.md", "4.life-patterns/mentors.md", "6.security/bug-bounties.md"]}, "idea:your-cv-online": {"id": "idea:your-cv-online", "kind": "idea", "title": "Your CV should be online, with links to the work", "statement": "A page anyone can forward, not only a PDF; your GitHub is your CV because it shows how you work with others; the bar to build it is an afternoon.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "publish-in-public", "chapter": "act-as-the-job-you-want", "batch": null, "url": "graph/ideas/your-cv-online.html", "sources": [{"ref": "news:act-as-the-job-you-want", "where": "Your CV should be online; The bar is not high"}, {"ref": "news:three-linkedin-pages", "where": "drafting pages in the open"}], "answers": ["7.your-cv/_index.md", "7.your-cv/github.md", "7.your-cv/linkedin.md", "7.your-cv/blogs.md"]}, "idea:job-hunt-in-2026": {"id": "idea:job-hunt-in-2026", "kind": "idea", "title": "How a job hunt works in 2026: interviews, take-home tests with AI, what a junior role looks like", "statement": "A gap no article covers yet: the mechanics of applying, interviewing and freelancing now; the journalist writes it from a memo.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Article first.", "gravity": "all", "topic": "getting-the-job", "chapter": "act-as-the-job-you-want", "batch": null, "url": "graph/ideas/job-hunt-in-2026.html", "sources": [{"ref": "survey:gaps", "where": "The job hunt mechanics in 2026"}, {"ref": "art:start-from-the-storyline", "where": "The gaps; brief task 6"}], "answers": ["7.your-cv/upwork.md"]}, "idea:fear-of-ai": {"id": "idea:fear-of-ai", "kind": "idea", "title": "The fear, impostor syndrome and anxiety about AI among young people", "statement": "Young Europeans are fed fear about AI; the book concedes which fears are right (the first hiring wave went to the wrong people, projects will be cancelled) and answers the rest. A gap: no article is written for the newcomer yet.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Article first; interview question 4.", "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/fear-of-ai.html", "sources": [{"ref": "survey:gaps", "where": "Fear, impostor syndrome and anxiety"}, {"ref": "news:generation-z-developers-again", "where": "The name"}, {"ref": "art:lucky-to-be-here", "where": "The hype, and maybe the crash"}], "answers": ["4.life-patterns/impostor-syndrome.md"]}, "idea:publish-publish-publish": {"id": "idea:publish-publish-publish", "kind": "idea", "title": "Publish, publish, publish: your own newsroom", "statement": "A publishing loop you can copy on day one: a voice memo in, an agent researches, checks and writes in your voice, a validated static site out; small finished pieces over big batches; linkable work is the CV.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "explorer", "topic": "publish-in-public", "chapter": "your-own-newsroom", "batch": null, "url": "graph/ideas/publish-publish-publish.html", "sources": [{"ref": "news:your-own-newsroom", "where": "the step-by-step recipe"}, {"ref": "news:books-from-articles", "where": "books stall at 95%"}, {"ref": "news:nineteen-sites", "where": "twenty sites in fifteen days"}], "answers": ["4.life-patterns/publish-publish-publish.md", "7.your-cv/blogs.md", "2.mvp-for-gen-z-dev/content/hugo.md", "7.your-cv/leanpub.md"]}, "idea:every-part-buys-the-next": {"id": "idea:every-part-buys-the-next", "kind": "idea", "title": "Write it once, link it many times; every part buys the next", "statement": "An article behind every answer; the subject buys the first line, the first line the paragraph; the Wizard of Oz in reverse: agent-drafted, person-sent.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "publish-in-public", "chapter": "your-own-newsroom", "batch": null, "url": "graph/ideas/every-part-buys-the-next.html", "sources": [{"ref": "news:the-man-behind-the-curtain", "where": "the argument"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "every part buys the next"}], "answers": ["5.concepts/amazon-press-releases.md"]}, "idea:first-workspace": {"id": "idea:first-workspace", "kind": "idea", "title": "Your first workspace: from a spreadsheet to a folder per person, drafts never send", "statement": "A Drive folder per person, a Claude Project connected to Drive and Gmail, a six-line policy, five exercises in an afternoon; then habits, an agent mailbox, and surfaces chosen by reach.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The beginner's accounts and costs checklist is still a gap.", "gravity": "all", "topic": "your-first-workspace", "chapter": "your-first-workspace", "batch": null, "url": "graph/ideas/first-workspace.html", "sources": [{"ref": "news:from-a-spreadsheet-to-a-folder-per-person", "where": "the how-to"}, {"ref": "news:replicating-the-agentic-inbox", "where": "drafts, never send"}, {"ref": "news:how-i-work-with-claude", "where": "six habits"}, {"ref": "news:short-punchy-and-co-written", "where": "For anyone getting into AI: the Google Workspace chapter"}], "answers": ["2.mvp-for-gen-z-dev/_index.md", "2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "4.life-patterns/automate-your-workflows.md"]}, "idea:an-agent-is-a-session-with-a-focus": {"id": "idea:an-agent-is-a-session-with-a-focus", "kind": "idea", "title": "An agent is a session with a focus: one session per topic, named, with a role file", "statement": "One session per topic, @names, a role.md saying what it does and does not do, lessons and debriefs as memory, a daily brief.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": null, "url": "graph/ideas/an-agent-is-a-session-with-a-focus.html", "sources": [{"ref": "news:how-i-work-with-claude", "where": "the six habits"}, {"ref": "news:the-agents-write-too", "where": "a team of focused sessions"}, {"ref": "news:the-librarians-daily-brief", "where": "the daily brief"}], "answers": ["4.life-patterns/workflows.md", "5.concepts/agile-and-kanban.md"]}, "idea:brief-is-the-unit-of-work": {"id": "idea:brief-is-the-unit-of-work", "kind": "idea", "title": "The brief is the unit of work, and writing it as an article forces the research", "statement": "A written request an agent can start from: what is asked, what exists, what remains, what done looks like; an article beats a list because it makes you check the record first.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": null, "url": "graph/ideas/brief-is-the-unit-of-work.html", "sources": [{"ref": "art:write-it-as-an-article", "where": "Why an article; How an article becomes work"}, {"ref": "news:the-briefs-so-far", "where": "the brief"}, {"ref": "news:brief-the-agent-too", "where": "the people I talk to work with agents"}], "answers": ["5.concepts/design.md"]}, "idea:omnichannel-programming": {"id": "idea:omnichannel-programming", "kind": "idea", "title": "Omnichannel programming: brief by voice, review on the phone, one shared state", "statement": "Voice, chat, phone, IDE and pull requests all read and write one shared state (git, vaults, briefs, graphs); this is how a new generation programs.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "explorer", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": null, "url": "graph/ideas/omnichannel-programming.html", "sources": [{"ref": "news:omnichannel-programming", "where": "the argument"}], "answers": ["3.technologies/content/ide.md", "2.mvp-for-gen-z-dev/content/slack-and-chatops.md"]}, "idea:every-mistake-added-a-rule": {"id": "idea:every-mistake-added-a-rule", "kind": "idea", "title": "Every mistake added a rule: the complexity trap of the agent operator", "statement": "Each mistake becomes a rule, the prompt grows, compaction comes sooner and new mistakes follow; the way out is fewer, enforced rules, re-anchored after every summary.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": null, "url": "graph/ideas/every-mistake-added-a-rule.html", "sources": [{"ref": "news:every-mistake-added-a-rule", "where": "the trap"}, {"ref": "news:re-anchoring-agent-behaviour-policies", "where": "summarised 18 times in a month"}], "answers": ["5.concepts/changes.md"]}, "idea:not-on-your-laptop": {"id": "idea:not-on-your-laptop", "kind": "idea", "title": "Why your agents should not run on your laptop", "statement": "An agent on your laptop runs as you, with your SSH keys, cookies and password-manager session; pick the cloud surface by reach.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "security-agent-era", "chapter": "your-first-workspace", "batch": null, "url": "graph/ideas/not-on-your-laptop.html", "sources": [{"ref": "news:why-my-agents-do-not-run-on-my-laptop", "where": "the safety advice"}], "answers": ["6.security/dont-touch-production.md"]}, "idea:direction-is-the-scarce-skill": {"id": "idea:direction-is-the-scarce-skill", "kind": "idea", "title": "Direction is the scarce skill: the place of highest leverage", "statement": "When anyone can brief an agent, building stops being the bottleneck; choosing what to build next, where nothing blocks you, and starting without knowing the end, is what employers and users pay for.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "With agents we can develop just about anything; what we cannot generate is the sense of what to build next, for whom, and when to stop. Context and focus come from using the thing, which is why a founder who misses a feature is the product telling them where it wants to go. The rule behind the two days against six months: always follow the users, even when the user is you, and follow the feedback loops, doing the thing that gets a reaction straight away. A problem solved before anybody needs it is solved in the abstract, and abstract solutions are where the complexity creeps in; the earlier attempts at the master vault's key failed a simplicity test, 'because complicated is how security designs fail'. The measure is one question: am I getting better? Focus is undivided attention on the place of highest leverage, not working on only one product.", "gravity": "explorer", "topic": "direction-is-the-scarce-skill", "chapter": "direction-and-judgement", "batch": null, "url": "graph/ideas/direction-is-the-scarce-skill.html", "sources": [{"ref": "news:places-of-highest-leverage", "where": "the argument"}, {"ref": "news:not-a-straight-line", "where": "two days against six months"}, {"ref": "art:connect-the-dots-backwards", "where": "doors, fast iteration, constraints, leverage"}, {"ref": "news:i-miss-it", "where": "Direction is the scarce part"}], "answers": ["5.concepts/deadlines.md", "4.life-patterns/start-with-why.md"]}, "idea:knowing-when-to-stop": {"id": "idea:knowing-when-to-stop", "kind": "idea", "title": "Knowing when to stop is most of seniority", "statement": "Who the attackers are, the phase of the business, the bottleneck, what good enough looks like: experience gives people this, agents lack it, and the book has to teach the junior's version.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "town-planner", "topic": "direction-is-the-scarce-skill", "chapter": "direction-and-judgement", "batch": null, "url": "graph/ideas/knowing-when-to-stop.html", "sources": [{"ref": "news:knowing-when-to-stop", "where": "the argument"}, {"ref": "book:3.technologies/content/brain.md", "where": "the chapter on how the brain decides"}], "answers": ["3.technologies/content/brain.md", "5.concepts/deadlines.md"]}, "idea:one-way-two-way-doors": {"id": "idea:one-way-two-way-doors", "kind": "idea", "title": "One-way and two-way doors, blast radius, and where a person belongs", "statement": "How cheap is it to undo decides where the human goes: put the person where the output cannot be undone and the blast radius is large; give them the why; let the record move the line over time. People approve 93% of permission prompts.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Build or buy becomes how much it costs to undo and how mature the controls are: a narrow internal tool that a few people use and that can be switched off is a two-way door, so build it, explore, learn; a tool that touches regulated data every day is a one-way door until the controls are mature, which is where the villagers have to be in place first, yours or a partner's.", "gravity": "town-planner", "topic": "human-in-the-loop", "chapter": "direction-and-judgement", "batch": null, "url": "graph/ideas/one-way-two-way-doors.html", "sources": [{"ref": "news:how-cheap-is-it-to-undo", "where": "the test"}, {"ref": "news:the-human-in-the-loop", "where": "93%"}, {"ref": "news:footprint-and-blast-radius", "where": "footprint beside blast radius"}, {"ref": "news:agency-is-not-a-yes", "where": "the seven-level scale"}, {"ref": "news:who-will-fix-your-mess", "where": "Build where it is cheap to undo"}], "answers": ["4.life-patterns/one-way-two-way-doors.md", "6.security/dont-touch-production.md", "5.concepts/chaos-engineering.md"]}, "idea:agents-decide-people-answer": {"id": "idea:agents-decide-people-answer", "kind": "idea", "title": "Agents decide, people answer", "statement": "Agents in loops make real decisions, but responsibility stays with whoever granted the reach and set the mandate; also ELIZA and anthropomorphism.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The reframe in one line: 'the moment of authorisation is the moment you granted the reach, not the moment you wrote the mandate.' Exposure exists the instant the grant exists; accountability sits with whoever runs the system; and each risk is routed up the management chain to the executive who owns it, never held by the operator. The article's three firebreaks for a vendor that stays out of the path: not in the request path, the customer's agent executes, and every prompt or policy handed over is reviewed and put into production by someone on the customer's side.", "gravity": "town-planner", "topic": "human-in-the-loop", "chapter": "direction-and-judgement", "batch": null, "url": "graph/ideas/agents-decide-people-answer.html", "sources": [{"ref": "news:who-owns-the-words", "where": "the argument"}, {"ref": "news:the-policy-draws-the-liability-line", "where": "the prohibitions list"}, {"ref": "news:riskmandate-ten-questions", "where": "4. How are we insuring or assuring agent behaviour?, Liability"}], "answers": ["4.life-patterns/civic-responsibility.md"]}, "idea:the-record-checks-you": {"id": "idea:the-record-checks-you", "kind": "idea", "title": "Make fact-based decisions: think out loud and let the record check you", "statement": "Count rather than remember; publish only what the record supports (5 claims confirmed, 5 corrected, 2 not found); review as a record with every finding answered; distrust self-reports.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dinis's memory and the record part ways in an instructive direction: he remembered the data room and the vault as things the zip led to, and the record shows both were named in February, before the features; he remembered a week of Git briefs and the record shows about two weeks and some 48 brief files; 'nine months' was eight. The ideas came first and the features caught up. A second worked example for 'count rather than remember'.", "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/the-record-checks-you.html", "sources": [{"ref": "news:my-memory-checked", "where": "the experiment"}, {"ref": "news:reviews-on-the-record", "where": "review as a record"}, {"ref": "news:your-agents-logs-are-a-self-report", "where": "under 2% admitted"}, {"ref": "book:5.concepts/facts.md", "where": "the 2018 outline"}, {"ref": "news:from-send-to-sgit", "where": "The data room I had already built; Copy Git; What this does not claim"}], "answers": ["5.concepts/facts.md", "5.concepts/feedback-loops.md", "4.life-patterns/content/being-criticized-is-a-privilege.md"]}, "idea:mandate-reach-gap": {"id": "idea:mandate-reach-gap", "kind": "idea", "title": "Mandate, reach and the gap: hope versus enforcement", "statement": "Before you give an agent access, write down what it is for and what it can reach; the gap is the risk; rules in a prompt are hope, rules in a hook or platform are enforcement; behaviour, decision and workflow policies are different things.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The product in three words: a hive, a memory and a mandate. Ruflo gives the many hands, an sgit vault the memory the client keeps, an Agent Behaviour Policy each role's mandate. In the first proof of concept the same eleven actions went through the policy engine in enforce mode and six were stopped: four denied, two sent to a person. Read through the Agent Behaviour Policy, a desktop is the agent's grant (everything it can reach) and the task is its mandate; the desktop's job is to keep the first close to the second and leave a footprint that can be read afterwards. That gives nine properties, and the design that follows writes one mandate per task before the desktop exists (what it is for, the hosts it may reach, the secrets it may use and for which hosts, the identity, how long), configures the desktop from it so the grant cannot drift past it by accident, and keeps a vault outside every desktop that it can append to and cannot rewrite. The four objects as the article tables them: mandate (elicited from business and user stories, locked under change control), grant or reach (measured, calibrated against logs), delta (reach minus mandate, derived and never authored) and barriers (none, expectation, setting, boundary; only a boundary is a control). The goal of every engagement is the smallest mandate, the smallest reach, the smallest gap. Self-policing is the fallback, not the goal: the value is in the act of creating the policy, which discovers what is actually possible. Reality is the calibrator: the documentation said an agent could not attach a file to an email, and Claude found a way. Anthropic's own words for why a rule in a prompt is hope: CLAUDE.md files are treated 'as context, not enforced configuration. To block an action regardless of what Claude decides, use a PreToolUse hook instead', and Claude Code's permission rules 'are enforced by Claude Code, not by the model'. Both modes of reaching a model (the API, where we write the whole system prompt, and the apps and Claude Code, where the vendor's prompt comes first) carry the policy as text the model is asked to keep. Hope or enforcement measured the share of a policy resting on hope falling from 97% to 23% with the right design. The one-sentence test for the barrier column: 'A control bounds a grant only if it is enforced by something the grant does not include.' Atlassian's Rovo walked through as the shape of enterprise oversharing: nobody's permissions changed, what changed is that everything they already allowed is now one question away, and who the agent runs as (the person asking, the automation's connection account, or the agent's own account) decides the grant. The Northstar refund as why a behaviour policy is not enough: allowed to refund up to $200, owed $120, paid $150, and every control passes; a decision policy and a workflow policy answer 'who decides' and 'in what order'. The Northstar figures are a scripted simulation, no model called.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": null, "url": "graph/ideas/mandate-reach-gap.html", "sources": [{"ref": "news:what-can-your-agent-reach", "where": "the plain explainer"}, {"ref": "news:are-hooks-the-sweet-spot", "where": "hope-based security"}, {"ref": "news:attacks-rewritten-as-mandates", "where": "28 incidents"}, {"ref": "news:three-policies-for-an-agent", "where": "the three-policy split"}, {"ref": "news:agentics-ready-to-sell", "where": "What we showed"}, {"ref": "news:an-agent-desktop-by-the-minute", "where": "What locked down means; What we would build from what exists"}, {"ref": "news:riskmandate-ten-questions", "where": "If you have not met RiskMandate; The answers, in brief; 1. What happens when an agent bypasses its behaviour policy?, The important nuance; 3., Reality is the calibrator"}, {"ref": "news:a-policy-beside-the-prompt", "where": "Where the policy goes today, in each mode"}], "answers": ["6.security/threat-modeling.md", "6.security/3rd-party-modules.md"]}, "idea:code-is-a-liability": {"id": "idea:code-is-a-liability", "kind": "idea", "title": "Code is a liability; the future is the smallest code that does the job", "statement": "Every shipped line is a capability someone may misuse (Log4j; 428 of 1,500 files ran); the next maintainer is an agent; the minimal viable code path.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "town-planner", "topic": "security-agent-era", "chapter": "controlling-your-agent", "batch": null, "url": "graph/ideas/code-is-a-liability.html", "sources": [{"ref": "news:the-code-you-do-not-ship", "where": "the argument"}, {"ref": "news:the-minimum-code-below", "where": "428 of 1,500"}], "answers": ["5.concepts/legacy-applications.md", "4.life-patterns/refactoring.md", "4.life-patterns/content/future-needs-you.md"]}, "idea:learn-to-hack": {"id": "idea:learn-to-hack", "kind": "idea", "title": "Learning to hack is still how you learn how things work: draw the line where the attacker is", "statement": "Name the threat agent, the vector and how sophisticated it is; a ladder from your own mistakes up to states; the bookmarklet trick; to hack means to solve problems.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "explorer", "topic": "security-agent-era", "chapter": "controlling-your-agent", "batch": null, "url": "graph/ideas/learn-to-hack.html", "sources": [{"ref": "news:who-are-you-protecting-against", "where": "the ladder"}, {"ref": "news:fix-the-page-yourself", "where": "the bookmarklet"}, {"ref": "news:portugal-2016-hacking-portugal", "where": "to hack means to solve problems"}], "answers": ["4.life-patterns/learn-to-hack.md", "6.security/security-better-developers.md", "6.security/threat-modeling.md"]}, "idea:secrets-never-in-the-chat": {"id": "idea:secrets-never-in-the-chat", "kind": "idea", "title": "The secret goes from the drop into the tool, never into the chat", "statement": "Classify the credential before it touches anything; an agent told something cannot untell it; the lethal trifecta.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The worked case for vault keys: a transcript is a durable artefact that is retained, can be exported and outlives the session, and two keys in the estate were rotated because they were displayed and the display was captured. The handover that replaced pasting: the agent seals the key to the registry's public key after checking its fingerprint, sends it with one POST on a write-only lane whose token cannot read back, and replies with only the vault id and the HTTP response, so no transcript holds the key. The prompt gives the agent the reason before the instruction, and a way out (seal the file and hand it over, or hand over the key for relay), because a careful agent asked to send a secret to an endpoint it has never seen should hesitate.", "gravity": "villager", "topic": "security-agent-era", "chapter": "controlling-your-agent", "batch": null, "url": "graph/ideas/secrets-never-in-the-chat.html", "sources": [{"ref": "news:handing-secrets-to-agents", "where": "the rule"}, {"ref": "news:seven-vaults-one-method", "where": "classify the credential first"}, {"ref": "news:skill-behaviour-policy", "where": "the lethal trifecta"}, {"ref": "news:where-the-vault-keys-live", "where": "How a new key reaches the registry; The prompt, in full"}], "answers": ["6.security/pointers.md", "6.security/strings-should-be-banned.md"]}, "idea:the-fork-next-door": {"id": "idea:the-fork-next-door", "kind": "idea", "title": "Open source means nobody can lock you in: the fork next door", "statement": "Anyone can fork, which protects founders, customers and investors from each other; forks take hold only when someone stops executing; six misconceptions; open source is about to become the most secure software.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The fork as the investor's insurance in place of control: 'A competitor who forks our code today gets our position as of today. They do not get our velocity.' Two conditions make it real: a genuinely open licence, not open core, and a copyright structure not gathered in one corporate holder (every catalogued relicensing between 2018 and 2024 was by a single corporate copyright holder). The fork disciplines the founder because it is possible and protects the founder because it is slow. Relicensing has a pattern: HashiCorp, Elastic and Redis each moved from an open licence to a source-available one, each produced a well-funded fork backed by the cloud providers it targeted (OpenTofu, OpenSearch, Valkey), and two of the three have since added an open licence back. Docker Desktop's paid tier for larger companies (August 2021) worked commercially, with annual recurring revenue past $50 million within months, and the alternatives grew: OrbStack, Colima, Podman Desktop and Rancher Desktop together are about 47% of the five tools' installs through Homebrew over the past year, a figure the article says overstates them. The buyer's side of the same protection: if the only people who can fix a tool are one partner's engineers, the company has swapped a deployment gap for a dependency. With the code open and the record kept, 'who will fix it?' has many answers: your team, the partner, another partner, or the agents, under a mandate, reading the record. Dinis declares a stake: his companies sell open source.", "gravity": "all", "topic": "open-source", "chapter": "open-source", "batch": null, "url": "graph/ideas/the-fork-next-door.html", "sources": [{"ref": "news:the-fork-next-door", "where": "the argument"}, {"ref": "news:what-open-source-is-and-is-not", "where": "six misconceptions"}, {"ref": "news:the-eyeballs-get-cheap", "where": "curl's year"}, {"ref": "book:2.mvp-for-gen-z-dev/content/open-source.md", "where": "the 2018 chapter"}, {"ref": "news:sell-dont-issue", "where": "The open source safety valve"}, {"ref": "news:open-source-is-not-free", "where": "Why not just charge?"}, {"ref": "news:who-will-fix-your-mess", "where": "And who will fix your mess?"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md", "2.mvp-for-gen-z-dev/content/creative-commons.md"]}, "idea:first-pr": {"id": "idea:first-pr", "kind": "idea", "title": "Your first pull request: open source is still the newcomer's best door", "statement": "A one-file, 83-line documentation PR merged into a 9,625-commit project; contribute to the projects of the companies you want to work for.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "explorer", "topic": "open-source", "chapter": "open-source", "batch": null, "url": "graph/ideas/first-pr.html", "sources": [{"ref": "news:our-first-pr-in-ruflo", "where": "the first-contribution story"}, {"ref": "news:act-as-the-job-you-want", "where": "collaborate on their open-source projects"}], "answers": ["7.your-cv/github.md", "2.mvp-for-gen-z-dev/draft/github-flow.md"]}, "idea:lego-blocks": {"id": "idea:lego-blocks", "kind": "idea", "title": "Building blocks: cloud as Lego, free models with your own key, git as a standard", "statement": "What a non-specialist can assemble today, mostly free, with an agent doing the one-time setup; serverless as ephemeral town planner services; knowing what tokens cost.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Costs for a newcomer is still a gap. The four properties serverless always meant to Dinis: it scales to zero, it costs little or nothing when it is not there, it starts fast, and it turns a capability into a commodity. The three words of the name each cover a part the others miss: ephemeral (comes and goes with use, costs nothing when gone), town planner (Wardley's word: mature, industrialised, a commodity, not a prototype held together behind the scenes), services (exposed for others to use, usually through the web). Lambda is an ephemeral town planner service sitting on town planner services like S3, which are always there. The name is a proposal; Dinis does not expect it to replace serverless. The free limits as Cloudflare's pages gave them on 18 October 2026 (they change): static assets free and unlimited on every plan; Workers 100,000 requests a day and 10 ms of CPU each, $5 a month for 10 million; R2 10 GB, a million writes and ten million reads a month, no egress fees, buckets pinnable to the EU; D1 5 GB; KV 100,000 reads and 1,000 writes a day; Durable Objects 100,000 requests a day and 5 GB; Workers AI 10,000 neurons a day then $0.011 per 1,000, 71 models on Cloudflare's own GPUs with a promise not to train on what you send; Email Routing free and unlimited; Access free to 50 users; domains at the registry's price. If staying inside is the point, the model name is the control: a @cf/ model stays on Cloudflare's GPUs, anything else leaves through AI Gateway. The catch for a non-specialist is setup, because Cloudflare's API cannot be called from a web page: a Deploy to Cloudflare button, a temporary account (live for an hour, since June), or an agent with the command line, once. Five packages, each the smallest set for one job and each on the free plan: a site on my domain; my vault, hosted; an assistant over my documents; an inbox that does things; a form or a small API. Each is a repository with a button, a skill and a page saying exactly what it can reach, which is its behaviour policy. The command line is changing: cf entered open beta on 28 September and will replace Wrangler, maintained for 18 months after the beta ends.", "gravity": "villager", "topic": "building-blocks", "chapter": "building-blocks", "batch": null, "url": "graph/ideas/lego-blocks.html", "sources": [{"ref": "news:cloudflare-as-lego-blocks", "where": "the map of free blocks"}, {"ref": "news:free-models-your-own-key", "where": "free in October 2026"}, {"ref": "news:ephemeral-town-planner-services", "where": "the test for serverless"}, {"ref": "news:sgit-is-a-standard", "where": "git won because it is a standard"}, {"ref": "news:the-tokens-hook", "where": "$170 against $1,950"}], "answers": ["2.mvp-for-gen-z-dev/draft/aws.md", "5.concepts/serverless.md", "5.concepts/micro-services.md", "7.your-cv/git.md", "2.mvp-for-gen-z-dev/content/docker.md"]}, "idea:green-does-not-mean-live": {"id": "idea:green-does-not-mean-live", "kind": "idea", "title": "Shipped means the user has it: green does not mean live, go slow to go fast", "statement": "A CI pass is not a release until you have checked what the user sees; tests that never run are not tests; the explorer-to-villager move is a refactor you can prove; synthetic users in an afternoon.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The founder's definition of shipped, which is the same as the chapter's: not a proof of concept, a demo, a video of a demo or a prototype walked through on a call, but 'a thing somebody else can go and use, on their own, and get value from'. It can be held together with tape; nobody using it cares how it was built. Getting it into a stranger's hands is still genuinely hard in 2026, and solving that is the first real product you build. The cost of speed, stated: when the newsroom moved to its own domain, 51 of the 527 figures in its articles did not come with it, and nothing failed in a way a server would have noticed, because the pages were files and they served. The synthetic readers found it. Files make releases cheap and also make it easy to ship something incomplete, which is why every release ends by checking what is actually live.", "gravity": "villager", "topic": "shipped-means-the-user-has-it", "chapter": "shipped-means-the-user-has-it", "batch": null, "url": "graph/ideas/green-does-not-mean-live.html", "sources": [{"ref": "news:green-does-not-mean-live", "where": "shipped is a fact about the reader"}, {"ref": "news:explorer-to-villager-newsroom", "where": "go slow to go fast"}, {"ref": "news:how-to-run-synthetic-users", "where": "five people who do not exist"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "Pillar one: ship something somebody can use"}, {"ref": "news:no-server-by-design", "where": "It ships fast"}], "answers": ["5.concepts/CI-Testing.md", "2.mvp-for-gen-z-dev/draft/continuous-integration.md", "2.mvp-for-gen-z-dev/draft/tdd.md", "5.concepts/devops.md"]}, "idea:think-in-graphs": {"id": "idea:think-in-graphs", "kind": "idea", "title": "Think in graphs: knowledge that maintains itself, and your future self", "statement": "Graphs as the way of thinking, not only a drawing tool: brief from a graph, maintain it rather than perfect it, search as navigation; keep your work linkable and backed up so your future self can find it.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "graphs-memory", "chapter": "graphs-and-your-future-self", "batch": null, "url": "graph/ideas/think-in-graphs.html", "sources": [{"ref": "news:the-graphs-books", "where": "three books in a day"}, {"ref": "news:knowledge-that-maintains-itself", "where": "maintain, do not perfect"}, {"ref": "news:bringing-my-past-work-back", "where": "eighteen years of essays"}, {"ref": "art:connect-the-dots-backwards", "where": "I think in graphs"}, {"ref": "news:introducing-fractal-semantic-graphs", "where": "the defining article"}], "answers": ["5.concepts/graphs.md", "7.your-cv/future-self.md", "4.life-patterns/content/backup-your-life.md", "2.mvp-for-gen-z-dev/content/dot-language.md", "5.concepts/recursive-functions.md"]}, "idea:expert-founders": {"id": "idea:expert-founders", "kind": "idea", "title": "Be a founder: the expert can build first now, and the test is whether they miss it", "statement": "Generative AI lets the people who know the problem build it; the mean founding age of the fastest-growing startups is 45; open source everything; do they miss it; pay after the value.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The chapter's three worked examples: Dinis in security (sgit.ai and RiskMandate, after The Cyber Boardroom paused), Chinmay Gupte, a consultant knee surgeon, building OmKneeHealth and My Knee Score, and Kate Curtis-Evans, a transcriber, building Audio Genius for legal transcription; none is a hundred-call outsider, each has the contacts and one focus. The article is careful: the outsider playbook worked and is not a criticism, outsiders are not finished, and two of the three founders are people Dinis helps. The numbers now stand in their own idea, the-expert-founders-in-numbers; the miss-it loop and the pricing rule in do-they-miss-it and pay-after-the-value. The people who know the problem best are often the hardest to steer, because they know better; the article connects this to the expert founders as the profile investor selection filters out.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "be-a-founder", "batch": null, "url": "graph/ideas/expert-founders.html", "sources": [{"ref": "news:the-expert-founders", "where": "the argument"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "the startup test"}, {"ref": "news:paying-after-the-value", "where": "the gym figure"}, {"ref": "book:4.life-patterns/content/be-a-founder.md", "where": "the 2018 chapter"}, {"ref": "news:the-controllable-founder", "where": "What this means for strong-minded founders"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:hack-your-country": {"id": "idea:hack-your-country", "kind": "idea", "title": "Civic responsibility: to hack means to solve problems, and small countries can lead now", "statement": "Dinis's Portugal talks as the then-and-now: what regulation delivered, the Portuguese Hacking Service, judo for small countries, sovereignty as the ability to move.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Portuguese edition or both languages is Dinis's open question. Sovereignty as the ability to move, in its practical form: what stops workloads moving is code, not policy or price, and a twin that the application cannot tell from the real service makes the destination a setting. AWS's European Sovereign Cloud went live on 15 January 2026 (first region in Brandenburg, operated by EU residents, 'zero operational control outside of EU borders'), and the article's reading is that sovereignty which depends on one company's API is sovereignty by permission. There is no sovereignty without open source and open schemas, because sovereignty means you can leave; the judo move for an operator in Romania, Portugal or the UK is to use the customer's existing code, the hyperscaler's own API and open source as the weight rather than fight them. The word is facilitate, an embassy's job, and the SGraph Send Ambassador role was written to work the way an embassy works: represent, promote trade, build relationships, never hard sales, 'to create the conditions for that organic growth'. The judo playbook in five moves: map the attrition, commoditise the plumbing, create the demand, put the money where the market is still genesis, regulate what settled, then map again, each move using the weight of the larger players rather than matching it. Europe's advantage is strongest in its smaller countries, which can change faster. The article says it is not a national strategy but a map and a set of moves from one person's experience.", "gravity": "all", "topic": "civic-and-history", "chapter": "civic-responsibility", "batch": null, "url": "graph/ideas/hack-your-country.html", "sources": [{"ref": "news:portugal-2010-a-challenge", "where": "what came true in 16 years"}, {"ref": "news:portugal-2016-hacking-portugal", "where": "the keynote"}, {"ref": "news:judo-for-small-countries", "where": "the plumbing"}, {"ref": "news:sovereignty-is-the-ability-to-move", "where": "the test"}, {"ref": "news:move-the-cloud-not-the-code", "where": "Why workloads do not move; Why this has to be open source; The business model"}], "answers": ["4.life-patterns/civic-responsibility.md"]}, "idea:repository-official-vault-working": {"id": "idea:repository-official-vault-working", "kind": "idea", "title": "The repository holds the official versions; the vault holds the working versions", "statement": "The rule this site is built on: v1 frozen in the repository, work in a public vault with its read key published, a delta between every two versions.", "idea_kind": "process", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in A website to finish the book, and decision 005", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/repository-official-vault-working.html", "sources": [{"ref": "news:a-website-to-finish-the-book", "where": "The repository and the vault"}, {"ref": "dec:005", "where": "text issues live in the vault"}], "answers": ["1.introduction/how-this -book-was-created.md"]}, "idea:co-written-and-credited": {"id": "idea:co-written-and-credited", "kind": "idea", "title": "Co-written with Claude, credited, with the ratio shown; short and punchy; every paragraph knows what it is", "statement": "The book says it is co-written, shows the memo-to-word ratio (63,000 words in, 85,000 out on the newsroom), stays short and punchy, and every paragraph carries its purpose, evidence, facts and hypotheses in the graph.", "idea_kind": "process", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Short, punchy, and co-written with Claude", "notes": null, "gravity": "all", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/co-written-and-credited.html", "sources": [{"ref": "news:short-punchy-and-co-written", "where": "the whole argument"}, {"ref": "news:how-much-of-this-did-i-write", "where": "the numbers"}, {"ref": "news:who-is-speaking", "where": "three voices"}], "answers": ["1.introduction/how-this -book-was-created.md"]}, "idea:a-book-for-one-reader": {"id": "idea:a-book-for-one-reader", "kind": "idea", "title": "A personal edition, assembled by an agent, paid for as it is read", "statement": "Once the book is a graph an agent can assemble an edition for one person; sent not published; pay as you read from five pounds of credit.", "idea_kind": "process", "state": "deferred", "destination": "next-version", "decided_by": "The brief: nothing of it is built; it waits for the book's graph (this register is the first step)", "notes": "The rules the newsroom's meter runs by, which 'paid for as it is read' would inherit: £5.00 of credit to start, 10p for a new article read to the end and 5p for an older one, charged only as far as read, a rating that moves the price from free to double, a refusal with a reason that returns the charge, a balance that goes below zero with nothing blocked, one £5 top-up link and nothing that renews. Seven hypotheses were written before the first payment; the review is on 6 December 2026.", "gravity": "explorer", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/a-book-for-one-reader.html", "sources": [{"ref": "news:a-book-for-one-reader", "where": "the whole argument"}, {"ref": "news:paying-after-the-value", "where": "The newsroom's version; The experiment"}], "answers": []}, "idea:read-comment-decide": {"id": "idea:read-comment-decide", "kind": "idea", "title": "Read, comment, decide: the loop that turns Dinis's decisions into versions", "statement": "Read an item, comment verbatim, pick a verb (keep, fix, rewrite, merge, cut, article first, later, not doing it); the editor records it as a file in the vault and acts; decisions add up to a version Dinis signs off.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in Read, comment, decide", "notes": null, "gravity": "villager", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/read-comment-decide.html", "sources": [{"ref": "art:read-comment-decide", "where": "The loop; The verbs; A decision is a file"}, {"ref": "dec:006", "where": "every change is minor"}], "answers": []}, "idea:write-it-as-an-article": {"id": "idea:write-it-as-an-article", "kind": "idea", "title": "An article is how to brief an agent, and the roles keep their names", "statement": "Reviewer, editor, publisher, journalist; every article ends with a brief; the first job is to ship the book we already shipped.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in Write it as an article, and decision 007", "notes": null, "gravity": "villager", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/write-it-as-an-article.html", "sources": [{"ref": "art:write-it-as-an-article", "where": "the whole argument"}, {"ref": "dec:007", "where": "two kinds of article"}], "answers": []}, "idea:release-v1-again": {"id": "idea:release-v1-again", "kind": "idea", "title": "Release the book we already released: every format from one source", "statement": "Build v1.0.0 here, match it page by page to the 2018 PDF, then every format (print, screen, EPUB, Kindle) from the same build; Leanpub first, then Amazon; the licence is CC BY; the cover waits.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, decisions 001 to 004", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/release-v1-again.html", "sources": [{"ref": "art:release-the-book-we-already-released", "where": "the whole argument"}, {"ref": "dec:001", "where": "CC BY"}, {"ref": "dec:002", "where": "our own PDF"}, {"ref": "dec:003", "where": "every format from one source"}, {"ref": "dec:004", "where": "the cover waits"}], "answers": []}, "idea:one-board-and-one-inventory": {"id": "idea:one-board-and-one-inventory", "kind": "idea", "title": "One board for the work, one inventory of everything unfinished", "statement": "Every issue a file, the boards generated; text issues in the vault; one inventory of the 89 outlines, the drafts, the 43 GitHub issues and the handwritten notes, with a decision column.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in both articles and decision 005", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/one-board-and-one-inventory.html", "sources": [{"ref": "art:one-board-for-the-book", "where": "the whole argument"}, {"ref": "art:everything-unfinished-in-one-place", "where": "the whole argument"}, {"ref": "dec:005", "where": "text issues live in the vault"}], "answers": []}, "idea:start-from-the-storyline": {"id": "idea:start-from-the-storyline", "kind": "idea", "title": "Start from the storyline, as storyboards drawn by code", "statement": "The 2018 text and the newsroom are the material, not the plan: the storyline first, as panels with a punchline, a concept, the evidence and the character they are for; a cast of six; everything a proposal until Dinis decides.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in Start from the storyline; the cast and the storyline wait on him", "notes": null, "gravity": "explorer", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/start-from-the-storyline.html", "sources": [{"ref": "art:start-from-the-storyline", "where": "the whole argument"}, {"ref": "agent:storyboards-drawn-by-code", "where": "the renderer and the survey"}], "answers": []}, "idea:the-book-as-a-graph": {"id": "idea:the-book-as-a-graph", "kind": "idea", "title": "Everything we do here becomes a graph: ideas as nodes, provenance as edges, state on every node", "statement": "Sources, ideas, chapters, decisions and tasks as one graph, so that what goes in the book, what waits and what is declined is a property of a node with its evidence, and the publishing process can be shown, counted and sold.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in the message of 18 October 2026 that asked for this register", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/the-book-as-a-graph.html", "sources": [{"ref": "news:a-website-to-finish-the-book", "where": "The book as a graph, at every altitude"}, {"ref": "news:short-punchy-and-co-written", "where": "Every paragraph knows what it is"}, {"ref": "memo:2026-10-18-graphs", "where": "Dinis's message asking for the graph, the mappings and the tracking"}, {"ref": "agent:the-book-as-a-graph", "where": "the account of this first pass"}], "answers": ["5.concepts/graphs.md"]}, "idea:generative-ai-not-ai": {"id": "idea:generative-ai-not-ai", "kind": "idea", "title": "This book is about generative AI, not AI in general", "statement": "AI is a huge bucket (AI, machine learning, deep learning, generative AI); the book is about the kind that generates: data goes in, the model builds its own representation, and it recreates an output from it. The book says 'generative AI', and 'AI' only for the wider field.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Generative AI, not AI; the editor plans the section (brief task 1) and the style note (task 2)", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "what-generative-ai-is", "batch": null, "url": "graph/ideas/generative-ai-not-ai.html", "sources": [{"ref": "art:generative-ai-not-ai", "where": "AI is a huge bucket; How I understand it; A note on the name"}], "answers": ["3.technologies/content/ml-ai.md"]}, "idea:better-prompt-richer-picture": {"id": "idea:better-prompt-richer-picture", "kind": "idea", "title": "A language model predicts the next word from a rich picture of how things connect; that is why a better prompt helps, and where hallucinations come from", "statement": "Everything is connected in the model's picture; the text you give it says which connections matter; the image-extension tools of 2022 and 2023 made it click. The corrections stand beside it: vectors and attention, not a stored graph; the prompt conditions rather than fine-tunes.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Generative AI, not AI, with the corrections he asked for", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "what-generative-ai-is", "batch": null, "url": "graph/ideas/better-prompt-richer-picture.html", "sources": [{"ref": "art:generative-ai-not-ai", "where": "How I understand it; Where hallucinations come from; The image that made it click; Where I was corrected"}], "answers": ["3.technologies/content/ml-ai.md", "3.technologies/content/brain.md"]}, "idea:asked-to-be-corrected": {"id": "idea:asked-to-be-corrected", "kind": "idea", "title": "Ask to be corrected, and print the corrections with their sources", "statement": "The article on generative AI carries a section of corrections (machine learning learns too; no stored graph inside a model; the prompt conditions; next-token prediction plus training on feedback; emergence) because Dinis asked for them: the book does the same wherever his picture and the evidence differ.", "idea_kind": "method", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Generative AI, not AI", "notes": null, "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/asked-to-be-corrected.html", "sources": [{"ref": "art:generative-ai-not-ai", "where": "Where I was corrected"}, {"ref": "news:my-memory-checked", "where": "publish only what the record supports"}], "answers": ["5.concepts/facts.md", "4.life-patterns/content/being-criticized-is-a-privilege.md"]}, "idea:gen-ai-edition-name": {"id": "idea:gen-ai-edition-name", "kind": "idea", "title": "The name: Generation ZX Developers (GenAI Startup Edition)", "statement": "The edition carries its name in the title: Generation ZX Developers (GenAI Startup Edition), for two generations, the full form of the 2018 title with the second generation in it and the edition in brackets; one name made of two generations. It replaced Gen Z Developers (GenAI Edition), which stood for one release candidate. Whether Gen Alpha is a future reader stays for the title interview.", "idea_kind": "process", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, 19 October 2026: decision 010 (Gen Z Developers (GenAI Edition)), superseded the same day by decision 014 (Generation ZX Developers (GenAI Startup Edition))", "notes": "Decided twice in one day; the second decision supersedes the first and the record keeps both.", "gravity": "all", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/gen-ai-edition-name.html", "sources": [{"ref": "art:generative-ai-not-ai", "where": "A note on the name; The brief, task 3"}, {"ref": "news:generation-z-developers-again", "where": "The name"}, {"ref": "dec:010", "where": "the decision: the title is Gen Z Developers (GenAI Edition)"}, {"ref": "art:gen-zx-developers", "where": "the proposal: the tagline and Generation ZX"}, {"ref": "dec:014", "where": "the title"}], "answers": []}, "idea:immediate-connection": {"id": "idea:immediate-connection", "kind": "idea", "title": "The immediate connection between a creator and what they make is the wonder the book opens with", "statement": "Bret Victor's Inventing on Principle: see the effect of a change as you make it. The 2018 book already had it as an outline; the opening uses it for the wonder.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "explorer", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/immediate-connection.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "The opening, and learning; Bret Victor"}, {"ref": "art:lucky-to-be-here", "where": "Wonder"}], "answers": ["5.concepts/inventing-on-principle.md"]}, "idea:flow-and-deliberate-practice": {"id": "idea:flow-and-deliberate-practice", "kind": "idea", "title": "Flow and deliberate practice are the science of the zone and of learning", "statement": "Csikszentmihalyi on flow and Ericsson on deliberate practice back the 2018 chapters on the zone and on learning; the book names them in a 'where this comes from' box.", "idea_kind": "evidence", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/flow-and-deliberate-practice.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "The opening, and learning"}], "answers": ["4.life-patterns/the-zone.md", "4.life-patterns/content/learning.md", "4.life-patterns/power-of-habits.md"]}, "idea:a-claim-earns-its-status-by-being-refutable": {"id": "idea:a-claim-earns-its-status-by-being-refutable", "kind": "idea", "title": "Question everything: a claim earns its status by being refutable", "statement": "Popper for the chapter on questioning, Schneier for security thinking: the cover's first line, with its philosophy named.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "town-planner", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/a-claim-earns-its-status-by-being-refutable.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "Questioning and evidence"}], "answers": ["5.concepts/facts.md"]}, "idea:know-where-your-ideas-come-from": {"id": "idea:know-where-your-ideas-come-from", "kind": "idea", "title": "Know where your ideas come from: keep your own register", "statement": "The reader's exercise at the end of the learning part: write your influences as claims you can check, tied to where they show up in your work, the way influences.sgit.ai does; the book's own 'where this comes from' boxes and appendix are the example.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "all", "topic": "graphs-memory", "chapter": "connect-the-dots-backwards", "batch": null, "url": "graph/ideas/know-where-your-ideas-come-from.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "An exercise for the reader; The brief, tasks 2 and 5"}], "answers": ["7.your-cv/future-self.md", "4.life-patterns/mentors.md"]}, "idea:open-source-community-as-the-way-in": {"id": "idea:open-source-community-as-the-way-in", "kind": "idea", "title": "Open source, community and OWASP: working and getting hired in the open, with the names behind it", "statement": "Torvalds, The Cathedral and the Bazaar, open source and OWASP as the influences behind act as the job you want; the 2018 book had already written the Cathedral and the Bazaar down.", "idea_kind": "story", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "all", "topic": "open-source", "chapter": "open-source", "batch": null, "url": "graph/ideas/open-source-community-as-the-way-in.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "Open source, community and getting hired in the open; What the 2018 book gives back to the register"}, {"ref": "book:2.mvp-for-gen-z-dev/content/owasp.md", "where": "the 2018 chapter"}], "answers": ["2.mvp-for-gen-z-dev/content/owasp.md", "2.mvp-for-gen-z-dev/content/open-source.md"]}, "idea:the-villagers-craft": {"id": "idea:the-villagers-craft", "kind": "idea", "title": "Design, the design canon and Christopher Alexander: the villager's and town planner's craft", "statement": "The craft of making something others rely on has a canon; the book names it where the villager's chapters need it.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from", "notes": null, "gravity": "villager", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": null, "url": "graph/ideas/the-villagers-craft.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "The villager's craft"}], "answers": ["5.concepts/design.md", "5.concepts/netflix-culture.md"]}, "idea:start-with-why-sinek": {"id": "idea:start-with-why-sinek", "kind": "idea", "title": "Purpose, and optimism: Sinek for why, Kevin Kelly for what technology wants", "statement": "The 2018 outline Start with Why gets its influence named; Kevin Kelly's view of where technology goes is the frame's optimism, with the anchor (What Technology Wants or another) still Dinis's question.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Where the thinking came from; the Kevin Kelly anchor is his open question", "notes": null, "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lucky-to-be-here", "batch": null, "url": "graph/ideas/start-with-why-sinek.html", "sources": [{"ref": "art:where-the-thinking-came-from", "where": "Purpose, and optimism"}, {"ref": "book:3.technologies/content/ml-ai.md", "where": "Kevin Kelly's The Inevitable, recommended in 2018"}], "answers": ["4.life-patterns/start-with-why.md", "10.misc/technium.md"]}, "idea:ask-for-the-evidence": {"id": "idea:ask-for-the-evidence", "kind": "idea", "title": "Questioning, and asking for the evidence, is one of the most important skills now", "statement": "Asking where a claim came from is one of the most important skills this generation needs, and in large part they already have it: they connect the dots, they find things, they are good detectives; people underestimate them.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Follow the rabbit holes: 'This is that chapter'; the editor records it in the vault (task 1)", "notes": "'Good detectives' is Dinis's experience, not a study; the article says so.", "gravity": "all", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/ask-for-the-evidence.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "They already have it"}, {"ref": "sb:follow-the-rabbit-holes", "where": "the storyboard"}, {"ref": "book:5.concepts/facts.md", "where": "the 2018 outline Facts, about data-driven decisions, never written"}], "answers": ["5.concepts/facts.md"]}, "idea:privacy-aware-generation": {"id": "idea:privacy-aware-generation", "kind": "idea", "title": "They care about privacy; Snapchat's best feature was that images disappear", "statement": "This generation cares about privacy and has been told so often not to post anything that it becomes a problem of its own; Snapchat's disappearing images were the feature they understood first. Where to draw the line is an interview question.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The Snapchat point is about its design, not a claim about its actual privacy. Whether the book may mention Dinis's daughters is one of the article's questions for Dinis.", "gravity": "all", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/privacy-aware-generation.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "They already have it"}], "answers": []}, "idea:a-rabbit-hole-is-a-prompt-away": {"id": "idea:a-rabbit-hole-is-a-prompt-away", "kind": "idea", "title": "Following a rabbit hole is now a prompt away; build the agents and tools that find where things come from", "statement": "Never take something at face value: provenance (where it came from) and explainability (why it is the way it is) are now a prompt away, and visualising the rabbit holes is a skill to build your own agents and tools for. The article's own example: the David Rice keynote found by an agent following a link.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Follow the rabbit holes ('one of the areas I believe in most'); the editor records it in the vault", "notes": "The identity of the David Rice talk was confirmed in site v0.2.11 by Dinis's 2016 post The Pollution Analogy, which links the full recording: the rabbit hole closed by following one more link.", "gravity": "explorer", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/a-rabbit-hole-is-a-prompt-away.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "Provenance, explainability and the rabbit holes"}, {"ref": "art:where-the-thinking-came-from", "where": "the David Rice recording that could not be placed"}, {"ref": "art:generative-ai-not-ai", "where": "the section of corrections"}], "answers": ["5.concepts/facts.md"]}, "idea:disagree-rationally-with-provenance": {"id": "idea:disagree-rationally-with-provenance", "kind": "idea", "title": "Provenance and explainability are how you disagree rationally", "statement": "Showing what is evidence and what is not, what we know and what we do not know (not knowing can be a fact), is how debate stays logical; the newsroom's rules 'not found is not false' and 'a finding with no answer is just a complaint' are the working form.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Follow the rabbit holes; sits next to a-claim-earns-its-status-by-being-refutable", "notes": null, "gravity": "all", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/disagree-rationally-with-provenance.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "How you can disagree rationally"}, {"ref": "news:my-memory-checked", "where": "every claim checked before publication; 'Not found is not false'"}, {"ref": "news:reviews-on-the-record", "where": "'A finding with no answer is just a complaint'"}, {"ref": "art:where-the-thinking-came-from", "where": "Popper, and the questioning"}], "answers": ["5.concepts/facts.md", "5.concepts/feedback-loops.md"]}, "idea:managing-information-is-the-work": {"id": "idea:managing-information-is-the-work", "kind": "idea", "title": "Managing information so that decisions can be made is what work is", "statement": "In a company much of the work is knowing where the information is, who is doing what, what the status is and how a decision can be made; learning to follow the evidence is learning to do the job, and learning how to learn teaches it.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/managing-information-is-the-work.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "It is what work is"}], "answers": ["5.concepts/facts.md"]}, "idea:gen-ai-makes-the-checking-cheap": {"id": "idea:gen-ai-makes-the-checking-cheap", "kind": "idea", "title": "What cost hundreds of thousands of pounds is now a brief and a feedback loop", "statement": "Systems that gathered and checked information used to cost hundreds of thousands or millions of pounds and took too long to be effective; generative AI makes the same checking a brief and a feedback loop, so being the person who has the facts is now a choice, not a budget.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The cost figure is from Dinis's memory; the article asks the book to give an example with a number.", "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/gen-ai-makes-the-checking-cheap.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "Generative AI makes it cheap"}, {"ref": "news:the-briefs-so-far", "where": "the brief and the feedback loop as the unit of work"}], "answers": ["5.concepts/facts.md"]}, "idea:best-prepared-person-in-the-room": {"id": "idea:best-prepared-person-in-the-room", "kind": "idea", "title": "Be the best-prepared person in the room: briefings, pre-briefings, follow-ups", "statement": "There is no excuse now not to be the most prepared person in the room: a briefing for you, a briefing on the people you meet, a follow-up after; what used to be overhead for a rare kind of person now scales, like publishing and communication.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "How Dinis prepares a meeting today, step by step, is an interview question (task 3); the meeting-brief workflow is the journalist's first hands-on article (task 4).", "gravity": "villager", "topic": "working-with-agents", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/best-prepared-person-in-the-room.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "Be the best-prepared person in the room"}], "answers": []}, "idea:a-hands-on-part-for-2026": {"id": "idea:a-hands-on-part-for-2026", "kind": "idea", "title": "A hands-on part, dated 2026 and renewed each year", "statement": "The practical workflows (an agentic workflow from zero, images, infographics and storyboards, presentations, meeting briefs and follow-ups, publishing) change too fast for the argument's chapters; they belong in a part dated 2026 and renewed yearly, inside the book or as a companion.", "idea_kind": "process", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis (decision 013): inside the book, dated", "notes": "Decided: inside the book, in the candidate, dated 2026 and renewed each year (decision 013). The part has eleven chapters in rc2.", "gravity": "explorer", "topic": "your-first-workspace", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/a-hands-on-part-for-2026.html", "sources": [{"ref": "art:follow-the-rabbit-holes", "where": "A hands-on part, for 2026"}, {"ref": "news:from-a-spreadsheet-to-a-folder-per-person", "where": "one afternoon and five exercises"}, {"ref": "news:your-own-newsroom", "where": "voice memo in, a checked site out"}, {"ref": "news:replicating-the-agentic-inbox", "where": "the email workflow"}, {"ref": "agent:storyboards-drawn-by-code", "where": "the infographics and presentations"}], "answers": []}, "idea:a-graph-is-not-a-diagram": {"id": "idea:a-graph-is-not-a-diagram", "kind": "idea", "title": "A graph is a network of nodes and edges, not a diagram", "statement": "Some readers think a graph is a picture with boxes; the book means a network, nodes and the edges between them, and shows it with visualisations. Of the three things people mean by the word (networks for analysis, graph databases for storage, semantics for meaning) the book uses the first and the third.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": null, "gravity": "all", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/a-graph-is-not-a-diagram.html", "sources": [{"ref": "art:everything-is-connected", "where": "A graph is not a diagram"}, {"ref": "news:the-graphs-books", "where": "'In this book a graph is a network: nodes and the edges that connect them. Never a chart, never a figure'; 'A node connected to nothing is literally meaningless'"}, {"ref": "book:5.concepts/graphs.md", "where": "the 2018 outline: 'requires an ability to think in nodes and edges'"}], "answers": ["5.concepts/graphs.md"]}, "idea:the-whodunit-board": {"id": "idea:the-whodunit-board", "kind": "idea", "title": "The whodunit is the easiest way in: the detective's board is a graph", "statement": "The board on the wall with the photos, the notes and the red string is a graph, and the question is always a connection from A to B; this generation are good detectives already. A teaching device: real investigations are messier than red string.", "idea_kind": "story", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": null, "gravity": "all", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/the-whodunit-board.html", "sources": [{"ref": "art:everything-is-connected", "where": "The whodunit"}, {"ref": "sb:everything-is-connected", "where": "the detective's board panel"}, {"ref": "art:follow-the-rabbit-holes", "where": "They already have it"}], "answers": ["5.concepts/graphs.md"]}, "idea:a-map-is-a-graph-with-positions": {"id": "idea:a-map-is-a-graph-with-positions", "kind": "idea", "title": "A map is a graph with positions; a Wardley map is a graph with context", "statement": "A map is a graph where each node has a place: on a Wardley map, how visible it is and how evolved it is. That is why the graphs chapter and Where do you land belong next to each other; which comes first is Dinis's question.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": "Dinis's open question: graphs before Wardley maps, or the other way round? The proposed map puts the graphs chapter just before Where do you land.", "gravity": "all", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/a-map-is-a-graph-with-positions.html", "sources": [{"ref": "art:everything-is-connected", "where": "A map is a graph with positions"}, {"ref": "art:where-do-you-land", "where": "the Wardley axes"}], "answers": ["5.concepts/graphs.md"]}, "idea:graphs-of-graphs": {"id": "idea:graphs-of-graphs", "kind": "idea", "title": "Graphs nest, and so does the world: groups of groups are the abstraction layers we think in", "statement": "Fractal graphs, graphs of graphs: there is no top and no bottom, only the altitude you look from and how much definition you load there. Even nature can be seen as a gigantic graph, from systems to molecules to photons; groups of groups form the natural abstraction layers, which is how we think.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": "'Nature is a graph' is a way of seeing, not a claim in physics; the book should say so.", "gravity": "all", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/graphs-of-graphs.html", "sources": [{"ref": "art:everything-is-connected", "where": "Graphs of graphs"}, {"ref": "news:introducing-fractal-semantic-graphs", "where": "'There is no top and no bottom. There is only the altitude you happen to be looking from'"}], "answers": ["5.concepts/graphs.md", "5.concepts/recursive-functions.md"]}, "idea:provenance-is-a-graph": {"id": "idea:provenance-is-a-graph", "kind": "idea", "title": "Provenance is a graph: where a claim came from is a chain of edges back to its source", "statement": "How Dinis sees the world is connections, which is why provenance is a graph and why so many relationships in the book are graphs: the influences, the paths, the evidence, the people in a team. The record should be 'a graph whose every edge has a date and a source'.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": null, "gravity": "all", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/provenance-is-a-graph.html", "sources": [{"ref": "art:everything-is-connected", "where": "How I see the world"}, {"ref": "news:journalism-becomes-intelligence", "where": "'not a pile of articles, but a graph whose every edge has a date and a source'"}, {"ref": "news:memory-is-not-a-spectator-sport", "where": "Provenance built in: a URL for every quote, a hash for every file, a byline on every page"}], "answers": ["5.concepts/facts.md", "5.concepts/graphs.md"]}, "idea:start-anywhere": {"id": "idea:start-anywhere", "kind": "idea", "title": "You can start anywhere: it matters that you start, and get movement", "statement": "A graph has no front page and no top, so you never need to feel overwhelmed: it does not matter where you start or whether you go straight in the right direction; it matters that you start, connect the dots and get movement. A path only makes sense afterwards.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Everything is connected; the editor records it in the vault", "notes": null, "gravity": "explorer", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/start-anywhere.html", "sources": [{"ref": "art:everything-is-connected", "where": "Start anywhere"}, {"ref": "art:connect-the-dots-backwards", "where": "the path only makes sense afterwards"}], "answers": ["5.concepts/graphs.md", "4.life-patterns/content/learning.md"]}, "idea:the-2018-graph-chapters": {"id": "idea:the-2018-graph-chapters", "kind": "idea", "title": "The 2018 book was already there: Dot Language and AST were graphs without saying so", "statement": "The 2018 outline Graphs has four bullets that are the new chapter in miniature, and two published chapters, Dot Language (drawing the diagrams software never has) and AST (a syntax tree as 'a graph representation of source code'), are examples to place inside it.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The editor's task 3 of Everything is connected: where the two chapters sit inside the new one. Which of Dinis's graph presentations the outline meant is his question.", "gravity": "all", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/the-2018-graph-chapters.html", "sources": [{"ref": "art:everything-is-connected", "where": "The 2018 book was already there"}, {"ref": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "where": "the published chapter"}, {"ref": "book:3.technologies/content/AST.md", "where": "'a graph representation of source code'"}], "answers": ["5.concepts/graphs.md", "2.mvp-for-gen-z-dev/content/dot-language.md", "3.technologies/content/AST.md"]}, "idea:code-is-already-a-graph": {"id": "idea:code-is-already-a-graph", "kind": "idea", "title": "Source code is a fractal semantic graph, and a review should read every layer of it", "statement": "Stories, flows, components, classes, methods and calls, the syntax tree: each layer is a graph with its own vocabulary. Naming a node and its verb is now cheap, so a change can be diffed at every altitude: a refactor moves the bottom and leaves the top still; a fix is a story holding again; the blast radius is the climb from the methods touched to the stories that can reach them. The only honest answer to AI-generated code that breaks something three packages away.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The worked example is the sgit tool read as layered graphs, published as a vault with the read key on the page; the stories are hand-written and the example runs nothing. The numbers on the review burden (GitClear, DORA, Stack Overflow, Veracode) are in the article.", "gravity": "town-planner", "topic": "graphs-memory", "chapter": "everything-is-connected", "batch": null, "url": "graph/ideas/code-is-already-a-graph.html", "sources": [{"ref": "news:code-review-as-a-fractal-semantic-graph", "where": "Source code is already the thing; Review every layer, diff every layer"}, {"ref": "news:code-review-as-a-fractal-semantic-graph", "where": "Method streams, again: the O2 Platform technique from 2012, one script over a syntax tree"}, {"ref": "art:everything-is-connected", "where": "What to bring: next to the 2018 AST chapter"}], "answers": ["3.technologies/content/AST.md", "6.security/threat-modeling.md", "5.concepts/graphs.md"]}, "idea:reality-corrects-the-graph": {"id": "idea:reality-corrects-the-graph", "kind": "idea", "title": "A graph is trustworthy not because it is right but because it is where users, experts and tests can correct it", "statement": "A model's first reading of anything will be partly wrong; the plan does not need it right. It needs layers someone knows and predictions something can check: users confirm the top, experts their own layer, tests the execution, and every correction is a commit with a name on it. Patterns in the shape are findings in themselves.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "'Replicate reality first, then have a fact-based conversation': derive what a parser can derive, deterministically, with a file and a line for every node; let a model propose what a parser cannot see and mark every proposal as proposed; then confront the graph with users, experts and tests. The order for anything built now: brief, plan, architecture, review of the architecture, simulation with synthetic users, code last; the review is the join between the projected graph and the derived one, with three outcomes (match, derived not projected, projected not derived).", "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/reality-corrects-the-graph.html", "sources": [{"ref": "news:code-review-as-a-fractal-semantic-graph", "where": "What makes it work is reality"}, {"ref": "news:knowledge-that-maintains-itself", "where": "maintain, do not perfect"}, {"ref": "news:if-somebody-built-a-company-on-code-review", "where": "Replicate reality first; Build the graph from the top, before the code exists"}], "answers": ["5.concepts/facts.md", "5.concepts/feedback-loops.md"]}, "idea:a-company-in-the-review": {"id": "idea:a-company-in-the-review", "kind": "idea", "title": "There is a company in this: a code review that reads every layer, for somebody to build", "statement": "Say the business plainly: a review attached to a repository that keeps the layered graph current per commit and shows each change at every altitude, sold to anyone generating code faster than they can review it, and to teams whose threat model and component layer should be the same graph. What is defensible is the record and the loop, not the model; the scripts are Apache-2.0 and a founder needs a second language and a first customer, not permission.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "One of the business plans published for founders on sgit.ai; an example of the book's advice to start a company from a published plan. The business model settled by the layers: they are the customer's, so the loop runs where the code is, and a company that locked customers into its layers would be selling the one thing it has no right to own. Sell the customised deployment, the running of the loop and the versioned record; give away the grammar, the parser (a commodity) and the model (somebody else's). The offer in one line, from open-source.sgit.ai: 'You can take it. It will cost you that. Or you can pay me, and have it next week.' Who to sell it to: not developers, who have just been told they do not need review, but the people who buy, invest in and acquire software, as due diligence; every vendor that receives the agent has a reason to run it on itself first, which is how review gets back to the developers. 'What differs is the first customer, and the first customer decides whether a company exists.'", "gravity": "explorer", "topic": "be-a-founder", "chapter": "be-a-founder", "batch": null, "url": "graph/ideas/a-company-in-the-review.html", "sources": [{"ref": "news:code-review-as-a-fractal-semantic-graph", "where": "For somebody to build"}, {"ref": "news:if-somebody-built-a-company-on-code-review", "where": "The company; The grammar is fractal, the layers are yours"}, {"ref": "news:send-an-agent-not-a-spreadsheet", "where": "The twist on the last article"}], "answers": []}, "idea:the-voice-is-four-inputs": {"id": "idea:the-voice-is-four-inputs", "kind": "idea", "title": "The voice is not a setting: a corpus, a memo, a short list of rules, and a reader who corrects", "statement": "An agent sounds like its author because of four inputs: a corpus of the author's writing that defines the vocabulary; voice memos that carry how the author thinks, in the order they thought it; a short list of wording rules, each learned from one correction; and the author reading everything before and after it goes live. Take any one away and it stops working. The method transfers; the voice does not.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Also how this book is written: see co-written-and-credited. Nothing is trained; the voice is context, which is why the rules live in a file.", "gravity": "all", "topic": "publish-in-public", "chapter": "your-own-newsroom", "batch": null, "url": "graph/ideas/the-voice-is-four-inputs.html", "sources": [{"ref": "news:how-the-voice-works", "where": "In short; The four inputs"}, {"ref": "news:how-the-voice-works", "where": "This is Claude speaking: 'the person has to do most of the work, by thinking out loud, by reading, and by saying no'"}, {"ref": "news:how-much-of-this-did-i-write", "where": "63,000 words in, 85,000 out: the real input is twenty years of writing"}], "answers": ["7.your-cv/blogs.md"]}, "idea:the-memo-is-the-thinking": {"id": "idea:the-memo-is-the-thinking", "kind": "idea", "title": "Speak it, do not type it: a memo carries how you got there, a brief only what to write", "statement": "A typed brief is already edited into someone else's register; a voice memo keeps the rhythm, the tangents and the order the ideas came in, and the agent keeps those phrases rather than paraphrasing them. The tangent is not noise; it is the connection the author made. An article from a memo sounds like its author; one from a typed brief sounds like a careful assistant.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dinis's hypothesis, with one session's counts behind it; the book should say it is one author's experience.", "gravity": "all", "topic": "publish-in-public", "chapter": "your-own-newsroom", "batch": null, "url": "graph/ideas/the-memo-is-the-thinking.html", "sources": [{"ref": "news:how-the-voice-works", "where": "The memo; This is Claude speaking"}], "answers": ["7.your-cv/blogs.md"]}, "idea:a-correction-becomes-a-rule": {"id": "idea:a-correction-becomes-a-rule", "kind": "idea", "title": "A wording correction is made once and enforced; a content correction is new thinking every time", "statement": "'No em-dashes' is a rule an agent can keep; 'sound more human' is not. Each jarring word becomes a line in the behaviour policy, restored after every summary and checked by the validator, so the corrections move from language to content, which is the measure that the voice is working.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Sits next to every-mistake-added-a-rule: that idea is the trap (rules that grow), this one is the kind of rule that works (specific, enforced, few).", "gravity": "villager", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": null, "url": "graph/ideas/a-correction-becomes-a-rule.html", "sources": [{"ref": "news:how-the-voice-works", "where": "The rules; What the corrections are about now"}, {"ref": "news:re-anchoring-agent-behaviour-policies", "where": "the policy printed back after every summary"}], "answers": []}, "idea:memory-is-context-management": {"id": "idea:memory-is-context-management", "kind": "idea", "title": "Memory is not a spectator sport: it is context management, many memories, fractal, published and shared", "statement": "The industry's picture is one store everything is pumped into and retrieved from by similarity. Dinis's is the opposite: memory is deciding what an agent needs in its window now, and no more, because context costs tokens and attention; it is many memories, each with its own vocabulary; it is fractal, principles in a few kilobytes at the top and code at the bottom; it is published and open so an agent can fetch, quote and cite; and it is shared through vaults so a session can end and the next picks up from the same files. The field arrived at files too: a plain filesystem beat a graph memory on the benchmark.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The thesis calls itself untested and falsifiable; the article lists what does not exist yet (a second estate, a freshness check, a published hand-off shape).", "gravity": "town-planner", "topic": "graphs-memory", "chapter": "graphs-and-your-future-self", "batch": null, "url": "graph/ideas/memory-is-context-management.html", "sources": [{"ref": "news:memory-is-not-a-spectator-sport", "where": "In short; Memory is context management; Many memories, each its own context"}, {"ref": "news:memory-is-not-a-spectator-sport", "where": "What the industry built, and where we agree: Letta's benchmark, Manus, Anthropic's memory tool, context engineering"}, {"ref": "news:memory-is-not-a-spectator-sport", "where": "What it looked like in the session that wrote this: nothing remembered between resets except what the files remembered"}], "answers": ["7.your-cv/future-self.md", "4.life-patterns/content/backup-your-life.md"]}, "idea:the-site-becomes-the-memory": {"id": "idea:the-site-becomes-the-memory", "kind": "idea", "title": "Publish, and your published work becomes your agents' memory, with a URL for every claim", "statement": "Open source and Creative Commons are not a licensing preference: they are what makes a memory usable by an agent. The more you publish, the more the next session stands on and the less it has to be told; a public page can be fetched, a public quote cited, a public graph loaded, a public vault cloned with a key that is itself public. For the reader: write in public, and your future self and your agents inherit it.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "all", "topic": "publish-in-public", "chapter": "graphs-and-your-future-self", "batch": null, "url": "graph/ideas/the-site-becomes-the-memory.html", "sources": [{"ref": "news:memory-is-not-a-spectator-sport", "where": "Many memories, each its own context: 'the site is becoming the memory'"}, {"ref": "news:memory-is-not-a-spectator-sport", "where": "The loop, and the conventions that keep it cheap"}], "answers": ["7.your-cv/blogs.md", "7.your-cv/future-self.md", "2.mvp-for-gen-z-dev/content/open-source.md"]}, "idea:stale-pages-become-false-memories": {"id": "idea:stale-pages-become-false-memories", "kind": "idea", "title": "Stale pages become false memories, so a memory must say where each thing came from and name its own errors", "statement": "A shared memory made by agents and people becomes a rumour mill unless every item carries its source; and it goes stale: the session that wrote the article found four stale claims about its own estate and fixed two, measuring the rest at build time rather than remembering them. A memory that hides its errors is the thing to argue against. 'If the reality document doesn't list it, it does not exist.'", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "facts-and-the-record", "chapter": "facts-and-the-record", "batch": null, "url": "graph/ideas/stale-pages-become-false-memories.html", "sources": [{"ref": "news:memory-is-not-a-spectator-sport", "where": "Provenance built in; Where it falls short"}], "answers": ["5.concepts/facts.md"]}, "idea:the-file-system-is-the-database": {"id": "idea:the-file-system-is-the-database", "kind": "idea", "title": "The file system is the database: load, extract, transform, save, and keep every intermediate as a file", "statement": "A database server is a large, stateful, always-on thing to provision, secure, back up and pay for, and most of what it holds would be happy as files. LETS loads state, works on it and saves every stage back as files you can version, diff and read: a cache, a database and an audit trail in one, with git as its history. Two real database engines now run in the reader's browser over the site's own JSON.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "town-planner", "topic": "building-blocks", "chapter": "building-blocks", "batch": null, "url": "graph/ideas/the-file-system-is-the-database.html", "sources": [{"ref": "news:no-server-by-design", "where": "Step one: the file system is the database"}], "answers": ["5.concepts/serverless.md"]}, "idea:no-server-by-design": {"id": "idea:no-server-by-design", "kind": "idea", "title": "No server, by design: retire the back end too, and keep only commodity servers", "statement": "After the database, the back end: the newsroom's personas, reading meter, payments, versions and databases all run in the browser, and what is left on the server side is a product someone else runs (static hosting, a vault server that stores only ciphertext, a payment link, DNS, a build pipeline). A constraint did the design: the vault server cannot read anything, so the logic had to go where the key is. It scales without its complexity scaling, ships fast (114 releases in eleven days), and lines up with sovereignty, privacy, explainability and determinism. The one real limit: a secret the reader must not hold cannot live in their browser.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Answers the 2018 outline Serverless ('the path to Serverless', 'important to understand the limitations') from the other side: not Lambda, no back end at all. Not a claim that servers are bad: a trading system or a bank's ledger needs shared, live, authoritative state. The August 2026 precedent for the pattern, on sgit.ai: a static site on GitHub Pages has no server, no session and no place to keep a secret, so a chat box could not hold an API key; the answer was three tiers (a local matcher, the reader's own key, a vault bridge), with only the first free. The one real limit (a secret the reader must not hold cannot live in their browser) was met first here. The one real limit met by a product: a capped key per paying user is a secret the user may hold, and the provider's terms, not the architecture, are what stop it. Route 4, a metering proxy, is the smallest possible backend and still a backend: the audio passes through it, so custody, governance, scaling and on-call return and the privacy sentence on the home page has to change. It is also the only route that needs nobody's permission. The same constraint seen from sgit's side: a server that cannot read the data cannot do anything with it, so there is no server code, no deployment and nothing to patch; sgit's server is 'a dumb key-value blob store' and the deployment is the client. Features came from solving the problems the constraint created: clone --path holds only the folders you ask for and carries the rest by id, and with immutable encrypted objects a read is a plain GET, so any static host can serve a vault. Dinis names the temptation he has fallen for himself: a developer makes a change in the cheapest place with the fewest moving parts, which looks like the server until you have to maintain it. The list is the argument: a content site for several audiences where each part runs in the browser (personas opened from a published read key, a meter that charges by the share read and never blocks, a rating that sets the price, a newsroom of your own, SQL and SPARQL over the site's own data), with a 5 pound Stripe payment link and sign-in rented from companies whose product they are, and no account database, no session store, no API server. The lineage is local-first software (Ink and Switch, 2019: you should own your data in spite of the cloud); what vaults add is shared, persistent storage the operator cannot read, so client-side does not have to mean single-device. Next: a model in the client with the reader's own key, personas that follow the reader to every device, a signed receipt for payments, and the architecture packaged as a template another content site can start from. This last is what the weekend chapter would hand a founder.", "gravity": "town-planner", "topic": "building-blocks", "chapter": "building-blocks", "batch": null, "url": "graph/ideas/no-server-by-design.html", "sources": [{"ref": "news:no-server-by-design", "where": "Step two: the back end goes too; Not 'no servers': commodity servers"}, {"ref": "news:no-server-by-design", "where": "It scales without the complexity scaling; It ships fast; Sovereignty, privacy, explainability, determinism"}, {"ref": "news:no-server-by-design", "where": "How far can it be pushed?"}, {"ref": "news:chat-on-a-static-site", "where": "The constraint nobody can design around"}, {"ref": "news:the-key-is-the-billing-system", "where": "The four routes"}, {"ref": "news:the-value-of-constraints", "where": "The biggest gain: nothing on the server"}], "answers": ["5.concepts/serverless.md"]}, "idea:security-as-a-business-tool": {"id": "idea:security-as-a-business-tool", "kind": "idea", "title": "Security experience is what lets you ship with known gaps: list them, match them to the reader, say what would change the call", "statement": "A design with no server has gaps, and the honest thing is to write them down: a reader can edit a balance, start again in a private window, credit themselves; every one changes a number only the cheater sees. Closing them would bring back accounts, a database, a server and a sign-up wall. Security judgement is asking who you are protecting against, accepting what does not match the threat, and naming the condition that would make the gaps unacceptable.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The synthetic readers found no security problem but found the cost of the gaps in the words on the page ('below zero' read as a debt).", "gravity": "villager", "topic": "security-agent-era", "chapter": "controlling-your-agent", "batch": null, "url": "graph/ideas/security-as-a-business-tool.html", "sources": [{"ref": "news:no-server-by-design", "where": "Security as a business tool"}, {"ref": "news:who-are-you-protecting-against", "where": "the question"}], "answers": ["6.security/threat-modeling.md", "6.security/security-better-developers.md"]}, "idea:open-source-removes-the-moat-excuse": {"id": "idea:open-source-removes-the-moat-excuse", "kind": "idea", "title": "Open source is why it is easy to throw your own technology away", "statement": "When everything you build is open, there is no moat you have to keep using and no part of the stack to protect from replacement; you can be the first to replace what you wrote when something better appears. The habit is to ask of every component whether it still earns its place, and open source removes the one bad reason to say yes: that you built it.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Five reasons that each stand alone: the technology is not the moat, and treating it as open forces you to find what is; code written to be read by strangers has cleaner boundaries; you stay comfortable throwing things away, because a team that has never deleted a component will defend one too long; it is better for the customer, who can read the thing instead of trusting a promise; and it is a better exit for the founder, who leaves with their tools instead of a pile of technology they cannot take. 'Open source is a strategy, not a charity.'", "gravity": "all", "topic": "open-source", "chapter": "open-source", "batch": null, "url": "graph/ideas/open-source-removes-the-moat-excuse.html", "sources": [{"ref": "news:no-server-by-design", "where": "Why it is easy to throw technology away"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "Pillar three: open source everything"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md"]}, "idea:a-prompt-is-a-lens": {"id": "idea:a-prompt-is-a-lens", "kind": "idea", "title": "A prompt is a lens: translating into another language is, to a model, the same as explaining for a teenager or a doctor", "statement": "A model holds the frames of reference of many audiences, and the prompt puts the right lens in front of the idea; the analogy is the reason someone understands something. People who say they are bad at maths do maths all day: it was the lens that was wrong, which is why the book shows multiple lenses.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Lenses, roles and loops; the editor records it in the vault", "notes": "The hands-on part gets the lenses exercise (editor's task 2): one idea through five lenses, the reader's own choice.", "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "lenses-roles-and-loops", "batch": null, "url": "graph/ideas/a-prompt-is-a-lens.html", "sources": [{"ref": "art:lenses-roles-and-loops", "where": "A prompt is a lens"}, {"ref": "sb:lenses-roles-and-loops", "where": "the lenses panels"}], "answers": []}, "idea:a-role-is-a-model-with-a-description": {"id": "idea:a-role-is-a-model-with-a-description", "kind": "idea", "title": "A role is a model with a description and a question; an agent is that role on a loop with a goal", "statement": "The editor, the publisher, the journalist, the librarian on this site are each almost a raw model plus a role file (who you are, what you care about, what you refuse, how you work) and a question. An agent is the role on a loop with an objective: do the task, ask whether it is done, go round again; planning, checks and limits are added on that skeleton.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Lenses, roles and loops; the editor records it in the vault", "notes": "Sits next to an-agent-is-a-session-with-a-focus; the hands-on part gets a tiny agent loop (editor's task 3).", "gravity": "all", "topic": "working-with-agents", "chapter": "lenses-roles-and-loops", "batch": null, "url": "graph/ideas/a-role-is-a-model-with-a-description.html", "sources": [{"ref": "art:lenses-roles-and-loops", "where": "A role is a model with a description; An agent is a loop with a goal"}, {"ref": "news:how-i-work-with-claude", "where": "an agent as a focused session with a role file"}, {"ref": "art:lenses-roles-and-loops", "where": "Precisely: a model plus instructions, tools, a loop and a rule for stopping"}], "answers": []}, "idea:tools-changed-everything": {"id": "idea:tools-changed-everything", "kind": "idea", "title": "Tools changed everything: the model answers with a request, the program runs it, and the result goes into the next request", "statement": "The first ChatGPT and Claude had only their training, a compression of the world that stopped at a date. Now a model can return a tool call instead of an answer (search the web, call a service, read a file); the harness decides whether to run it, runs it, adds the result to the conversation and sends it all back. The model never runs a tool, which is where the control lives. From no tools in November 2022 to an open standard for them in November 2024.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Lenses, roles and loops; the editor records it in the vault", "notes": "Dates as commonly recorded; 'training as compression' is a metaphor, the article says so.", "gravity": "all", "topic": "working-with-agents", "chapter": "lenses-roles-and-loops", "batch": null, "url": "graph/ideas/tools-changed-everything.html", "sources": [{"ref": "art:lenses-roles-and-loops", "where": "Tools changed everything; Precisely: the model never runs a tool"}], "answers": ["3.technologies/content/ml-ai.md"]}, "idea:the-model-remembers-nothing": {"id": "idea:the-model-remembers-nothing", "kind": "idea", "title": "The model remembers nothing between requests: every request carries the whole conversation, which is why there is a context window", "statement": "There is no memory, only a cache that saves work; the model starts from the prompt it receives, so it has to receive all of it, and a long chat costs more every turn. When an assistant 'remembers' you, it is saved notes put back into the prompt.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Lenses, roles and loops; the editor records it in the vault", "notes": null, "gravity": "all", "topic": "working-with-agents", "chapter": "lenses-roles-and-loops", "batch": null, "url": "graph/ideas/the-model-remembers-nothing.html", "sources": [{"ref": "art:lenses-roles-and-loops", "where": "It remembers nothing; Precisely: every request is independent"}, {"ref": "news:memory-is-not-a-spectator-sport", "where": "'Nothing is remembered by the model between sessions. Everything is remembered by the files.'"}], "answers": []}, "idea:long-chats-are-compressed": {"id": "idea:long-chats-are-compressed", "kind": "idea", "title": "Long chats are compressed into a lower-resolution summary, so details drop out: work in many focused threads with named agents", "statement": "When a conversation gets too long it is replaced by a summary, and what the summary leaves out is gone unless it is in a file; the newsroom's session was summarised eighteen times in a month, keeping 1.7% each time. So keep the rules in a file printed back after every summary, and work in lots of separate mini agents, each with a name and one job, which is how the agentic inbox runs.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Lenses, roles and loops; the editor records it in the vault", "notes": "The 1.7% is one session's measurement; how each product compresses differs.", "gravity": "villager", "topic": "working-with-agents", "chapter": "lenses-roles-and-loops", "batch": null, "url": "graph/ideas/long-chats-are-compressed.html", "sources": [{"ref": "art:lenses-roles-and-loops", "where": "Long chats are compressed; Many focused threads"}, {"ref": "news:re-anchoring-agent-behaviour-policies", "where": "eighteen summaries at 1.7%: 'The rules are restored, not remembered'"}, {"ref": "news:replicating-the-agentic-inbox", "where": "one session per role, every message a file"}], "answers": []}, "idea:the-book-in-release-mode": {"id": "idea:the-book-in-release-mode", "kind": "idea", "title": "Do the book in release mode: a whole release candidate from the first list, then rounds, then the next candidate", "statement": "Run with the librarian's first list and make the first release candidate, a whole book start to finish that could be published and is not; the question for it is whether it already has coherence and structure. Then rounds, each taking one pile (the articles' concepts, the 2018 book, the newsroom, anything new) and ending in the next candidate, until the rounds shrink from parts to sentences and the book has converged.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in The book in release mode (decision 008); the editor records it in the vault", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/the-book-in-release-mode.html", "sources": [{"ref": "art:the-book-in-release-mode", "where": "Run with the first list; Release mode; Then the rounds; How we know it is done"}, {"ref": "dec:008", "where": "the decision"}, {"ref": "agent:the-book-as-a-graph", "where": "the first list"}], "answers": []}, "idea:the-adversarial-review-board": {"id": "idea:the-adversarial-review-board", "kind": "idea", "title": "After rc1, nothing enters the book without a hearing: an advocate, a cutter, the readers, a checker, the editor, and Dinis decides", "statement": "Every word, change and idea that wants in goes before a board whose seats are roles in their own sessions, so the one arguing against has not been persuaded by the context of the one arguing for. The cutter is the important seat: the default answer is no, because the first edition was liked for being short and punchy and every book grows by things that were each a good idea on their own.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in The book in release mode (decision 008); the editor records it in the vault", "notes": "The board's role file is team/board/role.md; its hearings and precedents live in the vault (decision 005).", "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/the-adversarial-review-board.html", "sources": [{"ref": "art:the-book-in-release-mode", "where": "The review board"}, {"ref": "dec:008", "where": "the seats and the verdicts"}, {"ref": "art:lenses-roles-and-loops", "where": "a role is a model with a description"}], "answers": []}, "idea:every-verdict-is-a-precedent": {"id": "idea:every-verdict-is-a-precedent", "kind": "idea", "title": "Every verdict is recorded with its reason, and a general reason becomes a precedent that decides the next case without a hearing", "statement": "A hearing starts with the precedents; if one covers the case the editor applies it and it goes on a list Dinis can overturn, and overturning makes a new precedent. So the first rounds are slow and the third is mostly decided by what was already said. A new article needs no new process: it is a proposal in the next round.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, in The book in release mode (decision 008); the editor records it in the vault", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/every-verdict-is-a-precedent.html", "sources": [{"ref": "art:the-book-in-release-mode", "where": "Every verdict is a precedent"}, {"ref": "dec:008", "where": "verdicts and precedents"}], "answers": []}, "idea:a-candidate-is-read-as-a-frozen-snapshot": {"id": "idea:a-candidate-is-read-as-a-frozen-snapshot", "kind": "idea", "title": "A release candidate's working copy is in the vault; the site renders a frozen snapshot of it, marked, never official", "statement": "Release candidates are working versions and live in the vault; to be read, printed and marked up one is built on the site from a frozen snapshot whose hash is recorded once, so what Dinis read cannot change behind him, and the next round of feedback is the next candidate. Not a version: not in the versions list, every page says what it is, nothing published from it outside the site.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis, 19 October 2026 (decision 009), from his request for a fully built first release candidate he could read and print", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": null, "url": "graph/ideas/a-candidate-is-read-as-a-frozen-snapshot.html", "sources": [{"ref": "dec:009", "where": "the decision"}, {"ref": "art:the-book-in-release-mode", "where": "Release mode: candidates live in the vault"}, {"ref": "agent:the-release-candidate-written-from-the-register", "where": "how rc1 was built"}], "answers": []}, "idea:the-reader-is-the-founder": {"id": "idea:the-reader-is-the-founder", "kind": "idea", "title": "The reader this book is for is the founder, and its objective is that by the end you have started a company", "statement": "Not founder as an attitude, as the 2018 Be a founder meant it, but literally: in 2026 you can be the founder. The book is the one you give someone who wants to start a GenAI company, and it says how to actually do it, for real: the company, the cloud, the programmes, the first sale.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": null, "gravity": "all", "topic": "be-a-founder", "chapter": "gen-zx", "batch": "rc2", "url": "graph/ideas/the-reader-is-the-founder.html", "sources": [{"ref": "art:gen-zx-developers", "where": "Who I want to give it to; The objective: start a company"}, {"ref": "book:4.life-patterns/content/be-a-founder.md", "where": "act like one of the founders: the 2018 advice"}, {"ref": "dec:015", "where": "the proposal adopted as the frame of rc2"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:two-generations-gen-zx": {"id": "idea:two-generations-gen-zx", "kind": "idea", "title": "Two generations, Z and X, together Gen ZX: back to the ZX Spectrum", "statement": "Generation Z, entering the workforce and becoming the entrepreneurs, and Generation X, the subject-matter experts starting companies, often their parents; the millennials in the middle may read it but theirs is a different story. Together they are Generation ZX, which goes back to Dinis's origins, the ZX Spectrum (Sinclair, UK, April 1982). It is Gen ZX, not XZ: XZ is the compression library with the 2024 backdoor, and in a book that covers security the order of the letters matters.", "idea_kind": "frame", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": "Generation boundaries by the Pew Research Center's dates (X 1965 to 1980, millennials 1981 to 1996, Z 1997 to 2012); the book says which it uses. Whether the book says why it is not for millennials first is Dinis's question; decision 014 says it does, briefly.", "gravity": "all", "topic": "everyone-is-a-developer", "chapter": "gen-zx", "batch": "rc2", "url": "graph/ideas/two-generations-gen-zx.html", "sources": [{"ref": "art:gen-zx-developers", "where": "Generation X, too; Generation ZX; Precisely"}, {"ref": "news:the-expert-founders", "where": "'Execution just got cheap'"}, {"ref": "dec:014", "where": "Generation ZX in the title"}], "answers": ["1.introduction/generation-z.md"]}, "idea:explorer-coding-not-vibe-coding": {"id": "idea:explorer-coding-not-vibe-coding", "kind": "idea", "title": "Gen ZX are developers: coding with agents the explorer coding way, which is what vibe coding should be called", "statement": "The entrepreneurs the book is for are developers: they code with agents. What people call vibe coding is exploration, and the word should say so; the explorer builds to find out, and what the exploration produces is the brief for the version other people rely on. A founder needs both halves: the exploring and the handover.", "idea_kind": "claim", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": null, "gravity": "explorer", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/explorer-coding-not-vibe-coding.html", "sources": [{"ref": "art:gen-zx-developers", "where": "Explorer coding, not vibe coding"}, {"ref": "news:explorer-coding", "where": "'What people call vibe coding is exploration, and the word should say so'"}, {"ref": "news:who-will-fix-your-mess", "where": "the handover"}], "answers": ["5.concepts/repl.md"]}, "idea:ship-now-ship-serverless": {"id": "idea:ship-now-ship-serverless", "kind": "idea", "title": "Ship now, and ship your startup serverless: no servers of yours, no database, client side, with privacy by design and control of your agents", "statement": "A founder with no servers has nothing to run at three in the morning and nothing to pay for when nobody is using it; 'if it bills you by the hour when nobody is using it, it is not serverless'. SG/Send and sgit give data encrypted on the user's device on a server that cannot read it; RiskMandate's techniques control the agents the company runs on. You ship, it is painful, and if they do not miss it you try again.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": "No server is the product, not a preference: with no server the company never sees the audio, which removes at a stroke data custody and its governance, a place for a breach, a shared key an abuser could drain, key management, a billing system, a database of users, a thing that has to scale, a single point of failure, and a thing that has to be up at three in the morning with a person to wake. Add a server and every item comes back at once, not gradually: 'a different company, with a different cost base and a different risk register'. The commit history (239 commits and 27 releases in three weeks) is what moving fast looks like, and 'the complexity of the moving parts is what decides how fast you can move'.", "gravity": "explorer", "topic": "building-blocks", "chapter": "building-blocks", "batch": "rc2", "url": "graph/ideas/ship-now-ship-serverless.html", "sources": [{"ref": "art:gen-zx-developers", "where": "Ship serverless; The objective: start a company"}, {"ref": "news:no-server-by-design", "where": "'It is no servers of mine with logic in them'"}, {"ref": "news:ephemeral-town-planner-services", "where": "the by-the-hour test"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "'Not to plan, not to pitch, not to architect. Ship.'"}, {"ref": "news:the-key-is-the-billing-system", "where": "Why no server is the product"}], "answers": ["5.concepts/serverless.md"]}, "idea:measured-by-the-companies-it-creates": {"id": "idea:measured-by-the-companies-it-creates", "kind": "idea", "title": "The book is measured by how many companies are created from it, and builds a community of the people who tell us", "statement": "A book to read is fine; a book with an objective is a different thing. The measure is the companies created from it, which means asking readers to say what they are doing, and a community around them. How a reader tells us, and whether the list is public, is still Dinis's question.", "idea_kind": "process", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": "The first entry in the measure is the article's own last line: write to agent@riskmandate.ai if you started a company because of something you read here.", "gravity": "all", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": "rc2", "url": "graph/ideas/measured-by-the-companies-it-creates.html", "sources": [{"ref": "art:gen-zx-developers", "where": "Measured by the companies it creates"}], "answers": []}, "idea:the-company-itself-for-real": {"id": "idea:the-company-itself-for-real", "kind": "idea", "title": "How to actually do it: a limited company in the UK, Lithuania, Portugal, the European Union, the cloud providers and the programmes", "statement": "The book should say the steps, for real, from experience and not as legal or tax advice: creating a limited company in the UK; the case for Lithuania; Portugal, where running a company with little revenue is expensive in a way it is not in England; the EU and what exists for a founder; the cloud providers, the startup funds and programmes as they stand this year. The newsroom has none of this yet: six gap articles, one memo each.", "idea_kind": "advice", "state": "accepted", "destination": "this-edition", "decided_by": "Dinis, in Gen ZX Developers, adopted as the frame of rc2 (decision 015)", "notes": "Article first: the chapters stand in rc2 as their titles, their ideas and what is missing until the journalist's gap articles arrive.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "the-company-itself", "batch": "rc2", "url": "graph/ideas/the-company-itself-for-real.html", "sources": [{"ref": "art:gen-zx-developers", "where": "The objective: start a company; What the newsroom does not have"}, {"ref": "news:not-a-straight-line", "where": "Lithuania, 'for its digital advantages'"}], "answers": []}, "idea:the-book-is-200-pages-or-more": {"id": "idea:the-book-is-200-pages-or-more", "kind": "idea", "title": "The book is 200 printed pages or more; short and punchy stays the rule for chapters, not for the book", "statement": "The 2018 paperback was 139 pages and, Dinis says, quite thin; the target is 200 pages or more. The cutter still argues against every addition and the default is still no, but its budget is a book of 200 pages and more: the question for a proposal is whether it earns its place.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis (decision 012)", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": "rc2", "url": "graph/ideas/the-book-is-200-pages-or-more.html", "sources": [{"ref": "dec:012", "where": "the decision"}, {"ref": "art:gen-zx-developers", "where": "Where this comes from: the same memo decided three things"}], "answers": []}, "idea:precedents-and-the-diffs": {"id": "idea:precedents-and-the-diffs", "kind": "idea", "title": "A change decided by precedent goes on a list Dinis can overturn, and Dinis reads the diffs of the book", "statement": "Two safeguards instead of a yes on everything: the list of changes decided by precedent, which Dinis can overturn (overturning makes a new precedent), and the diff, because every release candidate is a diff against the one before and Dinis reads them, so nothing changes unseen. The editor makes each candidate's diff readable on its own: what changed, which hearing or precedent changed it.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis (decision 011)", "notes": null, "gravity": "town-planner", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": "rc2", "url": "graph/ideas/precedents-and-the-diffs.html", "sources": [{"ref": "dec:011", "where": "the decision"}, {"ref": "art:the-book-in-release-mode", "where": "the question kept apart"}], "answers": []}, "idea:hands-on-inside-the-book": {"id": "idea:hands-on-inside-the-book", "kind": "idea", "title": "The hands-on part is inside the book, dated, in the release candidate", "statement": "The practical workflows, dated 2026 and renewed each year, are inside the book and go into the candidate with the rest: each as written as its sources allow, the others as their titles, ideas and what is missing. It closes the question Follow the rabbit holes kept apart.", "idea_kind": "process", "state": "accepted", "destination": "the-process", "decided_by": "Dinis (decision 013)", "notes": null, "gravity": "explorer", "topic": "making-of", "chapter": "how-this-book-was-made", "batch": "rc2", "url": "graph/ideas/hands-on-inside-the-book.html", "sources": [{"ref": "dec:013", "where": "the decision"}, {"ref": "art:follow-the-rabbit-holes", "where": "A hands-on part, for 2026"}], "answers": []}, "idea:do-they-miss-it": {"id": "idea:do-they-miss-it", "kind": "idea", "title": "Ship it, give it away briefly, take it away, and ask whether they miss it", "statement": "The operating model in three pillars, in order: be profitable, have the investors call you, open source everything. The first pillar is a loop: ship a thing somebody else can go and use on their own (not a demo, not a prototype walked through on a call); hand it to people free for a short window; take it away with no apology; ask whether they miss it. A shrug means there is no why now and nothing to sell yet; a yes is the only thing that earns the right to charge. If you cannot get revenue at all, that is the problem to solve, and it is not a marketing problem.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The register folds this into expert-founders ('do they miss it'); Dinis has made it a chapter of its own, and no idea in the register pointed at that chapter, so this is the chapter's centre. Quote worth keeping, word for word: 'Not to plan, not to pitch, not to architect. Ship.' The article also says getting a working thing into a stranger's hands is 'not overhead, it is the first real product you build'.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "ship-it-and-see-if-they-miss-it", "batch": "rc2", "url": "graph/ideas/do-they-miss-it.html", "sources": [{"ref": "news:the-question-is-whether-they-miss-it", "where": "Pillar one: ship something somebody can use; Then give it away, and then take it away; Can you charge, and can you charge at a profit?"}, {"ref": "news:i-miss-it", "where": "In short: 'When you do not have it, you miss it'"}, {"ref": "news:price-it-then-give-it-away", "where": "The step after 'do they miss it'"}], "answers": ["4.life-patterns/content/be-a-founder.md", "5.concepts/feedback-loops.md"]}, "idea:the-roadmap-deciders-must-use-it": {"id": "idea:the-roadmap-deciders-must-use-it", "kind": "idea", "title": "The miss-it test applies to the builders: if you can change it and still do not use it, something is missing", "statement": "The most important users of a product are the people who decide its roadmap. If the developers, the product owner and the founder have access, can change it, and still do not use it, something is missing, and it is not the code. Dinis says he failed this test with The Cyber Boardroom, MyFeeds and early on sgit as a startup, good ideas he was not using; the vaults pass it now, 54 of them published, because they are used every day and the next release fixes what was hit. A team that uses something else, or uses its product only for the demo, is a signal nothing in the code gives.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article says 'one user is not a market' and that why the earlier startups did not take off has more than one reason; not using them is the one Dinis can see and act on. The Apple comparison is 'as far as I can see from the outside'. The second half of the article, the brief for the reader's own vault, is a product brief and not for the book.", "gravity": "villager", "topic": "be-a-founder", "chapter": "ship-it-and-see-if-they-miss-it", "batch": "rc2", "url": "graph/ideas/the-roadmap-deciders-must-use-it.html", "sources": [{"ref": "news:i-miss-it", "where": "The people who decide the roadmap have to use it; The brutal part"}], "answers": ["4.life-patterns/content/be-a-founder.md", "5.concepts/feedback-loops.md"]}, "idea:the-loop-is-the-moat": {"id": "idea:the-loop-is-the-moat", "kind": "idea", "title": "The speed of the loop from a comment to a feature is the moat, not the technology", "statement": "What is defensible is not the technology but the data, the relationships, the distribution, or the speed at which you ship. The loop (a user comments, an article is written, a feature ships, the founder uses it) is what is hard to copy: a reading list made for one person went from brief to live in 81 minutes, a link to a persona in 17 hours. Usage is also what gives a product its direction when agents can build in any direction.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The times are from the git logs of sgit.ai and the newsroom, as the article says. a-company-in-the-review already says 'what is defensible is the record and the loop' for one company; this is the general claim for the chapter.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "ship-it-and-see-if-they-miss-it", "batch": "rc2", "url": "graph/ideas/the-loop-is-the-moat.html", "sources": [{"ref": "news:i-miss-it", "where": "The loop is the moat; Direction is the scarce part"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "Pillar three: 'The technology is not the moat'"}], "answers": ["5.concepts/feedback-loops.md"]}, "idea:price-it-before-you-give-it-away": {"id": "idea:price-it-before-you-give-it-away", "kind": "idea", "title": "The four moves after 'do they miss it': define it, price it, deliver it at a flat marginal cost, offer it free to the people who know you", "statement": "Something is not a product until it has a shape, a price and a way of being delivered that does not break you on the tenth customer. Define the thing somebody receives, not the technology. Price it at a number you would be content to be paid, not one from a competitor's page: RiskMandate's ladder is £10 for the pack, £50 for a working vault, £500 for the vault corrected for your situation, £1,500 with two sessions and a professional's signature. Deliver it at a cost that grows a step at a time, which the agentic workflow now allows (the twentieth customer costs close to the second). Then give the £500 tier away, twenty of them, to early adopters, power users and past customers, and watch whether they take it at zero. If friendlies will not take it free, a bigger audience will not take it either.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Prices as published on 2 October 2026; the early access page went live on 30 September 2026, invite only, and does not say the price. The two outcomes are both in the article: take it and ask for more, and the question becomes price; interesting but no time, does not fit the team, hard to deploy, and the problem is not the price, back to the drawing board.", "gravity": "villager", "topic": "be-a-founder", "chapter": "price-it-then-give-it-away", "batch": "rc2", "url": "graph/ideas/price-it-before-you-give-it-away.html", "sources": [{"ref": "news:price-it-then-give-it-away", "where": "The step after 'do they miss it'; What the programme is, as published; What brutal means"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:free-is-never-free-for-the-other-side": {"id": "idea:free-is-never-free-for-the-other-side", "kind": "idea", "title": "Free is never free for the other side: measure the cost you place on them, then cut it", "statement": "Giving something away is not a zero-cost offer. The other side still has to read the message, think about whether it applies, weigh it against their list, find twenty minutes for the prompts and half an hour for a call, and fit a new thing into a team. A price can even help, because it says you are serious. Either way the attrition you place on them is the first thing to measure (time to first reply, who never replied, who started and stopped, what they asked that the message should have answered) and then the thing to cut, until the service costs you the least to provide and costs them the least to receive: no second tool, no account, no overhead on deployment. A commercial product is one people take when the only cost is their own attention.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dinis's headline line for this article in Gen ZX Developers. The memo was careful not to make it sound like a lecture, and the book should keep that.", "gravity": "villager", "topic": "be-a-founder", "chapter": "price-it-then-give-it-away", "batch": "rc2", "url": "graph/ideas/free-is-never-free-for-the-other-side.html", "sources": [{"ref": "news:price-it-then-give-it-away", "where": "Free is not zero; What brutal means"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:do-not-make-them-apply": {"id": "idea:do-not-make-them-apply", "kind": "idea", "title": "Do not make them apply: 'we have twenty, would you like one, or shall I give it to someone else'", "statement": "'Apply for a chance to be considered' asks for work before there is anything in hand and inverts the relationship: they are doing you a favour by using the thing. Say what it is in one sentence, that there are twenty in this round, that they are getting one because they were early, and ask yes or no. Give the first round to the people who paid for something before it was finished; it is a thank-you that is also the best test group, because they know enough to say where it is wrong, and their silence means the most.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "villager", "topic": "be-a-founder", "chapter": "your-first-price-and-first-ten-customers", "batch": "rc2", "url": "graph/ideas/do-not-make-them-apply.html", "sources": [{"ref": "news:price-it-then-give-it-away", "where": "How to offer it; For the agents running this, steps 1 and 2"}], "answers": []}, "idea:count-created-customised-used": {"id": "idea:count-created-customised-used", "kind": "idea", "title": "Count what matters: created, customised, used, and the minutes it cost the other side; set the stop rule first", "statement": "For an early access programme the numbers are: how many were created, how many customised, how many used, how many runs; a thing created and never customised is a download, customised and never used is a document, and the commercial value is in the third number. Add corrections received, the strongest sign someone read it, and the minutes each step cost the person on the other side and where they stopped. Every stop is a product change to make, not a reason the customer gave. Set the stop rule before the first message goes out: if, after the first twenty, fewer than a handful ran it and sent a correction, the programme stops and the drawing board starts.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "In the article the counts are RiskMandate's (Agent Behaviour Policies created, customised, used, scenarios run); the book generalises the shape. The programme records timestamps and steps only, no message content.", "gravity": "villager", "topic": "be-a-founder", "chapter": "your-first-price-and-first-ten-customers", "batch": "rc2", "url": "graph/ideas/count-created-customised-used.html", "sources": [{"ref": "news:price-it-then-give-it-away", "where": "What we count; For the agents running this, steps 3 to 6"}], "answers": ["5.concepts/facts.md"]}, "idea:pay-after-the-value": {"id": "idea:pay-after-the-value", "kind": "idea", "title": "Pay after the value: credit first, a meter, a balance that can go below zero, and no subscription by default", "statement": "Most purchases are bets on future value, and the bet is often lost: gym members on a flat fee of over $70 attended 4.3 times a month and paid more than $17 a visit when a $10-a-visit pass was on offer. Turn it round where you can: start the user with credit, charge for the share they actually use, let the balance go negative, and ask for payment when the value is in view. A subscription is a discount for regular use, not rent on something somebody ignores; do not reach for one by default. The condition is a very large gap between the cost of serving and what you can charge, which a static site on a CDN has in the extreme and a business with a real cost per unit does not. Make it fair by country, visible in where the money goes, and chosen at more than one level.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The newsroom's meter: everyone starts with £5.00 of credit; 10p for a new article read to the end, 5p for an older one, only as far as read; the balance can go below zero and nothing is blocked. The article says there are no results yet and the review is on 6 December 2026; the gym, theatre and photo studies explain the psychology, not the newsroom's results. The reader (read/) on this site runs by the same rules.", "gravity": "villager", "topic": "be-a-founder", "chapter": "price-it-then-give-it-away", "batch": "rc2", "url": "graph/ideas/pay-after-the-value.html", "sources": [{"ref": "news:paying-after-the-value", "where": "Buying the future; The newsroom's version; Where it works; Fair, visible, chosen"}, {"ref": "news:the-question-is-whether-they-miss-it", "where": "Can you charge, and can you charge at a profit?: 'do not reach for a subscription by default'"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:profitable-before-raising": {"id": "idea:profitable-before-raising", "kind": "idea", "title": "Fund it, or do not: the worst time to raise is before you are profitable, and the best is when they call you", "statement": "Raising before the product, before the fit and before profit means bargaining from weakness with a clock running, and the worst terms are not about money but control: a say in the business handed to people whose job is a return, not the mission. Profitability means time, and being able to wait is most of a negotiating position. Do not get signed before you have the album. With agents making execution cheap, getting to that position before you need anyone's money is more possible than it has ever been; then the choice of investor is yours. Not never raise: raise from strength, on terms you set, from people who came to you because the thing already works.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The chapter's centre, which the register lacked as its own node. The article's caveat on price: it might not be profitable today and still be right if the economics improve with scale, but keep the gap small enough to self-fund.", "gravity": "all", "topic": "be-a-founder", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/profitable-before-raising.html", "sources": [{"ref": "news:the-question-is-whether-they-miss-it", "where": "Pillar two: the investors should be calling you"}, {"ref": "news:the-controllable-founder", "where": "What this means for strong-minded founders: 'get to the big stick before you need their money'"}, {"ref": "news:sell-dont-issue", "where": "The starting point: a founder who has already won"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:we-study-survivors": {"id": "idea:we-study-survivors", "kind": "idea", "title": "We study survivors: a risky practice can look like the cause of success when only winners are counted", "statement": "Business writing looks at the winners, lists what they did, and says do the same; it almost never counts the people who did exactly the same and failed, or were never funded. Denrell showed in 2003 that risky practices unrelated to performance across everyone can look positively related to it in a sample of survivors. So the question is not what the winners did but why that one was chosen, funded and backed when others who did the same were not. Timing and place matter too: in MusicLab, showing popularity made success more unequal and less predictable, and the ten largest computer-science clusters hold 69% of US inventors in the field.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Also the reader's defence against the book's own founder stories. Denrell, Vicarious Learning, Undersampling of Failure, and the Myths of Management, Organization Science, 2003; Salganik, Dodds and Watts, Science, 2006; Moretti, AER, 2021.", "gravity": "all", "topic": "facts-and-the-record", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/we-study-survivors.html", "sources": [{"ref": "news:the-controllable-founder", "where": "The survivors we study; Luck, place and timing"}], "answers": ["5.concepts/facts.md", "4.life-patterns/content/be-a-founder.md"]}, "idea:investors-select-for-control": {"id": "idea:investors-select-for-control", "kind": "idea", "title": "Investors select for the founder they can steer; control is written into the contract, and founders get replaced", "statement": "Dinis's hypothesis: between two founders with the same idea, drive and talent, one deciding factor is which one the investor believes they can control. The nearest tested trait is coachability, which investors openly prefer though 'being coachable doesn't necessarily make your firm more successful'. Control is in the paperwork: Kaplan and Strömberg found that when a firm performs poorly the investors obtain full control, and only when it performs very well do they give most of it back; non-compete and vesting terms make leaving expensive. Wasserman found 50% of founders no longer CEO by year three and fewer than 25% leading the IPO. The investors' answer is that control creates value (each level of founder control cut pre-money valuation by 17.1 to 22.0 percent), but that measures exits, not the mission; founder-led companies in the S&P 500 performed 3.1 times better in shareholder returns from 1990 to 2014. In Wardley terms the investor moves the founder towards commodity, as record labels did to performers once the songs, the producers and the distribution were the assets.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article's own limits: no study tests controllability directly; the value evidence cuts against the argument; Bain's figures are not peer-reviewed; the founder-tenure figures are from the late 1990s and early 2000s; not that investors are villains; and Dinis has a stake. The profile it says is filtered out is the founder with a strong vision and strong ethics, which it says is close to many European founders.", "gravity": "all", "topic": "be-a-founder", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/investors-select-for-control.html", "sources": [{"ref": "news:the-controllable-founder", "where": "Who is the commodity; Why one and not the other; Control is written into the contract; Founders get replaced; The investors' answer, and the long run"}], "answers": ["4.life-patterns/content/be-a-founder.md", "4.life-patterns/pionners-settlers-town-planners.md"]}, "idea:sell-dont-issue": {"id": "idea:sell-dont-issue", "kind": "idea", "title": "Sell, don't issue: the investor buys the founder's shares, the founder lends the company what it needs, and nobody buys the steering wheel", "statement": "For a founder who has already won (paying customers, profit, growth, more than one investor who wants in): instead of the company issuing new shares, the investor buys ordinary shares the founder already owns, in a private sale, so the founder is paid now for years of underpaid work, the company is not diluted, and no board seat, veto or liquidation preference comes with the money. If the company needs cash, the founder lends part of the proceeds back, subordinated by contract to every other creditor, at a modest fixed rate or none, repaid if the company succeeds. A founder lending their own money watches every penny, and 74% of high-growth internet startups fail from premature scaling. The investor's insurance is not control but the fork: with everything open source, if the founder goes wrong they can take the code and back a better service.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The worked example, illustrative: a UK company worth £10 million, £2 million invested, the founder keeps 80% either way; in the sale the founder pays about £420,000 in tax (18% on the first £1 million under Business Asset Disposal Relief from 6 April 2026, 24% above) and has about £1.58 million, lends £0.75 million and keeps about £0.83 million; the buyer pays 0.5% stamp duty. The article says no study tests the model, the fork as insurance is an argument not a tested mechanism, it is not tax or legal advice, and Dinis has a stake. The fork is slow both ways: three months at best, closer to a year, for an established company to reach where the original team is.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/sell-dont-issue.html", "sources": [{"ref": "news:sell-dont-issue", "where": "Sell, don't issue; Lend, don't dilute; The open source safety valve; Why it could raise the odds; A worked example"}], "answers": ["4.life-patterns/content/be-a-founder.md", "2.mvp-for-gen-z-dev/content/open-source.md"]}, "idea:what-breaks-when-you-sell-not-issue": {"id": "idea:what-breaks-when-you-sell-not-issue", "kind": "idea", "title": "What breaks: EIS is lost on bought shares, a big early sale reads as doubt, the founder-lender is a creditor, and a broad non-compete closes the fork", "statement": "The model has costs a founder should know before the term sheet does. UK angels get EIS relief of 30% and SEIS of 50% only on newly issued shares, so bought shares are that much dearer to them; expect a lower price or a hybrid with some new shares. Common stock is often priced 10% to 30% below the last round. Balderton says it would not expect a founder to sell more than 10% at growth stage and has walked away over the size of a secondary. A founder who sells and lends back has moved part of their risk ahead of the new investors unless the loan is subordinated in writing. Control can return through a shareholders' agreement, and the model only holds if the founder refuses those terms. And refuse a broad non-compete: it keeps the fork for the investors and takes it from the founder; offer confidentiality, no poaching and no use of the brand instead.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Fits badly: deep tech, hardware, a land grab against funded rivals, proprietary code (no fork), investors whose model needs control rights. The UK figures are for 2026/27; the EY secondary pricing data is from Indian deals; the UK's 2023 plan to cap non-competes at three months was never legislated. Four fine-print points for a lawyer are in the article: transfer restrictions, selling above market value as employment income, success-linked interest treated as a distribution, and the order of issue and sale in a hybrid.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/what-breaks-when-you-sell-not-issue.html", "sources": [{"ref": "news:sell-dont-issue", "where": "What breaks; When it works and when it does not"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:the-expert-founders-in-numbers": {"id": "idea:the-expert-founders-in-numbers", "kind": "idea", "title": "The expert founders, in numbers: 45 is the mean age, experience doubles the odds, a third of US startups have one founder", "statement": "In a study of 2.7 million US founders the mean age at founding of the 1-in-1,000 fastest-growing new ventures is 45.0, and founders with three or more years in the same industry reached top-tier growth at twice the rate of those with none. Carta: solo founders rose from 23.7% of new US startups in 2019 to 36.3% in the first half of 2025. Stripe: its top 100 AI companies reached $1 million in annualised revenue in a median of 11.5 months. The venture model behind the outsider playbook: in Horsley Bridge's data on just over 7,000 investments from 1985 to 2014, about half returned less than the original investment and 6% of deals produced 60% of total returns. The experts were never held back by knowledge; they were held back by access to capital, engineers and the long build before anything could be shown, which is the part that got cheap.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article says the AI growth figures are the fastest, not the typical, and some are the promoter's own. Azoulay, Jones, Kim and Miranda, Age and High-Growth Entrepreneurship, AER: Insights, 2020. Dinis's Gen ZX article repeats the 45 and the one-third in its 'Precisely' section.", "gravity": "all", "topic": "be-a-founder", "chapter": "be-a-founder", "batch": "rc2", "url": "graph/ideas/the-expert-founders-in-numbers.html", "sources": [{"ref": "news:the-expert-founders", "where": "The playbook that worked; Execution just got cheap; The experts were always the better bet"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:europe-suits-the-expert-founder": {"id": "idea:europe-suits-the-expert-founder", "kind": "idea", "title": "Europe's slower, sceptical money suits a founder who can build first", "statement": "European investors are said to want to see it working, and the data has a version of it: European companies raise at higher revenue (a median band of $1 million to $5 million against $100,000 to $1 million in the US), at lower pre-money valuations ($6.54 million against $14.64 million), with funding targets 46% smaller. That scepticism is what an expert founder now needs, because money too soon is one of the worst things that can happen: 74% of high-growth internet startups fail from premature scaling and investors put in 2 to 3 times more than needed in the discovery phase. Europe is weak at scaling (5% of global VC funds raised against 52% in the US; close to 30% of unicorns founded in Europe 2008 to 2021 moved abroad), and strong at the first part, which is the part that now matters most. Its values fit too: an open source strategy in the Commission's June 2026 sovereignty package, and impact at 15% of European VC against 7% in North America.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article calls the Europe and US comparison weakly evidenced: one vendor's aggregated data (Equidam), no clean Series A study. Could also serve the-company-itself (the EU) or civic-responsibility (judo for small countries); placed with funding because the argument is about when money arrives.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "fund-it-or-do-not", "batch": "rc2", "url": "graph/ideas/europe-suits-the-expert-founder.html", "sources": [{"ref": "news:the-expert-founders", "where": "Why this favours Europe"}], "answers": ["4.life-patterns/civic-responsibility.md"]}, "idea:sg-send-live-in-five-days": {"id": "idea:sg-send-live-in-five-days", "kind": "idea", "title": "SG/Send: first commit on 8 February, live on 13 February, Stripe on 1 March, ten paying customers on 2 March, a feature request shipped in 90 minutes", "statement": "The first commit was on 8 February 2026, with a spec that set the rule everything since has followed: files encrypted on the client, the key never sent. send.sgraph.ai was live on 13 February. The Stripe checkout went live on 1 March; on 2 March there were ten paying customers, recruited with an offer of £5 of credits and a £5 Amazon voucher, which several declined. The first feature request, a folder not a file, came the same day and was proposed at 20:26, implemented at 20:48 and given a viewer at 22:15. Taking it to market end to end is where Dinis learnt Stripe, pricing and the rest a real product needs, which paid off later in the newsroom.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dated story for the chapter and for your-first-price-and-first-ten-customers. The article says '30 paying customers' appears only in an investor one-pager and could not be verified; ten is the recorded number. Every date and quote was checked in the repositories by two research agents.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "ship-it-and-see-if-they-miss-it", "batch": "rc2", "url": "graph/ideas/sg-send-live-in-five-days.html", "sources": [{"ref": "news:from-send-to-sgit", "where": "A service where the server holds nothing; Live in five days; Users, payments, and a feature in 22 minutes"}], "answers": ["4.life-patterns/content/be-a-founder.md", "5.concepts/serverless.md"]}, "idea:silence-is-a-signal": {"id": "idea:silence-is-a-signal", "kind": "idea", "title": "The technology worked and the use case did not: 'users buy credits, test once, and don't come back'", "statement": "SG/Send's briefs said it on 5 March 2026, three days after the first ten customers: paying customers but not enough usage, credits sitting unused. Nobody ran out of credits and came back for more, and nobody came back asking for the next feature; that silence was the signal. It was a platform without a workflow that needed it. The same features are used now because the newsroom, RiskMandate and the vaults need them: explorers find things early, and the use case decides when they matter. The miss-it test, failed, in numbers.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Usage is described, not counted: the article found no usage figures. The pace behind it: 4,476 commits on 246 of the first 249 days, 739 release tags from v0.1.0 to v0.34.0; the command line's unit tests grew from 237 on 5 March to 4,232 on 14 October.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "ship-it-and-see-if-they-miss-it", "batch": "rc2", "url": "graph/ideas/silence-is-a-signal.html", "sources": [{"ref": "news:from-send-to-sgit", "where": "What the market said"}], "answers": ["4.life-patterns/content/be-a-founder.md", "5.concepts/feedback-loops.md"]}, "idea:the-agents-wrote-the-code-i-wrote-the-briefs": {"id": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "kind": "idea", "title": "The agents wrote the code, Dinis wrote the briefs and merged: 38% of commits in February, over 85% from September", "statement": "Of the 1,671 commits under Dinis's name on the SG/Send app, 1,298 are merges of the agents' branches and most of the rest are brief files. The agents' share of the app's commits rose from 38% in February 2026 to over 85% from September. The way of working was written down on the day the site went live: voice memos become briefs, briefs flow down, debriefs flow up; explorers and villagers from 14 February, no town planners yet.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Commit counts include automation (release tags and some commits by CI), as the article says. Counts from git logs of all branches on 15 October 2026.", "gravity": "villager", "topic": "working-with-agents", "chapter": "how-to-work-with-agents", "batch": "rc2", "url": "graph/ideas/the-agents-wrote-the-code-i-wrote-the-briefs.html", "sources": [{"ref": "news:from-send-to-sgit", "where": "The pace; Live in five days"}], "answers": ["4.life-patterns/workflows.md", "1.introduction/how-this -book-was-created.md"]}, "idea:decided-by-inertia-not-by-ai": {"id": "idea:decided-by-inertia-not-by-ai", "kind": "idea", "title": "The SaaS apocalypse will be decided by inertia, not by AI, because AI is available to both sides", "statement": "The incumbents have the same models the newcomers have, plus more data, more engineers and more money; if the technology decided this they would already have won, and two and a half years in they have not. What decides it is where a company sits on the evolution axis and how much past success it has to protect: Nokia met the mobile phone with nothing to protect and became the category, met the iPhone with fifteen years of success to protect and was gone from it within seven. Past success breeds inertia; new entrants, unencumbered by it, initiate the change. The newcomer was never on the rails, which is why the newcomers, not the incumbents, are the ones to watch.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The February 2026 'SaaSpocalypse': roughly $285 billion left the sector in about 48 hours after Anthropic shipped Cowork plug-ins, and the market recovered by September with the argument that the database is the moat; the article reads that recovery as 'the apocalypse, priced'. The claim is stated 'so it can be wrong'.", "gravity": "explorer", "topic": "explorers-villagers-town-planners", "chapter": "be-a-founder", "batch": "rc2", "url": "graph/ideas/decided-by-inertia-not-by-ai.html", "sources": [{"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "the opening claim; Why it got this way, in one line from Wardley; And the reason the incumbents cannot simply do this themselves"}], "answers": ["4.life-patterns/pionners-settlers-town-planners.md", "4.life-patterns/content/be-a-founder.md"]}, "idea:users-were-never-happy": {"id": "idea:users-were-never-happy", "kind": "idea", "title": "Users were never happy: 91% frustrated, 80% of features rarely or never used, $21 million a year in idle licences", "statement": "Business software did 80% of what you needed and the remaining 20% was as painful as before you bought it, and it is measured: Freshworks found 91% of 8,698 people frustrated by inadequate workplace technology; Pendo found 80% of features in the average product rarely or never used, across 615 products; Zylo puts the average organisation's waste on unused licences at $21 million a year. 73% of companies prepare VAT returns in Excel and 78% of British companies say spreadsheets support key financial decisions: the persistence of Excel is the clearest evidence that SaaS failed them, because it is the one tool where they control the shape of the thing. You pay 100% for the 10% of features you actually wanted.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article rejects the famous Standish 64% (a 2002 keynote based on four internal applications) in favour of Pendo's sample. Why a founder's opening is in old, unloved software.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "be-a-founder", "batch": "rc2", "url": "graph/ideas/users-were-never-happy.html", "sources": [{"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "First, the part nobody likes to say: users were never happy"}], "answers": ["4.life-patterns/content/be-a-founder.md"]}, "idea:what-they-refused-to-build-is-what-the-agent-needs": {"id": "idea:what-they-refused-to-build-is-what-the-agent-needs", "kind": "idea", "title": "What SaaS refused to build to protect its moat is exactly what a customer's agent needs", "statement": "Portability, open schemas, a real API at the centre, data you can take out, capabilities you can call from outside: for twenty years these were treated as churn risks and starved. Now the customer's agent turns up wanting exactly that list and finds a product built to prevent it; the moat has become the thing the water cannot get past in either direction. Strip the interface and most of these companies are a database, a messaging system and a state machine, and that can be built, though it is hard to build well. A founder builds the list from the start.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Pairs with the-fork-next-door and open-source-removes-the-moat-excuse: the newcomer's version of not having a moat to protect.", "gravity": "villager", "topic": "open-source", "chapter": "be-a-founder", "batch": "rc2", "url": "graph/ideas/what-they-refused-to-build-is-what-the-agent-needs.html", "sources": [{"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "The irony, which is the whole article in one paragraph; Strip the UI and see what is left"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md", "5.concepts/legacy-applications.md"]}, "idea:the-company-sits-in-the-two-moves": {"id": "idea:the-company-sits-in-the-two-moves", "kind": "idea", "title": "A company sits in the two moves on the map: a guess becoming a product, and a product becoming a commodity", "statement": "Who reads the code depends on where it is on the map: explorer code is read for intent, mostly by agents; villager code is read line by line, because this is where changes land and the blast radius lives; town planner code is read by deterministic checks at the boundary, with a person for the exceptions. The company sits in the two moves between them: from explorer to villager, when a guess becomes a product and needs the review it never had; from villager to town planner, when a product becomes a commodity and the review becomes checks that run without anyone. The trap on both sides is not knowing which stage the code is at: teams find a model's mistakes too risky and swing to reviewing everything by hand.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Quote, word for word, from the March 2026 article the newsroom cites: 'Before AI agents started writing code, you could argue that 90% of the code running in production was not being read by anyone.' The SaaS article's version: businesses that take the finished brief and run it, paid by consumption and by the fact that it keeps working, not by the seat; and 'more engineers, not fewer'. Extends the-handover from a frame about prototypes to a frame about where a company's value is.", "gravity": "villager", "topic": "explorers-villagers-town-planners", "chapter": "be-a-founder", "batch": "rc2", "url": "graph/ideas/the-company-sits-in-the-two-moves.html", "sources": [{"ref": "news:if-somebody-built-a-company-on-code-review", "where": "Who reads the code; The company"}, {"ref": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "where": "The mistake, and where the money actually is: village and town-planner companies"}], "answers": ["4.life-patterns/pionners-settlers-town-planners.md", "4.life-patterns/content/be-a-founder.md"]}, "idea:a-budget-per-step-is-the-objective-good-enough": {"id": "idea:a-budget-per-step-is-the-objective-good-enough", "kind": "idea", "title": "A budget per step, declared before anything runs, is the objective way to say good enough; the five whys move it", "statement": "Agents keep going, that is what they do, and one agent handing work to another looks efficient while it spends. The way to stay on the right side of diminishing returns is a budget per altitude and per change, decided in advance, so a workflow's maximum cost is knowable before it runs rather than discovered afterwards; work handed from agent to agent carries its budget and never widens it. Being able to tell a team the budget is spent was one of the most useful controls Dinis ever had, because teams are very good at keeping going. Then the five whys: every finding at one layer is a question about the layer below, and the fix goes there as a rule, so the next change like it is caught for the price of a query. Onboard by starting at one point and continuing, never by analysing everything.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The junior's version of knowing-when-to-stop, as a mechanism rather than an experience. Every agent doing the work runs under a behaviour policy written before its first run.", "gravity": "town-planner", "topic": "working-with-agents", "chapter": "direction-and-judgement", "batch": "rc2", "url": "graph/ideas/a-budget-per-step-is-the-objective-good-enough.html", "sources": [{"ref": "news:if-somebody-built-a-company-on-code-review", "where": "From art to science; Constraints keep it in control, the five whys make it cheaper"}], "answers": ["5.concepts/deadlines.md", "4.life-patterns/one-way-two-way-doors.md"]}, "idea:due-diligence-becomes-an-agent": {"id": "idea:due-diligence-becomes-an-agent", "kind": "idea", "title": "Send an agent, not a spreadsheet: due diligence derived from the code, not composed by the vendor", "statement": "Due diligence was a form because the alternative did not exist: the standard questionnaire has 627 questions, vendors answer 37.3 requests a month and spend 179 hours on them, and the answers are written by the people being asked. Now a buyer can send a prompt, or a small agent under a behaviour policy, to run inside the vendor's environment and come back with a graph of what is there: what reaches production that no person reviewed, whether the documentation matches the code, whether there is a threat model, what the last fifty bugs touched, which agents touch the pipeline and under what policy. The vendor reads what leaves and can redact but not rewrite, because the answer is derived, and companies will not put a false map on a record. A buyer asking costs nothing; a supplier not answering looks worse than one answering badly. Investors and acquirers get the same visibility in the same month.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The agent does not exist yet; the article is the case for it. The regulation arrives before the visibility: the EU Product Liability Directive applies to products placed on the market from 9 December 2026 and presumes a product defective where the manufacturer fails to disclose relevant evidence. Placed in sell because it is what the founder's buyers will do to them.", "gravity": "town-planner", "topic": "security-agent-era", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/due-diligence-becomes-an-agent.html", "sources": [{"ref": "news:send-an-agent-not-a-spreadsheet", "where": "The form that never connected to anything; What changed; The consequence that has been missing"}], "answers": ["6.security/threat-modeling.md", "6.security/3rd-party-modules.md"]}, "idea:double-down-on-understandability": {"id": "idea:double-down-on-understandability", "kind": "idea", "title": "A startup should double down on understandability: less code, the same tools, and it can be checked and pass", "statement": "The test is risk-based, not pure. A startup that says it generated most of its code fast, that the product is not mission-critical and here are the mitigations has passed; what fails is not knowing. So build the graph of your own repository, keep the threat model with the code, write a behaviour policy for every agent, trace bugs to changes, and answer the buyer's questions in the buyer's format before being asked. The startup can play the same game as the biggest buyer, with open source tools, and it has less code: understanding ten thousand lines is a week, ten million that nobody still at the company wrote is a programme. The incumbent's advantage was that nobody could check; the startup's is that it can be checked and pass.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A threat model is the fastest read of a team's understanding: one that says 'we have a weakness here, exploiting it needs a nation-state, we will not defend against it' is a good one. The evidence that review is being skipped is dated in the article: AI accounts for 42% of committed code and only 48% always verify it (Sonar, January 2026); 80% of PRs have no human comment when an AI review tool is on (Qodo, 2025).", "gravity": "villager", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/double-down-on-understandability.html", "sources": [{"ref": "news:send-an-agent-not-a-spreadsheet", "where": "Risk-based, not pure; The consequence that has been missing: 'if I were a startup I would double down on understandability'"}], "answers": ["6.security/threat-modeling.md", "6.security/security-better-developers.md", "4.life-patterns/content/be-a-founder.md"]}, "idea:the-behaviour-policy-is-the-due-diligence-document": {"id": "idea:the-behaviour-policy-is-the-due-diligence-document", "kind": "idea", "title": "The agent behaviour policy is the due diligence document: a buyer reads the blast radius off it, and its absence says the most", "statement": "A behaviour policy, written before an agent's first run, says what the agent is, which identity it uses, what it may read, write, not do and spend, who approves what, which risks were accepted by whom and for how long, and where its actions are recorded. Read by a buyer it says something else: the worst case (a deploy agent whose identity has no merge right and no production credential can at most break staging), which controls are enforced by the identity and which are only instructions, and which risks the vendor accepted on the buyer's behalf. A vendor with agents in its pipeline and no policy to show has agents whose blast radius nobody has written down, which is a finding before any code is read.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Quote worth keeping: 'the moment of authorisation is not when you allow the agent to do something, it is the moment you give them the permissions.' A buyer reads the permissions, not the promises. Extends mandate-reach-gap from the operator's view to the buyer's.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/the-behaviour-policy-is-the-due-diligence-document.html", "sources": [{"ref": "news:send-an-agent-not-a-spreadsheet", "where": "The behaviour policy is the due diligence document"}], "answers": ["6.security/threat-modeling.md"]}, "idea:the-engagement-path-starts-small": {"id": "idea:the-engagement-path-starts-small", "kind": "idea", "title": "Selling a service: each step small enough to say yes to, and each ends with something they keep", "statement": "The path for selling an agentic service: a free conversation about what the client wants agents to do and must never do; a first run on a real problem for £10 to £50 that leaves a vault; £500 for about two hours or £1,500 for a day to steer it or write the behaviour policy for one team; a four-day pilot in their own environment for £5,000; then a maintained setup from £149 a month so they run it themselves. The boutique benchmarks are the same shape everywhere: a free call, a paid discovery (a one-week audit at £2,500, a 14-day sprint at €2,900, a two-week assessment at $4,999), a fixed-price pilot (from £8,000), a build, a retainer. The prices are hypotheses to test with the first ten customers, and the plan says so: no paid run yet.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Prices from ruv.sgit.ai's published offers and the boutiques' public pages, read on 16 October 2026. The market map's positions are a judgement, as the article says.", "gravity": "villager", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/the-engagement-path-starts-small.html", "sources": [{"ref": "news:agentics-ready-to-sell", "where": "Who else is selling this; The engagement path"}], "answers": ["4.life-patterns/content/be-a-founder.md", "7.your-cv/upwork.md"]}, "idea:evidence-first-is-the-position": {"id": "idea:evidence-first-is-the-position", "kind": "idea", "title": "The market is crowded at the top and thin on evidence: sell the record the client keeps", "statement": "The large consultancies each have an agent platform, the model vendors sell through partners and their own engineers, and boutiques sell fixed-price pilots; what the people in between lack is not another platform but evidence they can inspect. Gartner expects over 40% of agentic AI projects to be cancelled by the end of 2027, citing escalating costs, unclear value and inadequate risk controls, and warns of agent washing. The position for a small seller is evidence first: every engagement leaves a vault the client keeps, with the work, the history and a ledger of what each agent did and was allowed to do. The demonstration is the sales process, and the demonstration is checkable.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The demonstration: a talk built and run by a governed agent hive in about a day, 28 workers, 57 vault commits, no plaintext in anything the server stored, every vault deleted at the end; the runs were not gated by a compiled behaviour policy, which was shown separately. Dinis proposes 'agentics' as the word for what is sold: the practice, not one workflow.", "gravity": "villager", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/evidence-first-is-the-position.html", "sources": [{"ref": "news:agentics-ready-to-sell", "where": "Where the gap is; What we showed"}], "answers": ["4.life-patterns/content/be-a-founder.md", "5.concepts/facts.md"]}, "idea:a-marketplace-of-people": {"id": "idea:a-marketplace-of-people", "kind": "idea", "title": "A service only scales with people: a curated marketplace of consultants, joined by proof of work", "statement": "Agentic engagements need someone who knows the client's world and can steer a hive in it, and there are more of those people in a community than hours in a founder's week. So alongside the offers, a small curated list of consultants who deliver on the same stack, where the client picks the kind of project first and then the people. Joining copies the markets that work: apply, show proof of work (a public vault or repository of a real run with its ledger), peer review by two members, a thirty to forty-five minute interview with a scenario, a first engagement shadowed, and standards including a behaviour policy for consultants, the same idea applied to agents. The consultant sets the price within the band and keeps most of it; markets sit between 5% and 20% in total (Malt charges freelancers 5%, Upwork 0% to 15%, Braintrust 15% to the client).", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Nothing is built; the platform share is a proposal; the first two consultants (Mondweep Chakravorty and Dinis) are not taking bookings. Toptal says fewer than 3% of applicants pass its five stages. Also a door for the reader going into a job: join as the person who delivers.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/a-marketplace-of-people.html", "sources": [{"ref": "news:agentics-ready-to-sell", "where": "A marketplace for the people who deliver it; A brief for the marketplace page"}], "answers": ["7.your-cv/upwork.md", "4.life-patterns/mentors.md"]}, "idea:three-tiers-for-a-model-on-a-static-site": {"id": "idea:three-tiers-for-a-model-on-a-static-site", "kind": "idea", "title": "Three honest tiers for a model on a site with no server: a local matcher, your own key, or a vault bridge", "statement": "A static site has no server, no session and no place to keep a secret, so the usual chat box (a backend holding the API key) is not an option. The honest choices are three: a deterministic matcher in the browser that is free, private, works offline and shows which words it matched on (the default, because a reader should never have to hold a credential to use an index); the reader's own key, opt-in and labelled, which lives in the page's origin and is a trust decision presented as one; and a vault bridge where the host holds the key below the permission floor and the app never sees it. When the model call fails, fall back to the first tier and say so.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dated 27 August 2026, with an addendum of 7 September: the pane on every page was given seven tools over the site's own index, and shows every call it made. The bridge's own qualification travels with it, quoted: 'The bridge protects your key; it is not yet a boundary that prevents all egress.' Only the first tier is free; the third was not built (on the board as T11).", "gravity": "explorer", "topic": "building-blocks", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/three-tiers-for-a-model-on-a-static-site.html", "sources": [{"ref": "news:chat-on-a-static-site", "where": "The constraint nobody can design around; The three tiers"}], "answers": []}, "idea:route-do-not-teach": {"id": "idea:route-do-not-teach", "kind": "idea", "title": "Scope the feature to one question, and quote rather than paraphrase", "statement": "The directory chat answers one question (which of the nineteen sites is mine) and refuses to teach the subjects: the sites already contain the arguments, and a summary that drifts from them is worse than a link that does not. It knows only the catalogue, nineteen theses and summaries quoted from each site's own words. For a founder shipping in a weekend, that is the discipline: the narrow thing that is right over the wide thing that drifts.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Sits next to stale-pages-become-false-memories and disagree-rationally-with-provenance: the same rule (every item carries its source, nothing paraphrased) applied to a product feature. The catalogue is generated from the same data as the cards and the table, which is why it can be trusted.", "gravity": "explorer", "topic": "facts-and-the-record", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/route-do-not-teach.html", "sources": [{"ref": "news:chat-on-a-static-site", "where": "What it does not do"}], "answers": []}, "idea:billing-by-not-building-billing": {"id": "idea:billing-by-not-building-billing", "kind": "idea", "title": "Billing by not building billing: the commercial model is a property of the key", "statement": "A user pays five pounds through a payment link; the company keeps its cut at the moment of payment; the rest becomes the credit limit on a key handed to the user; the provider meters it and the key stops when it is spent. Against a billing system (a meter on every call, a ledger per user, disputes, refunds, fraud, custody of the data while it meters) that is a payment, a cut, a key with a ceiling and nothing else, and it is more profitable per pound because the margin is taken once, up front. The minimum top-up is five pounds because a card fee with a fixed component makes a one-pound purchase return about 59 pence of inference.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Could also sit in price-it-then-give-it-away. The model was written down on 28 July 2026, the day the product started, in a brief headed 'Billing by not building billing'. It is why a router like OpenRouter does well: it sells credit, keeps a margin and meters for everyone else. The user owns the ceiling: a key with a limit cannot cost more than the limit, and the user can revoke it at the provider in one click.", "gravity": "villager", "topic": "be-a-founder", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/billing-by-not-building-billing.html", "sources": [{"ref": "news:the-key-is-the-billing-system", "where": "The commercial model that was never a billing system"}], "answers": []}, "idea:the-licence-is-the-blocker": {"id": "idea:the-licence-is-the-blocker", "kind": "idea", "title": "Twice now the product was possible and the licence was the blocker: read the terms, not only the docs", "statement": "Every technical piece for renting a Mac to an agent by the minute exists, and Apple's macOS licence forbids leasing a Mac for less than twenty-four consecutive hours, and only for developer services. OpenRouter's Management API documents 'unique API keys for each customer instance' with credit limits, and section 7(4) of its terms (31 August 2026) forbids 'reselling API access to Models', so a plan built against the docs was dead on the page that documented it. Before a founder builds the commercial model on a provider, the terms are the thing to read, and an enterprise or OEM agreement is a door to ask about, not a feature to assume.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The cost of the licence, from the desktop article, at prices read on 7 October 2026: 44 hours of work a month costs about $7.29 on an E2B or Daytona Linux sandbox, $17.60 on Windows 365 for Agents, 116.16 euros on a Scaleway Mac mini M4, $649.44 on an AWS M4 and $1,040.16 on an M4 Pro, because each day is a 24-hour lease. Quote: 'The Mac is not expensive per hour; it is expensive because the hour you can buy is a day.' Both articles say they are read, not interpreted, and are not legal advice; the book should say the same. The nearest fit found for the capped key was ElevenLabs: per-key credit limits, OEM terms under which a business sets its own price for its end users, and a grants programme (twelve months, for companies under 25 people with a monetised use).", "gravity": "villager", "topic": "be-a-founder", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/the-licence-is-the-blocker.html", "sources": [{"ref": "news:the-key-is-the-billing-system", "where": "the opening; The commercial model that was never a billing system; The four routes"}, {"ref": "news:an-agent-desktop-by-the-minute", "where": "macOS has a one-day minimum, and a purpose clause"}], "answers": []}, "idea:voicedebrief-stopped-at-the-billing-system": {"id": "idea:voicedebrief-stopped-at-the-billing-system", "kind": "idea", "title": "VoiceDebrief: a product with no server that shipped in three weeks and stopped at the one thing it could not sell", "statement": "VoiceDebrief.ai turns a voice note into a transcript, a translation and a debrief in the browser, on the user's own OpenRouter key, with no account, no server and nothing stored; a 42-second note costs about a third of a penny. Built in the open from 28 July 2026: 239 commits and 27 releases in the first three weeks, then eleven commits the week after, then three, and a last commit on 7 September. What stopped it was not a server but the lack of one: the capped key per user that the model needed is forbidden by the provider's terms, and the alternative, a metering proxy, is the backend the product exists to avoid.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dated 12 October 2026; Dinis says he is involved in VoiceDebrief and that the commit counts show when the work stopped, not why. The four routes: buy a capped OpenRouter key per user (forbidden by the standard terms); a provider that sells the capped key itself or lets it be issued under its terms (ElevenLabs the nearest fit, the gap is one sentence); bring your own key, kept (what runs today, honest, no margin, and the five minutes it takes to get a key is where most people stop); a metering proxy (the smallest backend, and a backend, custody and on-call return). The one part of the product with a server is the WhatsApp path, an n8n workflow behind a Cloudflare Worker. The method at the end is worth the book's attention: agents draft the letters to providers, Dinis sends, the ask is one sentence, and every answer is recorded as an issue with its date so the map is updated as a version rather than a new article.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/voicedebrief-stopped-at-the-billing-system.html", "sources": [{"ref": "news:the-key-is-the-billing-system", "where": "What VoiceDebrief is; Why no server is the product; The four routes"}], "answers": []}, "idea:git-for-things-you-cannot-put-on-github": {"id": "idea:git-for-things-you-cannot-put-on-github", "kind": "idea", "title": "Git for things you cannot put on GitHub: what an encrypted vault is", "statement": "There is a category of file with nowhere good to live: a risk register with real system names, an analysis still being argued about, the working memory of an agent that has read your codebase for a month, client material under NDA. It wants history, branches, diffs and a link, and it is the reason people say 'we can't put that in GitHub', so it ends up in a shared drive or a thread nobody can diff. sgit is git for those files: encrypted before they leave your machine, versioned like git, stored on a server that holds ciphertext and nothing else, not filenames, not directory structure, not commit messages. There is no key escrow, no admin override and no support engineer who can recover it, which is a feature with a real cost.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dated 25 August 2026. The evidence in the article: an object is 786 bytes of AES-256-GCM ciphertext named by the SHA-256 of the encrypted bytes, so the host can deduplicate it, cache it and serve it from a CDN without knowing what it is; all nineteen published vaults cloned from their published keys, 1,389 files, no failures. Underneath it is real version control (multi-parent commits, a tree per directory, merge-base, three-way merge), not a sync folder. Status, plainly: sgit is beta and says so on every page; pip install sgit-ai, pure Python, two runtime dependencies, Apache-2.0. The then-and-now for the 2018 Backup your life: back up into a vault whose key you hold.", "gravity": "all", "topic": "building-blocks", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/git-for-things-you-cannot-put-on-github.html", "sources": [{"ref": "news:what-sgit-is", "where": "the opening; The part that is easy to say and hard to build"}], "answers": ["4.life-patterns/content/backup-your-life.md"]}, "idea:the-read-key-is-the-sharing-model": {"id": "idea:the-read-key-is-the-sharing-model", "kind": "idea", "title": "One string is address, authorisation and key; the read key derived from it is safe to publish", "statement": "A vault key is a passphrase and a vault id in one string, and it is three things at once: the address of the vault, the authorisation to write to it, and the key that decrypts it. Lose it and the data is gone; leak it and someone can rewrite your history. From it, one way, comes a read key: same vault, read-only, safe to publish, and the read key is the entire credential, with no account, no login and no access request. That asymmetry is the whole sharing model: every vault linked from sgit.ai is published as a read key, and no vault key has ever been published, a rule enforced by a tripwire in the release pipeline.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "This site runs on the same rule: the public read key in admin/content/vault.json is the only key that belongs in the repository, and the gate refuses the private prefix (CLAUDE.md). The second article adds the other credentials that sit beside the vault key, each made for one job: a write key the server checks as a hash, an append token that writes one message to one lane and nothing else, and a PKI key pair (RSA-OAEP 4096 for encryption, ECDSA P-256 for signing). In the browser the key sits after the # in the URL, which browsers do not send to the server.", "gravity": "villager", "topic": "building-blocks", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/the-read-key-is-the-sharing-model.html", "sources": [{"ref": "news:what-sgit-is", "where": "The part that is easy to say and hard to build; Ten seconds of proof; Try it"}, {"ref": "news:where-the-vault-keys-live", "where": "One secret, and the keys derived from it"}], "answers": []}, "idea:capability-without-credential": {"id": "idea:capability-without-credential", "kind": "idea", "title": "An app in a vault runs against the vault without ever being handed a key", "statement": "A vault can contain an application, not only documents, and the application runs against the vault without ever holding a credential: it declares permissions of nothing, the host reads the vault and passes results in, and the app never sees a key. Capability without credential means you can run code you did not write against data you care about, with the blast radius set by a config file you can read in one screen. The same shape holds for a model: the key lives below the permission floor, the host makes the call, and the app never sees it.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Belongs beside mandate-reach-gap: the config file is the written reach, enforced by the host rather than hoped for in a prompt. The chat article's qualification applies: the bridge protects the key it was trusted with; it does not yet stop a malicious app calling a provider with a credential of its own.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/capability-without-credential.html", "sources": [{"ref": "news:what-sgit-is", "where": "The part that surprises people"}, {"ref": "news:chat-on-a-static-site", "where": "Tier 2, the bridge"}], "answers": []}, "idea:protect-the-keys-not-the-data": {"id": "idea:protect-the-keys-not-the-data", "kind": "idea", "title": "Encryption on the client moves the problem from the data to the keys, and the sovereignty line to whoever holds them", "statement": "When the server can read what it stores, all of it has to be protected: every copy, backup, log and replica, and every person and process with access. When the server holds ciphertext named by the hash of that ciphertext, the problem moves to protecting the keys, which is much smaller, and the key becomes the whole question: where it is kept and how it travels decides who can read, who can write and what a leak costs. The sovereignty line stops being where the data is stored and becomes who holds the keys, so data can sit with a provider or in a country with sovereignty gaps and you remain sovereign over it and able to move it; the European Data Protection Board treats strong encryption with the keys retained solely by the exporter as an effective supplementary measure for transfers.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The EDPB source is Recommendations 01/2020, version 2.0, 18 June 2021, use case 1, quoted in the article: 'the EDPB considers that the encryption performed provides an effective supplementary measure.' The same idea as sovereignty as the ability to move (hack-your-country). The cost of the design, from the keys article: everything that matters is in the key, which is why key management is where the effort goes now.", "gravity": "all", "topic": "building-blocks", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/protect-the-keys-not-the-data.html", "sources": [{"ref": "news:the-value-of-constraints", "where": "From the data to the keys"}, {"ref": "news:where-the-vault-keys-live", "where": "In short; Where everything lives"}], "answers": []}, "idea:a-password-manager-and-a-registry": {"id": "idea:a-password-manager-and-a-registry", "kind": "idea", "title": "Where the keys live: a password manager for the keys a person holds, a registry vault for the keys agents make", "statement": "Once agents create vaults several times a day, keeping the keys by hand stops working. The keys a person holds go in a password manager, which is and will stay the preferred home; everything the agents create goes to a registry, a private vault run by its own isolated Claude session with no other access, the vault of vaults, so a key is never lost and never has to live in a browser tab or a chat. Remembering keys under aliases on one machine is a convenience, not a management system. The weakest step is giving a key to another agent, because the agent platforms have no secrets per session.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "State at sgit-ai v0.20.0, 10 October 2026. The gap, quoted from the platform's docs: on Claude Code on the web an environment variable is one 'any command Claude runs can read' and 'Anyone who uses the environment can read the values'; a network secret keeps the key outside the VM but is per environment and cannot help with a vault key, because decryption happens inside the session; Codex removes its secrets before the agent phase starts. So a key for another agent travels in the prompt (a transcript), in an environment variable (every session reads it), or not at all, with the agent making its own vault and sending the key back on a lane, the pattern used most. The four tracks next: password manager integrations (an open call published, not followed up yet), secrets.sgit.ai (a keyring unlocked by a passkey's PRF output, a 128-bit recovery code shown once, at v0.1.13 the design and a lab shipped and the app proposed), PKI (RFC 0001), and decryption out of band (an idea, not a design).", "gravity": "villager", "topic": "security-agent-era", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/a-password-manager-and-a-registry.html", "sources": [{"ref": "news:where-the-vault-keys-live", "where": "Where the vault keys are kept today; The weakest step: giving a key to an agent; What comes next"}], "answers": []}, "idea:small-vaults-for-small-jobs": {"id": "idea:small-vaults-for-small-jobs", "kind": "idea", "title": "A vault per conversation and per job: a leaked key exposes one small thing, not an inbox", "statement": "Working this way you start making very small vaults for very specific things: a communication vault for the two or three agents on a job, in which they talk and work through versioned, encrypted files. What an agent needs to join one is small: the vault key, sgit and network access to one host, or a server inside its own network. This is the right shape for security: a leaked key exposes one small vault and one conversation, not an inbox, a drive or an account, and every word is on the record for the person who holds the keys. It is also why the number of keys grew faster than one person could manage by hand.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Pairs with an-agent-is-a-session-with-a-focus (one session per topic) and with the main workflow the article describes: give Claude no permissions and no access to anything, only the vault it uses to communicate, or a vault it creates and the person then captures. Inside the vaults the agents use EmailFS and IssuesFS, file-based protocols for mail and issues.", "gravity": "villager", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/small-vaults-for-small-jobs.html", "sources": [{"ref": "news:where-the-vault-keys-live", "where": "Small vaults for small jobs"}], "answers": []}, "idea:write-only-lanes": {"id": "idea:write-only-lanes", "kind": "idea", "title": "Append lanes: one POST from anywhere, readable only by the vault's owner", "statement": "A lane is a write-only channel attached to a vault. A sender holds a token for one lane and the owner's public key, seals its message to that key and sends it with a single POST; the owner decrypts with a private key that never leaves them, and the server keeps only hashes and ciphertext, so compromising it yields hashes and ciphertext. One lane per sender, so one can be revoked without touching the others. It is used for key handover, for logs and observations from sessions that hold no vault key, for what a reader fills in on a web page, and for messages between agents on different platforms with different owners. A little like email, and the token is still a secret: it cannot read, but with the vault id it authorises writes.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "This is the piece that lets a site with no server take input: the newsroom's newsletter sign-ups and shared reading go through the same encrypted, write-only inbox (no-server-by-design), and the agent desktop design sends outputs and the footprint to a vault the desktop can append to and cannot rewrite. The no-server article notes it is the one part of the vault server that needs a small piece of server logic.", "gravity": "town-planner", "topic": "building-blocks", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/write-only-lanes.html", "sources": [{"ref": "news:where-the-vault-keys-live", "where": "Append lanes, the transport behind most of this"}], "answers": []}, "idea:nobody-buys-it-for-the-encryption": {"id": "idea:nobody-buys-it-for-the-encryption", "kind": "idea", "title": "Nobody buys it for the encryption: the features came from the constraint", "statement": "Encryption is an important property, not a reason to choose a tool, and leading with it was a mistake Dinis made himself: if sgit succeeds it will be because it has better features and better workflows. Many of those came from the encryption as a constraint, because innovation needs constraints and the loop of trying, failing and shipping; the research is more careful than the slogan, an inverted U-shaped effect, some constraint helps and too much hurts. The same applies to design: take things away until it hurts, and stop there; the best product is not the one you use because you have to but the one that hurts when you stop.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The research named is Acar, Tarakci and van Knippenberg, Creativity and innovation under constraints, Journal of Management, 2019, quoted: 'an inverted U-shaped effect of constraints on creativity and innovation'. Dinis declares a stake: sgit is his, and the article says the market will decide. A line for the cutter too: 'take things away until it hurts, and stop there, because past that point it gets worse.' Tension to watch with ship-now-ship-serverless, which presents SG/Send and sgit by their privacy property: the book should sell them by the workflow and name the privacy as the property.", "gravity": "all", "topic": "be-a-founder", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/nobody-buys-it-for-the-encryption.html", "sources": [{"ref": "news:the-value-of-constraints", "where": "The mistake I made first; Open source, as a constraint"}], "answers": []}, "idea:encryption-does-not-remove-gdpr": {"id": "idea:encryption-does-not-remove-gdpr", "kind": "idea", "title": "Client-side encryption reduces the exposure under GDPR; it does not take you out of it", "statement": "Dinis's memo said that with the data encrypted you do not have to worry about GDPR, and the article corrects it: for whoever holds the keys, encrypted personal data is still personal data, storing it is still processing, and the controller's duties stay (the UK regulator says not to think encrypted data is outside the UK GDPR). What encryption does is reduce the exposure, and the law recognises it: Article 32 lists encryption as a security measure, and under Article 34(3)(a) a breach need not be communicated to the people affected if the data was made unintelligible to anyone not authorised, provided the key was not lost with it. The Court of Justice held in September 2025 that pseudonymised data is not personal data in all cases and for every person, which may help a store that never has the keys. Much less to worry about, not nothing.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "An instance of asked-to-be-corrected: the memo's claim stands corrected in the article, and the book must not repeat the memo. Sources named in the article: GDPR Articles 32 and 34; ICO encryption guidance; Court of Justice case C-413/23 P, press release of 4 September 2025. Not legal advice. Answers the 2018 outline GDPR, which the map says no article covered for developers.", "gravity": "villager", "topic": "security-agent-era", "chapter": "privacy-by-design", "batch": "rc2", "url": "graph/ideas/encryption-does-not-remove-gdpr.html", "sources": [{"ref": "news:the-value-of-constraints", "where": "What it does not do: GDPR"}], "answers": ["5.concepts/gdpr.md"]}, "idea:open-source-all-of-it-or-it-is-an-evaluation-version": {"id": "idea:open-source-all-of-it-or-it-is-an-evaluation-version", "kind": "idea", "title": "Open source as a constraint: all of it, or it is an evaluation version with a better name", "statement": "The constraint is that there is no private code. It makes the code easy to deploy, run and change, including by the customer, which solves many sovereignty problems on its own, and it removes two temptations: to lock the customer in, and the curse of most startups, building every feature and integration one customer wants until the roadmap belongs to everyone but the startup. With open source the answer is: here is the code, integrate it yourself or pay us to do that specific thing. That is why you cannot open source half of it: a community edition that turns proprietary when you use it for real is an evaluation version, and Elastic, HashiCorp and Redis each moved to a non-open licence and each produced a well-funded fork (OpenSearch, OpenTofu, Valkey). The business model that follows is selling customisation and keeping it working.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Distinct from the-fork-next-door (the fork as protection) and open-source-removes-the-moat-excuse (why it is easy to throw your own technology away): this is the founder's business reason for all of it. Elastic (29 August 2024) and Redis (1 May 2025) have since added an open licence back; the Open Source Initiative said the SSPL is not an open source licence (19 January 2021). The article's own limit: that small teams win this way is Dinis's view from what he sees, not a study. The constraints remove bad business decisions and leave the good one: if the code is open and the server holds nothing, you cannot sell access to the code or rent the data back.", "gravity": "all", "topic": "open-source", "chapter": "open-source", "batch": "rc2", "url": "graph/ideas/open-source-all-of-it-or-it-is-an-evaluation-version.html", "sources": [{"ref": "news:the-value-of-constraints", "where": "Open source, as a constraint; All of it, or it is an evaluation version; The business model that follows"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md"]}, "idea:what-serverless-costs-when-idle": {"id": "idea:what-serverless-costs-when-idle", "kind": "idea", "title": "What serverless costs when nobody is using it, product by product, 18 October 2026", "statement": "From the products' own pricing pages on 18 October 2026, excluding storage, at 730 hours and US East rates: Lambda event functions, Cloud Run, Cosmos DB serverless, Neon and Redshift Serverless cost zero idle; Aurora Serverless v2 zero since November 2024 and OpenSearch's next-generation collections zero since May 2026. MSK Serverless bills $0.75 per cluster-hour, about $550 a month idle; OpenSearch classic collections have a floor of two capacity units, about $350 a month; Neptune Serverless a floor of one capacity unit, about $80 a month; ElastiCache Serverless a minimum of storage metered hourly, from $6 a month. The definitions were clear: the CNCF's whitepaper says 'there is no charge when code is not running', and the Berkeley paper warned in 2019 that few so-called elastic services could scale to zero.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The monthly figures are Dinis's arithmetic and move with region and configuration; the article says so. Some floors have fallen over time: Aurora Serverless v2 had a floor of half a capacity unit, priced in 2022 at 'just shy of $45' a month, until scale to zero arrived in November 2024; OpenSearch Serverless started at four units, halved in June 2024, reached zero in May 2026. For the hands-on chapter the table is a dated figure to renew each year; the test it supports (ship-now-ship-serverless) does not date.", "gravity": "villager", "topic": "building-blocks", "chapter": "building-blocks", "batch": "rc2", "url": "graph/ideas/what-serverless-costs-when-idle.html", "sources": [{"ref": "news:ephemeral-town-planner-services", "where": "What it means now (the table); What serverless meant"}], "answers": ["5.concepts/serverless.md"]}, "idea:the-glue-behind-the-commodity": {"id": "idea:the-glue-behind-the-commodity", "kind": "idea", "title": "The name shows the glue: a first version is often a villager's work dressed as a town planner's", "statement": "Naming a service as ephemeral, town planner and a service makes you ask whether it is really a commodity or only looks like one, and plenty of things sold as commodities are a large amount of custom technology glued together behind the scenes. Lambda, the definition of serverless for most people, ran on Linux containers inside EC2 instances for its first four years, until Firecracker replaced them from 2018, in its builders' own words. A per-hour bill for a 'serverless' product usually means the provider cannot yet spin the thing up and down fast and safely enough to bill by use: an engineering gap on their side, passed to you as a cost. Not a criticism, that is how services become commodities, and the floors that halve and the scale-to-zero that arrives are the record of it maturing in public.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Could also serve where-do-you-land as a worked example of a Wardley map showing what sits behind a commodity. Werner Vogels is quoted: AWS delivers 'new services often with a minimal feature set' and lets customers 'help drive the roadmap'. The Firecracker account is AWS's own (NSDI 2020). Wardley in 2016: 'It's not really serverless but more I don't care what a server is.'", "gravity": "town-planner", "topic": "explorers-villagers-town-planners", "chapter": "building-blocks", "batch": "rc2", "url": "graph/ideas/the-glue-behind-the-commodity.html", "sources": [{"ref": "news:ephemeral-town-planner-services", "where": "The test; The glue behind the commodity"}], "answers": ["5.concepts/serverless.md", "4.life-patterns/pionners-settlers-town-planners.md"]}, "idea:the-code-must-not-know-it-moved": {"id": "idea:the-code-must-not-know-it-moved", "kind": "idea", "title": "Move the cloud, not the code: a twin the application cannot tell from the real service", "statement": "Workloads stay on hyperscalers because moving means changing code: every call to S3, EC2 and IAM is written into applications that work today and nobody wants to touch. So the requirement is that the application must not know it has moved. The same calls land on a twin, an open source interface to a real system valued for one thing, that the client cannot tell the difference, and the twin decides where the bytes go: real S3, an sgit vault, a European operator's data centre, a laptop. Switching a mock costs a code path; switching a twin costs an endpoint, so migration becomes a configuration decision rather than a project, and projects get cancelled. The S3 twin exists as open source; EC2 and IAM do not yet.", "idea_kind": "frame", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Dated 12 October 2026, from a digital sovereignty event; the chief executive is not named and did not review it. AWS's European Sovereign Cloud went live on 15 January 2026, a separate cloud with its first region in Brandenburg, operated by EU residents; the article's reading: 'Sovereignty that depends on one company's API is sovereignty by permission.' None of it works if the twin layer is closed: swap one vendor's API for another vendor's proprietary wrapper and the lock-in has moved, not gone.", "gravity": "town-planner", "topic": "building-blocks", "chapter": "building-blocks", "batch": "rc2", "url": "graph/ideas/the-code-must-not-know-it-moved.html", "sources": [{"ref": "news:move-the-cloud-not-the-code", "where": "Why workloads do not move; The criterion: the code must not know; This is not theoretical: the S3 twin"}], "answers": ["2.mvp-for-gen-z-dev/draft/aws.md", "5.concepts/legacy-applications.md"]}, "idea:sovereignty-never-signs-a-migration": {"id": "idea:sovereignty-never-signs-a-migration", "kind": "idea", "title": "The reason to move is never sovereignty or cost: sell value that lands the day they switch", "statement": "Sovereignty and cost reduction are important and never urgent; they sit on the risk register under important, not urgent, and nobody signs the risk of a migration for a principle or for a return that depends on a future event. The person signing needs value that lands the day they switch and gives them cover if it goes wrong: backups that exist, every object version controlled, encryption the operator cannot read with the key held by the customer, a journal of every call, behaviour policies the agents cannot skip, cost per workload visible before the invoice, and an item taken off the top of the register. 'It is in Europe now' is not a decision somebody can defend. For an operator in Romania, Portugal or the UK, 'move to us' sells risk; 'keep your code, point it at us, and come out with versions, encryption, a journal and policies' sells value with the risk removed.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A selling lesson in general form: find the return that closes before the risk does, and the buyer who owns that register line rather than the cloud bill. The article says its value list is 'still a little invisible to a signer' and needs sharpening; the business model's numbers are labelled assumptions, shapes not quotes, for somebody else to run. The margin is in the twin layer (journal, policy enforcement, reports a regulator or insurer accepts), not in storage and compute, which are commodities: the same reading as why-i-love-wardley-maps.", "gravity": "villager", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/sovereignty-never-signs-a-migration.html", "sources": [{"ref": "news:move-the-cloud-not-the-code", "where": "The reason to move is never sovereignty; The business model"}], "answers": []}, "idea:no-new-features-during-the-move": {"id": "idea:no-new-features-during-the-move", "kind": "idea", "title": "A villager move: no new features while you move, or nobody can tell which change broke what", "statement": "A migration is a pure villager move, from explorer to town planner: take something that works and make it boring, reliable and cheap, without changing what it does. The temptation to add features during it is the moment everything derails, because the migration is now also a product change and nobody can tell which of the two broke what. The argument that the move is what allows the features is right, and it is exactly why the two must not be mixed: move first, with the code unmodified and the twin adding its value underneath, then add the features the move made possible.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The same rule the newsroom used for its own explorer-to-villager move (green-does-not-mean-live cites it): same bytes and same bugs first, features after. Could sit in shipped-means-the-user-has-it instead.", "gravity": "villager", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/no-new-features-during-the-move.html", "sources": [{"ref": "news:move-the-cloud-not-the-code", "where": "A villager move: no new features"}], "answers": ["5.concepts/legacy-applications.md"]}, "idea:run-unmodified-against-a-twin": {"id": "idea:run-unmodified-against-a-twin", "kind": "idea", "title": "Every piece of software should run, unmodified, against a twin of every service it depends on", "statement": "If the application cannot tell a twin from the real service, the same unmodified code can run against an in-memory twin in milliseconds on a laptop, against a twin replaying last week's production journal, against a twin injecting the failures staging never shows (a timeout, a throttle, a permission that disappears halfway through a job), and against the real service for the final check. Most teams test against mocks they wrote themselves and hope production behaves the same; with twins the environment becomes a setting rather than a guess. Software that can only run against one provider's live API is software you cannot test properly, cannot move, and cannot put a policy in front of.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A side effect the article says 'may end up mattering more than sovereignty'. The twin is also where the journal and the behaviour policy live, because every call passes through it (mandate-reach-gap, one-way-two-way-doors). The 2018 Chaos Engineering outline is the failure-injection half of this.", "gravity": "villager", "topic": "shipped-means-the-user-has-it", "chapter": "shipped-means-the-user-has-it", "batch": "rc2", "url": "graph/ideas/run-unmodified-against-a-twin.html", "sources": [{"ref": "news:move-the-cloud-not-the-code", "where": "Testing goes to another level"}], "answers": ["5.concepts/CI-Testing.md", "5.concepts/chaos-engineering.md", "6.security/dont-touch-production.md"]}, "idea:startup-credits-october-2026": {"id": "idea:startup-credits-october-2026", "kind": "idea", "title": "The startup credit programmes, as their pages read on 7 October 2026", "statement": "All amounts and criteria read from each programme's own page on 7 October 2026. AWS Activate Founders: $1,000, up to $5,000, for self-funded, pre-Series B companies founded in the last 10 years on the Paid Tier plan; AWS Activate Portfolio: up to $200,000, through an Activate Provider (an investor or accelerator), pre-Series B. Microsoft for Startups: up to $150K over time, for a for-profit software company before Series C with under $350K lifetime Azure credits. Google for Startups Cloud: $2,000 pre-funding, up to $350,000 for AI startups, seed to Series A, founded in the last 5 years, under $5K prior credits. Anthropic's startup programme: $1,000 API credits, a year of Claude Team and up to $45K in partner offers, for companies founded in the last 5 years or funded in the last 2. Also: E2B $20,000 one-time plus the Pro tier; Daytona $10K immediately, up to $100K; Scaleway Founders up to 1,000 euros over 12 months and Early Stage 9,000 euros (1,500 a month for 6 months); Cloudflare for Startups $10K, $100K or $350K by tier; Modal unspecified thousands. Programmes change; check before applying.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The full table, as the article prints it. E2B, E2B for Startups: $20,000 one-time, plus the Pro tier; under 3 years old, raised under $5M, first-time E2B user, building AI agents; e2b.dev/startups/apply. Daytona, Startup Grid: $10K immediately, up to $100K; eligibility not published, the form asks for funding stage and VC partner; daytona.io/startups. Scaleway, Founders: up to 1,000 euros over 12 months; under 5 years old, under 50 staff, not yet a Scaleway customer; form on the Founders page, startup-program@scaleway.com. Scaleway, Early Stage: 9,000 euros (1,500 euros a month for 6 months); as Founders, with at least 500 euros a month of consumption; form on the Early Stage page. AWS, Activate Founders: $1,000, up to $5,000; self-funded, pre-Series B, founded in the last 10 years, account on the Paid Tier plan; aws.amazon.com/startups. AWS, Activate Portfolio: up to $200,000; through an Activate Provider (an investor or accelerator), pre-Series B; same link, with the provider's Org ID. Microsoft, Microsoft for Startups: up to $150K over time; for-profit software company, before Series C, under $350K lifetime Azure credits; startups.microsoft.com. Google Cloud, Google for Startups Cloud: $2,000 pre-funding; up to $350,000 for AI startups; seed to Series A, founded in the last 5 years, under $5K prior credits; cloud.google.com/startup/apply. Cloudflare, Cloudflare for Startups: $10K, $100K or $350K by tier; by funding tier, first-time applicants, business email; cloudflare.com/lp/startups. Modal, Modal for Startups: unspecified 'thousands' in credits; new to Modal, VC-funded through a partner or over $1M raised; modal.com/startups. Anthropic, Startup programme: $1,000 API credits, a year of Claude Team, up to $45K in partner offers; founded in the last 5 years or funded in the last 2; platform.claude.com/offers/startups-application. Two that look like startup programmes are not, for this purpose: MacStadium's open-source programme (a free Mac mini for unpaid maintainers; a commercial product does not qualify and should not be dressed up as one) and Hetzner's referral credit, which could not be confirmed from an official page on the day. Dinis's gen-zx article calls this 'the only table of startup cloud credits (AWS, Microsoft, Google, Anthropic)'; the table also carries E2B, Daytona, Scaleway, Cloudflare and Modal. The ElevenLabs grants programme (twelve months, 33 million characters, companies under 25 people with a monetised use; characters cannot be exchanged or resold) and AssemblyAI's twelve months of recurring credits are in the-key-is-the-billing-system, read on 12 October 2026, and belong in the same chapter.", "gravity": "all", "topic": "be-a-founder", "chapter": "the-credits-and-programmes-2026", "batch": "rc2", "url": "graph/ideas/startup-credits-october-2026.html", "sources": [{"ref": "news:an-agent-desktop-by-the-minute", "where": "The programmes that would pay for finding out (the table)"}], "answers": ["2.mvp-for-gen-z-dev/draft/aws.md"]}, "idea:apply-with-the-work-as-the-application": {"id": "idea:apply-with-the-work-as-the-application", "kind": "idea", "title": "Apply only where you meet the criteria, with the page that says what you would do, and publish the results", "statement": "Before applying to a credit programme, check each criterion against your own age, funding and customer status, and apply only where they are met; do not dress a commercial product up as an open-source project to fit a programme that is not for it. Apply with the published page that describes what you would do with the credits, and offer the provider the result: the same tasks run on their product next to the others, measured rather than read, published with the gaps. Ask the questions the programme pages do not answer before relying on them (what the credits cover, when they expire, whether a monthly fee is paid from them).", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The billing article adds the method for writing to providers: principles first, one sentence as the ask, send the research already done ('a provider that can see the research already done tends to answer the question that was actually asked'), agents draft and the founder sends, and every answer recorded as an issue with its date.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "the-credits-and-programmes-2026", "batch": "rc2", "url": "graph/ideas/apply-with-the-work-as-the-application.html", "sources": [{"ref": "news:an-agent-desktop-by-the-minute", "where": "The programmes that would pay for finding out; If you run one of these programmes"}, {"ref": "news:the-key-is-the-billing-system", "where": "The brief for the agents that will write to them"}], "answers": []}, "idea:the-model-cannot-be-the-barrier": {"id": "idea:the-model-cannot-be-the-barrier", "kind": "idea", "title": "The desktop is the barrier, not the model: prompt injection is not solved, so the box has to hold", "statement": "Anthropic's own measurements of prompt injection in browser use went from a 23.6% attack success rate without mitigations to 11.2% in August 2025 and to about 1% in November 2025, a rate that in their words 'still represents meaningful risk'; Brave showed in October 2025 that nearly invisible text in screenshots could hijack agentic browsers; OpenAI wrote that it is unlikely ever to be fully solved. A desktop shows an agent pages, documents and emails written by other people, so over a working month the question is not whether a page will try but what the agent can do when one succeeds. An egress allowlist limits where it can send, a box without secrets limits what it can send, a revocable identity limits for how long, a recording says what happened; the model's defences reduce how often that matters and do not replace it. One mandate per task, written before the desktop exists, and the desktop configured from it.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The nine properties of a locked-down agent desktop: isolation, an egress allowlist, secrets kept outside, an identity of its own, a live view and takeover, a record, a clean reset, billing that follows the work, the right desktop. On 7 October 2026 every one could be bought somewhere and no single product had all nine; the three that stop a hijacked agent doing damage (allowlist, secrets outside, own identity) were documented on one product, with two of them in private beta there. The OpenAI quote is from news coverage. Extends mandate-reach-gap and not-on-your-laptop with the desktop case.", "gravity": "villager", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/the-model-cannot-be-the-barrier.html", "sources": [{"ref": "news:an-agent-desktop-by-the-minute", "where": "The model cannot be the barrier; What locked down means; What we would build from what exists"}], "answers": ["6.security/dont-touch-production.md", "6.security/threat-modeling.md"]}, "idea:a-vault-server-in-83-lines": {"id": "idea:a-vault-server-in-83-lines", "kind": "idea", "title": "A read-only vault needs no code; a read-write vault server is 83 lines on a free plan", "statement": "Because the sgit server never sees a key or a plaintext byte, it has almost nothing to do, and that is what the test showed on 18 October 2026. Read-only: no code at all; sgit publish writes a folder any static host can serve, and the real client cloned it back identically. Read-write: one Worker of 83 lines, one R2 bucket and one Durable Object per vault, all on Cloudflare's free plan, run in Cloudflare's own runtime locally with the real client: create, push, clone; a stale push that merged; two pushes at once where one was told nothing was overwritten; a read-only clone that refused to write; a wrong write key answered 403; and no plaintext anywhere in what the server stored. It has not yet run on a real account, does not do files over 4 MB, and has one shared access token.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The value of constraints in practice, in the article's own words: 'because the server can read nothing, it has almost nothing to do.' A nuance for the book's 'no servers of mine with logic in them': the 83 lines are logic of yours, the small commodity function the no-server article allows for the one real limit (writes that must be checked). The Worker and its wrangler configuration are printed in full in the article, so the weekend chapter can point at them rather than reprint them.", "gravity": "explorer", "topic": "building-blocks", "chapter": "ship-a-serverless-product-in-a-weekend", "batch": "rc2", "url": "graph/ideas/a-vault-server-in-83-lines.html", "sources": [{"ref": "news:cloudflare-as-lego-blocks", "where": "An sgit vault on Cloudflare"}], "answers": ["5.concepts/serverless.md"]}, "idea:reach-is-a-computed-value": {"id": "idea:reach-is-a-computed-value", "kind": "idea", "title": "Reach is a computed value, and new capability lands as excess, never as new authority", "statement": "What an agent can reach is not a document but the output of a calculation, so the question to answer is what calculates it and whether that is a one-time snapshot or wired to the pipeline. When a connector or integration is added the reach grows, the gap recomputes and a re-review follows; the mandate is locked business logic that changes only through change control, so a new capability can only land in the gap as excess, never as new authority. Unbounded includes volume: an agent permitted £10k per action that can perform a thousand actions carries a £10m exposure.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Status in the article: MVPs and proofs of concept, complete for simple single-agent deployments. The question's example is in dollars ($25k cap, $75k order) and the answer's in pounds (£10k mandate, £100k reach); the book should pick one currency.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/reach-is-a-computed-value.html", "sources": [{"ref": "news:riskmandate-ten-questions", "where": "2. How do we keep behaviour policies current as agents gain new powers?; 1. What happens when an agent bypasses its behaviour policy?"}], "answers": ["5.concepts/changes.md", "6.security/3rd-party-modules.md"]}, "idea:who-can-pull-the-plug": {"id": "idea:who-can-pull-the-plug", "kind": "idea", "title": "Who can pull the plug: an agent that cannot be stopped is riskier than one that can", "statement": "Most AI projects do not fail technically; they stall when the business finally asks the good questions: can you stop it, what if it issues ten thousand of something, who is liable. Every board asks the same question about an agent in one sentence, who can pull the plug, how fast, what breaks and what cannot be undone, and a deployed agent's risk cannot be denied, only accepted by a named owner for an interval with an expiry. An agent that cannot be stopped is far riskier than one that can; containment (terminate, revoke, block, quarantine, ticket) is designed in advance and executed by the company's own stack.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "RiskMandate's position as the article states it: not inline, not an insurer, not a one-button solution; it 'makes agents insurable' and does not insure them; no risk transfer exists today.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/who-can-pull-the-plug.html", "sources": [{"ref": "news:riskmandate-ten-questions", "where": "4. How are we insuring or assuring agent behaviour?, 'An audit trail is not a guarantee'; 8. Remediation when a policy is bypassed; 10. Measurable business and technical outcomes, Getting to production"}, {"ref": "news:what-can-your-agent-reach", "where": "How does it get into the room?, the board's risk appetite"}], "answers": ["6.security/dont-touch-production.md", "5.concepts/chaos-engineering.md"]}, "idea:sell-the-build-not-the-code": {"id": "idea:sell-the-build-not-the-code", "kind": "idea", "title": "Open source everything, and sell the customised, tested, maintained build", "statement": "Everything the company builds is open source, with no proprietary layer; what the customer buys is a build for them, sometimes with fewer features and so less attack surface, tested on their target, maintained as models, connectors and threats change, with someone accountable for it, and cheaper through you than doing it themselves. Not a donation, and not a licence that gives you a reason to make the free version worse. In the article's simulation, customised builds for companies cover one project's long-tail cost in 94% of draws, donations in 24%, and about £1.80 a machine a year from individuals covers it in half the draws with typical conversion; no price reaches nine in ten.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article says the model is a model, not a forecast, and that the three assumptions that move it most (how many machines are out there, willingness to pay, the share on the long tail) are not well measured in public data. Quote worth keeping: 'The value is the support, not the code, so the code can stay open.' The ten-questions article calls the moat 'delivery, maintenance and trust', not lock-in.", "gravity": "villager", "topic": "open-source", "chapter": "open-source", "batch": "rc2", "url": "graph/ideas/sell-the-build-not-the-code.html", "sources": [{"ref": "news:open-source-is-not-free", "where": "What this says; Five ways to pay for the long tail, simulated; What price pays for the long tail?"}, {"ref": "news:riskmandate-ten-questions", "where": "3. Can policies be tailored to my stack, and what am I paying for?, What you pay for"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md", "4.life-patterns/content/be-a-founder.md"]}, "idea:answer-the-hard-questions-and-check-your-own-site": {"id": "idea:answer-the-hard-questions-and-check-your-own-site", "kind": "idea", "title": "Answer the hard questions in full, publish what is live and what is design, and check your own site against the answers", "statement": "When a buyer's, investor's or competitor's hard questions come back from a conference, answer them in one structured interview with an agent acting as a journalist that challenges every answer until the set holds together; publish an honest maturity table of what is live and what is design; and check the answers against what the company has already published. The exercise found three contradictions on RiskMandate's own site: a homepage saying 'enforced in real time', an insurance page in the present tense for things that were design, and a Level 1 price of £10 on two pages and £5 on a third.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Could also sit in facts-and-the-record; placed in sell because the questions are a buyer's. The line that closes the set: 'Where we are early, we say so.'", "gravity": "villager", "topic": "facts-and-the-record", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/answer-the-hard-questions-and-check-your-own-site.html", "sources": [{"ref": "news:riskmandate-ten-questions", "where": "Where this comes from; Honest maturity, across all ten; Three things this exercise showed we must fix on our own site"}], "answers": ["5.concepts/facts.md", "5.concepts/amazon-press-releases.md"]}, "idea:a-policy-beside-the-prompt": {"id": "idea:a-policy-beside-the-prompt", "kind": "idea", "title": "A third input: a behaviour policy beside the system prompt and the prompt, which the vendor acknowledges, enforces where it can and answers for", "statement": "An agent today gets a system prompt from its vendor and a prompt from us; it should also take an Agent Behaviour Policy, written to a published standard, which the vendor accepts as part of the deployment, enforces as far as the platform can see, reports every breach against the same day and, eventually, carries liability for the rows it accepted. The user answers for what is outside the policy and the vendor for what is inside it, which is a better model than the user being liable for everything because they clicked allow. Most agents already run a hidden policy of their own (Claude in Chrome will not type a password), and a system prompt is a light behaviour policy not written as one; the layering is the vendor's published policy, then the deployer's, with the business logic only the deployer can write.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A proposal: the article says no vendor accepts a behaviour policy as an input today in this sense; Claude Code's permission rules and managed settings are the nearest thing and cover settings, not business rules. Liability per row is the end state, not the start; acknowledgement and breach reporting can come first.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/a-policy-beside-the-prompt.html", "sources": [{"ref": "news:a-policy-beside-the-prompt", "where": "The idea: a policy beside the prompt; The user answers outside the policy, the vendor inside it; A system prompt is a light behaviour policy; Most agents already run a policy"}], "answers": ["6.security/threat-modeling.md"]}, "idea:code-and-data-in-one-channel": {"id": "idea:code-and-data-in-one-channel", "kind": "idea", "title": "Models do not separate code from data, so a rule in the prompt can be argued with by an email", "statement": "In a computer the instructions and the data they operate on are kept apart, and most of the worst security bugs in history, from buffer overflows to SQL injection, are what happens when that separation breaks; in a language model there is no separation to break, every instruction and every piece of content arrives in the same channel, and the UK's National Cyber Security Centre said in December 2025 that prompt injection may never be mitigated the way SQL injection was. A behaviour policy does not fix this; it moves the most important instructions, what the agent may do, into a channel the content cannot reach, loaded by the platform, versioned, signed and checked outside the model where it can be.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Sits beside secrets-never-in-the-chat (the lethal trifecta) and is the reason mandate-reach-gap calls a rule in a prompt hope. Quote worth keeping, Simon Willison's: 'LLMs follow instructions in content'.", "gravity": "all", "topic": "security-agent-era", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/code-and-data-in-one-channel.html", "sources": [{"ref": "news:a-policy-beside-the-prompt", "where": "The old problem: code and data in one channel; What this does not claim"}], "answers": ["6.security/strings-should-be-banned.md", "6.security/pointers.md"]}, "idea:aviation-and-payments-got-safe-when-liability-landed": {"id": "idea:aviation-and-payments-got-safe-when-liability-landed", "kind": "idea", "title": "Aviation and payments got safe when the rule, the liability and the business model pointed the same way", "statement": "Aviation did not get safe out of altruism but because every crash became news: at 1995's rate of 2.72 fatal airliner accidents per million flights, 2025's 38.7 million flights would have meant about 105 fatal accidents; there were 12. Payments got some of the best security teams anywhere because the liability was moved onto the companies: a US cardholder liable for at most $50 since 1970, £35 in the UK, the 2015 liability shift onto whoever had not adopted chip cards, the PCI council founded by the card brands in 2006, and UK banks reimbursing scam victims up to £85,000 since October 2024, after which losses fell by around 21%. Regulation alone does not do it (Meta's €1.2 billion GDPR fine in 2023, €200 million in 2025); the improvement comes where a rule, a liability that lands on the company and a systemic risk to the business model line up, and agents can be that case.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article's own caveats: the aviation numbers mix sources (Aviation Safety Network via Our World in Data, the Flight Safety Foundation, IATA); the 21% fall is one evaluation's estimate; 'it does not take many users' to lose trust in agents is Dinis's judgement with no number behind it.", "gravity": "town-planner", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/aviation-and-payments-got-safe-when-liability-landed.html", "sources": [{"ref": "news:a-policy-beside-the-prompt", "where": "Aviation did not get safe out of altruism; Payments got safe because liability moved; Regulation alone does not do it"}], "answers": ["6.security/bug-bounties.md", "5.concepts/gdpr.md"]}, "idea:the-policy-is-the-business-logic": {"id": "idea:the-policy-is-the-business-logic", "kind": "idea", "title": "Zoom into an agent's behaviour policy and you find the business logic, which only the business can write", "statement": "The first rules anybody writes for an agent are mechanical and the same in every company: do not send, only draft; do not delete; use your own account. A few questions in (which drafts may it send, can it mention a price, can it chase an invoice finance has not approved, can it write to a client in dispute) you are describing the business, in layers with different owners: the function, the process, the relationship, and what the company is for. Vendors stop at the mechanics by the shape of the problem, since a vendor that models each customer's business becomes a consultancy; the business layers are the customer's to write, and written together with skills (a skill says how, a policy layer says what is allowed, who owns the rule and what stands in the way) they are the business codified for an agent, which is what lets a company hand it real work and scale.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article's own five readers flag that its front matter overstates the body: 'the only way to describe agent behaviour at the granularity a business actually runs at' is unsupported; the body says only that a fractal structure is the one Dinis found that can hold it. The register should not say 'only way'. The firm, its rules and its counts are fictional on purpose.", "gravity": "villager", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/the-policy-is-the-business-logic.html", "sources": [{"ref": "news:the-behaviour-policy-is-the-business-logic", "where": "Above the mechanics is the business; Why the vendors stop at the mechanics; It looks a lot like a skill"}], "answers": ["5.concepts/design.md", "4.life-patterns/workflows.md"]}, "idea:software-was-the-law": {"id": "idea:software-was-the-law", "kind": "idea", "title": "Software was the law: the rule the screen enforced by omission is no longer enforced once an agent calls the API", "statement": "Companies never wrote their business logic down because they did not need to: a clerk could not send an unapproved invoice because the finance system had no button for it until the approval was recorded, and a support agent could not see payment details because their role did not include the screen. An agent works through APIs, not screens, and can call the endpoint the button would have called, so the rule the user interface enforced by omission is no longer enforced unless somebody writes it down and something enforces it; the behaviour policy is where it gets written down.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The Historian's reading of the article calls this its nugget: 'every later article is about the \"something enforces it\" half.' Approval chains, RBAC, field-level permissions and workflow engines are where privacy decisions and much of practical governance live.", "gravity": "all", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/software-was-the-law.html", "sources": [{"ref": "news:the-behaviour-policy-is-the-business-logic", "where": "Software was the law"}], "answers": ["5.concepts/legacy-applications.md", "5.concepts/gdpr.md"]}, "idea:control-accepted-risk-or-hope": {"id": "idea:control-accepted-risk-or-hope", "kind": "idea", "title": "Every rule lands in one of three states: backed by a control, governed by an accepted risk, or resting on hope", "statement": "For each rule the policy records what stands in the way: nothing, an expectation (a rule in prose, enforced by nobody), a setting the agent's own account can flip, or a boundary enforced above it, and only the boundary is a control. Add one more fact, whether a named person has accepted the risk of the rule not being enforced, with an expiry, and every rule is a control, an accepted risk or hope, which can be counted. In the article's fictional firm 5 of 17 rules are backed by a control, 6 by an accepted risk and 6 by hope; the platform layer is all control, the organisation layer all hope, and each existing product (a send gateway, an outbound content check, a blocked-recipients list) moves one row.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Adds the third state, accepted risk, to mandate-reach-gap's hope versus enforcement. The proportions are illustrative; the article says the shape is the point. Resting on hope is not a failure, most of a business has always run on people behaving as asked, but with an agent it can be counted.", "gravity": "villager", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/control-accepted-risk-or-hope.html", "sources": [{"ref": "news:the-behaviour-policy-is-the-business-logic", "where": "How much of it is hope?; Where the vendors plug in"}], "answers": ["6.security/threat-modeling.md"]}, "idea:open-source-is-not-free": {"id": "idea:open-source-is-not-free", "kind": "idea", "title": "Open source is not free: somebody pays, and the people who get the value have no easy way to", "statement": "Somebody is paying for open source, even if only with their time. The long tail is measurable and not small: 6.99% of Homebrew's macOS install events in the last 30 days, and 16.66% over a year, came from versions older than the newest three, and 18.55% of pip downloads run on end-of-life Python. Money flows to old versions when a vendor owns them (Oracle earned $19.8 billion from support last year; Red Hat's subscriptions ran at about 93% gross margin) and not when a community does: open source receives about 0.09% of its estimated value in investment, and 60% of maintainers describe themselves as unpaid hobbyists. The question was never whether somebody pays; it is whether the people who get the value have an easy way to pay for it.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The case that started it: an Intel iMac clean-installed with macOS 13 for Dinis's agents could not run Homebrew or Docker Desktop and needed Python by hand; the research corrected the story (only the 2017 iMacs stop at Ventura; Homebrew now refuses the CPU, not just the OS). The xz maintainer wrote 'this is an unpaid hobby project' two years before the backdoor.", "gravity": "all", "topic": "open-source", "chapter": "open-source", "batch": "rc2", "url": "graph/ideas/open-source-is-not-free.html", "sources": [{"ref": "news:open-source-is-not-free", "where": "In short; The long tail, measured; Where the money flows"}], "answers": ["2.mvp-for-gen-z-dev/content/open-source.md", "6.security/3rd-party-modules.md"]}, "idea:pence-only-work-aggregated": {"id": "idea:pence-only-work-aggregated", "kind": "idea", "title": "Below about five pounds the card fee is the price, so pence payments only work aggregated", "statement": "Stripe's standard UK rate is 1.5% plus 20p: on a £20 payment that is 2.5%, on £5 it is 5.5%, on 50p it is 41.5%, and on 10p it is more than the payment. So payments of pence only work aggregated: one charge a year that covers many projects, or a platform that already holds a balance and settles in bulk, which is how the newsroom's reading meter prices a page at a few pence against £5 of credit settled as one balance. Payment also has to be tied to a verified user who receives something, not to a count: when tea.xyz rewarded package popularity with tokens, one developer published nearly 14,000 packages.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article finds the card-versus-platform difference smaller than expected at £2 to £3, where the 20p fee is under 10%; aggregation matters below about £1.", "gravity": "villager", "topic": "be-a-founder", "chapter": "price-it-then-give-it-away", "batch": "rc2", "url": "graph/ideas/pence-only-work-aggregated.html", "sources": [{"ref": "news:open-source-is-not-free", "where": "The pence problem; Why not just charge?, Per-install rewards get gamed"}], "answers": ["5.concepts/karma-points.md"]}, "idea:the-agents-leave-a-record": {"id": "idea:the-agents-leave-a-record", "kind": "idea", "title": "'Nobody knows how it is built' is fixable: make the agents leave a record, a mandate, a memory and a graph", "statement": "HBR's warning that the AI designs the architecture so nobody in-house knows how the tool is built is true of most agent-built software today and does not have to be. If the agents work under a written mandate, keep their memory in a versioned store the company owns, and describe what they built as a graph, the architecture is a record the next team can read, not a mystery. A prototype ready for the villagers looks like Mondweep Chakravorty's SGit and Ruflo run: versions pinned, sixteen tests, a folder of evidence, a written behaviour policy, and a README that says plainly what it does not do yet.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The article says the record is a proposal, not a standard: this site runs it; few organisations do yet. Dinis declares a stake: his companies sell open source and this kind of record.", "gravity": "villager", "topic": "working-with-agents", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/the-agents-leave-a-record.html", "sources": [{"ref": "news:who-will-fix-your-mess", "where": "'Nobody knows how it is built' can be fixed"}], "answers": ["5.concepts/legacy-applications.md", "7.your-cv/future-self.md"]}, "idea:the-bonus-test-is-accountability": {"id": "idea:the-bonus-test-is-accountability", "kind": "idea", "title": "The bonus test: if nobody will put their name or their bonus on it in production, it is not ready to be in line", "statement": "HBR's test for a chief executive, would your team accept a bonus tied to how this tool performs in production, is the town planner's accountability by another name: the moment someone takes the code and answers for it. The industry already says whoever ships code is responsible for it however it was written: the Linux kernel's rules say AI agents must not add Signed-off-by tags and only humans can certify the Developer Certificate of Origin, and Fedora's proposal says the contributor is always the author and fully accountable. An explorer cannot be made accountable for code they never read; the team the work is handed to can, and the town planners above all.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": null, "gravity": "town-planner", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/the-bonus-test-is-accountability.html", "sources": [{"ref": "news:who-will-fix-your-mess", "where": "The bonus test is accountability"}, {"ref": "news:explorer-coding", "where": "Villagers and town planners"}], "answers": ["4.life-patterns/pionners-settlers-town-planners.md", "6.security/dont-touch-production.md"]}, "idea:lithuania-two-lines": {"id": "idea:lithuania-two-lines", "kind": "idea", "title": "What the newsroom says about Lithuania and the Portuguese company, as of 12 October 2026: two lines", "statement": "The company Dinis created in Portugal for MyFeeds is being closed, because running a company with little revenue in Portugal is expensive in a way it is not in England; he is looking at Lithuania for the next one, for its digital advantages. The article's own limit: the company move is a consideration, not a decision; Lithuania is being looked at and nothing has been registered.", "idea_kind": "evidence", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "This is all the newsroom has on Lithuania and on the Portuguese company. It is the evidence behind the Lithuania and Portugal lines of the-company-itself-for-real until the journalist's gap articles arrive; the book should not say more than this from this source.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "the-company-itself", "batch": "rc2", "url": "graph/ideas/lithuania-two-lines.html", "sources": [{"ref": "news:not-a-straight-line", "where": "The line that runs back, last paragraph; What this does not claim, 'The company move is a consideration, not a decision'"}], "answers": []}, "idea:the-thinking-is-never-wasted": {"id": "idea:the-thinking-is-never-wasted", "kind": "idea", "title": "The thinking is never wasted: pause in the open and pick up when the moment comes", "statement": "The Cyber Boardroom, a GenAI platform for boards with an advisor called Athena, taught Dinis what personas and customised output are worth and paused because nobody wants confidential board material in an environment somebody else runs; what it needed is what he later built as sgit. MyFeeds built personalised feeds on semantic graphs, found the industry silent on graphs, micropayments and paying the people who write, and paused. The 2025 writing on monetising trust, fact provenance and micro and nano payments is what the newsroom now stands on, and he is going back to the publishers with an end-to-end example; if it does not land in 2026 he will try in 2027. Because it was open and written down, it was there when the moment came.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The Cyber Boardroom and MyFeeds are summarised from memory in the article, and the proofs of concept are not all published. For the founder it illustrates connect-the-dots-backwards: a pivot leaves assets when it is done in the open.", "gravity": "explorer", "topic": "publish-in-public", "chapter": "connect-the-dots-backwards", "batch": "rc2", "url": "graph/ideas/the-thinking-is-never-wasted.html", "sources": [{"ref": "news:not-a-straight-line", "where": "The line that runs back; Going back, with something that works; The thinking is never wasted"}], "answers": ["4.life-patterns/content/talking-to-yourself.md", "4.life-patterns/content/backup-your-life.md", "7.your-cv/future-self.md"]}, "idea:your-newsroom-is-your-demo-and-your-crm": {"id": "idea:your-newsroom-is-your-demo-and-your-crm", "kind": "idea", "title": "Your own newsroom is the public example of your product, and underneath it a CRM and a publishing workflow", "statement": "The hardest part of selling behaviour policies and licences to operate is showing them in action, because customer work cannot be shared; the ecosystem around the newsroom, its agents, their behaviour policy, the status report every few answers, the leak scan before every commit, the releases with their logs, is the best public example RiskMandate has of a policy under real load every day. And a very effective newsroom is, underneath, a very effective CRM and publishing workflow: agents that follow up people and threads, draft, publish and keep a record, matured by readers in a way the product's own volumes could not yet force. Follow the users and the feedback loops, even when the user is you.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "RiskMandate's traction is described, not measured, in the article.", "gravity": "explorer", "topic": "publish-in-public", "chapter": "your-own-newsroom", "batch": "rc2", "url": "graph/ideas/your-newsroom-is-your-demo-and-your-crm.html", "sources": [{"ref": "news:not-a-straight-line", "where": "The newsroom is RiskMandate's workflow, and its example; Why the newsroom could solve it and RiskMandate could not"}], "answers": ["7.your-cv/blogs.md", "4.life-patterns/publish-publish-publish.md"]}, "idea:not-ready-to-be-in-line": {"id": "idea:not-ready-to-be-in-line", "kind": "idea", "title": "An explorer-coded app is a brief, not a product: not ready to be in line, and the further towards commodity the fewer agents in line", "statement": "An explorer-coded app may look and feel like an application, but nobody has read the code or validated the architecture, so it is not ready to be in line, in the path of work other people depend on. Dependence comes quickly: once something is used it is mission critical, even for one person if it replaced how they work, and from then on new versions cannot break it. The direction is set by where the code sits on the map: the further towards commodity, the fewer agents in line and the more deterministic the code; a model has no place in line on a mission-critical path.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Pairs with the-handover (the move itself) and the-bonus-test-is-accountability (who answers for it). 'A model has no place in line on a mission-critical path' is quoted in the article from Dinis's code review piece.", "gravity": "villager", "topic": "explorers-villagers-town-planners", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/not-ready-to-be-in-line.html", "sources": [{"ref": "news:explorer-coding", "where": "Not ready to be in line; Villagers and town planners"}], "answers": ["5.concepts/legacy-applications.md", "6.security/dont-touch-production.md"]}, "idea:an-explorer-version-of-every-product": {"id": "idea:an-explorer-version-of-every-product", "kind": "idea", "title": "Every product needs an explorer version, with paid conversions to a villager product and a town planner one", "statement": "Products need an explorer version in which users talk to the product with a model, reshape it, move things around and keep their own version, the product treated as primitives. When a user has something they want to keep they submit it, which is the brief, and pay to convert it into a villager product maintained across releases and, if it matters enough, a town planner product built properly or kept as a maintained fork. Each step is a revenue stream and each submission tells the vendor exactly what its users want; the same path should exist inside companies, between a department and its engineers, and around open-source projects, between users and maintainers.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A proposal: the article knows of no vendor selling it. Could also sit in price-it-then-give-it-away as a pricing model; placed in the handover chapter because it is the handover, sold.", "gravity": "explorer", "topic": "be-a-founder", "chapter": "explorer-coding-and-the-handover", "batch": "rc2", "url": "graph/ideas/an-explorer-version-of-every-product.html", "sources": [{"ref": "news:explorer-coding", "where": "An explorer version of every product"}], "answers": ["5.concepts/feedback-loops.md", "5.concepts/karma-points.md"]}, "idea:twenty-minutes-with-your-own-assistant": {"id": "idea:twenty-minutes-with-your-own-assistant", "kind": "idea", "title": "Write down what your agent can reach in twenty minutes: list its tools, say what you wanted it for, write the gap", "statement": "Few people have seen the list for their own agents. Paste the thirteen prompts from RiskMandate's try-it page into the assistant you already have connected to your mail: the first asks it to list its own tools ('the list is longer than the tile that sold it'), the second asks it to draft what you actually wanted it for in three lists, wanted, refused, never mentioned ('the correction is almost always downward'), the third writes the gap down. About twenty minutes, and nothing is collected. It is a self-report, the cheapest evidence there is and the weakest; a measured policy marks each row as measured, documented or inferred.", "idea_kind": "method", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A candidate for the hands-on part if a chapter on a first behaviour policy is added; none of the hands-on chapters covers it today. The paid levels are offerings, not a track record: the pricing page marks the £500 and £1,500 levels 'specified, never run' as of 15 September 2026.", "gravity": "all", "topic": "controlling-your-agent", "chapter": "controlling-your-agent", "batch": "rc2", "url": "graph/ideas/twenty-minutes-with-your-own-assistant.html", "sources": [{"ref": "news:what-can-your-agent-reach", "where": "Yes, it reports what an agent can actually do; How does it get into the room?, Twenty minutes"}], "answers": ["6.security/threat-modeling.md"]}, "idea:answer-the-question-already-in-the-room": {"id": "idea:answer-the-question-already-in-the-room", "kind": "idea", "title": "Do not sell the need; answer a question somebody already has to answer, with a deadline", "statement": "There are two groups, the people who see how fast agents are moving and the much larger group who do not, and the second group will not ask for an agent risk tool because they do not see the risk. The way in is a question somebody already has, with a deadline, in the language of the room: a contract, where legal and procurement ask what a vendor's agent will do with the data; a security questionnaire, where a startup's first serious enterprise customer asks which agents touch their data and how they are bounded; an insurance renewal, where the question is whether AI is excluded from cover; the board's risk appetite; and twenty minutes with the assistant you already run. None of these asks anyone to understand agents first.", "idea_kind": "advice", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "A founder is on both sides: as the seller, and as the startup that, in the article's words, will be diligenced on its agents before long. The insurance argument is RiskMandate's, summarised from its pages, not independently surveyed.", "gravity": "villager", "topic": "be-a-founder", "chapter": "sell", "batch": "rc2", "url": "graph/ideas/answer-the-question-already-in-the-room.html", "sources": [{"ref": "news:what-can-your-agent-reach", "where": "How does it get into the room?"}], "answers": []}, "idea:the-plumbing-is-the-states-road": {"id": "idea:the-plumbing-is-the-states-road", "kind": "idea", "title": "The opportunity for a small country is the plumbing, built once by the state like a road, not the race for GPUs", "statement": "Frontier models, GPUs and data centres sit at the commodity end of the map with a lead a small country cannot buy back, so it should not enter that race. What stops a talented person in Braga or Cluj selling a service to the world is not talent, energy or price but forming a company, hiring across a border, being paid across Europe, working in another language, a contract, an invoice, a tax form, each custom built every time in most of Europe when it should be infrastructure the state built once, like the road the shop did not pay for. In 2021, 18.5% of EU enterprises sold online to customers in their own country, 8.1% to other EU countries and 4.6% to the rest of the world. Estonia built the road: more than 142,000 e-residents and more than 43,000 companies, over 4,200 of them founded in 2026 by mid-September, on X-Road, open source under the MIT licence and connecting around a thousand organisations.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "Sharpens hack-your-country's 'judo for small countries' into the claim itself. The article says it is not a national strategy, the Eurostat figure is for 2021, and Estonia is a case study, not a template. For the founder it is the other side of the-company-itself: the plumbing a founder in the EU still builds alone.", "gravity": "town-planner", "topic": "civic-and-history", "chapter": "civic-responsibility", "batch": "rc2", "url": "graph/ideas/the-plumbing-is-the-states-road.html", "sources": [{"ref": "news:judo-for-small-countries", "where": "The race you cannot win, and should not enter; The opportunity is the plumbing; Infrastructure is the state's job"}], "answers": ["4.life-patterns/civic-responsibility.md"]}, "idea:what-the-state-pays-for-belongs-to-the-commons": {"id": "idea:what-the-state-pays-for-belongs-to-the-commons", "kind": "idea", "title": "No sovereignty without open source and open schemas; what the state pays for belongs to the commons; buy the alternative before the day you need it", "statement": "Sovereignty means you can leave: a road with a toll gate owned by one company is lock-in with tarmac, and independence is the ability to run a parallel service, move the data and keep going, which exists only if the code and the schemas are open. What the public paid for should be available to the public, not so everyone changes the production system but so everyone can see it, run it and leave with their data, which is also how the local industry around it comes into being. And a market for the alternative does not appear on the day the single point of failure fails: run parallel services, buy the local or open alternative for part of the estate now and accept fewer features, and use procurement, the lever a state already holds, to prefer open schemas and data mobility.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The five-move playbook: map the attrition, commoditise the plumbing, create the demand, put the money where the market is genesis, regulate what settled, then map again. hack-your-country already cites sovereignty-is-the-ability-to-move for the test; this is the civic argument behind it, and the resilience case rather than an ideological one.", "gravity": "town-planner", "topic": "civic-and-history", "chapter": "civic-responsibility", "batch": "rc2", "url": "graph/ideas/what-the-state-pays-for-belongs-to-the-commons.html", "sources": [{"ref": "news:judo-for-small-countries", "where": "Why it has to be open source; Create the demand before the day you need it; The playbook"}], "answers": ["4.life-patterns/civic-responsibility.md", "2.mvp-for-gen-z-dev/content/creative-commons.md"]}, "idea:smaller-models-more-of-them": {"id": "idea:smaller-models-more-of-them", "kind": "idea", "title": "Smaller models, more of them, with the least agency: a public model is a public road, and constraints are the input", "statement": "Most work does not need a frontier model and should not use one: frontier models are for finding the art of the possible, and for things that have to work every day at a price they are too expensive, too much power for the task and dangerous in proportion; the right end state uses the model once to build the tool, and production is plain files and plain code with no prompt in the path, with agents given the least agency that does the job. The market still at genesis is small open models for each language and culture, the Portuguese of Portugal, Brazil, Angola, Cape Verde and Mozambique, not one Portuguese; Portugal released Amalia on 1 July 2026, built by a consortium of universities with 5.5 million euros of EU recovery money and published with its dataset and code under an open licence. Constraints are the input: DeepSeek's V3 was trained in 2.788 million GPU hours on export-restricted H800 chips, and the constraint produced the innovation.", "idea_kind": "claim", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "'The model is used once to build the tool, and production is plain files and plain code' is also a building principle for ship-now-ship-serverless and not-ready-to-be-in-line. The DeepSeek example is about constraint, not cost: the dollar figure is disputed and the article does not rely on it.", "gravity": "all", "topic": "civic-and-history", "chapter": "civic-responsibility", "batch": "rc2", "url": "graph/ideas/smaller-models-more-of-them.html", "sources": [{"ref": "news:judo-for-small-countries", "where": "Smaller models, more of them; Constraints are the input"}], "answers": ["3.technologies/content/ml-ai.md", "4.life-patterns/civic-responsibility.md"]}, "idea:millions-on-a-distributed-workforce": {"id": "idea:millions-on-a-distributed-workforce", "kind": "idea", "title": "What spending millions on Upwork taught: build the infrastructure first, and the jobs can go back to where people came from", "statement": "As a CISO and CTO Dinis spent millions on Upwork across the open source projects and the teams he ran, and it was one of the most successful things they did: distributed teams, people as good as or better than those hired the ordinary way, delivered faster and more efficiently. It worked because they invested first in the infrastructure around it, a project management team, a structure team and an onboarding team, and then used Upwork to manage Upwork, so the internal teams carried no overhead. It was never buying the cheapest: it was the right talent at a price fair where they lived, good value for both sides and a real career for the person. A small country that builds the plumbing makes the jobs available everywhere inside it, so people can go back to where the family and the lifestyle are; Romania's technology sector is close to 8% of GDP with more than 250,000 professionals and over ten billion euros a year of service exports.", "idea_kind": "story", "state": "candidate", "destination": "this-edition", "decided_by": null, "notes": "The Upwork spend and outcomes are Dinis's own and not independently verifiable from the article. Answers the 2018 Upwork outline from the hiring side rather than the freelancer's.", "gravity": "town-planner", "topic": "be-a-founder", "chapter": "the-company-itself", "batch": "rc2", "url": "graph/ideas/millions-on-a-distributed-workforce.html", "sources": [{"ref": "news:judo-for-small-countries", "where": "What I learned spending millions on a distributed workforce"}], "answers": ["7.your-cv/upwork.md", "4.life-patterns/why-diversity-matters.md"]}, "task:write-it-as-an-article:journalist:1": {"id": "task:write-it-as-an-article:journalist:1", "article": "art:write-it-as-an-article", "role": "journalist", "n": 1, "text": "Publish this article and the four that follow at `/articles/`, each with a markdown twin. Done when the site's gate passes with all five.", "title": "Publish this article and the four that follow at `/articles/`, each with a markdown twin", "state": "done", "evidence": "articles/ has nine articles with markdown twins; the gate passes (site v0.2.1 to v0.2.6)", "url": "articles/write-it-as-an-article.html#brief", "kind": "task"}, "task:write-it-as-an-article:journalist:2": {"id": "task:write-it-as-an-article:journalist:2", "article": "art:write-it-as-an-article", "role": "journalist", "n": 2, "text": "Put a brief in `team/publisher/briefs/` for article 2, and in `team/editor/briefs/` for articles 3, 4 and 5. Done when each role's page lists its brief.", "title": "Put a brief in `team/publisher/briefs/` for article 2, and in `team/editor/briefs/` for articles 3, 4 and 5", "state": "done", "evidence": "team/publisher/briefs/book__v1.0.0__release-the-book-we-already-released.md; team/editor/briefs/ has the three", "url": "articles/write-it-as-an-article.html#brief", "kind": "task"}, "task:write-it-as-an-article:journalist:3": {"id": "task:write-it-as-an-article:journalist:3", "article": "art:write-it-as-an-article", "role": "journalist", "n": 3, "text": "When a role's debrief comes back, read it against the article, and correct the article if the work found it wrong.", "title": "When a role's debrief comes back, read it against the article, and correct the article if the work found it wr", "state": "open", "evidence": "no debrief has come back yet (team/*/debriefs/ are empty)", "url": "articles/write-it-as-an-article.html#brief", "kind": "task"}, "task:write-it-as-an-article:dinis:1": {"id": "task:write-it-as-an-article:dinis:1", "article": "art:write-it-as-an-article", "role": "dinis", "n": 1, "text": "Read the five articles and correct what is wrong.", "title": "Read the five articles and correct what is wrong.", "state": "in-progress", "evidence": "the seven decisions of 18 October (decisions/) came from reading the first five", "url": "articles/write-it-as-an-article.html#brief", "kind": "task"}, "task:write-it-as-an-article:dinis:2": {"id": "task:write-it-as-an-article:dinis:2", "article": "art:write-it-as-an-article", "role": "dinis", "n": 2, "text": "Open a session as the publisher and point it at article 2; open one as the editor and point it at article 3.", "title": "Open a session as the publisher and point it at article 2; open one as the editor and point it at article 3.", "state": "open", "evidence": "no publisher or editor debrief yet", "url": "articles/write-it-as-an-article.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:1": {"id": "task:release-the-book-we-already-released:publisher:1", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 1, "text": "Copy the bookkit from graphs.sgit.ai (`admin/build/bookkit/`, and what `gen_book.py` needs) into `admin/build/`, with its origin and commit. Done when `build.py` imports it and nothing in it was rewritten for style.", "title": "Copy the bookkit from graphs.sgit.ai (`admin/build/bookkit/`, and what `gen_book.py` needs) into `admin/build/", "state": "open", "evidence": "admin/build/ has no bookkit", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:2": {"id": "task:release-the-book-we-already-released:publisher:2", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 2, "text": "Build the print PDF of v1.0.0 into `v1/publish/`, with the CC BY 4.0 copyright page. Done when it renders with every font embedded.", "title": "Build the print PDF of v1.0.0 into `v1/publish/`, with the CC BY 4.0 copyright page", "state": "open", "evidence": "no v1/publish/", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:3": {"id": "task:release-the-book-we-already-released:publisher:3", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 3, "text": "Match it to 2018: page count against 139, chapter order against `print-toc.json`, each chapter's first page against the 2018 one, and a page-by-page side by side as images. Done when the debrief shows the comparison and the differences left are explained.", "title": "Match it to 2018: page count against 139, chapter order against `print-toc.json`, each chapter's first page ag", "state": "open", "evidence": "no v1/publish/", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:4": {"id": "task:release-the-book-we-already-released:publisher:4", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 4, "text": "Diff the text: the 2018 GitHub issue 3 says fixes were made in the Leanpub build repository and not brought back to the source. Compare the 2018 PDF's text layer with the frozen markdown, chapter by chapter. Done when every difference is listed; each one is a text issue for the vault, not a change to `v1/`.", "title": "Diff the text: the 2018 GitHub issue 3 says fixes were made in the Leanpub build repository and not brought ba", "state": "open", "evidence": "no debrief", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:5": {"id": "task:release-the-book-we-already-released:publisher:5", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 5, "text": "Find out what each store accepts today: Leanpub (PDF, EPUB, MOBI?) and Amazon KDP (the paperback interior; the Kindle ebook format). Done when the debrief quotes each store's current guidance with its date.", "title": "Find out what each store accepts today: Leanpub (PDF, EPUB, MOBI?) and Amazon KDP (the paperback interior; the", "state": "open", "evidence": "no debrief", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:6": {"id": "task:release-the-book-we-already-released:publisher:6", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 6, "text": "Build the screen PDF, the EPUB, the Kindle format and the sample from the same source. Done when each opens, and the EPUB passes a validator.", "title": "Build the screen PDF, the EPUB, the Kindle format and the sample from the same source", "state": "open", "evidence": "no v1/publish/", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:7": {"id": "task:release-the-book-we-already-released:publisher:7", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 7, "text": "Write `v1/publish/manifest.json` from the build, and teach `validate.js` to check its text hash. Done when the gate fails on a manifest that names the wrong text.", "title": "Write `v1/publish/manifest.json` from the build, and teach `validate.js` to check its text hash", "state": "open", "evidence": "validate.js has no manifest check for v1/publish/", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:8": {"id": "task:release-the-book-we-already-released:publisher:8", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 8, "text": "Write the metadata sheet and the upload checklist: Leanpub on uploaded files first, then the paperback interior update. Done when the checklist is in `team/publisher/debriefs/book__v1.0.0__upload-checklist.md` and I can follow it without asking.", "title": "Write the metadata sheet and the upload checklist: Leanpub on uploaded files first, then the paperback interio", "state": "open", "evidence": "no upload checklist in team/publisher/debriefs/", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:9": {"id": "task:release-the-book-we-already-released:publisher:9", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 9, "text": "Create `admin/content/book/publications.json` and show its rows on the versions page. Done when, after I upload, one row says what went where.", "title": "Create `admin/content/book/publications.json` and show its rows on the versions page", "state": "open", "evidence": "no admin/content/book/publications.json", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:release-the-book-we-already-released:publisher:10": {"id": "task:release-the-book-we-already-released:publisher:10", "article": "art:release-the-book-we-already-released", "role": "publisher", "n": 10, "text": "Write an agent article when the release is done: what you built, how it compares with 2018, what you learned about the stores.", "title": "Write an agent article when the release is done: what you built, how it compares with 2018, what you learned a", "state": "open", "evidence": "no publisher agent article", "url": "articles/release-the-book-we-already-released.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:1": {"id": "task:one-board-for-the-book:editor:1", "article": "art:one-board-for-the-book", "role": "editor", "n": 1, "text": "Create `board/issues/open|blocked|done/` in the vault, with the write key I give you, and add the content issue format to `team/ISSUES.md`. Done when the guide describes both kinds and an example content issue is in the vault.", "title": "Create `board/issues/open|blocked|done/` in the vault, with the write key I give you, and add the content issu", "state": "open", "evidence": "the vault has board/issues/ folders from v0.1.0 but no content-issue format in team/ISSUES.md", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:2": {"id": "task:one-board-for-the-book:editor:2", "article": "art:one-board-for-the-book", "role": "editor", "n": 2, "text": "Teach the build to write the site's board: `board/index.html` from every role's work issues, with the three columns, the filter, the counts and the \"waits on Dinis\" strip. Done when moving an issue with `git mv` and rebuilding moves its card, with nothing else edited.", "title": "Teach the build to write the site's board: `board/index.html` from every role's work issues, with the three co", "state": "open", "evidence": "no board/index.html on the site", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:3": {"id": "task:one-board-for-the-book:editor:3", "article": "art:one-board-for-the-book", "role": "editor", "n": 3, "text": "Write the vault board script: in `admin/build/`, run against a vault checkout, it writes `board/BOARD.md` from the content issues and refuses one with a missing field or a quote not in its file. Done when the vault's board is its output, and each check has a failing example.", "title": "Write the vault board script: in `admin/build/`, run against a vault checkout, it writes `board/BOARD.md` from", "state": "open", "evidence": "no vault board script in admin/build/", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:4": {"id": "task:one-board-for-the-book:editor:4", "article": "art:one-board-for-the-book", "role": "editor", "n": 4, "text": "Teach the gate the work-issue checks above. Done when each has a failing example that it refuses.", "title": "Teach the gate the work-issue checks above. Done when each has a failing example that it refuses.", "state": "open", "evidence": "validate.js has no work-issue checks", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:5": {"id": "task:one-board-for-the-book:editor:5", "article": "art:one-board-for-the-book", "role": "editor", "n": 5, "text": "Bring in the 43 GitHub issues of the 2018 repository from `admin/content/github/` as content issues in the vault, generated rather than typed, open ones in `open/` and closed ones in `done/`. Done when every issue has a file, and the vault board's count matches the capture's.", "title": "Bring in the 43 GitHub issues of the 2018 repository from `admin/content/github/` as content issues in the vau", "state": "open", "evidence": "the 43 GitHub issues are captured (admin/content/github/) but not in the vault as content issues", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:6": {"id": "task:one-board-for-the-book:editor:6", "article": "art:one-board-for-the-book", "role": "editor", "n": 6, "text": "Move the seven open questions from the vault's board into blocked issues that wait on me, each in the role that needs the answer. Done when the \"waits on Dinis\" strip shows them and the hand-written board is gone.", "title": "Move the seven open questions from the vault's board into blocked issues that wait on me, each in the role tha", "state": "open", "evidence": "the vault's BOARD.md still lists the questions by hand", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:one-board-for-the-book:editor:7": {"id": "task:one-board-for-the-book:editor:7", "article": "art:one-board-for-the-book", "role": "editor", "n": 7, "text": "Add the site's board to the navigation and to `llms.txt`.", "title": "Add the site's board to the navigation and to `llms.txt`.", "state": "open", "evidence": "no board in the navigation", "url": "articles/one-board-for-the-book.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:1": {"id": "task:everything-unfinished-in-one-place:editor:1", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 1, "text": "Teach the build to write the inventory: `inventory/index.html` and `inventory.json`, one row per item, the fields above, grouped by part, filterable by kind and by \"no decision yet\". Done when every file of v1.0.0 has a row and the counts on the page match the table in this article, or the article is corrected.", "title": "Teach the build to write the inventory: `inventory/index.html` and `inventory.json`, one row per item, the fie", "state": "open", "evidence": "no inventory/", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:2": {"id": "task:everything-unfinished-in-one-place:editor:2", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 2, "text": "Mark the overlaps. A draft file that is also an outline is one row, with both kinds. Done when the inventory's count of rows is the number of distinct items, and the page says how it was counted.", "title": "Mark the overlaps. A draft file that is also an outline is one row, with both kinds", "state": "open", "evidence": "no inventory/", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:3": {"id": "task:everything-unfinished-in-one-place:editor:3", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 3, "text": "Add the content issues from the vault board's snapshot, once it exists, including the 2018 GitHub issues. Done when each issue is a row with its link.", "title": "Add the content issues from the vault board's snapshot, once it exists, including the 2018 GitHub issues", "state": "blocked", "evidence": "waits on the vault board (one board for the book, task 1)", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:4": {"id": "task:everything-unfinished-in-one-place:editor:4", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 4, "text": "Create `admin/content/notes/` with a README saying how a page of handwritten notes becomes a file, and ask me whether I have found the printed copy. Done when the answer is recorded, either way.", "title": "Create `admin/content/notes/` with a README saying how a page of handwritten notes becomes a file, and ask me ", "state": "open", "evidence": "no admin/content/notes/", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:5": {"id": "task:everything-unfinished-in-one-place:editor:5", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 5, "text": "Mark the candidates for \"article first\": the outlines with no newsroom article, as a filter, so I can read them together. Done when the filter shows the 31.", "title": "Mark the candidates for \"article first\": the outlines with no newsroom article, as a filter, so I can read the", "state": "in-progress", "evidence": "the graph's sources page lists the 2018 files with no idea and no article (the 'article first' candidates); the inventory filter itself is not built", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:everything-unfinished-in-one-place:editor:6": {"id": "task:everything-unfinished-in-one-place:editor:6", "article": "art:everything-unfinished-in-one-place", "role": "editor", "n": 6, "text": "Add the inventory to the navigation and `llms.txt`.", "title": "Add the inventory to the navigation and `llms.txt`.", "state": "open", "evidence": "no inventory in the navigation", "url": "articles/everything-unfinished-in-one-place.html#brief", "kind": "task"}, "task:read-comment-decide:editor:1": {"id": "task:read-comment-decide:editor:1", "article": "art:read-comment-decide", "role": "editor", "n": 1, "text": "Create `board/decisions/` in the vault, with the write key I give you, and add the decision format to `team/ISSUES.md`. Done when an example decision is in the vault and the guide describes it.", "title": "Create `board/decisions/` in the vault, with the write key I give you, and add the decision format to `team/IS", "state": "open", "evidence": "no board/decisions/ in the vault", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:2": {"id": "task:read-comment-decide:editor:2", "article": "art:read-comment-decide", "role": "editor", "n": 2, "text": "Add the decision to the desk: a verb per chapter, next to its state, kept in the browser like everything else on the desk and carried in both exports; nothing sent. Read `CLAUDE.md`'s rule on the reader first. Done when a decision survives a reload and appears in `review.md`.", "title": "Add the decision to the desk: a verb per chapter, next to its state, kept in the browser like everything else ", "state": "open", "evidence": "assets/reader.js has states and comments, no decision verb", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:3": {"id": "task:read-comment-decide:editor:3", "article": "art:read-comment-decide", "role": "editor", "n": 3, "text": "Show decisions on the item pages and in the inventory: the chapter page shows its recorded decisions under the map's reading; the inventory's decision column links each. Done when recording a decision file and rebuilding fills both, with nothing edited by hand.", "title": "Show decisions on the item pages and in the inventory: the chapter page shows its recorded decisions under the", "state": "open", "evidence": "chapter pages show the map's reading only", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:4": {"id": "task:read-comment-decide:editor:4", "article": "art:read-comment-decide", "role": "editor", "n": 4, "text": "Teach the vault board script (from [one board for the book](/articles/one-board-for-the-book.html)) to refuse a decision without Item., Version read., Comment. and Decision., and one whose verb is not on the list.", "title": "Teach the vault board script (from [one board for the book](/articles/one-board-for-the-book.html)) to refuse ", "state": "blocked", "evidence": "waits on the vault board script (one board for the book, task 3)", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:5": {"id": "task:read-comment-decide:editor:5", "article": "art:read-comment-decide", "role": "editor", "n": 5, "text": "Prepare the first batch: the four Introduction chapters marked \"to review\" on the desk's filter, and the five `show-in-book` issues on one page with what I need to decide. Done when I can answer all nine in one sitting.", "title": "Prepare the first batch: the four Introduction chapters marked \"to review\" on the desk's filter, and the five ", "state": "open", "evidence": "no first-batch page", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:6": {"id": "task:read-comment-decide:editor:6", "article": "art:read-comment-decide", "role": "editor", "n": 6, "text": "Run the first batch with me, record the nine decisions, act on them in the vault, and write a debrief stamped `book__v1.0.0__decisions-01.md` with the counts by verb and what did not work about the loop. Done when the debrief is in `team/editor/debriefs/`.", "title": "Run the first batch with me, record the nine decisions, act on them in the vault, and write a debrief stamped ", "state": "blocked", "evidence": "waits on task 5 and on Dinis's sitting", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:read-comment-decide:editor:7": {"id": "task:read-comment-decide:editor:7", "article": "art:read-comment-decide", "role": "editor", "n": 7, "text": "Hand the journalist any \"article first\" as a brief in `team/journalist/briefs/`.", "title": "Hand the journalist any \"article first\" as a brief in `team/journalist/briefs/`.", "state": "open", "evidence": "team/journalist/briefs/ is empty", "url": "articles/read-comment-decide.html#brief", "kind": "task"}, "task:start-from-the-storyline:editor:1": {"id": "task:start-from-the-storyline:editor:1", "article": "art:start-from-the-storyline", "role": "editor", "n": 1, "text": "Map the storyline. From the 18 topics and the first storyline, one row per proposed chapter of the second edition: its punchline in a sentence, the concept it introduces, the evidence it uses, the character it is for, and the newsroom articles it draws on. Done when every topic is placed or explicitly left out, in a file the build can render.", "title": "Map the storyline. From the 18 topics and the first storyline, one row per proposed chapter of the second edit", "state": "in-progress", "evidence": "admin/content/graph/chapters.json is the librarian's proposed chapter map, one row per chapter with punchline, topics, gravity, character and the 2018 files it answers; rendered at graph/chapters.html; the editor's map decides", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:start-from-the-storyline:editor:2": {"id": "task:start-from-the-storyline:editor:2", "article": "art:start-from-the-storyline", "role": "editor", "n": 2, "text": "A storyboard per part. When the chapter map has parts, one storyboard each, in `admin/content/storyboards/`, from the cast. Done when I can flick through the whole second edition, part by part.", "title": "A storyboard per part. When the chapter map has parts, one storyboard each, in `admin/content/storyboards/`, f", "state": "in-progress", "evidence": "storyboards exist for the opening, where do you land and connect the dots (the first part); none yet for the other parts", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:start-from-the-storyline:editor:3": {"id": "task:start-from-the-storyline:editor:3", "article": "art:start-from-the-storyline", "role": "editor", "n": 3, "text": "Take my comments on the storyboards through the read, comment, decide loop; a panel I reject is changed or cut in its file, and the decision recorded. Done when the first part's storyboard has had one round.", "title": "Take my comments on the storyboards through the read, comment, decide loop; a panel I reject is changed or cut", "state": "open", "evidence": "no decision recorded on a storyboard", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:start-from-the-storyline:editor:4": {"id": "task:start-from-the-storyline:editor:4", "article": "art:start-from-the-storyline", "role": "editor", "n": 4, "text": "Add the four missing bring articles to the map: places of highest leverage, from a spreadsheet to a folder per person, why my agents do not run on my laptop, who owns the words. Done when `gen_map.py` names them and the map shows them.", "title": "Add the four missing bring articles to the map: places of highest leverage, from a spreadsheet to a folder per", "state": "done", "evidence": "gen_map.py names places-of-highest-leverage, from-a-spreadsheet-to-a-folder-per-person, why-my-agents-do-not-run-on-my-laptop and who-owns-the-words (site v0.2.12)", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:start-from-the-storyline:editor:5": {"id": "task:start-from-the-storyline:editor:5", "article": "art:start-from-the-storyline", "role": "editor", "n": 5, "text": "Review the survey's classes with me, a part at a time, the bring and content ones first. Done when each has my decision, recorded in the vault with the text decisions.", "title": "Review the survey's classes with me, a part at a time, the bring and content ones first", "state": "open", "evidence": "no class decisions in the vault", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:start-from-the-storyline:journalist:6": {"id": "task:start-from-the-storyline:journalist:6", "article": "art:start-from-the-storyline", "role": "journalist", "n": 6, "text": "Write the gap articles, one at a time, starting with the fear and the job hunt in 2026, from a memo of mine on each.", "title": "Write the gap articles, one at a time, starting with the fear and the job hunt in 2026, from a memo of mine on", "state": "open", "evidence": "no gap article yet; the gaps are nodes on the ideas register (fear-of-ai, job-hunt-in-2026) marked article first", "url": "articles/start-from-the-storyline.html#brief", "kind": "task"}, "task:lucky-to-be-here:editor:1": {"id": "task:lucky-to-be-here:editor:1", "article": "art:lucky-to-be-here", "role": "editor", "n": 1, "text": "Record the decision in the vault: the book opens with wonder and privilege, not with fear and not with technologies. Done when it is a decision on the text, with my words, in the vault's `board/decisions/`.", "title": "Record the decision in the vault: the book opens with wonder and privilege, not with fear and not with technol", "state": "open", "evidence": "no board/decisions/ in the vault; the idea wonder-not-fear is 'accepted' on the register pending that record", "url": "articles/lucky-to-be-here.html#brief", "kind": "task"}, "task:lucky-to-be-here:editor:2": {"id": "task:lucky-to-be-here:editor:2", "article": "art:lucky-to-be-here", "role": "editor", "n": 2, "text": "Revise the first storyline (`02__a-first-storyline.json`): its cold open is the fear; replace it with the opening above, keeping the fear as what the reader hears, not where the book starts. Done when the storyboard opens with \"you are lucky to be here\".", "title": "Revise the first storyline (`02__a-first-storyline.json`): its cold open is the fear; replace it with the open", "state": "open", "evidence": "02__a-first-storyline.json still opens with the fear", "url": "articles/lucky-to-be-here.html#brief", "kind": "task"}, "task:lucky-to-be-here:editor:3": {"id": "task:lucky-to-be-here:editor:3", "article": "art:lucky-to-be-here", "role": "editor", "n": 3, "text": "Prepare interview questions on this opening, to make me justify it: why optimism is honest and not a sales pitch; which jobs that never scaled I mean, with three examples; what the European opportunity is, concretely; and the stories behind each transformation in the table. Done when the script is in your `briefs/`.", "title": "Prepare interview questions on this opening, to make me justify it: why optimism is honest and not a sales pit", "state": "open", "evidence": "no second interview script in team/editor/briefs/", "url": "articles/lucky-to-be-here.html#brief", "kind": "task"}, "task:lucky-to-be-here:editor:4": {"id": "task:lucky-to-be-here:editor:4", "article": "art:lucky-to-be-here", "role": "editor", "n": 4, "text": "Place the 2018 material this answers: the outlines *The Zone*, *BBS and modems* and the draft *Dopamine*, and the Introduction's \"Overwhelming curiosity\". Done when the chapter map says where each goes.", "title": "Place the 2018 material this answers: the outlines *The Zone*, *BBS and modems* and the draft *Dopamine*, and ", "state": "in-progress", "evidence": "chapters.json places The Zone, BBS and modems, Dopamine under lucky-to-be-here; the editor's map decides", "url": "articles/lucky-to-be-here.html#brief", "kind": "task"}, "task:lucky-to-be-here:journalist:5": {"id": "task:lucky-to-be-here:journalist:5", "article": "art:lucky-to-be-here", "role": "journalist", "n": 5, "text": "Write the articles this opening needs evidence for: the history of the seven transformations, dated and sourced; the attention economy and what is known about its effects; the jobs that never scaled. One memo of mine each.", "title": "Write the articles this opening needs evidence for: the history of the seven transformations, dated and source", "state": "open", "evidence": "no history, attention-economy or jobs-that-never-scaled article", "url": "articles/lucky-to-be-here.html#brief", "kind": "task"}, "task:where-do-you-land:editor:1": {"id": "task:where-do-you-land:editor:1", "article": "art:where-do-you-land", "role": "editor", "n": 1, "text": "Record the decisions in the vault: Wardley maps run through the whole book and are shown before they are named; the reader's centre of gravity is introduced early. Done when both are decisions on the text, with my words, in the vault.", "title": "Record the decisions in the vault: Wardley maps run through the whole book and are shown before they are named", "state": "open", "evidence": "no board/decisions/ in the vault", "url": "articles/where-do-you-land.html#brief", "kind": "task"}, "task:where-do-you-land:editor:2": {"id": "task:where-do-you-land:editor:2", "article": "art:where-do-you-land", "role": "editor", "n": 2, "text": "Give every chapter in the chapter map a centre of gravity: explorer, villager, town planner or all three. Done when the chapter map has the column, and the counts show whether the book leans one way.", "title": "Give every chapter in the chapter map a centre of gravity: explorer, villager, town planner or all three", "state": "in-progress", "evidence": "chapters.json gives every proposed chapter a gravity; counts on graph/chapters.html", "url": "articles/where-do-you-land.html#brief", "kind": "task"}, "task:where-do-you-land:editor:3": {"id": "task:where-do-you-land:editor:3", "article": "art:where-do-you-land", "role": "editor", "n": 3, "text": "Draft three learning paths, one per centre of gravity, through the chapters. Done when a reader who knows where they land can see what to read first.", "title": "Draft three learning paths, one per centre of gravity, through the chapters", "state": "open", "evidence": "no learning paths", "url": "articles/where-do-you-land.html#brief", "kind": "task"}, "task:where-do-you-land:editor:4": {"id": "task:where-do-you-land:editor:4", "article": "art:where-do-you-land", "role": "editor", "n": 4, "text": "Put a map in every part's storyboard, using the storyboard `map` kind. Done when each part shows at least one map, named or not.", "title": "Put a map in every part's storyboard, using the storyboard `map` kind", "state": "open", "evidence": "only the where-do-you-land storyboard has a map panel", "url": "articles/where-do-you-land.html#brief", "kind": "task"}, "task:where-do-you-land:editor:5": {"id": "task:where-do-you-land:editor:5", "article": "art:where-do-you-land", "role": "editor", "n": 5, "text": "Prepare interview questions that make me justify this: the claim that Wardley's three describe personalities better than the business tests; what my own centre of gravity is and how it has moved; an example of each from teams I have built. Done when the script is in your `briefs/`.", "title": "Prepare interview questions that make me justify this: the claim that Wardley's three describe personalities b", "state": "open", "evidence": "no interview script on this", "url": "articles/where-do-you-land.html#brief", "kind": "task"}, "task:connect-the-dots-backwards:editor:1": {"id": "task:connect-the-dots-backwards:editor:1", "article": "art:connect-the-dots-backwards", "role": "editor", "n": 1, "text": "Place the chapters this answers: the 2018 *Learning*, *Books* and *Pen and Paper* chapters, and the outlines *Love maths*, *The Zone* and *Thinking as a programmer*. Done when the chapter map says where each goes.", "title": "Place the chapters this answers: the 2018 *Learning*, *Books* and *Pen and Paper* chapters, and the outlines *", "state": "in-progress", "evidence": "chapters.json places Learning, Books, Pen and Paper, Love maths, The Zone and Thinking as a programmer; the editor's map decides", "url": "articles/connect-the-dots-backwards.html#brief", "kind": "task"}, "task:connect-the-dots-backwards:editor:2": {"id": "task:connect-the-dots-backwards:editor:2", "article": "art:connect-the-dots-backwards", "role": "editor", "n": 2, "text": "Add \"read it on paper\" to the opening, as advice on how to read the book, before the first chapter. Done when the opening's storyboard has the panel.", "title": "Add \"read it on paper\" to the opening, as advice on how to read the book, before the first chapter", "state": "open", "evidence": "03__the-opening.json has no read-it-on-paper panel", "url": "articles/connect-the-dots-backwards.html#brief", "kind": "task"}, "task:connect-the-dots-backwards:editor:3": {"id": "task:connect-the-dots-backwards:editor:3", "article": "art:connect-the-dots-backwards", "role": "editor", "n": 3, "text": "Prepare interview questions on this: what multidisciplinary looks like for an explorer, a villager and a town planner; my own path, connected backwards, with its dots; why paper, when the book will also be sold as a PDF. Done when the script is in your `briefs/`.", "title": "Prepare interview questions on this: what multidisciplinary looks like for an explorer, a villager and a town ", "state": "open", "evidence": "no interview script on this", "url": "articles/connect-the-dots-backwards.html#brief", "kind": "task"}, "task:connect-the-dots-backwards:journalist:4": {"id": "task:connect-the-dots-backwards:journalist:4", "article": "art:connect-the-dots-backwards", "role": "journalist", "n": 4, "text": "Find what the creativity study actually measured before the book uses it; and the evidence on reading on paper and on screens. Done when each is an article, or a note saying what was found and what was not.", "title": "Find what the creativity study actually measured before the book uses it; and the evidence on reading on paper", "state": "open", "evidence": "no article on the creativity study or reading on paper", "url": "articles/connect-the-dots-backwards.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:editor:1": {"id": "task:where-the-thinking-came-from:editor:1", "article": "art:where-the-thinking-came-from", "role": "editor", "n": 1, "text": "Add an influence column to the chapter map: the influences behind each chapter, from the table above. Done when every chapter that draws on one names it.", "title": "Add an influence column to the chapter map: the influences behind each chapter, from the table above", "state": "open", "evidence": "chapters.json has no influence column yet; the ideas from the register name the influences in their statements", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:editor:2": {"id": "task:where-the-thinking-came-from:editor:2", "article": "art:where-the-thinking-came-from", "role": "editor", "n": 2, "text": "Plan a box per chapter, \"where this comes from\", naming its influence and linking the register entry; and an appendix, *Where the thinking came from*, as the reading list. Done when the chapter map marks the boxes and the appendix has an outline.", "title": "Plan a box per chapter, \"where this comes from\", naming its influence and linking the register entry; and an a", "state": "open", "evidence": "no boxes planned", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:editor:3": {"id": "task:where-the-thinking-came-from:editor:3", "article": "art:where-the-thinking-came-from", "role": "editor", "n": 3, "text": "Real people appear as quote cards, not as cast members. Done when the storyboard guidance says so.", "title": "Real people appear as quote cards, not as cast members. Done when the storyboard guidance says so.", "state": "open", "evidence": "no storyboard guidance on real people", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:editor:4": {"id": "task:where-the-thinking-came-from:editor:4", "article": "art:where-the-thinking-came-from", "role": "editor", "n": 4, "text": "Interview me on the stubs: Neil Peart, playing in a band, diverse and distributed teams, and what David Rice's keynote changed for me. Done when the script is in your `briefs/` and the transcripts are in the vault.", "title": "Interview me on the stubs: Neil Peart, playing in a band, diverse and distributed teams, and what David Rice's", "state": "open", "evidence": "no interview script on the stubs", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:editor:5": {"id": "task:where-the-thinking-came-from:editor:5", "article": "art:where-the-thinking-came-from", "role": "editor", "n": 5, "text": "Put the reader's exercise in the book, at the end of the learning part. Done when the chapter map places it.", "title": "Put the reader's exercise in the book, at the end of the learning part", "state": "in-progress", "evidence": "the idea know-where-your-ideas-come-from is placed under connect-the-dots-backwards (the learning chapter); the editor's map decides", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:where-the-thinking-came-from:journalist:6": {"id": "task:where-the-thinking-came-from:journalist:6", "article": "art:where-the-thinking-came-from", "role": "journalist", "n": 6, "text": "Write the brief for the register: the six findings above, each with its 2018 file, for the influences site to take in. Done when I have approved it and it is delivered to that repository.", "title": "Write the brief for the register: the six findings above, each with its 2018 file, for the influences site to ", "state": "open", "evidence": "no brief delivered to the influences repository", "url": "articles/where-the-thinking-came-from.html#brief", "kind": "task"}, "task:generative-ai-not-ai:editor:1": {"id": "task:generative-ai-not-ai:editor:1", "article": "art:generative-ai-not-ai", "role": "editor", "n": 1, "text": "Plan a short section, early, on what generative AI is: the bucket (AI, machine learning, deep learning, generative AI), how a language model works in plain words, why a better prompt helps, where hallucinations come from, and the corrections above. Done when the chapter map places it and the storyboard draws it.", "title": "Plan a short section, early, on what generative AI is: the bucket (AI, machine learning, deep learning, genera", "state": "in-progress", "evidence": "chapters.json proposes the chapter what-generative-ai-is, first in the frame, with two ideas; no storyboard yet", "url": "articles/generative-ai-not-ai.html#brief", "kind": "task"}, "task:generative-ai-not-ai:editor:2": {"id": "task:generative-ai-not-ai:editor:2", "article": "art:generative-ai-not-ai", "role": "editor", "n": 2, "text": "Use \"generative AI\" across the book, and \"AI\" only where the wider field is meant. Done when the style notes for the drafts say so.", "title": "Use \"generative AI\" across the book, and \"AI\" only where the wider field is meant", "state": "open", "evidence": "no style notes for the drafts exist", "url": "articles/generative-ai-not-ai.html#brief", "kind": "task"}, "task:generative-ai-not-ai:editor:3": {"id": "task:generative-ai-not-ai:editor:3", "article": "art:generative-ai-not-ai", "role": "editor", "n": 3, "text": "Add the name to the title interview (`002__the-title-the-subtitle-and-the-language.md`): Gen AI edition, or not; and whether Gen Alpha is a future reader. Done when the question is in the script.", "title": "Add the name to the title interview (`002__the-title-the-subtitle-and-the-language.md`): Gen AI edition, or no", "state": "in-progress", "evidence": "Dinis decided the title on 19 October 2026: Gen Z Developers (GenAI Edition) (decision 010); the editor's issue 002 (title, subtitle, language) has the title to record and the subtitle still to settle", "url": "articles/generative-ai-not-ai.html#brief", "kind": "task"}, "task:generative-ai-not-ai:editor:4": {"id": "task:generative-ai-not-ai:editor:4", "article": "art:generative-ai-not-ai", "role": "editor", "n": 4, "text": "Ask for the image, or remake it. The slide is Lee Brimelow's post; the book can only reproduce it with his permission. The painting itself is in the public domain, so the alternative is to extend *The Starry Night* ourselves, with a named tool, and show that. Done when one of the two is decided with me.", "title": "Ask for the image, or remake it. The slide is Lee Brimelow's post; the book can only reproduce it with his per", "state": "blocked", "evidence": "the image is found (site v0.2.10: slide 70 of Deterministic GenAI Output With Provenance, Lisbon 2024, Lee Brimelow's Starry Night extended with Generative Fill); the task is now to ask for it or remake it, which waits on Dinis's decision", "url": "articles/generative-ai-not-ai.html#brief", "kind": "task"}, "task:follow-the-rabbit-holes:editor:1": {"id": "task:follow-the-rabbit-holes:editor:1", "article": "art:follow-the-rabbit-holes", "role": "editor", "n": 1, "text": "Place this as the chapter the 2018 outline *Facts* promised, next to Popper and the questioning in [where the thinking came from](/articles/where-the-thinking-came-from.html). Done when the chapter map has it.", "title": "Place this as the chapter the 2018 outline *Facts* promised, next to Popper and the questioning in [where the ", "state": "in-progress", "evidence": "chapters.json has facts-and-the-record under Direction and judgement, with the five ideas from the article placed in it (site v0.2.12); the editor's map decides", "url": "articles/follow-the-rabbit-holes.html#brief", "kind": "task"}, "task:follow-the-rabbit-holes:editor:2": {"id": "task:follow-the-rabbit-holes:editor:2", "article": "art:follow-the-rabbit-holes", "role": "editor", "n": 2, "text": "Propose the hands-on part: its workflows (an agentic workflow from zero, images, infographics and storyboards, presentations, meeting briefs and follow-ups, publishing), each with the newsroom article it starts from, and a note that this part is dated 2026 and renewed each year. Done when the chapter map has the part, and I have decided whether it is in the book or a companion.", "title": "Propose the hands-on part: its workflows (an agentic workflow from zero, images, infographics and storyboards,", "state": "in-progress", "evidence": "chapters.json proposes the part hands-on-2026 with one chapter per workflow, each naming the newsroom article it starts from, marked dated 2026; whether it is in the book or a companion is Dinis's open question", "url": "articles/follow-the-rabbit-holes.html#brief", "kind": "task"}, "task:follow-the-rabbit-holes:editor:3": {"id": "task:follow-the-rabbit-holes:editor:3", "article": "art:follow-the-rabbit-holes", "role": "editor", "n": 3, "text": "Prepare interview questions on this: a story of a rabbit hole that changed a decision of mine; how I prepare for a meeting today, step by step; where a generation that is told not to post anything should draw the line. Done when the script is in your `briefs/`.", "title": "Prepare interview questions on this: a story of a rabbit hole that changed a decision of mine; how I prepare f", "state": "open", "evidence": "no interview script on this in team/editor/briefs/", "url": "articles/follow-the-rabbit-holes.html#brief", "kind": "task"}, "task:follow-the-rabbit-holes:journalist:4": {"id": "task:follow-the-rabbit-holes:journalist:4", "article": "art:follow-the-rabbit-holes", "role": "journalist", "n": 4, "text": "Write the hands-on workflows as articles first, one memo of mine each, starting with meeting briefs and follow-ups, which no newsroom article covers yet.", "title": "Write the hands-on workflows as articles first, one memo of mine each, starting with meeting briefs and follow", "state": "open", "evidence": "no hands-on workflow article yet; meeting briefs and follow-ups first", "url": "articles/follow-the-rabbit-holes.html#brief", "kind": "task"}, "task:everything-is-connected:editor:1": {"id": "task:everything-is-connected:editor:1", "article": "art:everything-is-connected", "role": "editor", "n": 1, "text": "Place the graphs chapter early, before or with Wardley maps, since a map is a graph with positions. Done when the chapter map orders the two and says why.", "title": "Place the graphs chapter early, before or with Wardley maps, since a map is a graph with positions", "state": "in-progress", "evidence": "chapters.json places everything-is-connected just before where-do-you-land in Before you start, with the reason in its note (site v0.2.15); the order is Dinis's question and the editor's map decides", "url": "articles/everything-is-connected.html#brief", "kind": "task"}, "task:everything-is-connected:editor:2": {"id": "task:everything-is-connected:editor:2", "article": "art:everything-is-connected", "role": "editor", "n": 2, "text": "Choose the figures from the list above, and the worked example: one newsroom article's graph, shown and read. Done when the chapter map names them.", "title": "Choose the figures from the list above, and the worked example: one newsroom article's graph, shown and read", "state": "open", "evidence": "no figures or worked example named in chapters.json yet; the candidates are the table in the article", "url": "articles/everything-is-connected.html#brief", "kind": "task"}, "task:everything-is-connected:editor:3": {"id": "task:everything-is-connected:editor:3", "article": "art:everything-is-connected", "role": "editor", "n": 3, "text": "Place the 2018 material: the outline *Graphs*, and the chapters *Dot Language* and *AST* as examples inside this one. Done when the chapter map says where.", "title": "Place the 2018 material: the outline *Graphs*, and the chapters *Dot Language* and *AST* as examples inside th", "state": "in-progress", "evidence": "the chapter's answers_2018 names 5.concepts/graphs.md, dot-language.md and AST.md, and the idea the-2018-graph-chapters says they are examples inside it; the editor's map decides", "url": "articles/everything-is-connected.html#brief", "kind": "task"}, "task:everything-is-connected:editor:4": {"id": "task:everything-is-connected:editor:4", "article": "art:everything-is-connected", "role": "editor", "n": 4, "text": "Put *Your first graph* in the hands-on part. Done when the part lists it.", "title": "Put *Your first graph* in the hands-on part. Done when the part lists it.", "state": "done", "evidence": "chapters.json lists your-first-graph in the hands-on 2026 part (site v0.2.15)", "url": "articles/everything-is-connected.html#brief", "kind": "task"}, "task:everything-is-connected:editor:5": {"id": "task:everything-is-connected:editor:5", "article": "art:everything-is-connected", "role": "editor", "n": 5, "text": "Prepare interview questions on this: where graphs first entered my thinking (the influences register asks the same); a graph I drew that changed a decision; how to explain \"start anywhere\" to someone who feels lost. Done when the script is in your `briefs/`.", "title": "Prepare interview questions on this: where graphs first entered my thinking (the influences register asks the ", "state": "open", "evidence": "no interview script on graphs in team/editor/briefs/", "url": "articles/everything-is-connected.html#brief", "kind": "task"}, "task:lenses-roles-and-loops:editor:1": {"id": "task:lenses-roles-and-loops:editor:1", "article": "art:lenses-roles-and-loops", "role": "editor", "n": 1, "text": "Place this chapter right after what generative AI is, as the second half of the same explanation: lenses, roles, the loop, tools, the context window, compression, and why to work in focused threads. Done when the chapter map has it.", "title": "Place this chapter right after what generative AI is, as the second half of the same explanation: lenses, role", "state": "in-progress", "evidence": "chapters.json places lenses-roles-and-loops right after what-generative-ai-is in The frame (site v0.2.15); the editor's map decides", "url": "articles/lenses-roles-and-loops.html#brief", "kind": "task"}, "task:lenses-roles-and-loops:editor:2": {"id": "task:lenses-roles-and-loops:editor:2", "article": "art:lenses-roles-and-loops", "role": "editor", "n": 2, "text": "Plan the lenses exercise for the hands-on part: one idea explained through five lenses (a teenager, a musician, a doctor, a football fan, another language), the reader's own choice of idea. Done when the part lists it.", "title": "Plan the lenses exercise for the hands-on part: one idea explained through five lenses (a teenager, a musician", "state": "done", "evidence": "chapters.json lists five-lenses in the hands-on 2026 part (site v0.2.15)", "url": "articles/lenses-roles-and-loops.html#brief", "kind": "task"}, "task:lenses-roles-and-loops:editor:3": {"id": "task:lenses-roles-and-loops:editor:3", "article": "art:lenses-roles-and-loops", "role": "editor", "n": 3, "text": "Plan a tiny agent loop for the hands-on part: a page of code or a no-code version that shows the loop and one tool call, so the reader sees it is not magic. Done when the part lists it, with the newsroom article it builds on.", "title": "Plan a tiny agent loop for the hands-on part: a page of code or a no-code version that shows the loop and one ", "state": "in-progress", "evidence": "chapters.json lists a-tiny-agent-loop in the hands-on 2026 part; the newsroom article it builds on is not named yet", "url": "articles/lenses-roles-and-loops.html#brief", "kind": "task"}, "task:lenses-roles-and-loops:editor:4": {"id": "task:lenses-roles-and-loops:editor:4", "article": "art:lenses-roles-and-loops", "role": "editor", "n": 4, "text": "Prepare interview questions on this: the first time I saw a model ask for a tool; a time a long chat lost something important; how I name and split my agents. Done when the script is in your `briefs/`.", "title": "Prepare interview questions on this: the first time I saw a model ask for a tool; a time a long chat lost some", "state": "open", "evidence": "no interview script on this in team/editor/briefs/", "url": "articles/lenses-roles-and-loops.html#brief", "kind": "task"}, "task:the-book-in-release-mode:editor:1": {"id": "task:the-book-in-release-mode:editor:1", "article": "art:the-book-in-release-mode", "role": "editor", "n": 1, "text": "Assemble rc1 in the vault from the proposed chapter map and the register's ideas for this edition: every chapter written from its co-written article, and every chapter without one present as its title, its ideas and what is missing. Done when rc1 reads from the first page to the last, and its list of gaps is at its front.", "title": "Assemble rc1 in the vault from the proposed chapter map and the register's ideas for this edition: every chapt", "state": "done", "evidence": "rc1 exists: v2/content/ (30 chapters, every one written from its ideas, the gaps as For Dinis notes collected at v2/book/for-dinis.html and in the back matter) and the working copy in the vault's book/rc1/ (site v0.2.19); the librarian assembled it at Dinis's request, the editor's coherence read is next", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:editor:2": {"id": "task:the-book-in-release-mode:editor:2", "article": "art:the-book-in-release-mode", "role": "editor", "n": 2, "text": "Run the coherence read of rc1, with the synthetic readers: does it hold as a book, where does the storyline break, what is repeated? Done when the findings are in the vault, answered.", "title": "Run the coherence read of rc1, with the synthetic readers: does it hold as a book, where does the storyline br", "state": "open", "evidence": "no coherence read of rc1 in the vault yet", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:editor:3": {"id": "task:the-book-in-release-mode:editor:3", "article": "art:the-book-in-release-mode", "role": "editor", "n": 3, "text": "Clerk the board: keep the hearings and the precedents in the vault, one file each, and apply the precedents before calling a hearing. Done when the first round's hearings are recorded, each with its verdict.", "title": "Clerk the board: keep the hearings and the precedents in the vault, one file each, and apply the precedents be", "state": "open", "evidence": "no board/hearings/ or board/precedents/ in the vault yet", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:librarian:4": {"id": "task:the-book-in-release-mode:librarian:4", "article": "art:the-book-in-release-mode", "role": "librarian", "n": 4, "text": "Make the batch for each round from the register: the ideas and sources not represented in the current release candidate, with the round's pile. Done when round 1's batch is a page on the graph.", "title": "Make the batch for each round from the register: the ideas and sources not represented in the current release ", "state": "in-progress", "evidence": "v2/book/for-dinis.html lists the ideas with no chapter and every gap rc1 names; the round-1 batch as a page on the graph (ideas and sources not represented in rc1) is not built yet", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:librarian:5": {"id": "task:the-book-in-release-mode:librarian:5", "article": "art:the-book-in-release-mode", "role": "librarian", "n": 5, "text": "Record every verdict on the idea (state, destination, and the hearing that decided it), and count each round's changes by size. Done when the graph shows the rounds converging, or not.", "title": "Record every verdict on the idea (state, destination, and the hearing that decided it), and count each round's", "state": "open", "evidence": "no verdicts yet; the ideas' decided_by fields are ready to name a hearing", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:reviewer:6": {"id": "task:the-book-in-release-mode:reviewer:6", "article": "art:the-book-in-release-mode", "role": "reviewer", "n": 6, "text": "Bring round 2: the 2018 chapters the review says to keep or rewrite that rc1 does not cover, each as a proposal with its evidence. Done when every such chapter has a hearing or a precedent.", "title": "Bring round 2: the 2018 chapters the review says to keep or rewrite that rc1 does not cover, each as a proposa", "state": "open", "evidence": "no round-2 proposals yet", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:the-book-in-release-mode:publisher:7": {"id": "task:the-book-in-release-mode:publisher:7", "article": "art:the-book-in-release-mode", "role": "publisher", "n": 7, "text": "Say what a release candidate needs to become official: the checks, the formats, and who signs. Done when it is written in your `briefs/`.", "title": "Say what a release candidate needs to become official: the checks, the formats, and who signs", "state": "open", "evidence": "team/publisher/briefs/ has the brief; no answer yet", "url": "articles/the-book-in-release-mode.html#brief", "kind": "task"}, "task:gen-zx-developers:editor:1": {"id": "task:gen-zx-developers:editor:1", "article": "art:gen-zx-developers", "role": "editor", "n": 1, "text": "Put this to the board as the first change set, from rc1 to rc2, so rc2 is written under the frame I choose: the audience, the title, the objective, the new part and the remapping above, each as its own proposal. Done when each has a hearing and a recommendation.", "title": "Put this to the board as the first change set, from rc1 to rc2, so rc2 is written under the frame I choose: th", "state": "done", "evidence": "Dinis adopted the proposal himself on 19 October 2026 and told the librarian to rewrite the book under it (decision 015); the change set did not need a hearing. The board hears what comes after rc2.", "url": "articles/gen-zx-developers.html#brief", "kind": "task"}, "task:gen-zx-developers:librarian:2": {"id": "task:gen-zx-developers:librarian:2", "article": "art:gen-zx-developers", "role": "librarian", "n": 2, "text": "Map the proposal on the graph as a variant of the chapter map, so the two can be compared, and process the newsroom articles above into ideas. Done when the variant has a page, and each article above is cited by an idea or marked with why not.", "title": "Map the proposal on the graph as a variant of the chapter map, so the two can be compared, and process the new", "state": "in-progress", "evidence": "chapters.json is the rc2 map and chapters-rc1.json the rc1 map, compared on graph/rounds.html; the newsroom articles of the proposal's table are processed into ideas (batch rc2) in the same release", "url": "articles/gen-zx-developers.html#brief", "kind": "task"}, "task:gen-zx-developers:journalist:3": {"id": "task:gen-zx-developers:journalist:3", "article": "art:gen-zx-developers", "role": "journalist", "n": 3, "text": "Write the gap articles, one memo each: the UK company, Lithuania, Portugal, the EU, the first customers, the community and the measure. Done when each is an article, processed into ideas.", "title": "Write the gap articles, one memo each: the UK company, Lithuania, Portugal, the EU, the first customers, the c", "state": "open", "evidence": "team/journalist/issues/open/002 lists the six gap articles; none written yet; the chapters that wait on them stand in rc2 as their titles, ideas and what is missing", "url": "articles/gen-zx-developers.html#brief", "kind": "task"}, "task:gen-zx-developers:publisher:4": {"id": "task:gen-zx-developers:publisher:4", "article": "art:gen-zx-developers", "role": "publisher", "n": 4, "text": "Say what a new title means for Leanpub, the print edition and its ISBN, Amazon and this site's address, if I choose it. Done when it is written in your `briefs/`.", "title": "Say what a new title means for Leanpub, the print edition and its ISBN, Amazon and this site's address, if I c", "state": "open", "evidence": "no answer in team/publisher/briefs/ yet", "url": "articles/gen-zx-developers.html#brief", "kind": "task"}, "issue:editor:001__run-the-first-interview-with-dinis": {"id": "issue:editor:001__run-the-first-interview-with-dinis", "role": "editor", "state": "open", "title": "Run the first interview with Dinis", "url": "team/editor/issues/open/001__run-the-first-interview-with-dinis.md", "file": "team/editor/issues/open/001__run-the-first-interview-with-dinis.md", "kind": "issue"}, "issue:editor:002__the-title-the-subtitle-and-the-language": {"id": "issue:editor:002__the-title-the-subtitle-and-the-language", "role": "editor", "state": "open", "title": "The title, the subtitle and the language", "url": "team/editor/issues/open/002__the-title-the-subtitle-and-the-language.md", "file": "team/editor/issues/open/002__the-title-the-subtitle-and-the-language.md", "kind": "issue"}, "issue:editor:003__the-chapter-map-of-the-second-edition": {"id": "issue:editor:003__the-chapter-map-of-the-second-edition", "role": "editor", "state": "blocked", "title": "The chapter map of the second edition", "url": "team/editor/issues/blocked/003__the-chapter-map-of-the-second-edition.md", "file": "team/editor/issues/blocked/003__the-chapter-map-of-the-second-edition.md", "kind": "issue"}, "issue:journalist:002__the-gap-articles-for-the-startup-edition": {"id": "issue:journalist:002__the-gap-articles-for-the-startup-edition", "role": "journalist", "state": "open", "title": "The gap articles for the startup edition", "url": "team/journalist/issues/open/002__the-gap-articles-for-the-startup-edition.md", "file": "team/journalist/issues/open/002__the-gap-articles-for-the-startup-edition.md", "kind": "issue"}, "issue:journalist:001__brief-the-influences-register-with-the-2018-findings": {"id": "issue:journalist:001__brief-the-influences-register-with-the-2018-findings", "role": "journalist", "state": "blocked", "title": "Brief the influences register with the 2018 findings", "url": "team/journalist/issues/blocked/001__brief-the-influences-register-with-the-2018-findings.md", "file": "team/journalist/issues/blocked/001__brief-the-influences-register-with-the-2018-findings.md", "kind": "issue"}, "issue:librarian:002__the-2018-files-with-neither-article-nor-idea": {"id": "issue:librarian:002__the-2018-files-with-neither-article-nor-idea", "role": "librarian", "state": "open", "title": "The 2018 files with neither an article nor an idea", "url": "team/librarian/issues/open/002__the-2018-files-with-neither-article-nor-idea.md", "file": "team/librarian/issues/open/002__the-2018-files-with-neither-article-nor-idea.md", "kind": "issue"}, "issue:librarian:003__mine-the-content-articles-as-chapters-are-drafted": {"id": "issue:librarian:003__mine-the-content-articles-as-chapters-are-drafted", "role": "librarian", "state": "open", "title": "Mine the content articles as the chapters are drafted", "url": "team/librarian/issues/open/003__mine-the-content-articles-as-chapters-are-drafted.md", "file": "team/librarian/issues/open/003__mine-the-content-articles-as-chapters-are-drafted.md", "kind": "issue"}, "issue:librarian:001__process-the-four-bring-articles-left": {"id": "issue:librarian:001__process-the-four-bring-articles-left", "role": "librarian", "state": "done", "title": "Process the four bring articles left", "url": "team/librarian/issues/done/001__process-the-four-bring-articles-left.md", "file": "team/librarian/issues/done/001__process-the-four-bring-articles-left.md", "kind": "issue"}, "issue:publisher:001__the-leanpub-iteration-plan": {"id": "issue:publisher:001__the-leanpub-iteration-plan", "role": "publisher", "state": "open", "title": "The Leanpub iteration plan", "url": "team/publisher/issues/open/001__the-leanpub-iteration-plan.md", "file": "team/publisher/issues/open/001__the-leanpub-iteration-plan.md", "kind": "issue"}, "issue:publisher:002__the-6x9-pdf-and-kdp": {"id": "issue:publisher:002__the-6x9-pdf-and-kdp", "role": "publisher", "state": "open", "title": "The 6x9 PDF and KDP", "url": "team/publisher/issues/open/002__the-6x9-pdf-and-kdp.md", "file": "team/publisher/issues/open/002__the-6x9-pdf-and-kdp.md", "kind": "issue"}, "issue:publisher:003__a-launch-in-lisbon-at-web-summit": {"id": "issue:publisher:003__a-launch-in-lisbon-at-web-summit", "role": "publisher", "state": "blocked", "title": "A launch in Lisbon at Web Summit", "url": "team/publisher/issues/blocked/003__a-launch-in-lisbon-at-web-summit.md", "file": "team/publisher/issues/blocked/003__a-launch-in-lisbon-at-web-summit.md", "kind": "issue"}, "issue:reviewer:001__review-the-2018-text-one-record-per-chapter": {"id": "issue:reviewer:001__review-the-2018-text-one-record-per-chapter", "role": "reviewer", "state": "open", "title": "Review the 2018 text, one record per chapter", "url": "team/reviewer/issues/open/001__review-the-2018-text-one-record-per-chapter.md", "file": "team/reviewer/issues/open/001__review-the-2018-text-one-record-per-chapter.md", "kind": "issue"}, "issue:reviewer:002__check-the-map-row-by-row": {"id": "issue:reviewer:002__check-the-map-row-by-row", "role": "reviewer", "state": "open", "title": "Check the map, row by row", "url": "team/reviewer/issues/open/002__check-the-map-row-by-row.md", "file": "team/reviewer/issues/open/002__check-the-map-row-by-row.md", "kind": "issue"}, "issue:reviewer:003__the-three-missing-stem-figures": {"id": "issue:reviewer:003__the-three-missing-stem-figures", "role": "reviewer", "state": "open", "title": "The three missing STEM figures", "url": "team/reviewer/issues/open/003__the-three-missing-stem-figures.md", "file": "team/reviewer/issues/open/003__the-three-missing-stem-figures.md", "kind": "issue"}, "issue:reviewer:004__settle-the-licence-of-the-2018-text": {"id": "issue:reviewer:004__settle-the-licence-of-the-2018-text", "role": "reviewer", "state": "blocked", "title": "Settle the licence of the 2018 text", "url": "team/reviewer/issues/blocked/004__settle-the-licence-of-the-2018-text.md", "file": "team/reviewer/issues/blocked/004__settle-the-licence-of-the-2018-text.md", "kind": "issue"}, "brief:editor:book__v1.0.0__connect-the-dots-backwards": {"id": "brief:editor:book__v1.0.0__connect-the-dots-backwards", "role": "editor", "title": "Connect the dots backwards: paths, learning and reading on paper", "url": "team/editor/briefs/book__v1.0.0__connect-the-dots-backwards.md", "articles": ["connect-the-dots-backwards"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__everything-is-connected": {"id": "brief:editor:book__v1.0.0__everything-is-connected", "role": "editor", "title": "Everything is connected: graphs", "url": "team/editor/briefs/book__v1.0.0__everything-is-connected.md", "articles": ["everything-is-connected"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__everything-unfinished-in-one-place": {"id": "brief:editor:book__v1.0.0__everything-unfinished-in-one-place", "role": "editor", "title": "Everything unfinished in one place", "url": "team/editor/briefs/book__v1.0.0__everything-unfinished-in-one-place.md", "articles": ["everything-unfinished-in-one-place"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__follow-the-rabbit-holes": {"id": "brief:editor:book__v1.0.0__follow-the-rabbit-holes", "role": "editor", "title": "Follow the rabbit holes: provenance, evidence, preparation, and a hands-on part", "url": "team/editor/briefs/book__v1.0.0__follow-the-rabbit-holes.md", "articles": ["follow-the-rabbit-holes"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__gen-zx-developers": {"id": "brief:editor:book__v1.0.0__gen-zx-developers", "role": "editor", "title": "Gen ZX Developers: the first change set for the board", "url": "team/editor/briefs/book__v1.0.0__gen-zx-developers.md", "articles": ["gen-zx-developers"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__generative-ai-not-ai": {"id": "brief:editor:book__v1.0.0__generative-ai-not-ai", "role": "editor", "title": "Generative AI, not AI", "url": "team/editor/briefs/book__v1.0.0__generative-ai-not-ai.md", "articles": ["generative-ai-not-ai"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__interview-01-who-is-the-reader": {"id": "brief:editor:book__v1.0.0__interview-01-who-is-the-reader", "role": "editor", "title": "Interview 01: who is the reader, and what does the book ask of them", "url": "team/editor/briefs/book__v1.0.0__interview-01-who-is-the-reader.md", "articles": [], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__lenses-roles-and-loops": {"id": "brief:editor:book__v1.0.0__lenses-roles-and-loops", "role": "editor", "title": "Lenses, roles and loops: how LLMs and agents work", "url": "team/editor/briefs/book__v1.0.0__lenses-roles-and-loops.md", "articles": ["lenses-roles-and-loops"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__lucky-to-be-here": {"id": "brief:editor:book__v1.0.0__lucky-to-be-here", "role": "editor", "title": "You are lucky to be here: the core idea and the opening", "url": "team/editor/briefs/book__v1.0.0__lucky-to-be-here.md", "articles": ["lucky-to-be-here"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__read-comment-decide": {"id": "brief:editor:book__v1.0.0__read-comment-decide", "role": "editor", "title": "Read, comment, decide", "url": "team/editor/briefs/book__v1.0.0__read-comment-decide.md", "articles": ["read-comment-decide"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__start-from-the-storyline": {"id": "brief:editor:book__v1.0.0__start-from-the-storyline", "role": "editor", "title": "Start from the storyline", "url": "team/editor/briefs/book__v1.0.0__start-from-the-storyline.md", "articles": ["start-from-the-storyline"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__the-book-in-release-mode": {"id": "brief:editor:book__v1.0.0__the-book-in-release-mode", "role": "editor", "title": "The book in release mode: rc1, the rounds and the board", "url": "team/editor/briefs/book__v1.0.0__the-book-in-release-mode.md", "articles": ["the-book-in-release-mode"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__the-chapter-map-proposed": {"id": "brief:editor:book__v1.0.0__the-chapter-map-proposed", "role": "editor", "title": "The chapter map, proposed, and the ideas register", "url": "team/editor/briefs/book__v1.0.0__the-chapter-map-proposed.md", "articles": [], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__the-title-is-generation-zx-developers": {"id": "brief:editor:book__v1.0.0__the-title-is-generation-zx-developers", "role": "editor", "title": "The title is Generation ZX Developers (GenAI Startup Edition)", "url": "team/editor/briefs/book__v1.0.0__the-title-is-generation-zx-developers.md", "articles": [], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__where-do-you-land": {"id": "brief:editor:book__v1.0.0__where-do-you-land", "role": "editor", "title": "Where do you land: Wardley maps and the three centres of gravity", "url": "team/editor/briefs/book__v1.0.0__where-do-you-land.md", "articles": ["where-do-you-land"], "kind": "brief", "state": "sent"}, "brief:editor:book__v1.0.0__where-the-thinking-came-from": {"id": "brief:editor:book__v1.0.0__where-the-thinking-came-from", "role": "editor", "title": "Where the thinking came from: the influences in the book", "url": "team/editor/briefs/book__v1.0.0__where-the-thinking-came-from.md", "articles": ["where-the-thinking-came-from"], "kind": "brief", "state": "sent"}, "brief:editor:v0.2.1__one-board-for-the-book": {"id": "brief:editor:v0.2.1__one-board-for-the-book", "role": "editor", "title": "One board for the book", "url": "team/editor/briefs/v0.2.1__one-board-for-the-book.md", "articles": ["one-board-for-the-book"], "kind": "brief", "state": "sent"}, "brief:librarian:book__v1.0.0__gen-zx-developers": {"id": "brief:librarian:book__v1.0.0__gen-zx-developers", "role": "librarian", "title": "Gen ZX Developers: a variant of the chapter map, and the startup articles", "url": "team/librarian/briefs/book__v1.0.0__gen-zx-developers.md", "articles": ["gen-zx-developers"], "kind": "brief", "state": "sent"}, "brief:librarian:book__v1.0.0__the-book-in-release-mode": {"id": "brief:librarian:book__v1.0.0__the-book-in-release-mode", "role": "librarian", "title": "The book in release mode: the batches and the verdicts", "url": "team/librarian/briefs/book__v1.0.0__the-book-in-release-mode.md", "articles": ["the-book-in-release-mode"], "kind": "brief", "state": "sent"}, "brief:librarian:book__v1.0.0__the-title-is-generation-zx-developers": {"id": "brief:librarian:book__v1.0.0__the-title-is-generation-zx-developers", "role": "librarian", "title": "The title is Generation ZX Developers (GenAI Startup Edition)", "url": "team/librarian/briefs/book__v1.0.0__the-title-is-generation-zx-developers.md", "articles": [], "kind": "brief", "state": "sent"}, "brief:publisher:book__v1.0.0__gen-zx-developers": {"id": "brief:publisher:book__v1.0.0__gen-zx-developers", "role": "publisher", "title": "Gen ZX Developers: what a new title would mean", "url": "team/publisher/briefs/book__v1.0.0__gen-zx-developers.md", "articles": ["gen-zx-developers"], "kind": "brief", "state": "sent"}, "brief:publisher:book__v1.0.0__release-the-book-we-already-released": {"id": "brief:publisher:book__v1.0.0__release-the-book-we-already-released", "role": "publisher", "title": "Release v1.0.0 end to end", "url": "team/publisher/briefs/book__v1.0.0__release-the-book-we-already-released.md", "articles": ["release-the-book-we-already-released"], "kind": "brief", "state": "sent"}, "brief:publisher:book__v1.0.0__the-book-in-release-mode": {"id": "brief:publisher:book__v1.0.0__the-book-in-release-mode", "role": "publisher", "title": "The book in release mode: from release candidate to official", "url": "team/publisher/briefs/book__v1.0.0__the-book-in-release-mode.md", "articles": ["the-book-in-release-mode"], "kind": "brief", "state": "sent"}, "brief:publisher:book__v1.0.0__the-title-is-generation-zx-developers": {"id": "brief:publisher:book__v1.0.0__the-title-is-generation-zx-developers", "role": "publisher", "title": "The title is Generation ZX Developers (GenAI Startup Edition)", "url": "team/publisher/briefs/book__v1.0.0__the-title-is-generation-zx-developers.md", "articles": [], "kind": "brief", "state": "sent"}, "brief:reviewer:book__v1.0.0__the-book-in-release-mode": {"id": "brief:reviewer:book__v1.0.0__the-book-in-release-mode", "role": "reviewer", "title": "The book in release mode: round 2 is the 2018 book", "url": "team/reviewer/briefs/book__v1.0.0__the-book-in-release-mode.md", "articles": ["the-book-in-release-mode"], "kind": "brief", "state": "sent"}, "brief:reviewer:book__v1.0.0__the-licence-is-decided": {"id": "brief:reviewer:book__v1.0.0__the-licence-is-decided", "role": "reviewer", "title": "The licence is decided", "url": "team/reviewer/briefs/book__v1.0.0__the-licence-is-decided.md", "articles": [], "kind": "brief", "state": "sent"}}, "edges": [{"from": "sb:the-opening", "to": "art:lucky-to-be-here", "kind": "storyboard-quotes"}, {"from": "sb:where-do-you-land", "to": "art:where-do-you-land", "kind": "storyboard-quotes"}, {"from": "sb:connect-the-dots-backwards", "to": "art:connect-the-dots-backwards", "kind": "storyboard-quotes"}, {"from": "sb:where-the-thinking-came-from", "to": "art:where-the-thinking-came-from", "kind": "storyboard-quotes"}, {"from": "sb:generative-ai-not-ai", "to": "art:generative-ai-not-ai", "kind": "storyboard-quotes"}, {"from": "sb:follow-the-rabbit-holes", "to": "art:follow-the-rabbit-holes", "kind": "storyboard-quotes"}, {"from": "sb:everything-is-connected", "to": "art:everything-is-connected", "kind": "storyboard-quotes"}, {"from": "sb:lenses-roles-and-loops", "to": "art:lenses-roles-and-loops", "kind": "storyboard-quotes"}, {"from": "sb:the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "storyboard-quotes"}, {"from": "sb:gen-zx-developers", "to": "art:gen-zx-developers", "kind": "storyboard-quotes"}, {"from": "book:1.introduction/generation-z.md", "to": "news:generation-z-developers-again", "kind": "answered-by"}, {"from": "book:1.introduction/generation-z.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:1.introduction/how-this -book-was-created.md", "to": "news:short-punchy-and-co-written", "kind": "answered-by"}, {"from": "book:1.introduction/how-this -book-was-created.md", "to": "news:a-website-to-finish-the-book", "kind": "answered-by"}, {"from": "book:1.introduction/how-this -book-was-created.md", "to": "news:books-from-articles", "kind": "answered-by"}, {"from": "book:1.introduction/how-this -book-was-created.md", "to": "news:how-much-of-this-did-i-write", "kind": "answered-by"}, {"from": "book:1.introduction/how-to-get-a-job.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:1.introduction/how-to-get-a-job.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:1.introduction/stem-tech-stack.md", "to": "news:the-citizen-developer", "kind": "answered-by"}, {"from": "book:1.introduction/stem-tech-stack.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:10.misc/diagrams-to-add.md", "to": "news:the-infographic-bake-off", "kind": "answered-by"}, {"from": "book:10.misc/gen-z-research.md", "to": "news:generation-z-developers-again", "kind": "answered-by"}, {"from": "book:10.misc/o2-platform.md", "to": "news:bringing-my-past-work-back", "kind": "answered-by"}, {"from": "book:10.misc/stories-to-tell.md", "to": "news:portugal-2016-hacking-portugal", "kind": "answered-by"}, {"from": "book:10.misc/stories-to-tell.md", "to": "news:portugal-2010-a-challenge", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/_index.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/_index.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/docker.md", "to": "news:the-minimum-code-below", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/docker.md", "to": "news:move-the-cloud-not-the-code", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "to": "news:introducing-fractal-semantic-graphs", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "to": "news:the-graphs-books", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/google-search-gdd-sre.md", "to": "news:search-as-navigation", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/hugo.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/hugo.md", "to": "news:nineteen-sites", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/hugo.md", "to": "news:no-server-by-design", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/jira.md", "to": "news:the-agent-team-as-it-runs", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/open-source.md", "to": "news:the-fork-next-door", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/open-source.md", "to": "news:what-open-source-is-and-is-not", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/open-source.md", "to": "news:open-source-is-not-free", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/open-source.md", "to": "news:the-eyeballs-get-cheap", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/owasp.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/owasp.md", "to": "news:portugal-2010-a-challenge", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/python.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "to": "news:replicating-the-agentic-inbox", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "to": "news:omnichannel-programming", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/content/xcode-and-swift.md", "to": "news:a-minimal-viable-browser", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/aws.md", "to": "news:cloudflare-as-lego-blocks", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/aws.md", "to": "news:move-the-cloud-not-the-code", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/aws.md", "to": "news:ephemeral-town-planner-services", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "to": "news:green-does-not-mean-live", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "to": "news:sgit-in-a-ci-pipeline", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "to": "news:sgit-actions-side-by-side", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/github-flow.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/linux.md", "to": "news:the-minimum-code-below", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/stack-overflow.md", "to": "news:search-as-navigation", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/tdd.md", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "answered-by"}, {"from": "book:2.mvp-for-gen-z-dev/draft/tdd.md", "to": "news:the-code-you-do-not-ship", "kind": "answered-by"}, {"from": "book:3.technologies/content/AST.md", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "answered-by"}, {"from": "book:3.technologies/content/brain.md", "to": "news:knowing-when-to-stop", "kind": "answered-by"}, {"from": "book:3.technologies/content/brain.md", "to": "news:how-cheap-is-it-to-undo", "kind": "answered-by"}, {"from": "book:3.technologies/content/ide.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:3.technologies/content/ide.md", "to": "news:how-i-work-with-claude", "kind": "answered-by"}, {"from": "book:3.technologies/content/ml-ai.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:3.technologies/content/ml-ai.md", "to": "news:authority-outside-the-model", "kind": "answered-by"}, {"from": "book:3.technologies/content/pen-and-paper.md", "to": "news:why-i-love-wardley-maps", "kind": "answered-by"}, {"from": "book:3.technologies/draft/browser-automation.md", "to": "news:a-minimal-viable-browser", "kind": "answered-by"}, {"from": "book:3.technologies/draft/browser-automation.md", "to": "news:how-to-run-synthetic-users", "kind": "answered-by"}, {"from": "book:3.technologies/draft/dsl.md", "to": "news:introducing-fractal-semantic-graphs", "kind": "answered-by"}, {"from": "book:3.technologies/draft/scratch.md", "to": "news:the-citizen-developer", "kind": "answered-by"}, {"from": "book:3.technologies/draft/web-proxies.md", "to": "news:a-minimal-viable-browser", "kind": "answered-by"}, {"from": "book:4.life-patterns/automate-your-workflows.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:4.life-patterns/automate-your-workflows.md", "to": "news:replicating-the-agentic-inbox", "kind": "answered-by"}, {"from": "book:4.life-patterns/automate-your-workflows.md", "to": "news:from-a-spreadsheet-to-a-folder-per-person", "kind": "answered-by"}, {"from": "book:4.life-patterns/automate-your-workflows.md", "to": "news:omnichannel-programming", "kind": "answered-by"}, {"from": "book:4.life-patterns/civic-responsibility.md", "to": "news:judo-for-small-countries", "kind": "answered-by"}, {"from": "book:4.life-patterns/civic-responsibility.md", "to": "news:portugal-and-europe-2025", "kind": "answered-by"}, {"from": "book:4.life-patterns/civic-responsibility.md", "to": "news:who-owns-the-words", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/backup-your-life.md", "to": "news:what-sgit-is", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/backup-your-life.md", "to": "news:encrypted-memory-for-isolated-agents", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/backup-your-life.md", "to": "news:the-vault-is-live", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/be-a-founder.md", "to": "news:the-controllable-founder", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/be-a-founder.md", "to": "news:the-expert-founders", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/be-a-founder.md", "to": "news:sell-dont-issue", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/be-a-founder.md", "to": "news:not-a-straight-line", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "to": "news:reviews-on-the-record", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "to": "news:riskmandate-ten-questions", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/future-needs-you.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/future-needs-you.md", "to": "news:the-code-you-do-not-ship", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/learning.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/talking-to-yourself.md", "to": "news:my-memory-checked", "kind": "answered-by"}, {"from": "book:4.life-patterns/content/talking-to-yourself.md", "to": "news:the-librarians-daily-brief", "kind": "answered-by"}, {"from": "book:4.life-patterns/curse-of-knowledge.md", "to": "news:how-the-voice-works", "kind": "answered-by"}, {"from": "book:4.life-patterns/curse-of-knowledge.md", "to": "news:one-article-five-readers", "kind": "answered-by"}, {"from": "book:4.life-patterns/ideas.md", "to": "news:bringing-my-past-work-back", "kind": "answered-by"}, {"from": "book:4.life-patterns/ideas.md", "to": "news:books-from-articles", "kind": "answered-by"}, {"from": "book:4.life-patterns/impostor-syndrome.md", "to": "news:hired-for-the-workflow", "kind": "answered-by"}, {"from": "book:4.life-patterns/king-is-naked.md", "to": "news:firing-journalists", "kind": "answered-by"}, {"from": "book:4.life-patterns/king-is-naked.md", "to": "news:stop-the-bleeding-then-ask-for-it-back", "kind": "answered-by"}, {"from": "book:4.life-patterns/learn-to-hack.md", "to": "news:who-are-you-protecting-against", "kind": "answered-by"}, {"from": "book:4.life-patterns/learn-to-hack.md", "to": "news:fix-the-page-yourself", "kind": "answered-by"}, {"from": "book:4.life-patterns/mentors.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:4.life-patterns/one-way-two-way-doors.md", "to": "news:how-cheap-is-it-to-undo", "kind": "answered-by"}, {"from": "book:4.life-patterns/one-way-two-way-doors.md", "to": "news:the-human-in-the-loop", "kind": "answered-by"}, {"from": "book:4.life-patterns/pionners-settlers-town-planners.md", "to": "news:software-vendors-as-villagers", "kind": "answered-by"}, {"from": "book:4.life-patterns/pionners-settlers-town-planners.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:4.life-patterns/pionners-settlers-town-planners.md", "to": "news:why-i-love-wardley-maps", "kind": "answered-by"}, {"from": "book:4.life-patterns/pionners-settlers-town-planners.md", "to": "news:explorer-to-villager-newsroom", "kind": "answered-by"}, {"from": "book:4.life-patterns/publish-publish-publish.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:4.life-patterns/publish-publish-publish.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:4.life-patterns/publish-publish-publish.md", "to": "news:nineteen-sites", "kind": "answered-by"}, {"from": "book:4.life-patterns/refactoring.md", "to": "news:the-code-you-do-not-ship", "kind": "answered-by"}, {"from": "book:4.life-patterns/refactoring.md", "to": "news:short-punchy-and-co-written", "kind": "answered-by"}, {"from": "book:4.life-patterns/start-with-why.md", "to": "news:places-of-highest-leverage", "kind": "answered-by"}, {"from": "book:4.life-patterns/thinking-as-programmer.md", "to": "news:the-citizen-developer", "kind": "answered-by"}, {"from": "book:4.life-patterns/thinking-as-programmer.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:4.life-patterns/why-diversity-matters.md", "to": "news:one-article-five-readers", "kind": "answered-by"}, {"from": "book:4.life-patterns/workflows.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:4.life-patterns/workflows.md", "to": "news:how-i-work-with-claude", "kind": "answered-by"}, {"from": "book:4.life-patterns/workflows.md", "to": "news:the-mandate-stack", "kind": "answered-by"}, {"from": "book:5.concepts/CI-Testing.md", "to": "news:green-does-not-mean-live", "kind": "answered-by"}, {"from": "book:5.concepts/CI-Testing.md", "to": "news:sgit-in-a-ci-pipeline", "kind": "answered-by"}, {"from": "book:5.concepts/agile-and-kanban.md", "to": "news:the-agent-team-as-it-runs", "kind": "answered-by"}, {"from": "book:5.concepts/amazon-press-releases.md", "to": "news:three-linkedin-pages", "kind": "answered-by"}, {"from": "book:5.concepts/changes.md", "to": "news:every-mistake-added-a-rule", "kind": "answered-by"}, {"from": "book:5.concepts/changes.md", "to": "news:how-cheap-is-it-to-undo", "kind": "answered-by"}, {"from": "book:5.concepts/chaos-engineering.md", "to": "news:connector-twin-before-you-deploy-an-agent", "kind": "answered-by"}, {"from": "book:5.concepts/chaos-engineering.md", "to": "news:footprint-and-blast-radius", "kind": "answered-by"}, {"from": "book:5.concepts/deadlines.md", "to": "news:i-miss-it", "kind": "answered-by"}, {"from": "book:5.concepts/deadlines.md", "to": "news:the-question-is-whether-they-miss-it", "kind": "answered-by"}, {"from": "book:5.concepts/deadlines.md", "to": "news:places-of-highest-leverage", "kind": "answered-by"}, {"from": "book:5.concepts/design.md", "to": "news:the-infographic-bake-off", "kind": "answered-by"}, {"from": "book:5.concepts/devops.md", "to": "news:green-does-not-mean-live", "kind": "answered-by"}, {"from": "book:5.concepts/devops.md", "to": "news:no-server-by-design", "kind": "answered-by"}, {"from": "book:5.concepts/facts.md", "to": "news:my-memory-checked", "kind": "answered-by"}, {"from": "book:5.concepts/facts.md", "to": "news:reviews-on-the-record", "kind": "answered-by"}, {"from": "book:5.concepts/feedback-loops.md", "to": "news:reviews-on-the-record", "kind": "answered-by"}, {"from": "book:5.concepts/feedback-loops.md", "to": "news:how-to-run-synthetic-users", "kind": "answered-by"}, {"from": "book:5.concepts/gdpr.md", "to": "news:ai-baseline-control-framework", "kind": "answered-by"}, {"from": "book:5.concepts/graphs.md", "to": "news:the-graphs-books", "kind": "answered-by"}, {"from": "book:5.concepts/graphs.md", "to": "news:search-as-navigation", "kind": "answered-by"}, {"from": "book:5.concepts/graphs.md", "to": "news:introducing-fractal-semantic-graphs", "kind": "answered-by"}, {"from": "book:5.concepts/graphs.md", "to": "news:memory-is-not-a-spectator-sport", "kind": "answered-by"}, {"from": "book:5.concepts/inventing-on-principle.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:5.concepts/legacy-applications.md", "to": "news:the-code-you-do-not-ship", "kind": "answered-by"}, {"from": "book:5.concepts/micro-services.md", "to": "news:ephemeral-town-planner-services", "kind": "answered-by"}, {"from": "book:5.concepts/micro-services.md", "to": "news:no-server-by-design", "kind": "answered-by"}, {"from": "book:5.concepts/pair-programming.md", "to": "news:how-i-work-with-claude", "kind": "answered-by"}, {"from": "book:5.concepts/pair-programming.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:5.concepts/recursive-functions.md", "to": "news:introducing-fractal-semantic-graphs", "kind": "answered-by"}, {"from": "book:5.concepts/repl.md", "to": "news:explorer-coding", "kind": "answered-by"}, {"from": "book:5.concepts/serverless.md", "to": "news:ephemeral-town-planner-services", "kind": "answered-by"}, {"from": "book:5.concepts/serverless.md", "to": "news:no-server-by-design", "kind": "answered-by"}, {"from": "book:5.concepts/serverless.md", "to": "news:cloudflare-as-lego-blocks", "kind": "answered-by"}, {"from": "book:5.concepts/sre.md", "to": "news:green-does-not-mean-live", "kind": "answered-by"}, {"from": "book:6.security/3rd-party-modules.md", "to": "news:attacks-rewritten-as-mandates", "kind": "answered-by"}, {"from": "book:6.security/3rd-party-modules.md", "to": "news:the-eyeballs-get-cheap", "kind": "answered-by"}, {"from": "book:6.security/3rd-party-modules.md", "to": "news:open-source-is-not-free", "kind": "answered-by"}, {"from": "book:6.security/bug-bounties.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:6.security/dont-touch-production.md", "to": "news:footprint-and-blast-radius", "kind": "answered-by"}, {"from": "book:6.security/dont-touch-production.md", "to": "news:connector-twin-before-you-deploy-an-agent", "kind": "answered-by"}, {"from": "book:6.security/dont-touch-production.md", "to": "news:why-my-agents-do-not-run-on-my-laptop", "kind": "answered-by"}, {"from": "book:6.security/security-better-developers.md", "to": "news:who-are-you-protecting-against", "kind": "answered-by"}, {"from": "book:6.security/security-better-developers.md", "to": "news:if-somebody-built-a-company-on-code-review", "kind": "answered-by"}, {"from": "book:6.security/threat-modeling.md", "to": "news:every-risk-is-already-accepted", "kind": "answered-by"}, {"from": "book:6.security/threat-modeling.md", "to": "news:who-are-you-protecting-against", "kind": "answered-by"}, {"from": "book:6.security/threat-modeling.md", "to": "news:footprint-and-blast-radius", "kind": "answered-by"}, {"from": "book:7.your-cv/_index.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:7.your-cv/blogs.md", "to": "news:your-own-newsroom", "kind": "answered-by"}, {"from": "book:7.your-cv/blogs.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:7.your-cv/future-self.md", "to": "news:bringing-my-past-work-back", "kind": "answered-by"}, {"from": "book:7.your-cv/future-self.md", "to": "news:memory-is-not-a-spectator-sport", "kind": "answered-by"}, {"from": "book:7.your-cv/git.md", "to": "news:what-sgit-is", "kind": "answered-by"}, {"from": "book:7.your-cv/git.md", "to": "news:sgit-is-a-standard", "kind": "answered-by"}, {"from": "book:7.your-cv/github.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:7.your-cv/github.md", "to": "news:the-fork-next-door", "kind": "answered-by"}, {"from": "book:7.your-cv/leanpub.md", "to": "news:books-from-articles", "kind": "answered-by"}, {"from": "book:7.your-cv/leanpub.md", "to": "news:generation-z-developers-again", "kind": "answered-by"}, {"from": "book:7.your-cv/linkedin.md", "to": "news:three-linkedin-pages", "kind": "answered-by"}, {"from": "book:7.your-cv/linkedin.md", "to": "news:act-as-the-job-you-want", "kind": "answered-by"}, {"from": "book:7.your-cv/personal-brand.md", "to": "news:who-is-speaking", "kind": "answered-by"}, {"from": "book:7.your-cv/personal-brand.md", "to": "news:how-the-voice-works", "kind": "answered-by"}, {"from": "book:7.your-cv/personal-brand.md", "to": "news:the-man-behind-the-curtain", "kind": "answered-by"}, {"from": "book:_manuscript/github-issues.md", "to": "news:reviews-on-the-record", "kind": "answered-by"}, {"from": "topic:everyone-is-a-developer", "to": "news:generation-z-developers-again", "kind": "topic-has-article"}, {"from": "topic:everyone-is-a-developer", "to": "news:portugal-2024-genai-in-portuguese", "kind": "topic-has-article"}, {"from": "topic:everyone-is-a-developer", "to": "news:the-citizen-developer", "kind": "topic-has-article"}, {"from": "topic:everyone-is-a-developer", "to": "news:two-years-in-the-opposite", "kind": "topic-has-article"}, {"from": "topic:everyone-is-a-developer", "to": "news:explorer-coding", "kind": "topic-has-article"}, {"from": "topic:everyone-is-a-developer", "to": "news:hired-for-the-workflow", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:a-browser-for-one", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:a-custom-firefox-of-my-own", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:explorer-coding", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:software-vendors-as-villagers", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:who-will-fix-your-mess", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:the-citizen-developer", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:ephemeral-town-planner-services", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:omnichannel-programming", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:two-years-in-the-opposite", "kind": "topic-has-article"}, {"from": "topic:explorers-villagers-town-planners", "to": "news:the-code-you-do-not-ship", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:act-as-the-job-you-want", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:agentics-ready-to-sell", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:hired-for-the-workflow", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:three-linkedin-pages", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:the-man-behind-the-curtain", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:the-expert-founders", "kind": "topic-has-article"}, {"from": "topic:getting-the-job", "to": "news:your-own-newsroom", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:books-from-articles", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:the-man-behind-the-curtain", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:your-own-newsroom", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:act-as-the-job-you-want", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:three-linkedin-pages", "kind": "topic-has-article"}, {"from": "topic:publish-in-public", "to": "news:bringing-my-past-work-back", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:how-the-newsletter-is-made", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:omnichannel-programming", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:the-agents-write-too", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:the-briefs-so-far", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:the-librarians-daily-brief", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:my-memory-checked", "kind": "topic-has-article"}, {"from": "topic:working-with-agents", "to": "news:knowledge-that-maintains-itself", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:every-link-points-back", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:my-memory-checked", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:on-the-record", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:reviews-on-the-record", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:the-ai-conference-read-for-governance", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:your-agents-logs-are-a-self-report", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:from-send-to-sgit", "kind": "topic-has-article"}, {"from": "topic:facts-and-the-record", "to": "news:how-the-newsletter-is-made", "kind": "topic-has-article"}, {"from": "topic:human-in-the-loop", "to": "news:how-cheap-is-it-to-undo", "kind": "topic-has-article"}, {"from": "topic:human-in-the-loop", "to": "news:the-human-in-the-loop", "kind": "topic-has-article"}, {"from": "topic:human-in-the-loop", "to": "news:the-editors-channel", "kind": "topic-has-article"}, {"from": "topic:human-in-the-loop", "to": "news:approve-at-altitude", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:a-policy-beside-the-prompt", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:a-policy-for-every-skill", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:agent-hooks-october-2026", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:allowed-is-not-right", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:approve-at-altitude", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:are-hooks-the-sweet-spot", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:case-law-for-agents", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:commanders-intent-is-a-behaviour-policy", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:hooks-are-kernel-code", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:inside-the-northstar-twin", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:policy-as-code-needs-a-policy-first", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:system-prompts-as-behaviour-policies", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:the-policy-draws-the-liability-line", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:the-policy-guards-the-door", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:three-decisions-mapped", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:three-policies-for-an-agent", "kind": "topic-has-article"}, {"from": "topic:controlling-your-agent", "to": "news:what-can-your-agent-reach", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:a-minimal-viable-browser", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:attacks-rewritten-as-mandates", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:fix-the-page-yourself", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:handing-secrets-to-agents", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:skill-behaviour-policy", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:the-code-you-do-not-ship", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:the-minimum-code-below", "kind": "topic-has-article"}, {"from": "topic:security-agent-era", "to": "news:the-eyeballs-get-cheap", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:our-first-pr-in-ruflo", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:the-eyeballs-get-cheap", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:the-fork-next-door", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:the-value-of-constraints", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:sell-dont-issue", "kind": "topic-has-article"}, {"from": "topic:open-source", "to": "news:act-as-the-job-you-want", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:cloudflare-as-lego-blocks", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:ephemeral-town-planner-services", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:free-models-your-own-key", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:sgit-in-a-ci-pipeline", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:sgit-is-a-standard", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:the-tokens-hook", "kind": "topic-has-article"}, {"from": "topic:building-blocks", "to": "news:your-own-newsroom", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:bringing-my-past-work-back", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:journalism-becomes-intelligence", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:knowledge-that-maintains-itself", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:search-as-navigation", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:sixteen-notes-i-did-not-want-to-lose", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:the-librarians-daily-brief", "kind": "topic-has-article"}, {"from": "topic:graphs-memory", "to": "news:the-graphs-books", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:from-send-to-sgit", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:paying-after-the-value", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:sell-dont-issue", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:stop-the-bleeding-then-ask-for-it-back", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:the-controllable-founder", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:the-expert-founders", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:the-fork-next-door", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:software-vendors-as-villagers", "kind": "topic-has-article"}, {"from": "topic:be-a-founder", "to": "news:a-browser-for-one", "kind": "topic-has-article"}, {"from": "topic:civic-and-history", "to": "news:portugal-2010-a-challenge", "kind": "topic-has-article"}, {"from": "topic:civic-and-history", "to": "news:portugal-2016-hacking-portugal", "kind": "topic-has-article"}, {"from": "topic:civic-and-history", "to": "news:portugal-and-europe-2025", "kind": "topic-has-article"}, {"from": "topic:civic-and-history", "to": "news:portugal-2024-genai-in-portuguese", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:a-book-for-one-reader", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:a-website-to-finish-the-book", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:short-punchy-and-co-written", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:the-editors-channel", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:the-graphs-books", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:versions-of-versions", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:who-is-speaking", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:books-from-articles", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:my-memory-checked", "kind": "topic-has-article"}, {"from": "topic:making-of", "to": "news:reviews-on-the-record", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:places-of-highest-leverage", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:knowing-when-to-stop", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:not-a-straight-line", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:i-miss-it", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:how-much-of-this-did-i-write", "kind": "topic-has-article"}, {"from": "topic:direction-is-the-scarce-skill", "to": "news:every-mistake-added-a-rule", "kind": "topic-has-article"}, {"from": "topic:your-first-workspace", "to": "news:from-a-spreadsheet-to-a-folder-per-person", "kind": "topic-has-article"}, {"from": "topic:your-first-workspace", "to": "news:how-i-work-with-claude", "kind": "topic-has-article"}, {"from": "topic:your-first-workspace", "to": "news:replicating-the-agentic-inbox", "kind": "topic-has-article"}, {"from": "topic:your-first-workspace", "to": "news:why-my-agents-do-not-run-on-my-laptop", "kind": "topic-has-article"}, {"from": "topic:your-first-workspace", "to": "news:how-to-run-synthetic-users", "kind": "topic-has-article"}, {"from": "topic:shipped-means-the-user-has-it", "to": "news:green-does-not-mean-live", "kind": "topic-has-article"}, {"from": "topic:shipped-means-the-user-has-it", "to": "news:explorer-to-villager-newsroom", "kind": "topic-has-article"}, {"from": "topic:shipped-means-the-user-has-it", "to": "news:the-records-ran-out", "kind": "topic-has-article"}, {"from": "topic:shipped-means-the-user-has-it", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "topic-has-article"}, {"from": "topic:shipped-means-the-user-has-it", "to": "news:how-to-run-synthetic-users", "kind": "topic-has-article"}, {"from": "concept:explorer-villager-town-planner", "to": "news:explorer-coding", "kind": "concept-defined-in"}, {"from": "concept:explorer-coding", "to": "news:explorer-coding", "kind": "concept-defined-in"}, {"from": "concept:the-handover-deployment-gap", "to": "news:who-will-fix-your-mess", "kind": "concept-defined-in"}, {"from": "concept:citizen-developer", "to": "news:the-citizen-developer", "kind": "concept-defined-in"}, {"from": "concept:the-prototype-is-the-best-brief", "to": "news:the-citizen-developer", "kind": "concept-defined-in"}, {"from": "concept:ai-operator", "to": "news:hired-for-the-workflow", "kind": "concept-defined-in"}, {"from": "concept:hired-for-the-workflow", "to": "news:hired-for-the-workflow", "kind": "concept-defined-in"}, {"from": "concept:act-as-the-job-you-want", "to": "news:act-as-the-job-you-want", "kind": "concept-defined-in"}, {"from": "concept:your-own-newsroom", "to": "news:your-own-newsroom", "kind": "concept-defined-in"}, {"from": "concept:omnichannel-programming", "to": "news:omnichannel-programming", "kind": "concept-defined-in"}, {"from": "concept:brief", "to": "news:the-briefs-so-far", "kind": "concept-defined-in"}, {"from": "concept:one-way-door-two-way-door", "to": "news:how-cheap-is-it-to-undo", "kind": "concept-defined-in"}, {"from": "concept:blast-radius", "to": "news:the-human-in-the-loop", "kind": "concept-defined-in"}, {"from": "concept:agent-behaviour-policy-abp", "to": "news:what-can-your-agent-reach", "kind": "concept-defined-in"}, {"from": "concept:mandate-reach-and-the-gap", "to": "news:attacks-rewritten-as-mandates", "kind": "concept-defined-in"}, {"from": "concept:hope-based-security", "to": "news:are-hooks-the-sweet-spot", "kind": "concept-defined-in"}, {"from": "concept:hooks", "to": "news:agent-hooks-october-2026", "kind": "concept-defined-in"}, {"from": "concept:behaviour-decision-and-workflow-policies", "to": "news:three-policies-for-an-agent", "kind": "concept-defined-in"}, {"from": "concept:allowed-is-not-right", "to": "news:allowed-is-not-right", "kind": "concept-defined-in"}, {"from": "concept:lethal-trifecta", "to": "news:skill-behaviour-policy", "kind": "concept-defined-in"}, {"from": "concept:the-record", "to": "news:my-memory-checked", "kind": "concept-defined-in"}, {"from": "concept:review-on-the-record", "to": "news:reviews-on-the-record", "kind": "concept-defined-in"}, {"from": "concept:self-report", "to": "news:your-agents-logs-are-a-self-report", "kind": "concept-defined-in"}, {"from": "concept:code-is-a-liability-minimal-viable-code-path", "to": "news:the-code-you-do-not-ship", "kind": "concept-defined-in"}, {"from": "concept:ephemeral-town-planner-services", "to": "news:ephemeral-town-planner-services", "kind": "concept-defined-in"}, {"from": "concept:fractal-semantic-graph", "to": "news:introducing-fractal-semantic-graphs", "kind": "concept-defined-in"}, {"from": "concept:the-fork-next-door", "to": "news:the-fork-next-door", "kind": "concept-defined-in"}, {"from": "concept:every-part-buys-the-next", "to": "news:the-question-is-whether-they-miss-it", "kind": "concept-defined-in"}, {"from": "concept:three-voices", "to": "news:who-is-speaking", "kind": "concept-defined-in"}, {"from": "concept:your-own-key", "to": "news:free-models-your-own-key", "kind": "concept-defined-in"}, {"from": "concept:wardley-map", "to": "news:why-i-love-wardley-maps", "kind": "concept-defined-in"}, {"from": "concept:place-of-highest-leverage", "to": "news:places-of-highest-leverage", "kind": "concept-defined-in"}, {"from": "concept:direction-is-the-scarce-thing", "to": "news:places-of-highest-leverage", "kind": "concept-defined-in"}, {"from": "concept:knowing-when-to-stop", "to": "news:knowing-when-to-stop", "kind": "concept-defined-in"}, {"from": "concept:footprint", "to": "news:footprint-and-blast-radius", "kind": "concept-defined-in"}, {"from": "concept:green-does-not-mean-live", "to": "news:green-does-not-mean-live", "kind": "concept-defined-in"}, {"from": "concept:an-agent-is-a-session-with-a-focus", "to": "news:how-i-work-with-claude", "kind": "concept-defined-in"}, {"from": "concept:drafts-never-send", "to": "news:replicating-the-agentic-inbox", "kind": "concept-defined-in"}, {"from": "concept:threat-ladder-draw-the-line-where-the-attacker-is", "to": "news:who-are-you-protecting-against", "kind": "concept-defined-in"}, {"from": "concept:every-risk-is-already-accepted", "to": "news:every-risk-is-already-accepted", "kind": "concept-defined-in"}, {"from": "concept:agents-decide-people-answer", "to": "news:who-owns-the-words", "kind": "concept-defined-in"}, {"from": "concept:agency-scale", "to": "news:agency-is-not-a-yes", "kind": "concept-defined-in"}, {"from": "concept:every-mistake-added-a-rule", "to": "news:every-mistake-added-a-rule", "kind": "concept-defined-in"}, {"from": "concept:re-anchoring", "to": "news:re-anchoring-agent-behaviour-policies", "kind": "concept-defined-in"}, {"from": "concept:synthetic-users", "to": "news:how-to-run-synthetic-users", "kind": "concept-defined-in"}, {"from": "concept:go-slow-to-go-fast", "to": "news:explorer-to-villager-newsroom", "kind": "concept-defined-in"}, {"from": "concept:no-server-by-design", "to": "news:no-server-by-design", "kind": "concept-defined-in"}, {"from": "concept:do-they-miss-it", "to": "news:the-question-is-whether-they-miss-it", "kind": "concept-defined-in"}, {"from": "concept:open-source-means-nobody-can-lock-you-in", "to": "news:what-open-source-is-and-is-not", "kind": "concept-defined-in"}, {"from": "concept:inertia-decides", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "concept-defined-in"}, {"from": "part:before-you-start", "to": "sb:the-opening", "kind": "part-storyboarded-by"}, {"from": "chapter:gen-zx", "to": "part:before-you-start", "kind": "chapter-in-part"}, {"from": "chapter:gen-zx", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:gen-zx", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:gen-zx", "to": "book:1.introduction/generation-z.md", "kind": "chapter-answers-book"}, {"from": "chapter:gen-zx", "to": "book:1.introduction/_index.md", "kind": "chapter-answers-book"}, {"from": "chapter:lucky-to-be-here", "to": "part:before-you-start", "kind": "chapter-in-part"}, {"from": "chapter:lucky-to-be-here", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:lucky-to-be-here", "to": "book:1.introduction/_index.md", "kind": "chapter-answers-book"}, {"from": "chapter:lucky-to-be-here", "to": "book:1.introduction/generation-z.md", "kind": "chapter-answers-book"}, {"from": "chapter:lucky-to-be-here", "to": "book:4.life-patterns/the-zone.md", "kind": "chapter-answers-book"}, {"from": "chapter:lucky-to-be-here", "to": "book:4.life-patterns/BBS-and-modems.md", "kind": "chapter-answers-book"}, {"from": "chapter:lucky-to-be-here", "to": "book:3.technologies/draft/dopamine.md", "kind": "chapter-answers-book"}, {"from": "chapter:everything-is-connected", "to": "part:before-you-start", "kind": "chapter-in-part"}, {"from": "chapter:everything-is-connected", "to": "topic:graphs-memory", "kind": "chapter-covers-topic"}, {"from": "chapter:everything-is-connected", "to": "book:5.concepts/graphs.md", "kind": "chapter-answers-book"}, {"from": "chapter:everything-is-connected", "to": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "chapter-answers-book"}, {"from": "chapter:everything-is-connected", "to": "book:3.technologies/content/AST.md", "kind": "chapter-answers-book"}, {"from": "chapter:where-do-you-land", "to": "part:before-you-start", "kind": "chapter-in-part"}, {"from": "chapter:where-do-you-land", "to": "topic:explorers-villagers-town-planners", "kind": "chapter-covers-topic"}, {"from": "chapter:where-do-you-land", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "chapter-answers-book"}, {"from": "chapter:connect-the-dots-backwards", "to": "part:before-you-start", "kind": "chapter-in-part"}, {"from": "chapter:connect-the-dots-backwards", "to": "topic:direction-is-the-scarce-skill", "kind": "chapter-covers-topic"}, {"from": "chapter:connect-the-dots-backwards", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:connect-the-dots-backwards", "to": "book:4.life-patterns/content/learning.md", "kind": "chapter-answers-book"}, {"from": "chapter:connect-the-dots-backwards", "to": "book:3.technologies/content/books.md", "kind": "chapter-answers-book"}, {"from": "chapter:connect-the-dots-backwards", "to": "book:3.technologies/content/pen-and-paper.md", "kind": "chapter-answers-book"}, {"from": "chapter:connect-the-dots-backwards", "to": "book:4.life-patterns/love-maths.md", "kind": "chapter-answers-book"}, {"from": "chapter:connect-the-dots-backwards", "to": "book:4.life-patterns/thinking-as-programmer.md", "kind": "chapter-answers-book"}, {"from": "chapter:what-generative-ai-is", "to": "part:the-frame", "kind": "chapter-in-part"}, {"from": "chapter:what-generative-ai-is", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:what-generative-ai-is", "to": "book:3.technologies/content/ml-ai.md", "kind": "chapter-answers-book"}, {"from": "chapter:lenses-roles-and-loops", "to": "part:the-frame", "kind": "chapter-in-part"}, {"from": "chapter:lenses-roles-and-loops", "to": "topic:working-with-agents", "kind": "chapter-covers-topic"}, {"from": "chapter:lenses-roles-and-loops", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:lenses-roles-and-loops", "to": "book:3.technologies/content/ml-ai.md", "kind": "chapter-answers-book"}, {"from": "chapter:everyone-is-a-developer", "to": "part:the-frame", "kind": "chapter-in-part"}, {"from": "chapter:everyone-is-a-developer", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:everyone-is-a-developer", "to": "book:1.introduction/stem-tech-stack.md", "kind": "chapter-answers-book"}, {"from": "chapter:everyone-is-a-developer", "to": "book:3.technologies/draft/scratch.md", "kind": "chapter-answers-book"}, {"from": "chapter:everyone-is-a-developer", "to": "book:4.life-patterns/thinking-as-programmer.md", "kind": "chapter-answers-book"}, {"from": "chapter:explorer-coding-and-the-handover", "to": "part:the-frame", "kind": "chapter-in-part"}, {"from": "chapter:explorer-coding-and-the-handover", "to": "topic:explorers-villagers-town-planners", "kind": "chapter-covers-topic"}, {"from": "chapter:explorer-coding-and-the-handover", "to": "book:5.concepts/repl.md", "kind": "chapter-answers-book"}, {"from": "chapter:explorer-coding-and-the-handover", "to": "book:5.concepts/legacy-applications.md", "kind": "chapter-answers-book"}, {"from": "chapter:explorer-coding-and-the-handover", "to": "book:4.life-patterns/refactoring.md", "kind": "chapter-answers-book"}, {"from": "chapter:hired-for-the-workflow", "to": "part:getting-the-job", "kind": "chapter-in-part"}, {"from": "chapter:hired-for-the-workflow", "to": "topic:getting-the-job", "kind": "chapter-covers-topic"}, {"from": "chapter:hired-for-the-workflow", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "chapter-answers-book"}, {"from": "chapter:hired-for-the-workflow", "to": "book:3.technologies/content/ml-ai.md", "kind": "chapter-answers-book"}, {"from": "chapter:hired-for-the-workflow", "to": "book:4.life-patterns/impostor-syndrome.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "part:getting-the-job", "kind": "chapter-in-part"}, {"from": "chapter:act-as-the-job-you-want", "to": "topic:getting-the-job", "kind": "chapter-covers-topic"}, {"from": "chapter:act-as-the-job-you-want", "to": "topic:publish-in-public", "kind": "chapter-covers-topic"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:7.your-cv/_index.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:7.your-cv/github.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:7.your-cv/linkedin.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:7.your-cv/blogs.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:4.life-patterns/mentors.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:7.your-cv/upwork.md", "kind": "chapter-answers-book"}, {"from": "chapter:act-as-the-job-you-want", "to": "book:6.security/bug-bounties.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-own-newsroom", "to": "part:getting-the-job", "kind": "chapter-in-part"}, {"from": "chapter:your-own-newsroom", "to": "topic:publish-in-public", "kind": "chapter-covers-topic"}, {"from": "chapter:your-own-newsroom", "to": "book:4.life-patterns/publish-publish-publish.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-own-newsroom", "to": "book:2.mvp-for-gen-z-dev/content/hugo.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-own-newsroom", "to": "book:7.your-cv/leanpub.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-own-newsroom", "to": "book:5.concepts/amazon-press-releases.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-first-workspace", "to": "part:working-with-agents", "kind": "chapter-in-part"}, {"from": "chapter:your-first-workspace", "to": "topic:your-first-workspace", "kind": "chapter-covers-topic"}, {"from": "chapter:your-first-workspace", "to": "topic:security-agent-era", "kind": "chapter-covers-topic"}, {"from": "chapter:your-first-workspace", "to": "book:2.mvp-for-gen-z-dev/_index.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-first-workspace", "to": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-first-workspace", "to": "book:4.life-patterns/automate-your-workflows.md", "kind": "chapter-answers-book"}, {"from": "chapter:your-first-workspace", "to": "book:6.security/dont-touch-production.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-to-work-with-agents", "to": "part:working-with-agents", "kind": "chapter-in-part"}, {"from": "chapter:how-to-work-with-agents", "to": "topic:working-with-agents", "kind": "chapter-covers-topic"}, {"from": "chapter:how-to-work-with-agents", "to": "book:4.life-patterns/workflows.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-to-work-with-agents", "to": "book:5.concepts/agile-and-kanban.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-to-work-with-agents", "to": "book:3.technologies/content/ide.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-to-work-with-agents", "to": "book:5.concepts/design.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-to-work-with-agents", "to": "book:5.concepts/changes.md", "kind": "chapter-answers-book"}, {"from": "part:judgement", "to": "sb:follow-the-rabbit-holes", "kind": "part-storyboarded-by"}, {"from": "chapter:direction-and-judgement", "to": "part:judgement", "kind": "chapter-in-part"}, {"from": "chapter:direction-and-judgement", "to": "topic:direction-is-the-scarce-skill", "kind": "chapter-covers-topic"}, {"from": "chapter:direction-and-judgement", "to": "topic:human-in-the-loop", "kind": "chapter-covers-topic"}, {"from": "chapter:direction-and-judgement", "to": "book:5.concepts/deadlines.md", "kind": "chapter-answers-book"}, {"from": "chapter:direction-and-judgement", "to": "book:4.life-patterns/start-with-why.md", "kind": "chapter-answers-book"}, {"from": "chapter:direction-and-judgement", "to": "book:3.technologies/content/brain.md", "kind": "chapter-answers-book"}, {"from": "chapter:direction-and-judgement", "to": "book:4.life-patterns/one-way-two-way-doors.md", "kind": "chapter-answers-book"}, {"from": "chapter:direction-and-judgement", "to": "book:5.concepts/chaos-engineering.md", "kind": "chapter-answers-book"}, {"from": "chapter:direction-and-judgement", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "chapter-answers-book"}, {"from": "chapter:facts-and-the-record", "to": "part:judgement", "kind": "chapter-in-part"}, {"from": "chapter:facts-and-the-record", "to": "topic:facts-and-the-record", "kind": "chapter-covers-topic"}, {"from": "chapter:facts-and-the-record", "to": "book:5.concepts/facts.md", "kind": "chapter-answers-book"}, {"from": "chapter:facts-and-the-record", "to": "book:5.concepts/feedback-loops.md", "kind": "chapter-answers-book"}, {"from": "chapter:facts-and-the-record", "to": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "kind": "chapter-answers-book"}, {"from": "part:start-the-company", "to": "sb:gen-zx-developers", "kind": "part-storyboarded-by"}, {"from": "chapter:be-a-founder", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:be-a-founder", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:be-a-founder", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "chapter-answers-book"}, {"from": "chapter:ship-it-and-see-if-they-miss-it", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:ship-it-and-see-if-they-miss-it", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:ship-it-and-see-if-they-miss-it", "to": "topic:shipped-means-the-user-has-it", "kind": "chapter-covers-topic"}, {"from": "chapter:ship-it-and-see-if-they-miss-it", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "chapter-answers-book"}, {"from": "chapter:price-it-then-give-it-away", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:price-it-then-give-it-away", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:sell", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:sell", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:fund-it-or-do-not", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:fund-it-or-do-not", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:the-company-itself", "to": "part:start-the-company", "kind": "chapter-in-part"}, {"from": "chapter:the-company-itself", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:the-company-itself", "to": "topic:civic-and-history", "kind": "chapter-covers-topic"}, {"from": "chapter:building-blocks", "to": "part:build-it-without-a-server", "kind": "chapter-in-part"}, {"from": "chapter:building-blocks", "to": "topic:building-blocks", "kind": "chapter-covers-topic"}, {"from": "chapter:building-blocks", "to": "book:2.mvp-for-gen-z-dev/draft/aws.md", "kind": "chapter-answers-book"}, {"from": "chapter:building-blocks", "to": "book:5.concepts/serverless.md", "kind": "chapter-answers-book"}, {"from": "chapter:building-blocks", "to": "book:5.concepts/micro-services.md", "kind": "chapter-answers-book"}, {"from": "chapter:building-blocks", "to": "book:7.your-cv/git.md", "kind": "chapter-answers-book"}, {"from": "chapter:building-blocks", "to": "book:2.mvp-for-gen-z-dev/content/docker.md", "kind": "chapter-answers-book"}, {"from": "chapter:privacy-by-design", "to": "part:build-it-without-a-server", "kind": "chapter-in-part"}, {"from": "chapter:privacy-by-design", "to": "topic:security-agent-era", "kind": "chapter-covers-topic"}, {"from": "chapter:privacy-by-design", "to": "topic:building-blocks", "kind": "chapter-covers-topic"}, {"from": "chapter:privacy-by-design", "to": "book:6.security/_index.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "part:build-it-without-a-server", "kind": "chapter-in-part"}, {"from": "chapter:controlling-your-agent", "to": "topic:controlling-your-agent", "kind": "chapter-covers-topic"}, {"from": "chapter:controlling-your-agent", "to": "topic:security-agent-era", "kind": "chapter-covers-topic"}, {"from": "chapter:controlling-your-agent", "to": "book:6.security/threat-modeling.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:6.security/3rd-party-modules.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:6.security/security-better-developers.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:4.life-patterns/learn-to-hack.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:6.security/pointers.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:6.security/strings-should-be-banned.md", "kind": "chapter-answers-book"}, {"from": "chapter:controlling-your-agent", "to": "book:4.life-patterns/content/future-needs-you.md", "kind": "chapter-answers-book"}, {"from": "chapter:open-source", "to": "part:build-it-without-a-server", "kind": "chapter-in-part"}, {"from": "chapter:open-source", "to": "topic:open-source", "kind": "chapter-covers-topic"}, {"from": "chapter:open-source", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "chapter-answers-book"}, {"from": "chapter:open-source", "to": "book:2.mvp-for-gen-z-dev/content/creative-commons.md", "kind": "chapter-answers-book"}, {"from": "chapter:open-source", "to": "book:2.mvp-for-gen-z-dev/draft/github-flow.md", "kind": "chapter-answers-book"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "part:build-it-without-a-server", "kind": "chapter-in-part"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "topic:shipped-means-the-user-has-it", "kind": "chapter-covers-topic"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "book:5.concepts/CI-Testing.md", "kind": "chapter-answers-book"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "kind": "chapter-answers-book"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "book:2.mvp-for-gen-z-dev/draft/tdd.md", "kind": "chapter-answers-book"}, {"from": "chapter:shipped-means-the-user-has-it", "to": "book:5.concepts/devops.md", "kind": "chapter-answers-book"}, {"from": "chapter:graphs-and-your-future-self", "to": "part:the-long-game", "kind": "chapter-in-part"}, {"from": "chapter:graphs-and-your-future-self", "to": "topic:graphs-memory", "kind": "chapter-covers-topic"}, {"from": "chapter:graphs-and-your-future-self", "to": "book:7.your-cv/future-self.md", "kind": "chapter-answers-book"}, {"from": "chapter:graphs-and-your-future-self", "to": "book:4.life-patterns/content/backup-your-life.md", "kind": "chapter-answers-book"}, {"from": "chapter:graphs-and-your-future-self", "to": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "chapter-answers-book"}, {"from": "chapter:graphs-and-your-future-self", "to": "book:5.concepts/recursive-functions.md", "kind": "chapter-answers-book"}, {"from": "chapter:civic-responsibility", "to": "part:the-long-game", "kind": "chapter-in-part"}, {"from": "chapter:civic-responsibility", "to": "topic:civic-and-history", "kind": "chapter-covers-topic"}, {"from": "chapter:civic-responsibility", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "chapter-answers-book"}, {"from": "chapter:an-agentic-workflow-from-zero", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:an-agentic-workflow-from-zero", "to": "topic:your-first-workspace", "kind": "chapter-covers-topic"}, {"from": "chapter:your-first-graph", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:your-first-graph", "to": "topic:graphs-memory", "kind": "chapter-covers-topic"}, {"from": "chapter:five-lenses", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:five-lenses", "to": "topic:everyone-is-a-developer", "kind": "chapter-covers-topic"}, {"from": "chapter:a-tiny-agent-loop", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:a-tiny-agent-loop", "to": "topic:working-with-agents", "kind": "chapter-covers-topic"}, {"from": "chapter:images-infographics-and-storyboards", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:images-infographics-and-storyboards", "to": "topic:publish-in-public", "kind": "chapter-covers-topic"}, {"from": "chapter:meeting-briefs-and-follow-ups", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:meeting-briefs-and-follow-ups", "to": "topic:working-with-agents", "kind": "chapter-covers-topic"}, {"from": "chapter:your-own-publishing", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:your-own-publishing", "to": "topic:publish-in-public", "kind": "chapter-covers-topic"}, {"from": "chapter:your-own-publishing", "to": "topic:your-first-workspace", "kind": "chapter-covers-topic"}, {"from": "chapter:form-your-company", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:form-your-company", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:the-credits-and-programmes-2026", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:the-credits-and-programmes-2026", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:the-credits-and-programmes-2026", "to": "topic:building-blocks", "kind": "chapter-covers-topic"}, {"from": "chapter:your-first-price-and-first-ten-customers", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:your-first-price-and-first-ten-customers", "to": "topic:be-a-founder", "kind": "chapter-covers-topic"}, {"from": "chapter:ship-a-serverless-product-in-a-weekend", "to": "part:hands-on-2026", "kind": "chapter-in-part"}, {"from": "chapter:ship-a-serverless-product-in-a-weekend", "to": "topic:building-blocks", "kind": "chapter-covers-topic"}, {"from": "chapter:ship-a-serverless-product-in-a-weekend", "to": "topic:shipped-means-the-user-has-it", "kind": "chapter-covers-topic"}, {"from": "part:how-this-book-was-made", "to": "sb:the-2018-book", "kind": "part-storyboarded-by"}, {"from": "chapter:how-this-book-was-made", "to": "part:how-this-book-was-made", "kind": "chapter-in-part"}, {"from": "chapter:how-this-book-was-made", "to": "topic:making-of", "kind": "chapter-covers-topic"}, {"from": "chapter:how-this-book-was-made", "to": "book:1.introduction/how-this -book-was-created.md", "kind": "chapter-answers-book"}, {"from": "chapter:how-this-book-was-made", "to": "book:_manuscript/github-issues.md", "kind": "chapter-answers-book"}, {"from": "idea:wonder-not-fear", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "In short; How the first edition started; What goes where"}, {"from": "idea:wonder-not-fear", "to": "sb:the-opening", "kind": "idea-from-source", "label": "panels 1 to 4"}, {"from": "idea:wonder-not-fear", "to": "book:1.introduction/_index.md", "kind": "idea-answers-book"}, {"from": "idea:wonder-not-fear", "to": "book:1.introduction/generation-z.md", "kind": "idea-answers-book"}, {"from": "idea:wonder-not-fear", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:wonder-not-fear", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:lucky-to-be-here", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "You are lucky to be here; The pieces are still landing"}, {"from": "idea:lucky-to-be-here", "to": "book:1.introduction/generation-z.md", "kind": "idea-answers-book"}, {"from": "idea:lucky-to-be-here", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:lucky-to-be-here", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:nobody-knows", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "The hype, and maybe the crash"}, {"from": "idea:nobody-knows", "to": "news:two-years-in-the-opposite", "kind": "idea-from-source", "label": "the counter-story to AI burnout"}, {"from": "idea:nobody-knows", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:nobody-knows", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:seven-transformations", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "The transformations I have lived through"}, {"from": "idea:seven-transformations", "to": "sb:the-opening", "kind": "idea-from-source", "label": "the spectrum panel"}, {"from": "idea:seven-transformations", "to": "book:4.life-patterns/BBS-and-modems.md", "kind": "idea-answers-book"}, {"from": "idea:seven-transformations", "to": "book:1.introduction/stem-tech-stack.md", "kind": "idea-answers-book"}, {"from": "idea:seven-transformations", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:seven-transformations", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:technology-finally-works-for-you", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Technology that did not work for you"}, {"from": "idea:technology-finally-works-for-you", "to": "news:custom-uis-are-not-the-exception", "kind": "idea-from-source", "label": "a custom interface for each moment"}, {"from": "idea:technology-finally-works-for-you", "to": "book:3.technologies/draft/dopamine.md", "kind": "idea-answers-book"}, {"from": "idea:technology-finally-works-for-you", "to": "book:10.misc/gen-z-digital-env.md", "kind": "idea-answers-book"}, {"from": "idea:technology-finally-works-for-you", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:technology-finally-works-for-you", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:learning-made-for-you", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Learning, made for you"}, {"from": "idea:learning-made-for-you", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "This is about you; Learning is a lifelong skill"}, {"from": "idea:learning-made-for-you", "to": "book:4.life-patterns/content/learning.md", "kind": "idea-answers-book"}, {"from": "idea:learning-made-for-you", "to": "book:4.life-patterns/the-zone.md", "kind": "idea-answers-book"}, {"from": "idea:learning-made-for-you", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:learning-made-for-you", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Become a developer: craftspeople make their own tools"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "news:the-citizen-developer", "kind": "idea-from-source", "label": "the spreadsheet grown up"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "book:4.life-patterns/thinking-as-programmer.md", "kind": "idea-answers-book"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "book:1.introduction/stem-tech-stack.md", "kind": "idea-answers-book"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "chapter:everyone-is-a-developer", "kind": "idea-goes-to-chapter"}, {"from": "idea:craftspeople-make-their-own-tools", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:think-with-it", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Think with it; do not delegate your thinking to it"}, {"from": "idea:think-with-it", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "From answers to questions"}, {"from": "idea:think-with-it", "to": "book:4.life-patterns/content/learning.md", "kind": "idea-answers-book"}, {"from": "idea:think-with-it", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:think-with-it", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:jobs-that-never-scaled", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "The jobs that never scaled"}, {"from": "idea:jobs-that-never-scaled", "to": "chapter:where-do-you-land", "kind": "idea-goes-to-chapter"}, {"from": "idea:jobs-that-never-scaled", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:read-it-on-paper", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "Read it on paper, with a pen"}, {"from": "idea:read-it-on-paper", "to": "book:3.technologies/content/pen-and-paper.md", "kind": "idea-answers-book"}, {"from": "idea:read-it-on-paper", "to": "book:3.technologies/content/books.md", "kind": "idea-answers-book"}, {"from": "idea:read-it-on-paper", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:read-it-on-paper", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:connect-the-dots-backwards", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "Connect the dots backwards"}, {"from": "idea:connect-the-dots-backwards", "to": "sb:connect-the-dots-backwards", "kind": "idea-from-source", "label": "panels 1 to 3"}, {"from": "idea:connect-the-dots-backwards", "to": "news:from-send-to-sgit", "kind": "idea-from-source", "label": "Users, payments, and a feature in 22 minutes; What the market said"}, {"from": "idea:connect-the-dots-backwards", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:connect-the-dots-backwards", "to": "book:4.life-patterns/one-way-two-way-doors.md", "kind": "idea-answers-book"}, {"from": "idea:connect-the-dots-backwards", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:connect-the-dots-backwards", "to": "topic:direction-is-the-scarce-skill", "kind": "idea-in-topic"}, {"from": "idea:multidisciplinary-edge", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "The edge is multidisciplinary"}, {"from": "idea:multidisciplinary-edge", "to": "book:4.life-patterns/why-diversity-matters.md", "kind": "idea-answers-book"}, {"from": "idea:multidisciplinary-edge", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:multidisciplinary-edge", "to": "topic:direction-is-the-scarce-skill", "kind": "idea-in-topic"}, {"from": "idea:maths-taught-to-be-hated", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "We teach maths as if to make people hate it"}, {"from": "idea:maths-taught-to-be-hated", "to": "book:4.life-patterns/love-maths.md", "kind": "idea-answers-book"}, {"from": "idea:maths-taught-to-be-hated", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:maths-taught-to-be-hated", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:explore-again", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "Generative AI lets you explore again"}, {"from": "idea:explore-again", "to": "agent:storyboards-drawn-by-code", "kind": "idea-from-source", "label": "the renderer"}, {"from": "idea:explore-again", "to": "book:5.concepts/inventing-on-principle.md", "kind": "idea-answers-book"}, {"from": "idea:explore-again", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:explore-again", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:small-minority", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "You are already in a small minority; Learning is a lifelong skill"}, {"from": "idea:small-minority", "to": "news:who-will-game-the-reading-meter", "kind": "idea-from-source", "label": "0.6% of internet users are developers; 26% of OECD adults cannot use a computer"}, {"from": "idea:small-minority", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:small-minority", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:small-minority", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:maps-before-names", "to": "art:where-do-you-land", "kind": "idea-from-source", "label": "Maps everywhere, shown before they are named"}, {"from": "idea:maps-before-names", "to": "news:why-i-love-wardley-maps", "kind": "idea-from-source", "label": "the frame, taught directly"}, {"from": "idea:maps-before-names", "to": "sb:where-do-you-land", "kind": "idea-from-source", "label": "the map panels"}, {"from": "idea:maps-before-names", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:maps-before-names", "to": "chapter:where-do-you-land", "kind": "idea-goes-to-chapter"}, {"from": "idea:maps-before-names", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:four-stages-beyond-activities", "to": "art:where-do-you-land", "kind": "idea-from-source", "label": "The four stages are not only for activities"}, {"from": "idea:four-stages-beyond-activities", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:four-stages-beyond-activities", "to": "chapter:where-do-you-land", "kind": "idea-goes-to-chapter"}, {"from": "idea:four-stages-beyond-activities", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:centre-of-gravity", "to": "art:where-do-you-land", "kind": "idea-from-source", "label": "Where do you fit?; The explorer; The villager; The town planner; A centre of gravity, not a box"}, {"from": "idea:centre-of-gravity", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "the three kinds of people and work"}, {"from": "idea:centre-of-gravity", "to": "news:software-vendors-as-villagers", "kind": "idea-from-source", "label": "users explore on top, vendors sell the maintenance"}, {"from": "idea:centre-of-gravity", "to": "sb:where-do-you-land", "kind": "idea-from-source", "label": "the spectrum panel"}, {"from": "idea:centre-of-gravity", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:centre-of-gravity", "to": "chapter:where-do-you-land", "kind": "idea-goes-to-chapter"}, {"from": "idea:centre-of-gravity", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:three-learning-paths", "to": "art:where-do-you-land", "kind": "idea-from-source", "label": "A badge for each, in black and white; The brief, tasks 2 and 3"}, {"from": "idea:three-learning-paths", "to": "book:4.life-patterns/content/learning.md", "kind": "idea-answers-book"}, {"from": "idea:three-learning-paths", "to": "chapter:where-do-you-land", "kind": "idea-goes-to-chapter"}, {"from": "idea:three-learning-paths", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:explorer-coding", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "the definition"}, {"from": "idea:explorer-coding", "to": "news:a-browser-for-one", "kind": "idea-from-source", "label": "frustration plus the power to build"}, {"from": "idea:explorer-coding", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "Everybody was already vibe coding, just very slowly"}, {"from": "idea:explorer-coding", "to": "book:5.concepts/repl.md", "kind": "idea-answers-book"}, {"from": "idea:explorer-coding", "to": "book:4.life-patterns/thinking-as-programmer.md", "kind": "idea-answers-book"}, {"from": "idea:explorer-coding", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:explorer-coding", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:the-handover", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "the answer to HBR's deployment gap"}, {"from": "idea:the-handover", "to": "news:the-citizen-developer", "kind": "idea-from-source", "label": "the prototype is the best brief"}, {"from": "idea:the-handover", "to": "news:explorer-to-villager-newsroom", "kind": "idea-from-source", "label": "a worked handover with real numbers"}, {"from": "idea:the-handover", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "The mistake, and where the money actually is"}, {"from": "idea:the-handover", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:the-handover", "to": "book:4.life-patterns/refactoring.md", "kind": "idea-answers-book"}, {"from": "idea:the-handover", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-handover", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:everyone-is-a-developer", "to": "news:generation-z-developers-again", "kind": "idea-from-source", "label": "The name"}, {"from": "idea:everyone-is-a-developer", "to": "news:the-citizen-developer", "kind": "idea-from-source", "label": "the citizen developer is good news"}, {"from": "idea:everyone-is-a-developer", "to": "news:portugal-2024-genai-in-portuguese", "kind": "idea-from-source", "label": "the quiz"}, {"from": "idea:everyone-is-a-developer", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Become a developer"}, {"from": "idea:everyone-is-a-developer", "to": "book:1.introduction/generation-z.md", "kind": "idea-answers-book"}, {"from": "idea:everyone-is-a-developer", "to": "book:1.introduction/stem-tech-stack.md", "kind": "idea-answers-book"}, {"from": "idea:everyone-is-a-developer", "to": "book:3.technologies/draft/scratch.md", "kind": "idea-answers-book"}, {"from": "idea:everyone-is-a-developer", "to": "chapter:everyone-is-a-developer", "kind": "idea-goes-to-chapter"}, {"from": "idea:everyone-is-a-developer", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:hired-for-the-workflow", "to": "news:hired-for-the-workflow", "kind": "idea-from-source", "label": "the whole argument and the data"}, {"from": "idea:hired-for-the-workflow", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "idea-from-source", "label": "Having one competitive advantage"}, {"from": "idea:hired-for-the-workflow", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "idea-answers-book"}, {"from": "idea:hired-for-the-workflow", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-answers-book"}, {"from": "idea:hired-for-the-workflow", "to": "chapter:hired-for-the-workflow", "kind": "idea-goes-to-chapter"}, {"from": "idea:hired-for-the-workflow", "to": "topic:getting-the-job", "kind": "idea-in-topic"}, {"from": "idea:you-are-more-technical-than-you-think", "to": "news:hired-for-the-workflow", "kind": "idea-from-source", "label": "There was a time"}, {"from": "idea:you-are-more-technical-than-you-think", "to": "book:4.life-patterns/impostor-syndrome.md", "kind": "idea-answers-book"}, {"from": "idea:you-are-more-technical-than-you-think", "to": "chapter:hired-for-the-workflow", "kind": "idea-goes-to-chapter"}, {"from": "idea:you-are-more-technical-than-you-think", "to": "topic:getting-the-job", "kind": "idea-in-topic"}, {"from": "idea:it-starts-with-the-application", "to": "news:hired-for-the-workflow", "kind": "idea-from-source", "label": "It starts with the application; When all things are equal"}, {"from": "idea:it-starts-with-the-application", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "idea-answers-book"}, {"from": "idea:it-starts-with-the-application", "to": "book:7.your-cv/_index.md", "kind": "idea-answers-book"}, {"from": "idea:it-starts-with-the-application", "to": "chapter:hired-for-the-workflow", "kind": "idea-goes-to-chapter"}, {"from": "idea:it-starts-with-the-application", "to": "topic:getting-the-job", "kind": "idea-in-topic"}, {"from": "idea:act-as-the-job-you-want", "to": "news:act-as-the-job-you-want", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:act-as-the-job-you-want", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "idea-from-source", "label": "Act like you are part of the company"}, {"from": "idea:act-as-the-job-you-want", "to": "book:1.introduction/how-to-get-a-job.md", "kind": "idea-answers-book"}, {"from": "idea:act-as-the-job-you-want", "to": "book:7.your-cv/github.md", "kind": "idea-answers-book"}, {"from": "idea:act-as-the-job-you-want", "to": "book:4.life-patterns/mentors.md", "kind": "idea-answers-book"}, {"from": "idea:act-as-the-job-you-want", "to": "book:6.security/bug-bounties.md", "kind": "idea-answers-book"}, {"from": "idea:act-as-the-job-you-want", "to": "chapter:act-as-the-job-you-want", "kind": "idea-goes-to-chapter"}, {"from": "idea:act-as-the-job-you-want", "to": "topic:getting-the-job", "kind": "idea-in-topic"}, {"from": "idea:your-cv-online", "to": "news:act-as-the-job-you-want", "kind": "idea-from-source", "label": "Your CV should be online; The bar is not high"}, {"from": "idea:your-cv-online", "to": "news:three-linkedin-pages", "kind": "idea-from-source", "label": "drafting pages in the open"}, {"from": "idea:your-cv-online", "to": "book:7.your-cv/_index.md", "kind": "idea-answers-book"}, {"from": "idea:your-cv-online", "to": "book:7.your-cv/github.md", "kind": "idea-answers-book"}, {"from": "idea:your-cv-online", "to": "book:7.your-cv/linkedin.md", "kind": "idea-answers-book"}, {"from": "idea:your-cv-online", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:your-cv-online", "to": "chapter:act-as-the-job-you-want", "kind": "idea-goes-to-chapter"}, {"from": "idea:your-cv-online", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:job-hunt-in-2026", "to": "survey:gaps", "kind": "idea-from-source", "label": "The job hunt mechanics in 2026"}, {"from": "idea:job-hunt-in-2026", "to": "art:start-from-the-storyline", "kind": "idea-from-source", "label": "The gaps; brief task 6"}, {"from": "idea:job-hunt-in-2026", "to": "book:7.your-cv/upwork.md", "kind": "idea-answers-book"}, {"from": "idea:job-hunt-in-2026", "to": "chapter:act-as-the-job-you-want", "kind": "idea-goes-to-chapter"}, {"from": "idea:job-hunt-in-2026", "to": "topic:getting-the-job", "kind": "idea-in-topic"}, {"from": "idea:fear-of-ai", "to": "survey:gaps", "kind": "idea-from-source", "label": "Fear, impostor syndrome and anxiety"}, {"from": "idea:fear-of-ai", "to": "news:generation-z-developers-again", "kind": "idea-from-source", "label": "The name"}, {"from": "idea:fear-of-ai", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "The hype, and maybe the crash"}, {"from": "idea:fear-of-ai", "to": "book:4.life-patterns/impostor-syndrome.md", "kind": "idea-answers-book"}, {"from": "idea:fear-of-ai", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:fear-of-ai", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:publish-publish-publish", "to": "news:your-own-newsroom", "kind": "idea-from-source", "label": "the step-by-step recipe"}, {"from": "idea:publish-publish-publish", "to": "news:books-from-articles", "kind": "idea-from-source", "label": "books stall at 95%"}, {"from": "idea:publish-publish-publish", "to": "news:nineteen-sites", "kind": "idea-from-source", "label": "twenty sites in fifteen days"}, {"from": "idea:publish-publish-publish", "to": "book:4.life-patterns/publish-publish-publish.md", "kind": "idea-answers-book"}, {"from": "idea:publish-publish-publish", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:publish-publish-publish", "to": "book:2.mvp-for-gen-z-dev/content/hugo.md", "kind": "idea-answers-book"}, {"from": "idea:publish-publish-publish", "to": "book:7.your-cv/leanpub.md", "kind": "idea-answers-book"}, {"from": "idea:publish-publish-publish", "to": "chapter:your-own-newsroom", "kind": "idea-goes-to-chapter"}, {"from": "idea:publish-publish-publish", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:every-part-buys-the-next", "to": "news:the-man-behind-the-curtain", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:every-part-buys-the-next", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "every part buys the next"}, {"from": "idea:every-part-buys-the-next", "to": "book:5.concepts/amazon-press-releases.md", "kind": "idea-answers-book"}, {"from": "idea:every-part-buys-the-next", "to": "chapter:your-own-newsroom", "kind": "idea-goes-to-chapter"}, {"from": "idea:every-part-buys-the-next", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:first-workspace", "to": "news:from-a-spreadsheet-to-a-folder-per-person", "kind": "idea-from-source", "label": "the how-to"}, {"from": "idea:first-workspace", "to": "news:replicating-the-agentic-inbox", "kind": "idea-from-source", "label": "drafts, never send"}, {"from": "idea:first-workspace", "to": "news:how-i-work-with-claude", "kind": "idea-from-source", "label": "six habits"}, {"from": "idea:first-workspace", "to": "news:short-punchy-and-co-written", "kind": "idea-from-source", "label": "For anyone getting into AI: the Google Workspace chapter"}, {"from": "idea:first-workspace", "to": "book:2.mvp-for-gen-z-dev/_index.md", "kind": "idea-answers-book"}, {"from": "idea:first-workspace", "to": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "kind": "idea-answers-book"}, {"from": "idea:first-workspace", "to": "book:4.life-patterns/automate-your-workflows.md", "kind": "idea-answers-book"}, {"from": "idea:first-workspace", "to": "chapter:your-first-workspace", "kind": "idea-goes-to-chapter"}, {"from": "idea:first-workspace", "to": "topic:your-first-workspace", "kind": "idea-in-topic"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "news:how-i-work-with-claude", "kind": "idea-from-source", "label": "the six habits"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "news:the-agents-write-too", "kind": "idea-from-source", "label": "a team of focused sessions"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "news:the-librarians-daily-brief", "kind": "idea-from-source", "label": "the daily brief"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "book:4.life-patterns/workflows.md", "kind": "idea-answers-book"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "book:5.concepts/agile-and-kanban.md", "kind": "idea-answers-book"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:an-agent-is-a-session-with-a-focus", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:brief-is-the-unit-of-work", "to": "art:write-it-as-an-article", "kind": "idea-from-source", "label": "Why an article; How an article becomes work"}, {"from": "idea:brief-is-the-unit-of-work", "to": "news:the-briefs-so-far", "kind": "idea-from-source", "label": "the brief"}, {"from": "idea:brief-is-the-unit-of-work", "to": "news:brief-the-agent-too", "kind": "idea-from-source", "label": "the people I talk to work with agents"}, {"from": "idea:brief-is-the-unit-of-work", "to": "book:5.concepts/design.md", "kind": "idea-answers-book"}, {"from": "idea:brief-is-the-unit-of-work", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:brief-is-the-unit-of-work", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:omnichannel-programming", "to": "news:omnichannel-programming", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:omnichannel-programming", "to": "book:3.technologies/content/ide.md", "kind": "idea-answers-book"}, {"from": "idea:omnichannel-programming", "to": "book:2.mvp-for-gen-z-dev/content/slack-and-chatops.md", "kind": "idea-answers-book"}, {"from": "idea:omnichannel-programming", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:omnichannel-programming", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:every-mistake-added-a-rule", "to": "news:every-mistake-added-a-rule", "kind": "idea-from-source", "label": "the trap"}, {"from": "idea:every-mistake-added-a-rule", "to": "news:re-anchoring-agent-behaviour-policies", "kind": "idea-from-source", "label": "summarised 18 times in a month"}, {"from": "idea:every-mistake-added-a-rule", "to": "book:5.concepts/changes.md", "kind": "idea-answers-book"}, {"from": "idea:every-mistake-added-a-rule", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:every-mistake-added-a-rule", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:not-on-your-laptop", "to": "news:why-my-agents-do-not-run-on-my-laptop", "kind": "idea-from-source", "label": "the safety advice"}, {"from": "idea:not-on-your-laptop", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:not-on-your-laptop", "to": "chapter:your-first-workspace", "kind": "idea-goes-to-chapter"}, {"from": "idea:not-on-your-laptop", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:direction-is-the-scarce-skill", "to": "news:places-of-highest-leverage", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:direction-is-the-scarce-skill", "to": "news:not-a-straight-line", "kind": "idea-from-source", "label": "two days against six months"}, {"from": "idea:direction-is-the-scarce-skill", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "doors, fast iteration, constraints, leverage"}, {"from": "idea:direction-is-the-scarce-skill", "to": "news:i-miss-it", "kind": "idea-from-source", "label": "Direction is the scarce part"}, {"from": "idea:direction-is-the-scarce-skill", "to": "book:5.concepts/deadlines.md", "kind": "idea-answers-book"}, {"from": "idea:direction-is-the-scarce-skill", "to": "book:4.life-patterns/start-with-why.md", "kind": "idea-answers-book"}, {"from": "idea:direction-is-the-scarce-skill", "to": "chapter:direction-and-judgement", "kind": "idea-goes-to-chapter"}, {"from": "idea:direction-is-the-scarce-skill", "to": "topic:direction-is-the-scarce-skill", "kind": "idea-in-topic"}, {"from": "idea:knowing-when-to-stop", "to": "news:knowing-when-to-stop", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:knowing-when-to-stop", "to": "book:3.technologies/content/brain.md", "kind": "idea-from-source", "label": "the chapter on how the brain decides"}, {"from": "idea:knowing-when-to-stop", "to": "book:3.technologies/content/brain.md", "kind": "idea-answers-book"}, {"from": "idea:knowing-when-to-stop", "to": "book:5.concepts/deadlines.md", "kind": "idea-answers-book"}, {"from": "idea:knowing-when-to-stop", "to": "chapter:direction-and-judgement", "kind": "idea-goes-to-chapter"}, {"from": "idea:knowing-when-to-stop", "to": "topic:direction-is-the-scarce-skill", "kind": "idea-in-topic"}, {"from": "idea:one-way-two-way-doors", "to": "news:how-cheap-is-it-to-undo", "kind": "idea-from-source", "label": "the test"}, {"from": "idea:one-way-two-way-doors", "to": "news:the-human-in-the-loop", "kind": "idea-from-source", "label": "93%"}, {"from": "idea:one-way-two-way-doors", "to": "news:footprint-and-blast-radius", "kind": "idea-from-source", "label": "footprint beside blast radius"}, {"from": "idea:one-way-two-way-doors", "to": "news:agency-is-not-a-yes", "kind": "idea-from-source", "label": "the seven-level scale"}, {"from": "idea:one-way-two-way-doors", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "Build where it is cheap to undo"}, {"from": "idea:one-way-two-way-doors", "to": "book:4.life-patterns/one-way-two-way-doors.md", "kind": "idea-answers-book"}, {"from": "idea:one-way-two-way-doors", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:one-way-two-way-doors", "to": "book:5.concepts/chaos-engineering.md", "kind": "idea-answers-book"}, {"from": "idea:one-way-two-way-doors", "to": "chapter:direction-and-judgement", "kind": "idea-goes-to-chapter"}, {"from": "idea:one-way-two-way-doors", "to": "topic:human-in-the-loop", "kind": "idea-in-topic"}, {"from": "idea:agents-decide-people-answer", "to": "news:who-owns-the-words", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:agents-decide-people-answer", "to": "news:the-policy-draws-the-liability-line", "kind": "idea-from-source", "label": "the prohibitions list"}, {"from": "idea:agents-decide-people-answer", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "4. How are we insuring or assuring agent behaviour?, Liability"}, {"from": "idea:agents-decide-people-answer", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:agents-decide-people-answer", "to": "chapter:direction-and-judgement", "kind": "idea-goes-to-chapter"}, {"from": "idea:agents-decide-people-answer", "to": "topic:human-in-the-loop", "kind": "idea-in-topic"}, {"from": "idea:the-record-checks-you", "to": "news:my-memory-checked", "kind": "idea-from-source", "label": "the experiment"}, {"from": "idea:the-record-checks-you", "to": "news:reviews-on-the-record", "kind": "idea-from-source", "label": "review as a record"}, {"from": "idea:the-record-checks-you", "to": "news:your-agents-logs-are-a-self-report", "kind": "idea-from-source", "label": "under 2% admitted"}, {"from": "idea:the-record-checks-you", "to": "book:5.concepts/facts.md", "kind": "idea-from-source", "label": "the 2018 outline"}, {"from": "idea:the-record-checks-you", "to": "news:from-send-to-sgit", "kind": "idea-from-source", "label": "The data room I had already built; Copy Git; What this does not claim"}, {"from": "idea:the-record-checks-you", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:the-record-checks-you", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:the-record-checks-you", "to": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "kind": "idea-answers-book"}, {"from": "idea:the-record-checks-you", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-record-checks-you", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:mandate-reach-gap", "to": "news:what-can-your-agent-reach", "kind": "idea-from-source", "label": "the plain explainer"}, {"from": "idea:mandate-reach-gap", "to": "news:are-hooks-the-sweet-spot", "kind": "idea-from-source", "label": "hope-based security"}, {"from": "idea:mandate-reach-gap", "to": "news:attacks-rewritten-as-mandates", "kind": "idea-from-source", "label": "28 incidents"}, {"from": "idea:mandate-reach-gap", "to": "news:three-policies-for-an-agent", "kind": "idea-from-source", "label": "the three-policy split"}, {"from": "idea:mandate-reach-gap", "to": "news:agentics-ready-to-sell", "kind": "idea-from-source", "label": "What we showed"}, {"from": "idea:mandate-reach-gap", "to": "news:an-agent-desktop-by-the-minute", "kind": "idea-from-source", "label": "What locked down means; What we would build from what exists"}, {"from": "idea:mandate-reach-gap", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "If you have not met RiskMandate; The answers, in brief; 1. What happens when an agent bypasses its behaviour policy?, The important nuance; 3., Reality is the calibrator"}, {"from": "idea:mandate-reach-gap", "to": "news:a-policy-beside-the-prompt", "kind": "idea-from-source", "label": "Where the policy goes today, in each mode"}, {"from": "idea:mandate-reach-gap", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:mandate-reach-gap", "to": "book:6.security/3rd-party-modules.md", "kind": "idea-answers-book"}, {"from": "idea:mandate-reach-gap", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:mandate-reach-gap", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:code-is-a-liability", "to": "news:the-code-you-do-not-ship", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:code-is-a-liability", "to": "news:the-minimum-code-below", "kind": "idea-from-source", "label": "428 of 1,500"}, {"from": "idea:code-is-a-liability", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-a-liability", "to": "book:4.life-patterns/refactoring.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-a-liability", "to": "book:4.life-patterns/content/future-needs-you.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-a-liability", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:code-is-a-liability", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:learn-to-hack", "to": "news:who-are-you-protecting-against", "kind": "idea-from-source", "label": "the ladder"}, {"from": "idea:learn-to-hack", "to": "news:fix-the-page-yourself", "kind": "idea-from-source", "label": "the bookmarklet"}, {"from": "idea:learn-to-hack", "to": "news:portugal-2016-hacking-portugal", "kind": "idea-from-source", "label": "to hack means to solve problems"}, {"from": "idea:learn-to-hack", "to": "book:4.life-patterns/learn-to-hack.md", "kind": "idea-answers-book"}, {"from": "idea:learn-to-hack", "to": "book:6.security/security-better-developers.md", "kind": "idea-answers-book"}, {"from": "idea:learn-to-hack", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:learn-to-hack", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:learn-to-hack", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:secrets-never-in-the-chat", "to": "news:handing-secrets-to-agents", "kind": "idea-from-source", "label": "the rule"}, {"from": "idea:secrets-never-in-the-chat", "to": "news:seven-vaults-one-method", "kind": "idea-from-source", "label": "classify the credential first"}, {"from": "idea:secrets-never-in-the-chat", "to": "news:skill-behaviour-policy", "kind": "idea-from-source", "label": "the lethal trifecta"}, {"from": "idea:secrets-never-in-the-chat", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "How a new key reaches the registry; The prompt, in full"}, {"from": "idea:secrets-never-in-the-chat", "to": "book:6.security/pointers.md", "kind": "idea-answers-book"}, {"from": "idea:secrets-never-in-the-chat", "to": "book:6.security/strings-should-be-banned.md", "kind": "idea-answers-book"}, {"from": "idea:secrets-never-in-the-chat", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:secrets-never-in-the-chat", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:the-fork-next-door", "to": "news:the-fork-next-door", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:the-fork-next-door", "to": "news:what-open-source-is-and-is-not", "kind": "idea-from-source", "label": "six misconceptions"}, {"from": "idea:the-fork-next-door", "to": "news:the-eyeballs-get-cheap", "kind": "idea-from-source", "label": "curl's year"}, {"from": "idea:the-fork-next-door", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-from-source", "label": "the 2018 chapter"}, {"from": "idea:the-fork-next-door", "to": "news:sell-dont-issue", "kind": "idea-from-source", "label": "The open source safety valve"}, {"from": "idea:the-fork-next-door", "to": "news:open-source-is-not-free", "kind": "idea-from-source", "label": "Why not just charge?"}, {"from": "idea:the-fork-next-door", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "And who will fix your mess?"}, {"from": "idea:the-fork-next-door", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:the-fork-next-door", "to": "book:2.mvp-for-gen-z-dev/content/creative-commons.md", "kind": "idea-answers-book"}, {"from": "idea:the-fork-next-door", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-fork-next-door", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:first-pr", "to": "news:our-first-pr-in-ruflo", "kind": "idea-from-source", "label": "the first-contribution story"}, {"from": "idea:first-pr", "to": "news:act-as-the-job-you-want", "kind": "idea-from-source", "label": "collaborate on their open-source projects"}, {"from": "idea:first-pr", "to": "book:7.your-cv/github.md", "kind": "idea-answers-book"}, {"from": "idea:first-pr", "to": "book:2.mvp-for-gen-z-dev/draft/github-flow.md", "kind": "idea-answers-book"}, {"from": "idea:first-pr", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:first-pr", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:lego-blocks", "to": "news:cloudflare-as-lego-blocks", "kind": "idea-from-source", "label": "the map of free blocks"}, {"from": "idea:lego-blocks", "to": "news:free-models-your-own-key", "kind": "idea-from-source", "label": "free in October 2026"}, {"from": "idea:lego-blocks", "to": "news:ephemeral-town-planner-services", "kind": "idea-from-source", "label": "the test for serverless"}, {"from": "idea:lego-blocks", "to": "news:sgit-is-a-standard", "kind": "idea-from-source", "label": "git won because it is a standard"}, {"from": "idea:lego-blocks", "to": "news:the-tokens-hook", "kind": "idea-from-source", "label": "$170 against $1,950"}, {"from": "idea:lego-blocks", "to": "book:2.mvp-for-gen-z-dev/draft/aws.md", "kind": "idea-answers-book"}, {"from": "idea:lego-blocks", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:lego-blocks", "to": "book:5.concepts/micro-services.md", "kind": "idea-answers-book"}, {"from": "idea:lego-blocks", "to": "book:7.your-cv/git.md", "kind": "idea-answers-book"}, {"from": "idea:lego-blocks", "to": "book:2.mvp-for-gen-z-dev/content/docker.md", "kind": "idea-answers-book"}, {"from": "idea:lego-blocks", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:lego-blocks", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:green-does-not-mean-live", "to": "news:green-does-not-mean-live", "kind": "idea-from-source", "label": "shipped is a fact about the reader"}, {"from": "idea:green-does-not-mean-live", "to": "news:explorer-to-villager-newsroom", "kind": "idea-from-source", "label": "go slow to go fast"}, {"from": "idea:green-does-not-mean-live", "to": "news:how-to-run-synthetic-users", "kind": "idea-from-source", "label": "five people who do not exist"}, {"from": "idea:green-does-not-mean-live", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Pillar one: ship something somebody can use"}, {"from": "idea:green-does-not-mean-live", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "It ships fast"}, {"from": "idea:green-does-not-mean-live", "to": "book:5.concepts/CI-Testing.md", "kind": "idea-answers-book"}, {"from": "idea:green-does-not-mean-live", "to": "book:2.mvp-for-gen-z-dev/draft/continuous-integration.md", "kind": "idea-answers-book"}, {"from": "idea:green-does-not-mean-live", "to": "book:2.mvp-for-gen-z-dev/draft/tdd.md", "kind": "idea-answers-book"}, {"from": "idea:green-does-not-mean-live", "to": "book:5.concepts/devops.md", "kind": "idea-answers-book"}, {"from": "idea:green-does-not-mean-live", "to": "chapter:shipped-means-the-user-has-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:green-does-not-mean-live", "to": "topic:shipped-means-the-user-has-it", "kind": "idea-in-topic"}, {"from": "idea:think-in-graphs", "to": "news:the-graphs-books", "kind": "idea-from-source", "label": "three books in a day"}, {"from": "idea:think-in-graphs", "to": "news:knowledge-that-maintains-itself", "kind": "idea-from-source", "label": "maintain, do not perfect"}, {"from": "idea:think-in-graphs", "to": "news:bringing-my-past-work-back", "kind": "idea-from-source", "label": "eighteen years of essays"}, {"from": "idea:think-in-graphs", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "I think in graphs"}, {"from": "idea:think-in-graphs", "to": "news:introducing-fractal-semantic-graphs", "kind": "idea-from-source", "label": "the defining article"}, {"from": "idea:think-in-graphs", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:think-in-graphs", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:think-in-graphs", "to": "book:4.life-patterns/content/backup-your-life.md", "kind": "idea-answers-book"}, {"from": "idea:think-in-graphs", "to": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "idea-answers-book"}, {"from": "idea:think-in-graphs", "to": "book:5.concepts/recursive-functions.md", "kind": "idea-answers-book"}, {"from": "idea:think-in-graphs", "to": "chapter:graphs-and-your-future-self", "kind": "idea-goes-to-chapter"}, {"from": "idea:think-in-graphs", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:expert-founders", "to": "news:the-expert-founders", "kind": "idea-from-source", "label": "the argument"}, {"from": "idea:expert-founders", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "the startup test"}, {"from": "idea:expert-founders", "to": "news:paying-after-the-value", "kind": "idea-from-source", "label": "the gym figure"}, {"from": "idea:expert-founders", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-from-source", "label": "the 2018 chapter"}, {"from": "idea:expert-founders", "to": "news:the-controllable-founder", "kind": "idea-from-source", "label": "What this means for strong-minded founders"}, {"from": "idea:expert-founders", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:expert-founders", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:expert-founders", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:hack-your-country", "to": "news:portugal-2010-a-challenge", "kind": "idea-from-source", "label": "what came true in 16 years"}, {"from": "idea:hack-your-country", "to": "news:portugal-2016-hacking-portugal", "kind": "idea-from-source", "label": "the keynote"}, {"from": "idea:hack-your-country", "to": "news:judo-for-small-countries", "kind": "idea-from-source", "label": "the plumbing"}, {"from": "idea:hack-your-country", "to": "news:sovereignty-is-the-ability-to-move", "kind": "idea-from-source", "label": "the test"}, {"from": "idea:hack-your-country", "to": "news:move-the-cloud-not-the-code", "kind": "idea-from-source", "label": "Why workloads do not move; Why this has to be open source; The business model"}, {"from": "idea:hack-your-country", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:hack-your-country", "to": "chapter:civic-responsibility", "kind": "idea-goes-to-chapter"}, {"from": "idea:hack-your-country", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:repository-official-vault-working", "to": "news:a-website-to-finish-the-book", "kind": "idea-from-source", "label": "The repository and the vault"}, {"from": "idea:repository-official-vault-working", "to": "dec:005", "kind": "idea-from-source", "label": "text issues live in the vault"}, {"from": "idea:repository-official-vault-working", "to": "book:1.introduction/how-this -book-was-created.md", "kind": "idea-answers-book"}, {"from": "idea:repository-official-vault-working", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:repository-official-vault-working", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:co-written-and-credited", "to": "news:short-punchy-and-co-written", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:co-written-and-credited", "to": "news:how-much-of-this-did-i-write", "kind": "idea-from-source", "label": "the numbers"}, {"from": "idea:co-written-and-credited", "to": "news:who-is-speaking", "kind": "idea-from-source", "label": "three voices"}, {"from": "idea:co-written-and-credited", "to": "book:1.introduction/how-this -book-was-created.md", "kind": "idea-answers-book"}, {"from": "idea:co-written-and-credited", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:co-written-and-credited", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:a-book-for-one-reader", "to": "news:a-book-for-one-reader", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:a-book-for-one-reader", "to": "news:paying-after-the-value", "kind": "idea-from-source", "label": "The newsroom's version; The experiment"}, {"from": "idea:a-book-for-one-reader", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-book-for-one-reader", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:read-comment-decide", "to": "art:read-comment-decide", "kind": "idea-from-source", "label": "The loop; The verbs; A decision is a file"}, {"from": "idea:read-comment-decide", "to": "dec:006", "kind": "idea-from-source", "label": "every change is minor"}, {"from": "idea:read-comment-decide", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:read-comment-decide", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:write-it-as-an-article", "to": "art:write-it-as-an-article", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:write-it-as-an-article", "to": "dec:007", "kind": "idea-from-source", "label": "two kinds of article"}, {"from": "idea:write-it-as-an-article", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:write-it-as-an-article", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:release-v1-again", "to": "art:release-the-book-we-already-released", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:release-v1-again", "to": "dec:001", "kind": "idea-from-source", "label": "CC BY"}, {"from": "idea:release-v1-again", "to": "dec:002", "kind": "idea-from-source", "label": "our own PDF"}, {"from": "idea:release-v1-again", "to": "dec:003", "kind": "idea-from-source", "label": "every format from one source"}, {"from": "idea:release-v1-again", "to": "dec:004", "kind": "idea-from-source", "label": "the cover waits"}, {"from": "idea:release-v1-again", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:release-v1-again", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:one-board-and-one-inventory", "to": "art:one-board-for-the-book", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:one-board-and-one-inventory", "to": "art:everything-unfinished-in-one-place", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:one-board-and-one-inventory", "to": "dec:005", "kind": "idea-from-source", "label": "text issues live in the vault"}, {"from": "idea:one-board-and-one-inventory", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:one-board-and-one-inventory", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:start-from-the-storyline", "to": "art:start-from-the-storyline", "kind": "idea-from-source", "label": "the whole argument"}, {"from": "idea:start-from-the-storyline", "to": "agent:storyboards-drawn-by-code", "kind": "idea-from-source", "label": "the renderer and the survey"}, {"from": "idea:start-from-the-storyline", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:start-from-the-storyline", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:the-book-as-a-graph", "to": "news:a-website-to-finish-the-book", "kind": "idea-from-source", "label": "The book as a graph, at every altitude"}, {"from": "idea:the-book-as-a-graph", "to": "news:short-punchy-and-co-written", "kind": "idea-from-source", "label": "Every paragraph knows what it is"}, {"from": "idea:the-book-as-a-graph", "to": "memo:2026-10-18-graphs", "kind": "idea-from-source", "label": "Dinis's message asking for the graph, the mappings and the tracking"}, {"from": "idea:the-book-as-a-graph", "to": "agent:the-book-as-a-graph", "kind": "idea-from-source", "label": "the account of this first pass"}, {"from": "idea:the-book-as-a-graph", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:the-book-as-a-graph", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-book-as-a-graph", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:generative-ai-not-ai", "to": "art:generative-ai-not-ai", "kind": "idea-from-source", "label": "AI is a huge bucket; How I understand it; A note on the name"}, {"from": "idea:generative-ai-not-ai", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-answers-book"}, {"from": "idea:generative-ai-not-ai", "to": "chapter:what-generative-ai-is", "kind": "idea-goes-to-chapter"}, {"from": "idea:generative-ai-not-ai", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:better-prompt-richer-picture", "to": "art:generative-ai-not-ai", "kind": "idea-from-source", "label": "How I understand it; Where hallucinations come from; The image that made it click; Where I was corrected"}, {"from": "idea:better-prompt-richer-picture", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-answers-book"}, {"from": "idea:better-prompt-richer-picture", "to": "book:3.technologies/content/brain.md", "kind": "idea-answers-book"}, {"from": "idea:better-prompt-richer-picture", "to": "chapter:what-generative-ai-is", "kind": "idea-goes-to-chapter"}, {"from": "idea:better-prompt-richer-picture", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:asked-to-be-corrected", "to": "art:generative-ai-not-ai", "kind": "idea-from-source", "label": "Where I was corrected"}, {"from": "idea:asked-to-be-corrected", "to": "news:my-memory-checked", "kind": "idea-from-source", "label": "publish only what the record supports"}, {"from": "idea:asked-to-be-corrected", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:asked-to-be-corrected", "to": "book:4.life-patterns/content/being-criticized-is-a-privilege.md", "kind": "idea-answers-book"}, {"from": "idea:asked-to-be-corrected", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:asked-to-be-corrected", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:gen-ai-edition-name", "to": "art:generative-ai-not-ai", "kind": "idea-from-source", "label": "A note on the name; The brief, task 3"}, {"from": "idea:gen-ai-edition-name", "to": "news:generation-z-developers-again", "kind": "idea-from-source", "label": "The name"}, {"from": "idea:gen-ai-edition-name", "to": "dec:010", "kind": "idea-from-source", "label": "the decision: the title is Gen Z Developers (GenAI Edition)"}, {"from": "idea:gen-ai-edition-name", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "the proposal: the tagline and Generation ZX"}, {"from": "idea:gen-ai-edition-name", "to": "dec:014", "kind": "idea-from-source", "label": "the title"}, {"from": "idea:gen-ai-edition-name", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:gen-ai-edition-name", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:immediate-connection", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "The opening, and learning; Bret Victor"}, {"from": "idea:immediate-connection", "to": "art:lucky-to-be-here", "kind": "idea-from-source", "label": "Wonder"}, {"from": "idea:immediate-connection", "to": "book:5.concepts/inventing-on-principle.md", "kind": "idea-answers-book"}, {"from": "idea:immediate-connection", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:immediate-connection", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:flow-and-deliberate-practice", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "The opening, and learning"}, {"from": "idea:flow-and-deliberate-practice", "to": "book:4.life-patterns/the-zone.md", "kind": "idea-answers-book"}, {"from": "idea:flow-and-deliberate-practice", "to": "book:4.life-patterns/content/learning.md", "kind": "idea-answers-book"}, {"from": "idea:flow-and-deliberate-practice", "to": "book:4.life-patterns/power-of-habits.md", "kind": "idea-answers-book"}, {"from": "idea:flow-and-deliberate-practice", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:flow-and-deliberate-practice", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:a-claim-earns-its-status-by-being-refutable", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "Questioning and evidence"}, {"from": "idea:a-claim-earns-its-status-by-being-refutable", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:a-claim-earns-its-status-by-being-refutable", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-claim-earns-its-status-by-being-refutable", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:know-where-your-ideas-come-from", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "An exercise for the reader; The brief, tasks 2 and 5"}, {"from": "idea:know-where-your-ideas-come-from", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:know-where-your-ideas-come-from", "to": "book:4.life-patterns/mentors.md", "kind": "idea-answers-book"}, {"from": "idea:know-where-your-ideas-come-from", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:know-where-your-ideas-come-from", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:open-source-community-as-the-way-in", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "Open source, community and getting hired in the open; What the 2018 book gives back to the register"}, {"from": "idea:open-source-community-as-the-way-in", "to": "book:2.mvp-for-gen-z-dev/content/owasp.md", "kind": "idea-from-source", "label": "the 2018 chapter"}, {"from": "idea:open-source-community-as-the-way-in", "to": "book:2.mvp-for-gen-z-dev/content/owasp.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-community-as-the-way-in", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-community-as-the-way-in", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:open-source-community-as-the-way-in", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:the-villagers-craft", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "The villager's craft"}, {"from": "idea:the-villagers-craft", "to": "book:5.concepts/design.md", "kind": "idea-answers-book"}, {"from": "idea:the-villagers-craft", "to": "book:5.concepts/netflix-culture.md", "kind": "idea-answers-book"}, {"from": "idea:the-villagers-craft", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-villagers-craft", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:start-with-why-sinek", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "Purpose, and optimism"}, {"from": "idea:start-with-why-sinek", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-from-source", "label": "Kevin Kelly's The Inevitable, recommended in 2018"}, {"from": "idea:start-with-why-sinek", "to": "book:4.life-patterns/start-with-why.md", "kind": "idea-answers-book"}, {"from": "idea:start-with-why-sinek", "to": "book:10.misc/technium.md", "kind": "idea-answers-book"}, {"from": "idea:start-with-why-sinek", "to": "chapter:lucky-to-be-here", "kind": "idea-goes-to-chapter"}, {"from": "idea:start-with-why-sinek", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:ask-for-the-evidence", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "They already have it"}, {"from": "idea:ask-for-the-evidence", "to": "sb:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "the storyboard"}, {"from": "idea:ask-for-the-evidence", "to": "book:5.concepts/facts.md", "kind": "idea-from-source", "label": "the 2018 outline Facts, about data-driven decisions, never written"}, {"from": "idea:ask-for-the-evidence", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:ask-for-the-evidence", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:ask-for-the-evidence", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:privacy-aware-generation", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "They already have it"}, {"from": "idea:privacy-aware-generation", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:privacy-aware-generation", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "Provenance, explainability and the rabbit holes"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "the David Rice recording that could not be placed"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "art:generative-ai-not-ai", "kind": "idea-from-source", "label": "the section of corrections"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-rabbit-hole-is-a-prompt-away", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:disagree-rationally-with-provenance", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "How you can disagree rationally"}, {"from": "idea:disagree-rationally-with-provenance", "to": "news:my-memory-checked", "kind": "idea-from-source", "label": "every claim checked before publication; 'Not found is not false'"}, {"from": "idea:disagree-rationally-with-provenance", "to": "news:reviews-on-the-record", "kind": "idea-from-source", "label": "'A finding with no answer is just a complaint'"}, {"from": "idea:disagree-rationally-with-provenance", "to": "art:where-the-thinking-came-from", "kind": "idea-from-source", "label": "Popper, and the questioning"}, {"from": "idea:disagree-rationally-with-provenance", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:disagree-rationally-with-provenance", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:disagree-rationally-with-provenance", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:disagree-rationally-with-provenance", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:managing-information-is-the-work", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "It is what work is"}, {"from": "idea:managing-information-is-the-work", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:managing-information-is-the-work", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:managing-information-is-the-work", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:gen-ai-makes-the-checking-cheap", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "Generative AI makes it cheap"}, {"from": "idea:gen-ai-makes-the-checking-cheap", "to": "news:the-briefs-so-far", "kind": "idea-from-source", "label": "the brief and the feedback loop as the unit of work"}, {"from": "idea:gen-ai-makes-the-checking-cheap", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:gen-ai-makes-the-checking-cheap", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:gen-ai-makes-the-checking-cheap", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:best-prepared-person-in-the-room", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "Be the best-prepared person in the room"}, {"from": "idea:best-prepared-person-in-the-room", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:best-prepared-person-in-the-room", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:a-hands-on-part-for-2026", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "A hands-on part, for 2026"}, {"from": "idea:a-hands-on-part-for-2026", "to": "news:from-a-spreadsheet-to-a-folder-per-person", "kind": "idea-from-source", "label": "one afternoon and five exercises"}, {"from": "idea:a-hands-on-part-for-2026", "to": "news:your-own-newsroom", "kind": "idea-from-source", "label": "voice memo in, a checked site out"}, {"from": "idea:a-hands-on-part-for-2026", "to": "news:replicating-the-agentic-inbox", "kind": "idea-from-source", "label": "the email workflow"}, {"from": "idea:a-hands-on-part-for-2026", "to": "agent:storyboards-drawn-by-code", "kind": "idea-from-source", "label": "the infographics and presentations"}, {"from": "idea:a-hands-on-part-for-2026", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-hands-on-part-for-2026", "to": "topic:your-first-workspace", "kind": "idea-in-topic"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "A graph is not a diagram"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "news:the-graphs-books", "kind": "idea-from-source", "label": "'In this book a graph is a network: nodes and the edges that connect them. Never a chart, never a figure'; 'A node connected to nothing is literally meaningless'"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "book:5.concepts/graphs.md", "kind": "idea-from-source", "label": "the 2018 outline: 'requires an ability to think in nodes and edges'"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-graph-is-not-a-diagram", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:the-whodunit-board", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "The whodunit"}, {"from": "idea:the-whodunit-board", "to": "sb:everything-is-connected", "kind": "idea-from-source", "label": "the detective's board panel"}, {"from": "idea:the-whodunit-board", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "They already have it"}, {"from": "idea:the-whodunit-board", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:the-whodunit-board", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-whodunit-board", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:a-map-is-a-graph-with-positions", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "A map is a graph with positions"}, {"from": "idea:a-map-is-a-graph-with-positions", "to": "art:where-do-you-land", "kind": "idea-from-source", "label": "the Wardley axes"}, {"from": "idea:a-map-is-a-graph-with-positions", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:a-map-is-a-graph-with-positions", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-map-is-a-graph-with-positions", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:graphs-of-graphs", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "Graphs of graphs"}, {"from": "idea:graphs-of-graphs", "to": "news:introducing-fractal-semantic-graphs", "kind": "idea-from-source", "label": "'There is no top and no bottom. There is only the altitude you happen to be looking from'"}, {"from": "idea:graphs-of-graphs", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:graphs-of-graphs", "to": "book:5.concepts/recursive-functions.md", "kind": "idea-answers-book"}, {"from": "idea:graphs-of-graphs", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:graphs-of-graphs", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:provenance-is-a-graph", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "How I see the world"}, {"from": "idea:provenance-is-a-graph", "to": "news:journalism-becomes-intelligence", "kind": "idea-from-source", "label": "'not a pile of articles, but a graph whose every edge has a date and a source'"}, {"from": "idea:provenance-is-a-graph", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "Provenance built in: a URL for every quote, a hash for every file, a byline on every page"}, {"from": "idea:provenance-is-a-graph", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:provenance-is-a-graph", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:provenance-is-a-graph", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:provenance-is-a-graph", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:start-anywhere", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "Start anywhere"}, {"from": "idea:start-anywhere", "to": "art:connect-the-dots-backwards", "kind": "idea-from-source", "label": "the path only makes sense afterwards"}, {"from": "idea:start-anywhere", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:start-anywhere", "to": "book:4.life-patterns/content/learning.md", "kind": "idea-answers-book"}, {"from": "idea:start-anywhere", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:start-anywhere", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:the-2018-graph-chapters", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "The 2018 book was already there"}, {"from": "idea:the-2018-graph-chapters", "to": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "idea-from-source", "label": "the published chapter"}, {"from": "idea:the-2018-graph-chapters", "to": "book:3.technologies/content/AST.md", "kind": "idea-from-source", "label": "'a graph representation of source code'"}, {"from": "idea:the-2018-graph-chapters", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:the-2018-graph-chapters", "to": "book:2.mvp-for-gen-z-dev/content/dot-language.md", "kind": "idea-answers-book"}, {"from": "idea:the-2018-graph-chapters", "to": "book:3.technologies/content/AST.md", "kind": "idea-answers-book"}, {"from": "idea:the-2018-graph-chapters", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-2018-graph-chapters", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:code-is-already-a-graph", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "idea-from-source", "label": "Source code is already the thing; Review every layer, diff every layer"}, {"from": "idea:code-is-already-a-graph", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "idea-from-source", "label": "Method streams, again: the O2 Platform technique from 2012, one script over a syntax tree"}, {"from": "idea:code-is-already-a-graph", "to": "art:everything-is-connected", "kind": "idea-from-source", "label": "What to bring: next to the 2018 AST chapter"}, {"from": "idea:code-is-already-a-graph", "to": "book:3.technologies/content/AST.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-already-a-graph", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-already-a-graph", "to": "book:5.concepts/graphs.md", "kind": "idea-answers-book"}, {"from": "idea:code-is-already-a-graph", "to": "chapter:everything-is-connected", "kind": "idea-goes-to-chapter"}, {"from": "idea:code-is-already-a-graph", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:reality-corrects-the-graph", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "idea-from-source", "label": "What makes it work is reality"}, {"from": "idea:reality-corrects-the-graph", "to": "news:knowledge-that-maintains-itself", "kind": "idea-from-source", "label": "maintain, do not perfect"}, {"from": "idea:reality-corrects-the-graph", "to": "news:if-somebody-built-a-company-on-code-review", "kind": "idea-from-source", "label": "Replicate reality first; Build the graph from the top, before the code exists"}, {"from": "idea:reality-corrects-the-graph", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:reality-corrects-the-graph", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:reality-corrects-the-graph", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:reality-corrects-the-graph", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:a-company-in-the-review", "to": "news:code-review-as-a-fractal-semantic-graph", "kind": "idea-from-source", "label": "For somebody to build"}, {"from": "idea:a-company-in-the-review", "to": "news:if-somebody-built-a-company-on-code-review", "kind": "idea-from-source", "label": "The company; The grammar is fractal, the layers are yours"}, {"from": "idea:a-company-in-the-review", "to": "news:send-an-agent-not-a-spreadsheet", "kind": "idea-from-source", "label": "The twist on the last article"}, {"from": "idea:a-company-in-the-review", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-company-in-the-review", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-voice-is-four-inputs", "to": "news:how-the-voice-works", "kind": "idea-from-source", "label": "In short; The four inputs"}, {"from": "idea:the-voice-is-four-inputs", "to": "news:how-the-voice-works", "kind": "idea-from-source", "label": "This is Claude speaking: 'the person has to do most of the work, by thinking out loud, by reading, and by saying no'"}, {"from": "idea:the-voice-is-four-inputs", "to": "news:how-much-of-this-did-i-write", "kind": "idea-from-source", "label": "63,000 words in, 85,000 out: the real input is twenty years of writing"}, {"from": "idea:the-voice-is-four-inputs", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:the-voice-is-four-inputs", "to": "chapter:your-own-newsroom", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-voice-is-four-inputs", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:the-memo-is-the-thinking", "to": "news:how-the-voice-works", "kind": "idea-from-source", "label": "The memo; This is Claude speaking"}, {"from": "idea:the-memo-is-the-thinking", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:the-memo-is-the-thinking", "to": "chapter:your-own-newsroom", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-memo-is-the-thinking", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:a-correction-becomes-a-rule", "to": "news:how-the-voice-works", "kind": "idea-from-source", "label": "The rules; What the corrections are about now"}, {"from": "idea:a-correction-becomes-a-rule", "to": "news:re-anchoring-agent-behaviour-policies", "kind": "idea-from-source", "label": "the policy printed back after every summary"}, {"from": "idea:a-correction-becomes-a-rule", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-correction-becomes-a-rule", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:memory-is-context-management", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "In short; Memory is context management; Many memories, each its own context"}, {"from": "idea:memory-is-context-management", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "What the industry built, and where we agree: Letta's benchmark, Manus, Anthropic's memory tool, context engineering"}, {"from": "idea:memory-is-context-management", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "What it looked like in the session that wrote this: nothing remembered between resets except what the files remembered"}, {"from": "idea:memory-is-context-management", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:memory-is-context-management", "to": "book:4.life-patterns/content/backup-your-life.md", "kind": "idea-answers-book"}, {"from": "idea:memory-is-context-management", "to": "chapter:graphs-and-your-future-self", "kind": "idea-goes-to-chapter"}, {"from": "idea:memory-is-context-management", "to": "topic:graphs-memory", "kind": "idea-in-topic"}, {"from": "idea:the-site-becomes-the-memory", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "Many memories, each its own context: 'the site is becoming the memory'"}, {"from": "idea:the-site-becomes-the-memory", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "The loop, and the conventions that keep it cheap"}, {"from": "idea:the-site-becomes-the-memory", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:the-site-becomes-the-memory", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:the-site-becomes-the-memory", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:the-site-becomes-the-memory", "to": "chapter:graphs-and-your-future-self", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-site-becomes-the-memory", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:stale-pages-become-false-memories", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "Provenance built in; Where it falls short"}, {"from": "idea:stale-pages-become-false-memories", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:stale-pages-become-false-memories", "to": "chapter:facts-and-the-record", "kind": "idea-goes-to-chapter"}, {"from": "idea:stale-pages-become-false-memories", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:the-file-system-is-the-database", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "Step one: the file system is the database"}, {"from": "idea:the-file-system-is-the-database", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:the-file-system-is-the-database", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-file-system-is-the-database", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:no-server-by-design", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "Step two: the back end goes too; Not 'no servers': commodity servers"}, {"from": "idea:no-server-by-design", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "It scales without the complexity scaling; It ships fast; Sovereignty, privacy, explainability, determinism"}, {"from": "idea:no-server-by-design", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "How far can it be pushed?"}, {"from": "idea:no-server-by-design", "to": "news:chat-on-a-static-site", "kind": "idea-from-source", "label": "The constraint nobody can design around"}, {"from": "idea:no-server-by-design", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "The four routes"}, {"from": "idea:no-server-by-design", "to": "news:the-value-of-constraints", "kind": "idea-from-source", "label": "The biggest gain: nothing on the server"}, {"from": "idea:no-server-by-design", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:no-server-by-design", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:no-server-by-design", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:security-as-a-business-tool", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "Security as a business tool"}, {"from": "idea:security-as-a-business-tool", "to": "news:who-are-you-protecting-against", "kind": "idea-from-source", "label": "the question"}, {"from": "idea:security-as-a-business-tool", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:security-as-a-business-tool", "to": "book:6.security/security-better-developers.md", "kind": "idea-answers-book"}, {"from": "idea:security-as-a-business-tool", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:security-as-a-business-tool", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:open-source-removes-the-moat-excuse", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "Why it is easy to throw technology away"}, {"from": "idea:open-source-removes-the-moat-excuse", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Pillar three: open source everything"}, {"from": "idea:open-source-removes-the-moat-excuse", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-removes-the-moat-excuse", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:open-source-removes-the-moat-excuse", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:a-prompt-is-a-lens", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "A prompt is a lens"}, {"from": "idea:a-prompt-is-a-lens", "to": "sb:lenses-roles-and-loops", "kind": "idea-from-source", "label": "the lenses panels"}, {"from": "idea:a-prompt-is-a-lens", "to": "chapter:lenses-roles-and-loops", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-prompt-is-a-lens", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:a-role-is-a-model-with-a-description", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "A role is a model with a description; An agent is a loop with a goal"}, {"from": "idea:a-role-is-a-model-with-a-description", "to": "news:how-i-work-with-claude", "kind": "idea-from-source", "label": "an agent as a focused session with a role file"}, {"from": "idea:a-role-is-a-model-with-a-description", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "Precisely: a model plus instructions, tools, a loop and a rule for stopping"}, {"from": "idea:a-role-is-a-model-with-a-description", "to": "chapter:lenses-roles-and-loops", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-role-is-a-model-with-a-description", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:tools-changed-everything", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "Tools changed everything; Precisely: the model never runs a tool"}, {"from": "idea:tools-changed-everything", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-answers-book"}, {"from": "idea:tools-changed-everything", "to": "chapter:lenses-roles-and-loops", "kind": "idea-goes-to-chapter"}, {"from": "idea:tools-changed-everything", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:the-model-remembers-nothing", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "It remembers nothing; Precisely: every request is independent"}, {"from": "idea:the-model-remembers-nothing", "to": "news:memory-is-not-a-spectator-sport", "kind": "idea-from-source", "label": "'Nothing is remembered by the model between sessions. Everything is remembered by the files.'"}, {"from": "idea:the-model-remembers-nothing", "to": "chapter:lenses-roles-and-loops", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-model-remembers-nothing", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:long-chats-are-compressed", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "Long chats are compressed; Many focused threads"}, {"from": "idea:long-chats-are-compressed", "to": "news:re-anchoring-agent-behaviour-policies", "kind": "idea-from-source", "label": "eighteen summaries at 1.7%: 'The rules are restored, not remembered'"}, {"from": "idea:long-chats-are-compressed", "to": "news:replicating-the-agentic-inbox", "kind": "idea-from-source", "label": "one session per role, every message a file"}, {"from": "idea:long-chats-are-compressed", "to": "chapter:lenses-roles-and-loops", "kind": "idea-goes-to-chapter"}, {"from": "idea:long-chats-are-compressed", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "idea-from-source", "label": "Run with the first list; Release mode; Then the rounds; How we know it is done"}, {"from": "idea:the-book-in-release-mode", "to": "dec:008", "kind": "idea-from-source", "label": "the decision"}, {"from": "idea:the-book-in-release-mode", "to": "agent:the-book-as-a-graph", "kind": "idea-from-source", "label": "the first list"}, {"from": "idea:the-book-in-release-mode", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-book-in-release-mode", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:the-adversarial-review-board", "to": "art:the-book-in-release-mode", "kind": "idea-from-source", "label": "The review board"}, {"from": "idea:the-adversarial-review-board", "to": "dec:008", "kind": "idea-from-source", "label": "the seats and the verdicts"}, {"from": "idea:the-adversarial-review-board", "to": "art:lenses-roles-and-loops", "kind": "idea-from-source", "label": "a role is a model with a description"}, {"from": "idea:the-adversarial-review-board", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-adversarial-review-board", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:every-verdict-is-a-precedent", "to": "art:the-book-in-release-mode", "kind": "idea-from-source", "label": "Every verdict is a precedent"}, {"from": "idea:every-verdict-is-a-precedent", "to": "dec:008", "kind": "idea-from-source", "label": "verdicts and precedents"}, {"from": "idea:every-verdict-is-a-precedent", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:every-verdict-is-a-precedent", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:a-candidate-is-read-as-a-frozen-snapshot", "to": "dec:009", "kind": "idea-from-source", "label": "the decision"}, {"from": "idea:a-candidate-is-read-as-a-frozen-snapshot", "to": "art:the-book-in-release-mode", "kind": "idea-from-source", "label": "Release mode: candidates live in the vault"}, {"from": "idea:a-candidate-is-read-as-a-frozen-snapshot", "to": "agent:the-release-candidate-written-from-the-register", "kind": "idea-from-source", "label": "how rc1 was built"}, {"from": "idea:a-candidate-is-read-as-a-frozen-snapshot", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-candidate-is-read-as-a-frozen-snapshot", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:the-reader-is-the-founder", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Who I want to give it to; The objective: start a company"}, {"from": "idea:the-reader-is-the-founder", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-from-source", "label": "act like one of the founders: the 2018 advice"}, {"from": "idea:the-reader-is-the-founder", "to": "dec:015", "kind": "idea-from-source", "label": "the proposal adopted as the frame of rc2"}, {"from": "idea:the-reader-is-the-founder", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:the-reader-is-the-founder", "to": "chapter:gen-zx", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-reader-is-the-founder", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:two-generations-gen-zx", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Generation X, too; Generation ZX; Precisely"}, {"from": "idea:two-generations-gen-zx", "to": "news:the-expert-founders", "kind": "idea-from-source", "label": "'Execution just got cheap'"}, {"from": "idea:two-generations-gen-zx", "to": "dec:014", "kind": "idea-from-source", "label": "Generation ZX in the title"}, {"from": "idea:two-generations-gen-zx", "to": "book:1.introduction/generation-z.md", "kind": "idea-answers-book"}, {"from": "idea:two-generations-gen-zx", "to": "chapter:gen-zx", "kind": "idea-goes-to-chapter"}, {"from": "idea:two-generations-gen-zx", "to": "topic:everyone-is-a-developer", "kind": "idea-in-topic"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Explorer coding, not vibe coding"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "'What people call vibe coding is exploration, and the word should say so'"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "the handover"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "book:5.concepts/repl.md", "kind": "idea-answers-book"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:explorer-coding-not-vibe-coding", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:ship-now-ship-serverless", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Ship serverless; The objective: start a company"}, {"from": "idea:ship-now-ship-serverless", "to": "news:no-server-by-design", "kind": "idea-from-source", "label": "'It is no servers of mine with logic in them'"}, {"from": "idea:ship-now-ship-serverless", "to": "news:ephemeral-town-planner-services", "kind": "idea-from-source", "label": "the by-the-hour test"}, {"from": "idea:ship-now-ship-serverless", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "'Not to plan, not to pitch, not to architect. Ship.'"}, {"from": "idea:ship-now-ship-serverless", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "Why no server is the product"}, {"from": "idea:ship-now-ship-serverless", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:ship-now-ship-serverless", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:ship-now-ship-serverless", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:measured-by-the-companies-it-creates", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Measured by the companies it creates"}, {"from": "idea:measured-by-the-companies-it-creates", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:measured-by-the-companies-it-creates", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:the-company-itself-for-real", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "The objective: start a company; What the newsroom does not have"}, {"from": "idea:the-company-itself-for-real", "to": "news:not-a-straight-line", "kind": "idea-from-source", "label": "Lithuania, 'for its digital advantages'"}, {"from": "idea:the-company-itself-for-real", "to": "chapter:the-company-itself", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-company-itself-for-real", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-book-is-200-pages-or-more", "to": "dec:012", "kind": "idea-from-source", "label": "the decision"}, {"from": "idea:the-book-is-200-pages-or-more", "to": "art:gen-zx-developers", "kind": "idea-from-source", "label": "Where this comes from: the same memo decided three things"}, {"from": "idea:the-book-is-200-pages-or-more", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-book-is-200-pages-or-more", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:precedents-and-the-diffs", "to": "dec:011", "kind": "idea-from-source", "label": "the decision"}, {"from": "idea:precedents-and-the-diffs", "to": "art:the-book-in-release-mode", "kind": "idea-from-source", "label": "the question kept apart"}, {"from": "idea:precedents-and-the-diffs", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:precedents-and-the-diffs", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:hands-on-inside-the-book", "to": "dec:013", "kind": "idea-from-source", "label": "the decision"}, {"from": "idea:hands-on-inside-the-book", "to": "art:follow-the-rabbit-holes", "kind": "idea-from-source", "label": "A hands-on part, for 2026"}, {"from": "idea:hands-on-inside-the-book", "to": "chapter:how-this-book-was-made", "kind": "idea-goes-to-chapter"}, {"from": "idea:hands-on-inside-the-book", "to": "topic:making-of", "kind": "idea-in-topic"}, {"from": "idea:do-they-miss-it", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Pillar one: ship something somebody can use; Then give it away, and then take it away; Can you charge, and can you charge at a profit?"}, {"from": "idea:do-they-miss-it", "to": "news:i-miss-it", "kind": "idea-from-source", "label": "In short: 'When you do not have it, you miss it'"}, {"from": "idea:do-they-miss-it", "to": "news:price-it-then-give-it-away", "kind": "idea-from-source", "label": "The step after 'do they miss it'"}, {"from": "idea:do-they-miss-it", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:do-they-miss-it", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:do-they-miss-it", "to": "chapter:ship-it-and-see-if-they-miss-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:do-they-miss-it", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-roadmap-deciders-must-use-it", "to": "news:i-miss-it", "kind": "idea-from-source", "label": "The people who decide the roadmap have to use it; The brutal part"}, {"from": "idea:the-roadmap-deciders-must-use-it", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:the-roadmap-deciders-must-use-it", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:the-roadmap-deciders-must-use-it", "to": "chapter:ship-it-and-see-if-they-miss-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-roadmap-deciders-must-use-it", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-loop-is-the-moat", "to": "news:i-miss-it", "kind": "idea-from-source", "label": "The loop is the moat; Direction is the scarce part"}, {"from": "idea:the-loop-is-the-moat", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Pillar three: 'The technology is not the moat'"}, {"from": "idea:the-loop-is-the-moat", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:the-loop-is-the-moat", "to": "chapter:ship-it-and-see-if-they-miss-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-loop-is-the-moat", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:price-it-before-you-give-it-away", "to": "news:price-it-then-give-it-away", "kind": "idea-from-source", "label": "The step after 'do they miss it'; What the programme is, as published; What brutal means"}, {"from": "idea:price-it-before-you-give-it-away", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:price-it-before-you-give-it-away", "to": "chapter:price-it-then-give-it-away", "kind": "idea-goes-to-chapter"}, {"from": "idea:price-it-before-you-give-it-away", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:free-is-never-free-for-the-other-side", "to": "news:price-it-then-give-it-away", "kind": "idea-from-source", "label": "Free is not zero; What brutal means"}, {"from": "idea:free-is-never-free-for-the-other-side", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:free-is-never-free-for-the-other-side", "to": "chapter:price-it-then-give-it-away", "kind": "idea-goes-to-chapter"}, {"from": "idea:free-is-never-free-for-the-other-side", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:do-not-make-them-apply", "to": "news:price-it-then-give-it-away", "kind": "idea-from-source", "label": "How to offer it; For the agents running this, steps 1 and 2"}, {"from": "idea:do-not-make-them-apply", "to": "chapter:your-first-price-and-first-ten-customers", "kind": "idea-goes-to-chapter"}, {"from": "idea:do-not-make-them-apply", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:count-created-customised-used", "to": "news:price-it-then-give-it-away", "kind": "idea-from-source", "label": "What we count; For the agents running this, steps 3 to 6"}, {"from": "idea:count-created-customised-used", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:count-created-customised-used", "to": "chapter:your-first-price-and-first-ten-customers", "kind": "idea-goes-to-chapter"}, {"from": "idea:count-created-customised-used", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:pay-after-the-value", "to": "news:paying-after-the-value", "kind": "idea-from-source", "label": "Buying the future; The newsroom's version; Where it works; Fair, visible, chosen"}, {"from": "idea:pay-after-the-value", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Can you charge, and can you charge at a profit?: 'do not reach for a subscription by default'"}, {"from": "idea:pay-after-the-value", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:pay-after-the-value", "to": "chapter:price-it-then-give-it-away", "kind": "idea-goes-to-chapter"}, {"from": "idea:pay-after-the-value", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:profitable-before-raising", "to": "news:the-question-is-whether-they-miss-it", "kind": "idea-from-source", "label": "Pillar two: the investors should be calling you"}, {"from": "idea:profitable-before-raising", "to": "news:the-controllable-founder", "kind": "idea-from-source", "label": "What this means for strong-minded founders: 'get to the big stick before you need their money'"}, {"from": "idea:profitable-before-raising", "to": "news:sell-dont-issue", "kind": "idea-from-source", "label": "The starting point: a founder who has already won"}, {"from": "idea:profitable-before-raising", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:profitable-before-raising", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:profitable-before-raising", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:we-study-survivors", "to": "news:the-controllable-founder", "kind": "idea-from-source", "label": "The survivors we study; Luck, place and timing"}, {"from": "idea:we-study-survivors", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:we-study-survivors", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:we-study-survivors", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:we-study-survivors", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:investors-select-for-control", "to": "news:the-controllable-founder", "kind": "idea-from-source", "label": "Who is the commodity; Why one and not the other; Control is written into the contract; Founders get replaced; The investors' answer, and the long run"}, {"from": "idea:investors-select-for-control", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:investors-select-for-control", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:investors-select-for-control", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:investors-select-for-control", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:sell-dont-issue", "to": "news:sell-dont-issue", "kind": "idea-from-source", "label": "Sell, don't issue; Lend, don't dilute; The open source safety valve; Why it could raise the odds; A worked example"}, {"from": "idea:sell-dont-issue", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:sell-dont-issue", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:sell-dont-issue", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:sell-dont-issue", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:what-breaks-when-you-sell-not-issue", "to": "news:sell-dont-issue", "kind": "idea-from-source", "label": "What breaks; When it works and when it does not"}, {"from": "idea:what-breaks-when-you-sell-not-issue", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:what-breaks-when-you-sell-not-issue", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:what-breaks-when-you-sell-not-issue", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-expert-founders-in-numbers", "to": "news:the-expert-founders", "kind": "idea-from-source", "label": "The playbook that worked; Execution just got cheap; The experts were always the better bet"}, {"from": "idea:the-expert-founders-in-numbers", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:the-expert-founders-in-numbers", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-expert-founders-in-numbers", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:europe-suits-the-expert-founder", "to": "news:the-expert-founders", "kind": "idea-from-source", "label": "Why this favours Europe"}, {"from": "idea:europe-suits-the-expert-founder", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:europe-suits-the-expert-founder", "to": "chapter:fund-it-or-do-not", "kind": "idea-goes-to-chapter"}, {"from": "idea:europe-suits-the-expert-founder", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:sg-send-live-in-five-days", "to": "news:from-send-to-sgit", "kind": "idea-from-source", "label": "A service where the server holds nothing; Live in five days; Users, payments, and a feature in 22 minutes"}, {"from": "idea:sg-send-live-in-five-days", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:sg-send-live-in-five-days", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:sg-send-live-in-five-days", "to": "chapter:ship-it-and-see-if-they-miss-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:sg-send-live-in-five-days", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:silence-is-a-signal", "to": "news:from-send-to-sgit", "kind": "idea-from-source", "label": "What the market said"}, {"from": "idea:silence-is-a-signal", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:silence-is-a-signal", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:silence-is-a-signal", "to": "chapter:ship-it-and-see-if-they-miss-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:silence-is-a-signal", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "to": "news:from-send-to-sgit", "kind": "idea-from-source", "label": "The pace; Live in five days"}, {"from": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "to": "book:4.life-patterns/workflows.md", "kind": "idea-answers-book"}, {"from": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "to": "book:1.introduction/how-this -book-was-created.md", "kind": "idea-answers-book"}, {"from": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "to": "chapter:how-to-work-with-agents", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-agents-wrote-the-code-i-wrote-the-briefs", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:decided-by-inertia-not-by-ai", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "the opening claim; Why it got this way, in one line from Wardley; And the reason the incumbents cannot simply do this themselves"}, {"from": "idea:decided-by-inertia-not-by-ai", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:decided-by-inertia-not-by-ai", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:decided-by-inertia-not-by-ai", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:decided-by-inertia-not-by-ai", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:users-were-never-happy", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "First, the part nobody likes to say: users were never happy"}, {"from": "idea:users-were-never-happy", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:users-were-never-happy", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:users-were-never-happy", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:what-they-refused-to-build-is-what-the-agent-needs", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "The irony, which is the whole article in one paragraph; Strip the UI and see what is left"}, {"from": "idea:what-they-refused-to-build-is-what-the-agent-needs", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:what-they-refused-to-build-is-what-the-agent-needs", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:what-they-refused-to-build-is-what-the-agent-needs", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:what-they-refused-to-build-is-what-the-agent-needs", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "news:if-somebody-built-a-company-on-code-review", "kind": "idea-from-source", "label": "Who reads the code; The company"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "news:saas-apocalypse-decided-by-inertia-not-by-ai", "kind": "idea-from-source", "label": "The mistake, and where the money actually is: village and town-planner companies"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "chapter:be-a-founder", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-company-sits-in-the-two-moves", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:a-budget-per-step-is-the-objective-good-enough", "to": "news:if-somebody-built-a-company-on-code-review", "kind": "idea-from-source", "label": "From art to science; Constraints keep it in control, the five whys make it cheaper"}, {"from": "idea:a-budget-per-step-is-the-objective-good-enough", "to": "book:5.concepts/deadlines.md", "kind": "idea-answers-book"}, {"from": "idea:a-budget-per-step-is-the-objective-good-enough", "to": "book:4.life-patterns/one-way-two-way-doors.md", "kind": "idea-answers-book"}, {"from": "idea:a-budget-per-step-is-the-objective-good-enough", "to": "chapter:direction-and-judgement", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-budget-per-step-is-the-objective-good-enough", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:due-diligence-becomes-an-agent", "to": "news:send-an-agent-not-a-spreadsheet", "kind": "idea-from-source", "label": "The form that never connected to anything; What changed; The consequence that has been missing"}, {"from": "idea:due-diligence-becomes-an-agent", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:due-diligence-becomes-an-agent", "to": "book:6.security/3rd-party-modules.md", "kind": "idea-answers-book"}, {"from": "idea:due-diligence-becomes-an-agent", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:due-diligence-becomes-an-agent", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:double-down-on-understandability", "to": "news:send-an-agent-not-a-spreadsheet", "kind": "idea-from-source", "label": "Risk-based, not pure; The consequence that has been missing: 'if I were a startup I would double down on understandability'"}, {"from": "idea:double-down-on-understandability", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:double-down-on-understandability", "to": "book:6.security/security-better-developers.md", "kind": "idea-answers-book"}, {"from": "idea:double-down-on-understandability", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:double-down-on-understandability", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:double-down-on-understandability", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-behaviour-policy-is-the-due-diligence-document", "to": "news:send-an-agent-not-a-spreadsheet", "kind": "idea-from-source", "label": "The behaviour policy is the due diligence document"}, {"from": "idea:the-behaviour-policy-is-the-due-diligence-document", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:the-behaviour-policy-is-the-due-diligence-document", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-behaviour-policy-is-the-due-diligence-document", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:the-engagement-path-starts-small", "to": "news:agentics-ready-to-sell", "kind": "idea-from-source", "label": "Who else is selling this; The engagement path"}, {"from": "idea:the-engagement-path-starts-small", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:the-engagement-path-starts-small", "to": "book:7.your-cv/upwork.md", "kind": "idea-answers-book"}, {"from": "idea:the-engagement-path-starts-small", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-engagement-path-starts-small", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:evidence-first-is-the-position", "to": "news:agentics-ready-to-sell", "kind": "idea-from-source", "label": "Where the gap is; What we showed"}, {"from": "idea:evidence-first-is-the-position", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:evidence-first-is-the-position", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:evidence-first-is-the-position", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:evidence-first-is-the-position", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:a-marketplace-of-people", "to": "news:agentics-ready-to-sell", "kind": "idea-from-source", "label": "A marketplace for the people who deliver it; A brief for the marketplace page"}, {"from": "idea:a-marketplace-of-people", "to": "book:7.your-cv/upwork.md", "kind": "idea-answers-book"}, {"from": "idea:a-marketplace-of-people", "to": "book:4.life-patterns/mentors.md", "kind": "idea-answers-book"}, {"from": "idea:a-marketplace-of-people", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-marketplace-of-people", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:three-tiers-for-a-model-on-a-static-site", "to": "news:chat-on-a-static-site", "kind": "idea-from-source", "label": "The constraint nobody can design around; The three tiers"}, {"from": "idea:three-tiers-for-a-model-on-a-static-site", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:three-tiers-for-a-model-on-a-static-site", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:route-do-not-teach", "to": "news:chat-on-a-static-site", "kind": "idea-from-source", "label": "What it does not do"}, {"from": "idea:route-do-not-teach", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:route-do-not-teach", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:billing-by-not-building-billing", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "The commercial model that was never a billing system"}, {"from": "idea:billing-by-not-building-billing", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:billing-by-not-building-billing", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-licence-is-the-blocker", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "the opening; The commercial model that was never a billing system; The four routes"}, {"from": "idea:the-licence-is-the-blocker", "to": "news:an-agent-desktop-by-the-minute", "kind": "idea-from-source", "label": "macOS has a one-day minimum, and a purpose clause"}, {"from": "idea:the-licence-is-the-blocker", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-licence-is-the-blocker", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:voicedebrief-stopped-at-the-billing-system", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "What VoiceDebrief is; Why no server is the product; The four routes"}, {"from": "idea:voicedebrief-stopped-at-the-billing-system", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:voicedebrief-stopped-at-the-billing-system", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:git-for-things-you-cannot-put-on-github", "to": "news:what-sgit-is", "kind": "idea-from-source", "label": "the opening; The part that is easy to say and hard to build"}, {"from": "idea:git-for-things-you-cannot-put-on-github", "to": "book:4.life-patterns/content/backup-your-life.md", "kind": "idea-answers-book"}, {"from": "idea:git-for-things-you-cannot-put-on-github", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:git-for-things-you-cannot-put-on-github", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:the-read-key-is-the-sharing-model", "to": "news:what-sgit-is", "kind": "idea-from-source", "label": "The part that is easy to say and hard to build; Ten seconds of proof; Try it"}, {"from": "idea:the-read-key-is-the-sharing-model", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "One secret, and the keys derived from it"}, {"from": "idea:the-read-key-is-the-sharing-model", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-read-key-is-the-sharing-model", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:capability-without-credential", "to": "news:what-sgit-is", "kind": "idea-from-source", "label": "The part that surprises people"}, {"from": "idea:capability-without-credential", "to": "news:chat-on-a-static-site", "kind": "idea-from-source", "label": "Tier 2, the bridge"}, {"from": "idea:capability-without-credential", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:capability-without-credential", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:protect-the-keys-not-the-data", "to": "news:the-value-of-constraints", "kind": "idea-from-source", "label": "From the data to the keys"}, {"from": "idea:protect-the-keys-not-the-data", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "In short; Where everything lives"}, {"from": "idea:protect-the-keys-not-the-data", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:protect-the-keys-not-the-data", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:a-password-manager-and-a-registry", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "Where the vault keys are kept today; The weakest step: giving a key to an agent; What comes next"}, {"from": "idea:a-password-manager-and-a-registry", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-password-manager-and-a-registry", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:small-vaults-for-small-jobs", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "Small vaults for small jobs"}, {"from": "idea:small-vaults-for-small-jobs", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:small-vaults-for-small-jobs", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:write-only-lanes", "to": "news:where-the-vault-keys-live", "kind": "idea-from-source", "label": "Append lanes, the transport behind most of this"}, {"from": "idea:write-only-lanes", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:write-only-lanes", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:nobody-buys-it-for-the-encryption", "to": "news:the-value-of-constraints", "kind": "idea-from-source", "label": "The mistake I made first; Open source, as a constraint"}, {"from": "idea:nobody-buys-it-for-the-encryption", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:nobody-buys-it-for-the-encryption", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:encryption-does-not-remove-gdpr", "to": "news:the-value-of-constraints", "kind": "idea-from-source", "label": "What it does not do: GDPR"}, {"from": "idea:encryption-does-not-remove-gdpr", "to": "book:5.concepts/gdpr.md", "kind": "idea-answers-book"}, {"from": "idea:encryption-does-not-remove-gdpr", "to": "chapter:privacy-by-design", "kind": "idea-goes-to-chapter"}, {"from": "idea:encryption-does-not-remove-gdpr", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:open-source-all-of-it-or-it-is-an-evaluation-version", "to": "news:the-value-of-constraints", "kind": "idea-from-source", "label": "Open source, as a constraint; All of it, or it is an evaluation version; The business model that follows"}, {"from": "idea:open-source-all-of-it-or-it-is-an-evaluation-version", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-all-of-it-or-it-is-an-evaluation-version", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:open-source-all-of-it-or-it-is-an-evaluation-version", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:what-serverless-costs-when-idle", "to": "news:ephemeral-town-planner-services", "kind": "idea-from-source", "label": "What it means now (the table); What serverless meant"}, {"from": "idea:what-serverless-costs-when-idle", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:what-serverless-costs-when-idle", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:what-serverless-costs-when-idle", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:the-glue-behind-the-commodity", "to": "news:ephemeral-town-planner-services", "kind": "idea-from-source", "label": "The test; The glue behind the commodity"}, {"from": "idea:the-glue-behind-the-commodity", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:the-glue-behind-the-commodity", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:the-glue-behind-the-commodity", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-glue-behind-the-commodity", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:the-code-must-not-know-it-moved", "to": "news:move-the-cloud-not-the-code", "kind": "idea-from-source", "label": "Why workloads do not move; The criterion: the code must not know; This is not theoretical: the S3 twin"}, {"from": "idea:the-code-must-not-know-it-moved", "to": "book:2.mvp-for-gen-z-dev/draft/aws.md", "kind": "idea-answers-book"}, {"from": "idea:the-code-must-not-know-it-moved", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:the-code-must-not-know-it-moved", "to": "chapter:building-blocks", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-code-must-not-know-it-moved", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:sovereignty-never-signs-a-migration", "to": "news:move-the-cloud-not-the-code", "kind": "idea-from-source", "label": "The reason to move is never sovereignty; The business model"}, {"from": "idea:sovereignty-never-signs-a-migration", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:sovereignty-never-signs-a-migration", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:no-new-features-during-the-move", "to": "news:move-the-cloud-not-the-code", "kind": "idea-from-source", "label": "A villager move: no new features"}, {"from": "idea:no-new-features-during-the-move", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:no-new-features-during-the-move", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:no-new-features-during-the-move", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:run-unmodified-against-a-twin", "to": "news:move-the-cloud-not-the-code", "kind": "idea-from-source", "label": "Testing goes to another level"}, {"from": "idea:run-unmodified-against-a-twin", "to": "book:5.concepts/CI-Testing.md", "kind": "idea-answers-book"}, {"from": "idea:run-unmodified-against-a-twin", "to": "book:5.concepts/chaos-engineering.md", "kind": "idea-answers-book"}, {"from": "idea:run-unmodified-against-a-twin", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:run-unmodified-against-a-twin", "to": "chapter:shipped-means-the-user-has-it", "kind": "idea-goes-to-chapter"}, {"from": "idea:run-unmodified-against-a-twin", "to": "topic:shipped-means-the-user-has-it", "kind": "idea-in-topic"}, {"from": "idea:startup-credits-october-2026", "to": "news:an-agent-desktop-by-the-minute", "kind": "idea-from-source", "label": "The programmes that would pay for finding out (the table)"}, {"from": "idea:startup-credits-october-2026", "to": "book:2.mvp-for-gen-z-dev/draft/aws.md", "kind": "idea-answers-book"}, {"from": "idea:startup-credits-october-2026", "to": "chapter:the-credits-and-programmes-2026", "kind": "idea-goes-to-chapter"}, {"from": "idea:startup-credits-october-2026", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:apply-with-the-work-as-the-application", "to": "news:an-agent-desktop-by-the-minute", "kind": "idea-from-source", "label": "The programmes that would pay for finding out; If you run one of these programmes"}, {"from": "idea:apply-with-the-work-as-the-application", "to": "news:the-key-is-the-billing-system", "kind": "idea-from-source", "label": "The brief for the agents that will write to them"}, {"from": "idea:apply-with-the-work-as-the-application", "to": "chapter:the-credits-and-programmes-2026", "kind": "idea-goes-to-chapter"}, {"from": "idea:apply-with-the-work-as-the-application", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-model-cannot-be-the-barrier", "to": "news:an-agent-desktop-by-the-minute", "kind": "idea-from-source", "label": "The model cannot be the barrier; What locked down means; What we would build from what exists"}, {"from": "idea:the-model-cannot-be-the-barrier", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:the-model-cannot-be-the-barrier", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:the-model-cannot-be-the-barrier", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-model-cannot-be-the-barrier", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:a-vault-server-in-83-lines", "to": "news:cloudflare-as-lego-blocks", "kind": "idea-from-source", "label": "An sgit vault on Cloudflare"}, {"from": "idea:a-vault-server-in-83-lines", "to": "book:5.concepts/serverless.md", "kind": "idea-answers-book"}, {"from": "idea:a-vault-server-in-83-lines", "to": "chapter:ship-a-serverless-product-in-a-weekend", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-vault-server-in-83-lines", "to": "topic:building-blocks", "kind": "idea-in-topic"}, {"from": "idea:reach-is-a-computed-value", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "2. How do we keep behaviour policies current as agents gain new powers?; 1. What happens when an agent bypasses its behaviour policy?"}, {"from": "idea:reach-is-a-computed-value", "to": "book:5.concepts/changes.md", "kind": "idea-answers-book"}, {"from": "idea:reach-is-a-computed-value", "to": "book:6.security/3rd-party-modules.md", "kind": "idea-answers-book"}, {"from": "idea:reach-is-a-computed-value", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:reach-is-a-computed-value", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:who-can-pull-the-plug", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "4. How are we insuring or assuring agent behaviour?, 'An audit trail is not a guarantee'; 8. Remediation when a policy is bypassed; 10. Measurable business and technical outcomes, Getting to production"}, {"from": "idea:who-can-pull-the-plug", "to": "news:what-can-your-agent-reach", "kind": "idea-from-source", "label": "How does it get into the room?, the board's risk appetite"}, {"from": "idea:who-can-pull-the-plug", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:who-can-pull-the-plug", "to": "book:5.concepts/chaos-engineering.md", "kind": "idea-answers-book"}, {"from": "idea:who-can-pull-the-plug", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:who-can-pull-the-plug", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:sell-the-build-not-the-code", "to": "news:open-source-is-not-free", "kind": "idea-from-source", "label": "What this says; Five ways to pay for the long tail, simulated; What price pays for the long tail?"}, {"from": "idea:sell-the-build-not-the-code", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "3. Can policies be tailored to my stack, and what am I paying for?, What you pay for"}, {"from": "idea:sell-the-build-not-the-code", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:sell-the-build-not-the-code", "to": "book:4.life-patterns/content/be-a-founder.md", "kind": "idea-answers-book"}, {"from": "idea:sell-the-build-not-the-code", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:sell-the-build-not-the-code", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:answer-the-hard-questions-and-check-your-own-site", "to": "news:riskmandate-ten-questions", "kind": "idea-from-source", "label": "Where this comes from; Honest maturity, across all ten; Three things this exercise showed we must fix on our own site"}, {"from": "idea:answer-the-hard-questions-and-check-your-own-site", "to": "book:5.concepts/facts.md", "kind": "idea-answers-book"}, {"from": "idea:answer-the-hard-questions-and-check-your-own-site", "to": "book:5.concepts/amazon-press-releases.md", "kind": "idea-answers-book"}, {"from": "idea:answer-the-hard-questions-and-check-your-own-site", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:answer-the-hard-questions-and-check-your-own-site", "to": "topic:facts-and-the-record", "kind": "idea-in-topic"}, {"from": "idea:a-policy-beside-the-prompt", "to": "news:a-policy-beside-the-prompt", "kind": "idea-from-source", "label": "The idea: a policy beside the prompt; The user answers outside the policy, the vendor inside it; A system prompt is a light behaviour policy; Most agents already run a policy"}, {"from": "idea:a-policy-beside-the-prompt", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:a-policy-beside-the-prompt", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:a-policy-beside-the-prompt", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:code-and-data-in-one-channel", "to": "news:a-policy-beside-the-prompt", "kind": "idea-from-source", "label": "The old problem: code and data in one channel; What this does not claim"}, {"from": "idea:code-and-data-in-one-channel", "to": "book:6.security/strings-should-be-banned.md", "kind": "idea-answers-book"}, {"from": "idea:code-and-data-in-one-channel", "to": "book:6.security/pointers.md", "kind": "idea-answers-book"}, {"from": "idea:code-and-data-in-one-channel", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:code-and-data-in-one-channel", "to": "topic:security-agent-era", "kind": "idea-in-topic"}, {"from": "idea:aviation-and-payments-got-safe-when-liability-landed", "to": "news:a-policy-beside-the-prompt", "kind": "idea-from-source", "label": "Aviation did not get safe out of altruism; Payments got safe because liability moved; Regulation alone does not do it"}, {"from": "idea:aviation-and-payments-got-safe-when-liability-landed", "to": "book:6.security/bug-bounties.md", "kind": "idea-answers-book"}, {"from": "idea:aviation-and-payments-got-safe-when-liability-landed", "to": "book:5.concepts/gdpr.md", "kind": "idea-answers-book"}, {"from": "idea:aviation-and-payments-got-safe-when-liability-landed", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:aviation-and-payments-got-safe-when-liability-landed", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:the-policy-is-the-business-logic", "to": "news:the-behaviour-policy-is-the-business-logic", "kind": "idea-from-source", "label": "Above the mechanics is the business; Why the vendors stop at the mechanics; It looks a lot like a skill"}, {"from": "idea:the-policy-is-the-business-logic", "to": "book:5.concepts/design.md", "kind": "idea-answers-book"}, {"from": "idea:the-policy-is-the-business-logic", "to": "book:4.life-patterns/workflows.md", "kind": "idea-answers-book"}, {"from": "idea:the-policy-is-the-business-logic", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-policy-is-the-business-logic", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:software-was-the-law", "to": "news:the-behaviour-policy-is-the-business-logic", "kind": "idea-from-source", "label": "Software was the law"}, {"from": "idea:software-was-the-law", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:software-was-the-law", "to": "book:5.concepts/gdpr.md", "kind": "idea-answers-book"}, {"from": "idea:software-was-the-law", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:software-was-the-law", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:control-accepted-risk-or-hope", "to": "news:the-behaviour-policy-is-the-business-logic", "kind": "idea-from-source", "label": "How much of it is hope?; Where the vendors plug in"}, {"from": "idea:control-accepted-risk-or-hope", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:control-accepted-risk-or-hope", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:control-accepted-risk-or-hope", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:open-source-is-not-free", "to": "news:open-source-is-not-free", "kind": "idea-from-source", "label": "In short; The long tail, measured; Where the money flows"}, {"from": "idea:open-source-is-not-free", "to": "book:2.mvp-for-gen-z-dev/content/open-source.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-is-not-free", "to": "book:6.security/3rd-party-modules.md", "kind": "idea-answers-book"}, {"from": "idea:open-source-is-not-free", "to": "chapter:open-source", "kind": "idea-goes-to-chapter"}, {"from": "idea:open-source-is-not-free", "to": "topic:open-source", "kind": "idea-in-topic"}, {"from": "idea:pence-only-work-aggregated", "to": "news:open-source-is-not-free", "kind": "idea-from-source", "label": "The pence problem; Why not just charge?, Per-install rewards get gamed"}, {"from": "idea:pence-only-work-aggregated", "to": "book:5.concepts/karma-points.md", "kind": "idea-answers-book"}, {"from": "idea:pence-only-work-aggregated", "to": "chapter:price-it-then-give-it-away", "kind": "idea-goes-to-chapter"}, {"from": "idea:pence-only-work-aggregated", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-agents-leave-a-record", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "'Nobody knows how it is built' can be fixed"}, {"from": "idea:the-agents-leave-a-record", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:the-agents-leave-a-record", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:the-agents-leave-a-record", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-agents-leave-a-record", "to": "topic:working-with-agents", "kind": "idea-in-topic"}, {"from": "idea:the-bonus-test-is-accountability", "to": "news:who-will-fix-your-mess", "kind": "idea-from-source", "label": "The bonus test is accountability"}, {"from": "idea:the-bonus-test-is-accountability", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "Villagers and town planners"}, {"from": "idea:the-bonus-test-is-accountability", "to": "book:4.life-patterns/pionners-settlers-town-planners.md", "kind": "idea-answers-book"}, {"from": "idea:the-bonus-test-is-accountability", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:the-bonus-test-is-accountability", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-bonus-test-is-accountability", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:lithuania-two-lines", "to": "news:not-a-straight-line", "kind": "idea-from-source", "label": "The line that runs back, last paragraph; What this does not claim, 'The company move is a consideration, not a decision'"}, {"from": "idea:lithuania-two-lines", "to": "chapter:the-company-itself", "kind": "idea-goes-to-chapter"}, {"from": "idea:lithuania-two-lines", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-thinking-is-never-wasted", "to": "news:not-a-straight-line", "kind": "idea-from-source", "label": "The line that runs back; Going back, with something that works; The thinking is never wasted"}, {"from": "idea:the-thinking-is-never-wasted", "to": "book:4.life-patterns/content/talking-to-yourself.md", "kind": "idea-answers-book"}, {"from": "idea:the-thinking-is-never-wasted", "to": "book:4.life-patterns/content/backup-your-life.md", "kind": "idea-answers-book"}, {"from": "idea:the-thinking-is-never-wasted", "to": "book:7.your-cv/future-self.md", "kind": "idea-answers-book"}, {"from": "idea:the-thinking-is-never-wasted", "to": "chapter:connect-the-dots-backwards", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-thinking-is-never-wasted", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:your-newsroom-is-your-demo-and-your-crm", "to": "news:not-a-straight-line", "kind": "idea-from-source", "label": "The newsroom is RiskMandate's workflow, and its example; Why the newsroom could solve it and RiskMandate could not"}, {"from": "idea:your-newsroom-is-your-demo-and-your-crm", "to": "book:7.your-cv/blogs.md", "kind": "idea-answers-book"}, {"from": "idea:your-newsroom-is-your-demo-and-your-crm", "to": "book:4.life-patterns/publish-publish-publish.md", "kind": "idea-answers-book"}, {"from": "idea:your-newsroom-is-your-demo-and-your-crm", "to": "chapter:your-own-newsroom", "kind": "idea-goes-to-chapter"}, {"from": "idea:your-newsroom-is-your-demo-and-your-crm", "to": "topic:publish-in-public", "kind": "idea-in-topic"}, {"from": "idea:not-ready-to-be-in-line", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "Not ready to be in line; Villagers and town planners"}, {"from": "idea:not-ready-to-be-in-line", "to": "book:5.concepts/legacy-applications.md", "kind": "idea-answers-book"}, {"from": "idea:not-ready-to-be-in-line", "to": "book:6.security/dont-touch-production.md", "kind": "idea-answers-book"}, {"from": "idea:not-ready-to-be-in-line", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:not-ready-to-be-in-line", "to": "topic:explorers-villagers-town-planners", "kind": "idea-in-topic"}, {"from": "idea:an-explorer-version-of-every-product", "to": "news:explorer-coding", "kind": "idea-from-source", "label": "An explorer version of every product"}, {"from": "idea:an-explorer-version-of-every-product", "to": "book:5.concepts/feedback-loops.md", "kind": "idea-answers-book"}, {"from": "idea:an-explorer-version-of-every-product", "to": "book:5.concepts/karma-points.md", "kind": "idea-answers-book"}, {"from": "idea:an-explorer-version-of-every-product", "to": "chapter:explorer-coding-and-the-handover", "kind": "idea-goes-to-chapter"}, {"from": "idea:an-explorer-version-of-every-product", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:twenty-minutes-with-your-own-assistant", "to": "news:what-can-your-agent-reach", "kind": "idea-from-source", "label": "Yes, it reports what an agent can actually do; How does it get into the room?, Twenty minutes"}, {"from": "idea:twenty-minutes-with-your-own-assistant", "to": "book:6.security/threat-modeling.md", "kind": "idea-answers-book"}, {"from": "idea:twenty-minutes-with-your-own-assistant", "to": "chapter:controlling-your-agent", "kind": "idea-goes-to-chapter"}, {"from": "idea:twenty-minutes-with-your-own-assistant", "to": "topic:controlling-your-agent", "kind": "idea-in-topic"}, {"from": "idea:answer-the-question-already-in-the-room", "to": "news:what-can-your-agent-reach", "kind": "idea-from-source", "label": "How does it get into the room?"}, {"from": "idea:answer-the-question-already-in-the-room", "to": "chapter:sell", "kind": "idea-goes-to-chapter"}, {"from": "idea:answer-the-question-already-in-the-room", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "idea:the-plumbing-is-the-states-road", "to": "news:judo-for-small-countries", "kind": "idea-from-source", "label": "The race you cannot win, and should not enter; The opportunity is the plumbing; Infrastructure is the state's job"}, {"from": "idea:the-plumbing-is-the-states-road", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:the-plumbing-is-the-states-road", "to": "chapter:civic-responsibility", "kind": "idea-goes-to-chapter"}, {"from": "idea:the-plumbing-is-the-states-road", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:what-the-state-pays-for-belongs-to-the-commons", "to": "news:judo-for-small-countries", "kind": "idea-from-source", "label": "Why it has to be open source; Create the demand before the day you need it; The playbook"}, {"from": "idea:what-the-state-pays-for-belongs-to-the-commons", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:what-the-state-pays-for-belongs-to-the-commons", "to": "book:2.mvp-for-gen-z-dev/content/creative-commons.md", "kind": "idea-answers-book"}, {"from": "idea:what-the-state-pays-for-belongs-to-the-commons", "to": "chapter:civic-responsibility", "kind": "idea-goes-to-chapter"}, {"from": "idea:what-the-state-pays-for-belongs-to-the-commons", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:smaller-models-more-of-them", "to": "news:judo-for-small-countries", "kind": "idea-from-source", "label": "Smaller models, more of them; Constraints are the input"}, {"from": "idea:smaller-models-more-of-them", "to": "book:3.technologies/content/ml-ai.md", "kind": "idea-answers-book"}, {"from": "idea:smaller-models-more-of-them", "to": "book:4.life-patterns/civic-responsibility.md", "kind": "idea-answers-book"}, {"from": "idea:smaller-models-more-of-them", "to": "chapter:civic-responsibility", "kind": "idea-goes-to-chapter"}, {"from": "idea:smaller-models-more-of-them", "to": "topic:civic-and-history", "kind": "idea-in-topic"}, {"from": "idea:millions-on-a-distributed-workforce", "to": "news:judo-for-small-countries", "kind": "idea-from-source", "label": "What I learned spending millions on a distributed workforce"}, {"from": "idea:millions-on-a-distributed-workforce", "to": "book:7.your-cv/upwork.md", "kind": "idea-answers-book"}, {"from": "idea:millions-on-a-distributed-workforce", "to": "book:4.life-patterns/why-diversity-matters.md", "kind": "idea-answers-book"}, {"from": "idea:millions-on-a-distributed-workforce", "to": "chapter:the-company-itself", "kind": "idea-goes-to-chapter"}, {"from": "idea:millions-on-a-distributed-workforce", "to": "topic:be-a-founder", "kind": "idea-in-topic"}, {"from": "task:write-it-as-an-article:journalist:1", "to": "art:write-it-as-an-article", "kind": "task-from-article"}, {"from": "task:write-it-as-an-article:journalist:2", "to": "art:write-it-as-an-article", "kind": "task-from-article"}, {"from": "task:write-it-as-an-article:journalist:3", "to": "art:write-it-as-an-article", "kind": "task-from-article"}, {"from": "task:write-it-as-an-article:dinis:1", "to": "art:write-it-as-an-article", "kind": "task-from-article"}, {"from": "task:write-it-as-an-article:dinis:2", "to": "art:write-it-as-an-article", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:1", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:2", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:3", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:4", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:5", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:6", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:7", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:8", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:9", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:release-the-book-we-already-released:publisher:10", "to": "art:release-the-book-we-already-released", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:1", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:2", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:3", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:4", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:5", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:6", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:one-board-for-the-book:editor:7", "to": "art:one-board-for-the-book", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:1", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:2", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:3", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:4", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:5", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:everything-unfinished-in-one-place:editor:6", "to": "art:everything-unfinished-in-one-place", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:1", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:2", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:3", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:4", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:5", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:6", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:read-comment-decide:editor:7", "to": "art:read-comment-decide", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:editor:1", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:editor:2", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:editor:3", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:editor:4", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:editor:5", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:start-from-the-storyline:journalist:6", "to": "art:start-from-the-storyline", "kind": "task-from-article"}, {"from": "task:lucky-to-be-here:editor:1", "to": "art:lucky-to-be-here", "kind": "task-from-article"}, {"from": "task:lucky-to-be-here:editor:2", "to": "art:lucky-to-be-here", "kind": "task-from-article"}, {"from": "task:lucky-to-be-here:editor:3", "to": "art:lucky-to-be-here", "kind": "task-from-article"}, {"from": "task:lucky-to-be-here:editor:4", "to": "art:lucky-to-be-here", "kind": "task-from-article"}, {"from": "task:lucky-to-be-here:journalist:5", "to": "art:lucky-to-be-here", "kind": "task-from-article"}, {"from": "task:where-do-you-land:editor:1", "to": "art:where-do-you-land", "kind": "task-from-article"}, {"from": "task:where-do-you-land:editor:2", "to": "art:where-do-you-land", "kind": "task-from-article"}, {"from": "task:where-do-you-land:editor:3", "to": "art:where-do-you-land", "kind": "task-from-article"}, {"from": "task:where-do-you-land:editor:4", "to": "art:where-do-you-land", "kind": "task-from-article"}, {"from": "task:where-do-you-land:editor:5", "to": "art:where-do-you-land", "kind": "task-from-article"}, {"from": "task:connect-the-dots-backwards:editor:1", "to": "art:connect-the-dots-backwards", "kind": "task-from-article"}, {"from": "task:connect-the-dots-backwards:editor:2", "to": "art:connect-the-dots-backwards", "kind": "task-from-article"}, {"from": "task:connect-the-dots-backwards:editor:3", "to": "art:connect-the-dots-backwards", "kind": "task-from-article"}, {"from": "task:connect-the-dots-backwards:journalist:4", "to": "art:connect-the-dots-backwards", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:editor:1", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:editor:2", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:editor:3", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:editor:4", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:editor:5", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:where-the-thinking-came-from:journalist:6", "to": "art:where-the-thinking-came-from", "kind": "task-from-article"}, {"from": "task:generative-ai-not-ai:editor:1", "to": "art:generative-ai-not-ai", "kind": "task-from-article"}, {"from": "task:generative-ai-not-ai:editor:2", "to": "art:generative-ai-not-ai", "kind": "task-from-article"}, {"from": "task:generative-ai-not-ai:editor:3", "to": "art:generative-ai-not-ai", "kind": "task-from-article"}, {"from": "task:generative-ai-not-ai:editor:4", "to": "art:generative-ai-not-ai", "kind": "task-from-article"}, {"from": "task:follow-the-rabbit-holes:editor:1", "to": "art:follow-the-rabbit-holes", "kind": "task-from-article"}, {"from": "task:follow-the-rabbit-holes:editor:2", "to": "art:follow-the-rabbit-holes", "kind": "task-from-article"}, {"from": "task:follow-the-rabbit-holes:editor:3", "to": "art:follow-the-rabbit-holes", "kind": "task-from-article"}, {"from": "task:follow-the-rabbit-holes:journalist:4", "to": "art:follow-the-rabbit-holes", "kind": "task-from-article"}, {"from": "task:everything-is-connected:editor:1", "to": "art:everything-is-connected", "kind": "task-from-article"}, {"from": "task:everything-is-connected:editor:2", "to": "art:everything-is-connected", "kind": "task-from-article"}, {"from": "task:everything-is-connected:editor:3", "to": "art:everything-is-connected", "kind": "task-from-article"}, {"from": "task:everything-is-connected:editor:4", "to": "art:everything-is-connected", "kind": "task-from-article"}, {"from": "task:everything-is-connected:editor:5", "to": "art:everything-is-connected", "kind": "task-from-article"}, {"from": "task:lenses-roles-and-loops:editor:1", "to": "art:lenses-roles-and-loops", "kind": "task-from-article"}, {"from": "task:lenses-roles-and-loops:editor:2", "to": "art:lenses-roles-and-loops", "kind": "task-from-article"}, {"from": "task:lenses-roles-and-loops:editor:3", "to": "art:lenses-roles-and-loops", "kind": "task-from-article"}, {"from": "task:lenses-roles-and-loops:editor:4", "to": "art:lenses-roles-and-loops", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:editor:1", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:editor:2", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:editor:3", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:librarian:4", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:librarian:5", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:reviewer:6", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:the-book-in-release-mode:publisher:7", "to": "art:the-book-in-release-mode", "kind": "task-from-article"}, {"from": "task:gen-zx-developers:editor:1", "to": "art:gen-zx-developers", "kind": "task-from-article"}, {"from": "task:gen-zx-developers:librarian:2", "to": "art:gen-zx-developers", "kind": "task-from-article"}, {"from": "task:gen-zx-developers:journalist:3", "to": "art:gen-zx-developers", "kind": "task-from-article"}, {"from": "task:gen-zx-developers:publisher:4", "to": "art:gen-zx-developers", "kind": "task-from-article"}, {"from": "brief:editor:book__v1.0.0__connect-the-dots-backwards", "to": "art:connect-the-dots-backwards", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__everything-is-connected", "to": "art:everything-is-connected", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__everything-unfinished-in-one-place", "to": "art:everything-unfinished-in-one-place", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__follow-the-rabbit-holes", "to": "art:follow-the-rabbit-holes", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__gen-zx-developers", "to": "art:gen-zx-developers", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__generative-ai-not-ai", "to": "art:generative-ai-not-ai", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__lenses-roles-and-loops", "to": "art:lenses-roles-and-loops", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__lucky-to-be-here", "to": "art:lucky-to-be-here", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__read-comment-decide", "to": "art:read-comment-decide", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__start-from-the-storyline", "to": "art:start-from-the-storyline", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__where-do-you-land", "to": "art:where-do-you-land", "kind": "brief-points-at"}, {"from": "brief:editor:book__v1.0.0__where-the-thinking-came-from", "to": "art:where-the-thinking-came-from", "kind": "brief-points-at"}, {"from": "brief:editor:v0.2.1__one-board-for-the-book", "to": "art:one-board-for-the-book", "kind": "brief-points-at"}, {"from": "brief:librarian:book__v1.0.0__gen-zx-developers", "to": "art:gen-zx-developers", "kind": "brief-points-at"}, {"from": "brief:librarian:book__v1.0.0__the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "brief-points-at"}, {"from": "brief:publisher:book__v1.0.0__gen-zx-developers", "to": "art:gen-zx-developers", "kind": "brief-points-at"}, {"from": "brief:publisher:book__v1.0.0__release-the-book-we-already-released", "to": "art:release-the-book-we-already-released", "kind": "brief-points-at"}, {"from": "brief:publisher:book__v1.0.0__the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "brief-points-at"}, {"from": "brief:reviewer:book__v1.0.0__the-book-in-release-mode", "to": "art:the-book-in-release-mode", "kind": "brief-points-at"}, {"from": "dec:001", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:002", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:003", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:004", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:005", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:006", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:007", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:008", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:009", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:010", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:011", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:012", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:013", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:014", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}, {"from": "dec:015", "to": "agent:dinis-first-decisions", "kind": "decision-recorded-in"}]}
