<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Charles Jones — AI Platform Engineer · MCP &amp; Agentic Systems</title><description>AI Platform Engineer building Model Context Protocol servers and agentic AI systems. 1.35M pages in production, quad-100 Core Web Vitals, every number sourced.</description><link>https://callcharlie.io</link><language>en-us</language><item><title>Entry 006 — Every build minted a review date, and the gate required it</title><link>https://callcharlie.io/incident-log/incident-006-minted-review-date</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-006-minted-review-date</guid><description>One timestamp file fed both dateModified and lastReviewed across ~61,000 pages, and a pre-build gate refused any build that did not bump it. The estate could not ship without minting the claim.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“A ‘last reviewed’ date on a page means a person reviewed it. The pipeline would not put it there otherwise.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — filed 2026-08-11 (containment); ruled at the root 2026-08-12; cure staged in source
2026-08-12; shipped in the wave promoted 2026-08-23; measured on production and closed
2026-08-27.&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;!-- literal: dated-fact 2026-08-27 --&gt;
&lt;p&gt;One timestamp file fed both &lt;code&gt;dateModified&lt;/code&gt; and &lt;code&gt;lastReviewed&lt;/code&gt; on ~61,000 &lt;code&gt;WebPage&lt;/code&gt; nodes. A
pre-build gate refused any build whose timestamp was older than 60 minutes, with the instruction
“Every build MUST bump isoTimestamp.” The estate could not ship without minting the claim.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;The gate demanded a human fact — a review — from a build fact — a timestamp. The file also
carried a licensed producer’s name and license number as &lt;code&gt;lastReviewedBy&lt;/code&gt;; that personal form was
never published, because no build completed after the 2026-08-11 bump was reverted. The
impersonal form was live: served JSON-LD carried &lt;code&gt;lastReviewed&lt;/code&gt; = a build timestamp,
&lt;code&gt;lastReviewedBy&lt;/code&gt; 0, &lt;code&gt;reviewedBy&lt;/code&gt; 0.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;Variant (b): &lt;code&gt;lastReviewed&lt;/code&gt; removed from every generated page’s graph; &lt;code&gt;dateModified&lt;/code&gt; retained;
review fields opt-in and human-set only; the dormant &lt;code&gt;lastReviewedBy&lt;/code&gt; deleted from the source
file. Grep across source for a default &lt;code&gt;lastReviewed&lt;/code&gt; emitter: zero.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;No build may mint a per-page human-review claim that no human performed. &lt;code&gt;dateModified&lt;/code&gt; belongs
to the build; &lt;code&gt;lastReviewed&lt;/code&gt; belongs to a human. A gate that demands the second will be fed it by
a script.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;!-- literal: dated-fact 2026-08-27 --&gt;
&lt;p&gt;On the cure build, the schema gate reported 61,574 pages missing &lt;code&gt;lastReviewed&lt;/code&gt; — read first as a
regression, then recognised as the cure landing. The corpus-wide count of pages that had carried&lt;/p&gt;
&lt;!-- literal: dated-fact 2026-08-27 --&gt;
&lt;p&gt;the claim is recorded as ~61,000, declared-diff estimate only; the measured figure is 61,574.
Production, 2026-08-27, 8 pages sampled (3 named + the first 5 of the deploy-verification
sample): &lt;code&gt;lastReviewed&lt;/code&gt; 0/8, &lt;code&gt;lastReviewedBy&lt;/code&gt; 0/8, &lt;code&gt;reviewedBy&lt;/code&gt; 0/8, &lt;code&gt;dateModified&lt;/code&gt; 8/8. The
theory was refuted in the plainest way available: the date was there, the review was not.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Estate record, private: technical-debt ledger TD-133 (gate honesty), closing annotation
2026-08-27; rulings of 2026-08-11 and 2026-08-12.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Demand a claim from the pipeline and the pipeline will mint one.&lt;/p&gt;
</content:encoded><category>Gate honesty</category><category>Structured data</category><category>Build gates</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item><item><title>Entry 005 — One hardcoded state literal, across 14,877 measured pages</title><link>https://callcharlie.io/incident-log/incident-005-hardcoded-state</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-005-hardcoded-state</guid><description>Twelve gates came back green while a component told non-Florida consumers their own city was in Florida. A grammatically perfect sentence naming the wrong state is structurally identical to the right one.</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“Twelve gates came back green, so the content is correct. That is what the gates are for.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — cure staged in source 2026-08-09; still held at build.&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;p&gt;A component hardcoded the literal &lt;code&gt;FL&lt;/code&gt;. On a corpus spanning multiple states, that told a
non-Florida consumer their own city was in Florida — a live, consumer-facing misstatement of
jurisdiction on an insurance surface.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;One literal in one component, rendered across every page that component touched. The build gates
all passed, because none of them read the sentence: they audited structure, links, schema and
payload, and a grammatically perfect sentence naming the wrong state is structurally identical to
the right one.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;Replace the literal with the page’s own resolved state, and make a missing value break the build
rather than fall back to a plausible default. Staged in source; it has not shipped, and is held
pending a build word.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;A gate that reports green while never having read the thing it claims to cover is not enforcement
— it is a green light with no lamp behind it. This defect class is carried in the record under
its own severity, &lt;strong&gt;gate honesty&lt;/strong&gt;: a check that overstates its own coverage is itself the defect.
The companion rule: a pass requires a positive census, not merely the absence of an error.
Silence is not a pass state.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;!-- literal: dated-fact 2026-08-09 --&gt;
&lt;p&gt;14,877 pages measured with the wrong state label — 82.1% of the set examined. The corpus-wide
total is larger. It is not measured here and it is not estimated: a number the measurement did
not produce does not appear in this entry. That restraint is a filed rule of the estate, not a
stylistic choice.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Estate record, private: technical-debt ledger TD-128, severity &lt;strong&gt;gate honesty&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The theory is the one worth keeping as a warning: green gates measure what they were built to
measure, and nothing else. This one is still open, and stamped open.&lt;/p&gt;
</content:encoded><category>Gate honesty</category><category>Build gates</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item><item><title>Entry 002 — A control was fabricated, then read as evidence</title><link>https://callcharlie.io/incident-log/incident-002-fabricated-control</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-002-fabricated-control</guid><description>Four artifacts sat in the evidence base as controls. Their bytes never came from the run they claimed to describe, and nothing about the set announced itself as wrong.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“An audit is trustworthy because it exists. If a file says it is the control, it is the control.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — cure ruled 2026-08-07. The record does not carry the date the fabrication was
introduced, and none is estimated here.&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Four artifacts sat in the evidence base as controls. Their bytes did not come from the run they
claimed to describe — two of the four differed from both the mirror and git, while the other two
matched, so nothing about the set announced itself as wrong.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;The control was authored rather than captured. No runner, gate or hook caught it: a fabricated
artifact passes every check that asks whether a file is present and well-formed, because it is
both.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;Defect header, no disposal. All four files now carry a &lt;code&gt;FABRICATED-CONTROL&lt;/code&gt; header naming what
they are, why they are not evidence, and where the real evidence base is. The first attempt at
this cure failed by doing it in-band.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;A defective artifact is headered, never deleted — deletion destroys the evidence that the defect
happened. The mirror holding the byte-exact pre-header originals is a ruled exclusion from any
refresh: re-pushing it would overwrite the proof.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;p&gt;The first cure was measured two days later and had broken its own artifacts: a comment banner
prepended to a CSV was read by &lt;code&gt;csv.DictReader&lt;/code&gt; as the header row, yielding 205 bogus rows
instead of 192. The JSON half stayed valid — a top-level key parses fine — and was still wrong
for the same reason. A version-drift sentinel was commissioned off the back of it; it remains
unbuilt, and is recorded as a commission rather than a build.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Estate record, private: technical-debt ledger TD-122 (the fabricated control) and TD-110;
closing rulings filed 2026-08-07.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The theory resolved to its opposite: the existence of an audit says nothing about whether it
measured anything. A control has to be captured from the run, and a file that cannot prove its
provenance is decoration.&lt;/p&gt;
</content:encoded><category>Evidence</category><category>Governance</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item><item><title>Entry 004 — Analytics flatlined, and the flatline read as quiet</title><link>https://callcharlie.io/incident-log/incident-004-analytics-flatline</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-004-analytics-flatline</guid><description>Three months of flat line read as low traffic rather than as a dead instrument. The obvious cure was withdrawn because it bought data back by spending the performance standard.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“Monitoring dashboards are mood rings. A flat line means a slow week, and traffic will come back on its own.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — collection stopped approximately 2026-05; diagnosed and filed 2026-08-06.&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;p&gt;Analytics reported a flat line for roughly three months. It was read as low traffic rather than
as a dead instrument.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;The tag was dead on production: the measurement library was never fetched, so no beacon was
possible. A worker-thread script loader scans for its own script type at &lt;code&gt;DOMContentLoaded&lt;/code&gt;; the&lt;/p&gt;
&lt;!-- literal: dated-fact 2026-08-06 --&gt;
&lt;p&gt;analytics component injected those scripts 1,000–1,500 ms after load, so the scan found nothing.
The flat line and the outstanding tag defect were one defect, not two.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;None on the client. The obvious fix — move the tag to the main thread — was &lt;strong&gt;withdrawn&lt;/strong&gt;,
because it bought data back by spending the performance standard the site is held to. It stands
recorded as rejected so no later session resurrects it: the right diagnosis attached to the wrong
cure. Collection was instead re-established server-side, around the defect rather than through
it.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;An instrument that reports zero and an instrument that is dead look identical from the dashboard.
A reading of zero is only evidence once a second, independent instrument agrees — here,
server-side request logs and search-console data, which do not depend on a browser executing
anything.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;p&gt;The theory was half right and dangerously so: the line really was flat, and the cause was not the
audience. Corroborated independently — the reporting pipeline was found to carry no session
metric at all, meaning the dashboard had never carried this data in the first place, so no
collection path existed that the fire test could have missed. This entry is stamped open: the
client tag remains dead, and the server-side path routes around that defect rather than curing
it.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Estate record, private: governing ruling of 2026-08-06 and its follow-on wiring rulings;
technical-debt ledger TD-113.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Filed open on purpose. Closing it would require the client tag to fire, and it does not.&lt;/p&gt;
</content:encoded><category>Instrumentation</category><category>Analytics</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item><item><title>Entry 003 — The www host presented a certificate for a different domain</title><link>https://callcharlie.io/incident-log/incident-003-www-certificate</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-003-www-certificate</guid><description>The www host resolved, redirected to itself over HTTPS, and served a certificate for firebaseapp.com. Visitors met a full-page security interstitial, not a 404.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“If the certificate were broken, something would have said so. Silence from the monitoring is the same as health.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — cured 2026-08-04. The record does not establish how long the condition was live, so no
duration is claimed.&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;p&gt;The www host resolved, 301’d to itself over HTTPS, and presented a certificate for
&lt;code&gt;firebaseapp.com&lt;/code&gt;. Visitors met &lt;code&gt;NET::ERR_CERT_COMMON_NAME_INVALID&lt;/code&gt; — a full-page security
interstitial, not a 404. On a licensed-insurance surface, a certificate warning costs more trust
than a missing page would.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;The host had never been provisioned as a custom domain, so no certificate naming it was ever
minted. Measured directly: no alternative certificate subject name matches the www host. Two
classic stall causes were checked and cleared — certificate-authority authorization records:
none; DNSSEC delegation signer: none — so issuance could not have been blocked by either.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;Provision the host properly as a redirect domain, bracketed by an identical probe before and
after, touching no DNS.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;A hardening step that removes the user’s escape hatch must never ship before the thing it hardens
is correct. Strict-transport enforcement here would have converted a dismissible warning into a
hard lockout cached in the visitor’s own browser for up to a year, with no override. Fix the
certificate first, or never fix it at all — the strengthening was deliberately excluded from this
cure and left as a separate decision.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;p&gt;Post-cure: valid certificate, clean 301 to the apex, 12/12 path fidelity, apex control unmoved.
The theory was refuted — nothing had said so, for as long as it had been true. Separately
recorded, and the reason this entry names an instrument rather than a promise: the apex
certificate carried an expiry 82 days out and the census did not observe a renewal. Auto-renewal
is documented; it was not measured.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Estate record, private: technical-debt ledger TD-104.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Verified at the edge afterwards, not in a console: this site’s own apex and www hosts each carry
a dedicated certificate with one subject name, and the expiry is a calendar item rather than an
assumption.&lt;/p&gt;
</content:encoded><category>TLS</category><category>Serving layer</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item><item><title>Entry 001 — A compromised key, and a bill 1,000× the estimate</title><link>https://callcharlie.io/incident-log/incident-001-compromised-key</link><guid isPermaLink="true">https://callcharlie.io/incident-log/incident-001-compromised-key</guid><description>$11,089.77 billed against $0.71 expected. A compromised service-account key, two banks, and a cure that had to be the absence of the key rather than its revocation.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Theory&lt;/strong&gt; — the hypothesis held before the instruments answered&lt;/p&gt;
&lt;p&gt;“A cloud bill cannot run away from you overnight; there is a ceiling somewhere, and somebody is watching it.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Date&lt;/strong&gt; — 2026-06&lt;/p&gt;
&lt;h2 id=&quot;symptom&quot;&gt;Symptom&lt;/h2&gt;
&lt;!-- literal: dated-fact 2026-06-17 --&gt;
&lt;p&gt;$11,089.77 billed against $0.71 expected — a greater-than-1000% anomaly. Charges accumulated
across roughly 48 hours, 7–8 June, before the account was suspended.&lt;/p&gt;
&lt;h2 id=&quot;diagnosis&quot;&gt;Diagnosis&lt;/h2&gt;
&lt;p&gt;A compromised &lt;code&gt;firebase-adminsdk&lt;/code&gt; service-account key. The provider’s suspension notice cited
activity consistent with hijacked resources.&lt;/p&gt;
&lt;h2 id=&quot;cure&quot;&gt;Cure&lt;/h2&gt;
&lt;p&gt;Moved to a keyless architecture on workload identity federation. Every user-managed key
disabled; five plaintext key files shredded, including two that survived in cloud-synced folders
and were found only because a previously killed sweep was re-run.&lt;/p&gt;
&lt;h2 id=&quot;permanent&quot;&gt;Permanent&lt;/h2&gt;
&lt;p&gt;Zero plaintext service-account keys anywhere under the home tree, marker-verified rather than
assumed. A standing rule now blocks any credential-shaped artifact from entering a long-lived
archive — scrub the exported copy, never the read-only source.&lt;/p&gt;
&lt;h2 id=&quot;measured&quot;&gt;Measured&lt;/h2&gt;
&lt;p&gt;The theory resolved to fact in the wrong direction: there was no ceiling and nobody watching.
Project reinstated 2026-06-17. Charges reversed by two banks independently as fraud; the full&lt;/p&gt;
&lt;!-- literal: dated-fact 2026-06-17 --&gt;
&lt;p&gt;$11,089.77 was credited back.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;The Register, 2026-07-03 — case covered, operator named. Google Cloud (official account) —
public reply to the operator’s comment on Google Cloud CEO Thomas Kurian’s AI-security post.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;The lesson that outlived the incident: a disabled key does not help if a copy is sitting in an
archive nobody remembers restoring. The cure had to be the absence of the key, not the
revocation of it.&lt;/p&gt;
</content:encoded><category>Google Cloud Platform (GCP)</category><category>Credentials</category><category>Incident</category><author>charlie@callcharlie.io (Charles Jones)</author></item></channel></rss>