{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Mitansh Gor",
  "title_listed": "RL 2: The first physical and computational RL machines(1948–1954)",
  "keywords": "",
  "domain": "大模型算法",
  "content_type": "技术教程",
  "is_paid_flag": "否",
  "url": "https://dev.to/mitanshgor/rl-2-the-first-physical-and-computational-rl-machines1948-1954-1amh",
  "publish_date": "2026-09-12",
  "corpus_stage": "",
  "notes": "",
  "id": "3ab9032746e2",
  "collected_at": "2026-10-02T13:52:28",
  "title": "RL 2: The first physical and computational RL machines(1948–1954) - DEV Community",
  "body_markdown": "Quick recap, if you're just arriving:\nBlog 1 showed that every core idea in reinforcement learning was discovered by someone watching animals, not computers. Thorndike's cats taught us that learning is selection, not insight. Pavlov's dogs taught us that a signal can carry information about the future. Skinner's pigeons taught us that big behaviors are built from small rewarded steps. Hebb's neurons taught us that learning lives in the strength of a connection.\nFour beautiful observations. Not one of them tells you how to\nbuild\nsomething that does this.\nThis is the decade where people tried to build it anyway. What followed was ten years of beautiful, clunky, brilliant hardware — machines that stumbled through mazes, adjusted their own wiring, and learned, in the most primitive sense, from their mistakes. None of the people building them knew they were inventing Reinforcement Learning. They were just trying to make something move on its own.\nThe Missing Link: Why \"a signal predicts the future\" Needed a Number\nBefore we jump to the machines, one 20-second detour — because it's the cleanest bridge between Blog 1 and everything below.\nPavlov noticed his dogs salivated at footsteps, before food even showed up. Nice story. But it doesn't tell you\nhow much\nthe dog should update its expectation each time, or why the association eventually stops getting stronger.\nDecades later — 1972, well after everything in this post — psychologists Robert Rescorla and Allan Wagner finally wrote that down as a formula:\nΔ\nV\n=\nα\nβ\n(\nλ\n−\nV\n)\n\\Delta V = \\alpha\\beta(\\lambda - V)\nΔ\nV\n=\nα\nβ\n(\nλ\n−\nV\n)\nIn plain words:\nhow much you learn from an event equals how surprising it was.\nV\nis what you currently expect,\nλ\nis what actually happened, and\n(λ - V)\nis the surprise — the gap between prediction and reality. If a bell always predicts food, eventually there's no surprise left, and no more learning happens. That gap term is the whole engine.\nWhy mention a 1972 psychology paper in a post about 1948–1954 engineering? Because the people you're about to meet — Wiener, Turing, Minsky, Shannon — independently backed into the exact same idea from a completely different direction:\nengineering\n, not biology. None of them had read Pavlov's fine print. They just kept discovering, on their own, that intelligence seems to boil down to measuring a gap and closing it. Keep that gap-closing idea in your head — it's the thread connecting every section below.\nThe Cybernetic Spark: Wiener's Feedback Loops (1948)\nIn 1948, mathematician Norbert Wiener published\nCybernetics: Or Control and Communication in the Animal and the Machine\n, and made a claim that was radical for its time: the same mathematical principle governs both living organisms and machines —\nnegative feedback\n.\nForget dogs and food for a second. Think of a thermostat. It doesn't \"know\" temperature in any deep sense — it just tracks one number obsessively: the gap between where it is and where it's supposed to be.\nD\n=\nT\n−\nS\nD = T - S\nD\n=\nT\n−\nS\nWhere\nT\nis the target state and\nS\nis the current state. If\nD ≠ 0\n, the system fires a correction to close the gap. That's it. That's the whole idea.\nThis is exactly the Rescorla-Wagner gap from above, just wearing an engineer's clothes instead of a psychologist's.\nD\nhere is the direct ancestor of the\nTemporal Difference (TD) error\nyou'll see in modern RL — the signal that tells an agent \"something's off, adjust.\" Every gradient update in every deep RL system running today is, underneath the math, a Wiener-style error minimization.\nWiener's punchline:\nIntelligence isn't magic. It's error minimization on a loop. If you can define a goal and measure your distance from it, a machine can \"learn\" to close that distance.\nSo Wiener gave the field a\ndrive\n— a reason to move, a number to chase to zero. But a drive isn't a mechanism. It doesn't tell you what happens inside the machine when it's wrong versus when it's right. That's exactly what Alan Turing was working out, in the very same year, from a completely different angle.\nThe Turing Blueprint: Pain, Pleasure, and the First Neural Network on Paper (1948)\nTuring's 1948 paper\nIntelligent Machinery\nintroduced the\nP-type (Pain-type) Unorganized Machine\n, and reading it today feels like finding the first design document for a neural network, forty years too early.\nTuring's argument was blunt: a human infant's cortex is mostly a random, disorganized network that only becomes useful through experience. So why not build the machine equivalent? He proposed a network built from\nNAND gates\n— think of these as the smallest possible decision units, each taking two inputs and spitting out one output based on a simple rule. Each gate could sit in one of two internal \"configuration states,\" and that state is what determined how the gate behaved.\nThe learning happened through two signals, and this is the part that matters:\nPain\n— when the machine got something wrong, the gates that had just fired got scrambled at random:\nC\nn\ne\nx\nt\n=\nR\na\nn\nd\no\nm\nS\na\nm\np\nl\ne\n(\nC\n)\nC_{\\mathit{next}} = \\mathit{RandomSample}(C)\nC\nnext\n​\n=\nRandomSample\n(\nC\n)\nPleasure\n— when the machine got something right, those same configurations froze in place. No more random reshuffling:\nP\n(\nΔ\nC\n∣\nPleasure\n)\n=\n0\nP(\\Delta C \\mid \\text{Pleasure}) = 0\nP\n(\nΔ\nC\n∣\nPleasure\n)\n=\n0\nSo: wrong answer, shake things up. Right answer, lock it in. It's almost embarrassingly simple — which is exactly why it's important.\nTuring also spotted the obvious problem immediately: pure random shuffling doesn't scale. If a machine has\nn\nunits, each with\nk\npossible states, the number of configurations to search through is\nk^n\n— a number that explodes into uselessness almost immediately, even for tiny machines.\nHis fix: bring in a\nteacher\n. Instead of letting the machine flail randomly forever, a teacher hands out Pleasure signals early to nudge it toward useful sub-behaviors, and\nthen\nPain prunes away the remaining mistakes. That's not just a clever patch — it's the seed of\nSupervised Fine-Tuning (SFT)\nand\nImitation Learning\n, ideas that wouldn't get their modern names for another fifty-plus years. Turing had quietly moved the burden of \"being smart\" off the programmer's shoulders and onto the environment's.\nHis paper sat mostly unread for decades. But look at the shape of it: a randomly wired network, shaped over time by reward and punishment, converging on useful behavior. Every RLHF pipeline running behind a modern chatbot is, structurally, still running Turing's 1948 loop.\nWiener gave us the\nwhy\n— close the gap. Turing gave us the\nwhat happens inside\n— freeze on success, scramble on failure. What nobody had shown yet was a machine that could do this outside of a chalkboard, with actual physical parts that changed themselves. That's where Marvin Minsky comes in.\nMinsky's SNARC: The First Machine That Rewired Itself (1951–1954)\nWhile Turing's ideas stayed on paper, Marvin Minsky and his Princeton colleague Dean Edmonds went to the workshop and actually built something.\nIn 1951, they built the\nSNARC — Stochastic Neural Analog Reinforcement Calculator\n— the first machine to physically implement Hebbian learning (remember Blog 1: neurons that fire together, wire together) combined with reinforcement, in real hardware. Minsky later wrote it up in his 1954 thesis.\nThe SNARC simulated a rat finding its way through a maze using\n40 artificial synapses\n. Each \"synapse\" was a vacuum tube paired with a\npotentiometer\n— picture a volume knob, a simple dial that changes how much resistance flows through a circuit. That dial's position\nwas\nthe connection's strength, standing in for what we'd now call a \"weight.\"\nHere's the learning loop, in plain terms:\nA signal representing the \"rat\" travels through the network, picking a path.\nIf that path leads to reward, the potentiometers (\"volume knobs\") along that path get turned to\nlower\nresistance — meaning that path becomes electrically easier to travel next time.\nIf the path leads nowhere, those knobs stay put or drift the other way.\nNotice what's happening here: this is\ncredit assignment\n, done with actual electricity. The machine had no rule anywhere that said \"this specific connection caused the reward.\" It used the reward signal traveling backward through whichever path was active to figure out which knobs to turn. That's structurally the same job that backpropagation does in a modern neural network — just with copper and vacuum tubes instead of calculus.\nThe SNARC couldn't scale — 40 synapses is barely a network by today's standards, and analog parts drift and degrade over time. But it proved something that had never been physically shown before:\na machine can change its own internal wiring in response to reward, with no one programming the change directly.\nThat single idea — connections that adjust themselves because of reward — is the founding premise of every neural network trained with RL today.\nSo now we've got a drive (Wiener), a mechanism (Turing), and proof that self-adjusting hardware works (Minsky). One year later, Claude Shannon showed what happens when you point that same idea at something a person can actually watch move.\nClaude Shannon's Theseus: Learning You Can See (1952)\nShannon's contribution was the most tangible of the whole decade. In 1952, he built\nTheseus\n— a copper mouse that could navigate a 5×5 maze, controlled by a cabinet of 75 telephone relays sitting underneath.\nHere's the trick: the mouse itself had no brain. The relays — think of a relay as a mechanical switch that can remember whether it's \"on\" or \"off\" —\nwere\nthe brain. Each of the 25 cells in the maze corresponded to a relay setup that remembered which directions had already failed from that spot. Hit a wall, and the relay for that direction-at-that-position flipped off, so the mouse tried something else next time. Find a working path, and those relay settings locked in for good.\nThe payoff: drop Theseus anywhere in a maze it had already solved, and it walked straight to the goal, no hesitation. Drop it somewhere new, and it explored from scratch — then remembered\nthat\ntoo.\nWhat Shannon had actually built was a physical\nlookup table\n: a direct map from state (position in the maze) to action (which way to go), stored as the mechanical position of 75 relays. This is the hardware great-grandparent of what's now called a Q-table.\nBut the genuinely clever part was the\n\"anti-neurotic\" circuit\n. Shannon noticed that a strategy based purely on \"eliminate what failed\" could trap the mouse in an infinite loop — try North, fail, try East, fail, loop back to North forever, repeat. His fix: a circuit that detected this looping behavior and injected a random direction change to break it.\nThis is, as far as anyone can tell, the first deliberate hardware solution to\nexploration vs. exploitation\n— the tension that sits at the center of nearly every RL algorithm ever written. In plain terms: should the mouse keep using the move it already knows works (\nexploit\n), or try something new in case there's a better option (\nexplore\n)? Shannon's answer was a random kick when stuck. Modern RL answers with names like epsilon-greedy (occasionally pick a random action on purpose) or entropy bonuses (reward the agent slightly for staying unpredictable). Same problem, seventy years of better tools.\nTheseus proved something important: \"learning\" could be reduced entirely to hardware state changes. No probability distributions, no gradients — just relays flipping. Intelligence as a lookup table.\nThe Bridge (1954–1957): From Wires to Equations\nBy the mid-1950s, the hardware approach was hitting a wall. Shannon's mouse could solve one specific maze. Minsky's SNARC topped out at 40 synapses. Turing's ideas mostly lived on paper. Every one of these machines was an impressive, custom-built solution to one specific problem — and none of them generalized.\nRichard Bellman, among others, got impatient with that. Building a maze-solving mouse was a great parlor trick, but it wasn't a\ntheory\n. What he wanted was a general rule — something that could handle any problem made of a long chain of decisions, no matter what the environment looked like underneath.\nThe question shifted from\n\"can we make this specific thing work?\"\nto\n\"can we prove the mathematically best way to act, in general?\"\nBellman's answer became the\nPrinciple of Optimality\nand the\nBellman Equation\n: the idea that the value of being in a state is just the immediate reward, plus the (slightly discounted) value of wherever you end up next. He took the mechanical \"vibes\" of the SNARC and Theseus and translated them into a single recursive formula — one equation that compresses an agent's entire future into a present-tense number.\nThat equation, and the computational nightmare it revealed (Bellman's own term for it: the\nCurse of Dimensionality\n), is where Blog 3 picks up. For now, the point is simpler: after a decade of wiring things together by hand, the field realized it needed math to go any further.\nThe wires were beautiful. But equations scale.\nThe Decade in One Frame\nZooming out, here's what this era actually built — not a summary, a thesis:\nWiener (1948)\ngave learning a\ndrive\n: minimize the gap on a feedback loop.\nTuring (1948)\ngave learning a\nmechanism\n: reward freezes, punishment randomizes.\nMinsky (1951/54)\ngave learning\nphysical weight\n: the first adjustable synapses that existed as hardware, not theory.\nShannon (1952)\ngave learning\nmemory\n: state-action mappings stored in the physical position of relays.\nBellman (1957)\ngave learning\nmath\n: a recursive formula that would eventually unify everything above it — that's Blog 3.\nIn under a decade, \"learning\" went from a biological observation about cats and pigeons to a wired, probabilistic, physically real process you could point to on a workbench. The machines were small, fragile, and each one could only do exactly one thing. But the ideas inside them were load-bearing — every one of them is still holding up the RL systems built today.",
  "metadata": {
    "title": "RL 2: The first physical and computational RL machines(1948–1954) - DEV Community",
    "description": "Quick recap, if you're just arriving: Blog 1 showed that every core idea in reinforcement learning... Tagged with rl, ai, machinelearning, deeplearning.",
    "keywords": "rl, ai, machinelearning, deeplearning, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/mitanshgor/rl-2-the-first-physical-and-computational-rl-machines1948-1954-1amh",
    "og:title": "RL 2: The first physical and computational RL machines(1948–1954)",
    "og:description": "Quick recap, if you're just arriving: Blog 1 showed that every core idea in reinforcement learning...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0f8ld8kgg76qgof1ltr.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "RL 2: The first physical and computational RL machines(1948–1954)",
    "twitter:description": "Quick recap, if you're just arriving: Blog 1 showed that every core idea in reinforcement learning...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv0f8ld8kgg76qgof1ltr.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbuzb0pe19qif6xzu7na.png",
      "bytes": 66596,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/001.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbuzb0pe19qif6xzu7na.png",
      "alt": "Norbert Wiener",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsiow833y4mu41qyc87l9.png",
      "bytes": 228658,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/002.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsiow833y4mu41qyc87l9.png",
      "alt": "thermostat vs organism comparison",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvq6yd134hkpydroyxd6.png",
      "bytes": 43360,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/003.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvq6yd134hkpydroyxd6.png",
      "alt": "Cybernetics Diagram",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbcg2qdg8dv83jnwnck8.png",
      "bytes": 281314,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/004.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbcg2qdg8dv83jnwnck8.png",
      "alt": "Alan Turing",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F01nodr2ttwo9rz0ys009.png",
      "bytes": 185110,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/005.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F01nodr2ttwo9rz0ys009.png",
      "alt": "search space explosion",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuydwodumc7cadtgqsmlh.png",
      "bytes": 265486,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/006.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuydwodumc7cadtgqsmlh.png",
      "alt": "mouse",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzpu0uxf58s9y1oodpsvk.png",
      "bytes": 274554,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/007.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzpu0uxf58s9y1oodpsvk.png",
      "alt": "Claude Shannon",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m57s6tvpgxnkl40yipq.png",
      "bytes": 116634,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/008.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m57s6tvpgxnkl40yipq.png",
      "alt": "Shannon Maze Environment",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvty8q58nbk0v391cspa7.png",
      "bytes": 214662,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/009.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvty8q58nbk0v391cspa7.png",
      "alt": "relay vs plain qtable",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9nvbe3da87tqi3yegh7f.png",
      "bytes": 154204,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/010.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9nvbe3da87tqi3yegh7f.png",
      "alt": "break loop",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frg4gtpm2i20cio1ns4rh.png",
      "bytes": 95650,
      "reused": true,
      "local_path": "attachments/3ab9032746e2/images/011.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frg4gtpm2i20cio1ns4rh.png",
      "alt": "hitting walls, then the ",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbuzb0pe19qif6xzu7na.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsiow833y4mu41qyc87l9.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxvq6yd134hkpydroyxd6.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbcg2qdg8dv83jnwnck8.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F01nodr2ttwo9rz0ys009.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuydwodumc7cadtgqsmlh.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzpu0uxf58s9y1oodpsvk.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m57s6tvpgxnkl40yipq.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvty8q58nbk0v391cspa7.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9nvbe3da87tqi3yegh7f.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frg4gtpm2i20cio1ns4rh.png",
      "label": "",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:48:47Z",
  "source_url": "https://dev.to/mitanshgor/rl-2-the-first-physical-and-computational-rl-machines1948-1954-1amh",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 14014,
  "expected_body_images": 11,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/3ab9032746e2/pages/source.html",
  "local_html": "attachments/3ab9032746e2/pages/article.html",
  "body_base_path": "attachments/3ab9032746e2/pages/",
  "body_markdown_path": "attachments/3ab9032746e2/pages/article.md"
}