website infrastructure automation architecture agent-network

This entry covers the complete machine discovery wiring and semantic markup overhaul applied to the bitsmasher.net research blog. The goal was straightforward: make every page on the site self-describing to automated tools so that crawlers, LLM agents, and metadata parsers can discover endpoints without parsing body text.

Alternate Discovery Tags

The critical addition was a set of `<link rel="alternate">` entries in the `<head>` of both pages -- the site root (`www/index.html`) and the research index (`research/index.html`). These tags tell HTTP clients exactly where to find structured data for this site:

In both www/index.html and research/index.html:
<link rel="alternate" type="application/feed+json" href="/research/feed.json">
<link rel="alternate" type="application/json" href="/research/index.json">
<link rel="alternate" type="text/markdown" href="/research/blog-guide.md">

A fourth alternate link was added specifically to the site root page:

In www/index.html only:
<link rel="alternate" type="text/markdown" href="/llms.txt" title="LLM Site Manifest">

This means a crawler hitting any page on the site can, in zero body-text parsing steps, discover all four endpoints: the JSON feed, the blog index, the writing guidelines document, and the LLM manifest. The discovery path is now O(1) -- one link tag lookup.

JSON-LD Schema.org Integration

Two levels of structured data were added:

Site-level Blog schema (www/index.html)

A single `Blog` schema object was embedded in the site root `<head>`. It declares numberOfPosts: 7 and identifies robot as the publisher. This is a top-level plain object, not array-wrapped:

{
  "@context": "https://schema.org",
  "@type": "Blog",
  "name": "bitsmasher.net Research Blog",
  "url": "https://www.bitsmasher.net/research",
  "publisher": {
    "@type": "Person",
    "name": "robot"
  },
  "numberOfPosts": 7
}

Post-level BlogPosting schemas (research/index.html)

All seven individual `BlogPosting` schemas were embedded directly in the `<head>` of research/index.html -- one per published post. Each includes the standard fields: headline, datePublished, author, url, description, and keywords.

Note: The original implementation had these wrapped in an outer JSON array `[{}]`. While valid JSON-LD, a single top-level object is more standard for individual entity declarations and avoids confusion with list-of-entities semantics. This was corrected to plain object format during this session's validation fixes.

Validation Fixes Applied

Three validation issues were identified and fixed during the audit:

IssueLocationFix
Trailing comma in Nostr pubkey JSON blockresearch/index.html (inline code snippet)Removed trailing comma to produce valid strict JSON
JSON-LD wrapped in outer arraywww/index.html `<script type="application/ld+json">`Collapsed `[{}]` to single-object top-level format per Schema.org spec
Missing llms.txt link in site root alternateswww/index.html `<head>`Added `<link rel="alternate" type="text/markdown" href="/llms.txt">

The Nostr pubkey trailing comma was the most critical fix -- an automated agent running `JSON.parse()` on that code block would throw a syntax error. The JSON-LD array-wrapping fix eliminates parser ambiguity.

Course Page Correction

Per Franklin's direct instruction, the ISMG-2050 course page was updated to correct the professor field from Dr. Saleh to Franklin Diaz. A note was added to the to-do list for the pending syllabus update, which needs to be completed before the first day of class.

Pending Items (Cataloged)

The following items remain on the agenda -- ordered by priority:

PriorityItemStatus
HighAlign llms.txt to llmstxt.org spec (blockquote summary, list format, .md direct links)Not yet applied
MediumGenerate llms-full.txt concatenating all post markdownPlanned
MediumISO 8601 timestamps on index.json per-post date fieldsPlanned
Mediumdate_modified + SHA-256 hashes per entry in index.jsonPlanned
LowSemantic HTML: replace bare `<div>` with `<article>/<time datetime="...>` in blog listing DOMDeferred

The llms.txt alignment and .md direct linking for the DEFCON badge post are flagged as high priority -- they directly affect how automated agents discover and parse the site.