{"id":34072,"date":"2026-01-05T16:54:26","date_gmt":"2026-01-05T16:54:26","guid":{"rendered":"http:\/\/localhost\/?p=34072"},"modified":"2026-01-05T16:54:26","modified_gmt":"2026-01-05T16:54:26","slug":"gosum-is-not-a-lockfile","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=34072","title":{"rendered":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-01-05T22:05:14&#8243;,&#8221;description&#8221;:&#8221;I need everyone to stop looking at `go.sum`, _especially_ to analyze dependency graphs. It is not a \u201clockfile,\u201d and it has zero semantic effects on version resolution. There is truly no use case for ever parsing it.\\n\\n`go.sum` is only a local cache for the Go Checksum Database. It\u2019s a map of module versions to their cryptographic hashes. Those versions may or may not be in use; it doesn\u2019t matter to package resolution.\\n\\n`go.sum` was not even enabled by default in the original modules design, precisely because it has no observable effect on builds!1 Its (important) purpose is exclusively tightening the security story: the Checksum Database ensures the whole ecosystem shares the same contents for a given module version, regardless of how it is downloaded, and `go.sum` makes that guarantee local and self-contained.\\n\\nInstead, just look at `go.mod`. It lists the precise version at which all dependencies are built. Since Go 1.17 (released August 2021), it includes all transitive dependencies needed to build the main module and its tests.2\\n\\nYou can either parse `go.mod` with golang.org\/x\/mod\/modfile, run `go mod edit -json` to get its JSON representation,3 or parse it according to its specification.\\n\\nThis is the end of the Public Service Announcement. Read on for some `go.mod` nerdery.\\n\\n## Manifests and lockfiles\\n\\nThe enduring confusion around `go.mod` and `go.sum` is due to the fact that most other languages also have two package-related files, but theirs _both_ matter to version resolution. These two files are usually called manifest and lockfile.\\n\\nThe manifest (e.g. `pyproject.toml`, `package.json`, `Cargo.toml`) usually lists _some_ dependencies along with potentially complex rules for which versions are supported. These rules usually apply transitively to dependents, making version resolution extremely hard and\/or slow in the general case, and sometimes unsolvable. The manifest is not always guaranteed to list all direct dependencies, and no automated mechanism ensures your code actually works with e.g. the minimum allowed manifest version of its dependencies.\\n\\nThe lockfile (e.g. `uv.lock`, `package-lock.json`, `Cargo.lock`) is a relatively recent innovation in some ecosystems, and it lists the actual versions used in the most recent build. It is not really human-readable, and usually doesn\u2019t apply recursively to dependents, allowing the rapid spread of supply-chain attacks.\\n\\nI honestly find the manifest version ranges essentially useless, and get endlessly confused trying to remember which commands modify the lockfile (and when\/why) and which ones respect it.\\n\\nIn Go, `go.mod` serves as both manifest and lockfile, and more: it lists all dependencies, direct and transitive, and their exact version to be used when the module is the main module. Semantic versioning is assumed, and those versions are also the minimum versions applied to dependents\u2019 module graphs. Different major versions of the same module are considered essentially separate modules.\\n\\nNotice how there is no way to accidentally use a feature introduced in a version that your dependents won\u2019t have. Also, when adding a dependency, you don\u2019t automatically get the latest\u2014potentially untested\/compromised\u2014version of all _its_ dependencies. Finally, there can\u2019t be diamond dependency conflicts.\\n\\nAll that with a single, human-readable file: `go.mod`.\\n\\nAll `go` commands take a `-mod` flag. If set to `mod`, missing dependencies can be added to `go.mod` automatically if necessary, and partial manual changes are reconciled. If set to `readonly`, those are errors. `go mod tidy` and (effectively) `go get` default to `mod`; all other commands default to `readonly`.\\n\\nGo modules truly don\u2019t get enough credit for how much simpler they are compared to the alternatives. In other ecosystems, package resolution time going down below 1s is celebrated (and is indeed an impressive technical achievement given the design\u2019s requirements!). In Go, no one ever noticed package resolution happening, so there is nothing to celebrate.\\n\\nFor more ecosystem feature appreciation posts, follow me on Bluesky at @filippo.abyssdomain.expert or on Mastodon at @filippo@abyssdomain.expert.\\n\\n## The picture\\n\\nI had a great time at 39c3 during the holidays. The Chaos Communication Congress is a magical place with a very strict photo policy, so it&#8217;s pretty hard to convey its atmosphere. This is the best I could do without recognizable humans in the frame. _In Fairy Dust we trust!_\\n\\n![The \\&#8221;Fairy Dust\\&#8221; rocket installation at the Chaos Communication Congress \\\\(39C3\\\\), showing a large black rocket sculpture with disco \\&#8221;rings\\&#8221; behind its tip emitting dramatic light beams in all directions. The main hall of the convention center surrounds it with banners including \\&#8221;CHAOS\\&#8221;, \\&#8221;ALL CREATURES WELCOME\\&#8221;, \\&#8221;OpenWrt\\&#8221;, and \\&#8221;TRANS RIGHTS ARE HUMAN RIGHTS\\&#8221;.](https:\/\/assets.buttondown.email\/images\/9dee32df-d645-4828-a59b-63c73524e3af.jpg)\\n\\nMy work is made possible by Geomys, an organization of professional Go maintainers, which is funded by Smallstep, Ava Labs, Teleport, Tailscale, and Sentry. Through our retainer contracts, they ensure the sustainability and reliability of our open source maintenance work and get a direct line to my expertise and that of the other Geomys maintainers. (Learn more in the Geomys announcement.) Here are a few words from some of them!\\n\\nTeleport \u2014 For the past five years, attacks and compromises have been shifting from traditional malware and security breaches to identifying and compromising valid user accounts and credentials with social engineering, credential theft, or phishing. Teleport Identity is designed to eliminate weak access patterns through access monitoring, minimize attack surface with access requests, and purge unused permissions via mandatory access reviews.\\n\\nAva Labs \u2014 We at Ava Labs, maintainer of AvalancheGo (the most widely used client for interacting with the Avalanche Network), believe the sustainable maintenance and development of open source cryptographic protocols is critical to the broad adoption of blockchain technology. We are proud to support this necessary and impactful work through our ongoing sponsorship of Filippo and his team.\\n\\n* * *\\n\\n  1. I still think it\u2019s important and it was the first thing I remember advocating for when I joined the Go team, because it makes the module cryptographically self-contained, and because the Go Checksum Database transparency story is not great in ephemeral environments like CI. These are security effects, though, not semantic ones. \u21a9\\n\\n  2. These are the only dependencies you care about, even for security. If the main module imports `example.com\/mod1\/pkg1` and a separate `example.com\/mod1\/pkg2` imports `example.com\/mod2`, there is no way for `example.com\/mod2` to affect the build or run code on the developer\u2019s machine, so you don\u2019t need to consider it a dependency. This is actually very powerful, allowing libraries to segregate dependencies (e.g. the AWS SDK) in optional packages, reducing the transitive trust tree of dependents that don\u2019t use that feature. \u21a9\u21a9\\n\\n  3. Why not `go list -m all`, you ask? Because that prints the whole module graph, which includes modules that don\u2019t contribute to the build2 and are not included in `go.mod`. A closer approximation would be `go list -f &#8216;{{.Module}}&#8217; all`, but this command applies the local build constraints, like GOOS\/GOARCH. There is an open proposal for a flag to do `go.mod`-like resolution in `go list`. \u21a9&#8221;,&#8221;published&#8221;:&#8221;2026-01-05T20:06:30&#8243;,&#8221;modified&#8221;:&#8221;2026-01-05T20:06:30&#8243;,&#8221;type&#8221;:&#8221;filippoio&#8221;,&#8221;title&#8221;:&#8221;go.sum Is Not a Lockfile&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F&#8221;,&#8221;bulletinFamily&#8221;:&#8221;blog&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;&#8221;,&#8221;sourceHref&#8221;:&#8221;&#8221;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/words.filippo.io\/gosum\/&#8221;,&#8221;category_name&#8221;:&#8221;News&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-01-05T22:05:14&#8243;,&#8221;description&#8221;:&#8221;I need everyone to stop looking at `go.sum`, _especially_ to analyze dependency graphs. It is not a \u201clockfile,\u201d and it has zero semantic effects on&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,12,162,13,33,7,11,5],"class_list":["post-34072","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-exploit","tag-filippoio","tag-news","tag-none","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=34072\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-01-05T22:05:14&#8243;,&#8221;description&#8221;:&#8221;I need everyone to stop looking at `go.sum`, _especially_ to analyze dependency graphs. It is not a \u201clockfile,\u201d and it has zero semantic effects on...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=34072\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-05T16:54:26+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F\",\"datePublished\":\"2026-01-05T16:54:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072\"},\"wordCount\":1342,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"filippoio\",\"news\",\"NONE\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=34072#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072\",\"name\":\"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-01-05T16:54:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=34072\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=34072#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=34072","og_locale":"en_US","og_type":"article","og_title":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-01-05T22:05:14&#8243;,&#8221;description&#8221;:&#8221;I need everyone to stop looking at `go.sum`, _especially_ to analyze dependency graphs. It is not a \u201clockfile,\u201d and it has zero semantic effects on...","og_url":"https:\/\/zero.redgem.net\/?p=34072","og_site_name":"zero redgem","article_published_time":"2026-01-05T16:54:26+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=34072#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=34072"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F","datePublished":"2026-01-05T16:54:26+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=34072"},"wordCount":1342,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","filippoio","news","NONE","Security","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=34072#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=34072","url":"https:\/\/zero.redgem.net\/?p=34072","name":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-01-05T16:54:26+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=34072#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=34072"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=34072#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"go.sum Is Not a Lockfile_FILIPPOIO:2184996B45FE9BE864E32BEC8C2ADC1F"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/34072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34072"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/34072\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=34072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=34072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}