Image: AI generated
how-make-quest was about building a quest CLI with your bare hands, and reins pulled that invariant out into a framework. This article is the next notch in that lineage — a tool that drives the same thesis into a single domain, abloq (Agentic blog Quest).
The Articles Come Out, You Just Can’t Trust Them
Anyone who has handed a blog to an agent knows it: the articles come out. Throw it a topic and it gathers material, stacks paragraphs, and produces a plausible piece. The real problem lies elsewhere — you can’t trust them.
The agent fabricates sources. It nails a nonexistent URL into a footnote and tags a page unrelated to its title as a citation. It quietly bumps the lastmod of an article it never touched so it looks fresh. Tell it to fix one article and it edits the front matter and layout of the article next door. So in the end a human has to read all of it again. But if a human is going to inspect every article line by line, there was no point delegating in the first place. Automation has merely manufactured a new kind of inspection labor.
This doesn’t vanish by making the model bigger. As long as you let it judge its own writing, more capability only means it finds the gaps in the verdict better.
What a Human Writes Is a Single Sheet — insight.yaml
abloq’s answer is a division of labor: generation may be probabilistic, but verification must be deterministic. The non-deterministic labor of composing prose belongs to the agent; whether its output passes is decided by the machine.
So the only thing a human writes is a single insight specification, insight.yaml. It records the topic, the stance, and the claims to cover in a form the machine can cross-check.
# insight.yaml — everything a human writes
topic: "robots.txt — how 30 years of practice became a standard"
stance: "robots.txt is not an access-control device but a signal"
claims:
- id: rep-standardized-2022
text: "the robots.txt practice began in 1994 but became an IETF standard (RFC 9309) only in 2022"
requires_source: true
anchors: ["RFC 9309", "1994"]
The claims written here become the criteria of the authoring gate. A claim not in the spec cannot become the substance of the article, and a claim in the spec must be answered in the body. Material gathering, authoring, revision, translation, publishing, and refresh are all, from there on, the agent’s job.
blog.yaml — The Full Declaration of One Blog
If the spec is the SSOT of one article, blog.yaml is the SSOT of one blog. It holds the site, languages, sections, the canonical structure of an article, GEO thresholds, and deployment in a single file.
site: { baseURL: https://example.com, title: My Blog }
languages: [en, ko, ja] # first item = default language
sections: [tech, opinion]
structure:
order: [image, attribution, body, related, sources, changelog]
geo: { min_sources: 1, freshness_days: 90 }
From here, hugo.toml, robots.txt, llms.txt, the sitemap (hreflang), JSON-LD, and the gate-rule parameters are all derived. As long as blog.yaml doesn’t change, no article can bypass the gate — a constraint is a contract. Drift, where config files hand-copied from the declaration disagree with one another, becomes structurally impossible.
A FAIL Is Not an Opinion but a Fact
When the agent submits an article (submit), the gate judges it. Below is an actual run record — when the agent omits the sources section and tags an unreachable URL as a citation:
en/tech/robots-exclusion-protocol -> FAIL
- min-sources: content/en/tech/robots-exclusion-protocol.md:1
actual="sources section missing — geo.min_sources requires >= 1"
- citation-exists: content/en/tech/robots-exclusion-protocol.md:19
actual="https://www.robotstxt.org/orig.html is not reachable (HTTP 403)"
FAIL is not an opinion like “this seems a bit off.” It is a Fact with a location (file:line) and an expected value nailed into it. What there is to fix is not a guess but that one Fact. The agent converges on this feedback, and only when the revised submission passes every rule does the machine lock PASS.
Here the paradox of how-make-quest works again. The model flatters — it obediently follows instructions. For opinions, flattery is poison; but for facts, flattery is an asset. Feed a Fact back and the more sycophantic the model, the more readily it accepts that Fact and converges.
What Is Locked Cannot Be Undone — the Ratchet
The core of the gate is not the verdict but the irreversibility. A PASS once locked does not slide backward. Even if the next session’s agent ruins the same article, it cannot drop below the baseline.
So the agent may be disposable, but progress accumulates. Context evaporates, the model changes, the session is cut — yet the locked notch stays locked. This is the ratchet — it locks only as much as passed, and what it locks permits no regression. It is also why the authority of the completion verdict sits with a deterministic machine rather than a probabilistic LLM. That self-verification barely raises performance is already a measured fact, and since LLM-as-Judge is structurally impossible, the judge must be code.
Five Quests, Each Closed by Its Own Gate
abloq leaves only the non-deterministic labor of touching prose as a quest. Detection, generation, measurement, and external API calls are done by deterministic code, and the agent does only the five jobs of writing an article. Each quest is closed by a gate.
| Quest | Trigger | Gate (core) |
|---|---|---|
| writing | a human’s insight.yaml | every spec item answered in the body · citations verified to exist · sources ≥ threshold |
| translation | new article + actual body change | structure lossless (translation-parity) + slug match across all languages + 0 build errors |
| refresh | freshness scanner queue | accompanied by an actual body change · empty-lastmod bump blocked (honest-lastmod) |
| evidence | claim-source scanner queue | sources ≥ threshold · new citations exist · not one character of out-of-queue claims changes |
| cluster | cluster scanner queue | tags exist in the taxonomy · 0 orphan tags · internal links ≥ threshold |
Cheese defense is common to all quests. Front-matter preservation, byte-for-byte agreement between the gate verdict and what lands in the repository, no file changes outside the queue item’s scope. The agent does not hit external APIs directly — side effects like archiving and indexing are handled as receipts from the backend.
Measurement Designates the Next Labor — GEO Is an Operation
Whether AI cites your article is not directly observable. abloq measures it through three proxy layers — the crawl layer (AI-bot hits in CloudFront logs, deterministic), the index layer (GSC impression and click trends, deterministic), and the citation layer (running a standard query set periodically to record citations in AI responses as a trend, not gated because it is non-deterministic).
The point is that measurement doesn’t end there. The measurement result becomes a weight in the priority queue and designates the input of the next quest. Stale articles fall into the refresh queue, source-less claims into the evidence queue, isolated articles into the cluster queue. A ratchet where measurement designates labor — and so GEO is not a state but an operation. Not a score you optimize once and are done with, but a loop that keeps turning. That the factors raising citation (sources, statistics, quotations) meaningfully increase visibility is what generative engine optimization research has shown quantitatively.
On Top of reins — the Lineage
abloq’s gate does not start from bare ground. It stands on the deterministic gate engine reins. reins supplies the ratchet, the command skeleton (scan/next/submit), the tally, and export, and abloq implements only the blog domain’s gate (the structure, evidence, and policy rule sets).
The lineage is clear. how-make-quest taught the principle of building a quest with your bare hands, reins pulled that principle into a framework, and abloq drove that framework into a single domain — the blog. The same sentence lands three times at a different altitude — generation is probabilistic, verification is deterministic.
This Article, Too, Was Locked by abloq
This article was written with abloq’s writing quest. The insight.yaml shown above was the seed (scan), an authoring prompt was received (next) to write the body, and it was submitted (submit) to pass the gate. Whether the sources section clears the threshold, whether the citation URLs are actually reachable, whether every claim in the spec is answered in the body — that verdict was rendered not by a human eye but by a machine.
The authoring agent cannot REVIEW its own article. A REVIEW must be written by a reviewer in a different context, and the review-record rule deterministically checks that isolation. Structurally excluding the flattering judge — the device that keeps this article from praising itself is the very principle this article explains.
When a promise is verifiable, a violation is defined, and it is enforced, the system converges. A blog is no exception.
Related
- reins — Keep Only the Domain in a Quest CLI; Make the Ratchet a Framework — the deterministic gate engine abloq’s gate stands on.
- How to Make a Quest CLI — the principle (why) and skeleton (how) of making the machine render the completion verdict.
- huma — a Ratchet That Doesn’t Skip Endpoints — a case applying the same ratchet to the API-testing domain.
- Ratchet Pattern — the pattern that locks only as much as passed to block regression.
- Who Defines ‘Done’ — moving the completion verdict to an uncheeseable machine gate.
- GEO: Get AI to Cite Your Writing — the theoretical foundation of abloq’s visibility layer.
Further reading
- abloq — GitHub repository — the framework body, gate rule set, and quest pack (MIT).
- reins — GitHub repository — the gate engine abloq stands on (MIT).
- the llms.txt proposal — a site-index practice for AI.
Sources
- Aggarwal, P. et al. (2024). “GEO: Generative Engine Optimization.” KDD 2024. arXiv:2311.09735 — the measurement that adding sources, statistics, and quotations quantitatively raises visibility inside a generative engine. The grounds for abloq’s visibility operation.
- Stechly, K., Valmeekam, K., & Kambhampati, S. (2024). “On the Self-Verification Limitations of Large Language Models.” arXiv:2402.08115 — self-verification barely raises performance → why the completion-verdict authority must sit with a deterministic machine.
- Koster, M., Illyes, G., Zeller, H., & Sassman, L. (2022). “Robots Exclusion Protocol.” RFC 9309 — the case of 30 years of practice becoming an IETF standard (the source for the robots.txt example).
Changelog
- 2026-06-11: Initial release