# Changelog

All changes to the Operon website are logged here, each with its approval
status; an entry is approved only when it names an approver and date.
Policy: /content/pages/update-policy.md — AI proposes, the human owner
approves, every shipped change is logged and reversible.

Format: date · version · what changed · approved by.

The `Deployment:` line in a release section records the deployment HISTORY of that
release's built artifact (status · date · build commit · Cloudflare deployment id).
It is a history/truth interlock only: the production deploy tool reads the top
release's marker and fails closed on false, malformed, ambiguous, or not-live
history. It is NOT authorization of the current working tree and never was — a
production deploy is bound to the owner's exact source commit and full
deployment-payload hash, not to this line. So `Deployment: live` here means "this
release's recorded build was deployed", never "any later bytes are approved to ship".

## [0.9.0] — 2026-07-23 — offer-ladder reconciliation on the site (PROPOSED)

Proposed by: Claude (SITE lane, mobilization sprint), from OPE-398 §4/§6 + OPE-394 +
OPE-389 + the R5 free-rung ruling + the 2026-07-23 UX panel.
Approved by: — (pending the owner).
Deployment: live — 2026-07-23 · Cloudflare Pages (tryoperon.io) · mobilization build a32565db93768f4377a5bf6dcd94600241013fcf · deployment b1d2ff5c-2a96-4336-be58-e219cff8a360

- $249 Operating Risk Brief: call-first order block with booking + email-order routes,
  full credit toward discovery, refund link; self-serve buy implication removed; price
  unchanged; Stripe still inert.
- Published the free-vs-paid boundary section and two labeled SYNTHETIC samples
  (/proof/saltbox/, /proof/risk-brief-sample/); the three "coming soon" proof cards are
  gone.
- /terms/ page added with the exact OPE-389 refunds-and-credits wording.
- Operating Friction Snapshot retired (R5): SPOF check is the single free rung; card/
  removed; ladder renumbered.
- Name-free About restored per the identity ruling; share metadata (OG/Twitter/canonical)
  added; diagnostic result toolbar docked; mobile fold tightened; fake-discount phrase
  removed.

## [0.7.0] — 2026-07-20 — contact section: identity privacy

Proposed by: Claude (Opus 4.8), OPE-362.
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

The operator is not publicly named while Operon runs alongside other work.
The contact section no longer displays a personal name; it now reads as one
person, not a team or agency — the site's own existing framing.

- Contact heading changed from a personal-name headline to "Operon is one
  person — not a team, not an agency"
- The full personal name removed from 8 copy surfaces (the contact heading,
  both llms files, the privacy lead, two content pages, the offers data, and
  the site-manifest note); each now refers to "the person who runs Operon"
- The booking link repointed to a non-identifying cal.com slug (`operon`)
  across all 10 places it appears. The cal.com account's public display name
  is set to "Operon", so the booking page itself carries no personal name
- The unmeasured reply-time promise was dropped from the contact copy —
  four of the site's own files already say no response time has been
  measured, so none is promised
- Three new contract guards pin this shut: no served surface may render the
  full personal name or the old name-bearing booking slug, and none may
  promise an unmeasured reply time. Two pre-existing pricing typechecks were
  hardened against undefined matches. Suite: 919 passing

## [0.6.0] — 2026-07-20 — funnel wiring, discovery, privacy

Proposed by: Claude (Opus 4.8).
Approved by: **Joshua — pricing publication and the Cal.com booking link
approved in session 2026-07-20. The remaining items below are corrections
that bring stale files into line with what the live site already says, and
are pending owner review.**

The site went live and started selling on 2026-07-20. Several files still
described the pre-launch posture, which had stopped being true.

- **Booking wired.** The diagnostic's exit CTA pointed at `/#offer`, a
  dead end for the site's warmest traffic. It and the Contact section now
  link to the owner's 20-minute review booking. Click-through is already
  counted as `upsell_clicked`
- **Agent-facing files corrected.** `llms.txt`, `llms-full.txt`,
  `site-manifest.json`, `offers.yaml`, the three offer notes, `home.md`, and
  `services.md` all still said Operon was in private preview, not taking
  engagements, with no published price and no contact channel. Every one of
  those statements was false as of 2026-07-20. An AI assistant reading them
  would have told a prospective buyer that Operon was not open for business
- **The free check became discoverable.** `/diagnostic/` was absent from
  the sitemap, both llms files, the site manifest, and the JSON-LD offer
  catalog — so crawlers and assistants could not see the site's primary
  entry point. Now listed in all five, with a new offer note at
  `/content/offers/spof-continuity-check.md`
- **JSON-LD carries real prices.** The offer catalog said "price not
  published"; it now publishes $0 / $0 / $249 / $7,000–$12,000 so search
  engines and assistants quote the real figure instead of guessing
- **404 page added.** Every unknown URL previously served the homepage at
  HTTP 200 — invisible to the visitor and to search engines
- **Privacy page added** at `/privacy/`, linked from the homepage footer,
  the diagnostic footer, and the consent band. The band already promised
  "ask us to delete them anytime" with no address to ask at; that promise
  now resolves, with the 30-day retention default stated
- **One overclaim corrected.** The diagnostic footer said the plan is
  "never sent anywhere", which stops being true the moment a visitor ticks
  the consent box. It now distinguishes the answers (never transmitted)
  from the finished plan (sent only on request). The aggregate counters are
  disclosed on the privacy page rather than left implied
- Six new contract tests pin the above: the free check must stay linked
  above the fold and present in all four discovery files, the 404 and
  privacy pages must exist and stay linked, and the privacy page must keep
  naming the deletion address, the retention period, and the counters.
  Suite: 914 passing

## [0.5.0-draft] — 2026-07-18

Proposed by: Claude (Fable), SELL-NOW-1 W4 (Concept A "A business coming
into focus", with Concept C's beat-5 crystallization ripple, per Joshua's
2026-07-18 ruling).
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Scrollytelling story section added between the hero and How-it-works:

- Eight narrative beats; beat 1 is the existing hero, unchanged. Beats 2–8
  ship as a new `#story` section: tangle of unwritten handoffs → the
  overloaded person-node → interviews → owner approval (the crystallization
  ripple) → the operating map with its honest gaps → versioned documents →
  ownership and the free snapshot CTA
- Every visible line reuses or closely paraphrases copy already approved on
  this page; the closing CTA and its promise line are verbatim from the
  hero and snapshot sections — no new claims, no new offers
- Static-SVG narrative path (line/node register, solid-vs-dashed rule) is
  the shipped baseline for all visitors; `story.js` progressively enhances
  to a scroll-driven sticky canvas on capable desktop only (JS on, wider
  than 820px, no reduced-motion preference), drawn purely from scroll
  position — no timers, native scroll, no pointer capture
- Hollow (dashed) elements persist into the final frame by design; the
  document beat stays inside the flat line/node vocabulary (wireframe
  frames, version chips, approval dots — no literal 3D objects)
- Self-contained: no new requests, no libraries, no storage, no network
  calls; decorative figures are `aria-hidden`, the narrative is real DOM
  text readable in order; print styles unaffected (story is not printed)

## [0.4.0-draft] — 2026-07-17

Proposed by: Claude (Fable), OPERON-REHEARSAL-1 (under a ratified internal
claim contract — repo-internal, not served with this site).
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Single-flagship reconciliation — the site now claims only what the tested
Alpha does. Operon maps and documents; it does not implement, automate, or
monitor:

- Hero, how-it-works, offer, FAQ, metadata, and JSON-LD rewritten to the
  ratified ladder: free Operating Friction Snapshot (name provisional) →
  Operating Risk Brief → flagship Operational Discovery and Canon Build
  (name pending owner freeze); implementation and stewardship are
  represented only as separate, human-led later phases — not sold today
- All 8 documented overclaims removed (implementation-systems hero,
  tools-into-systems claim, we-build-and-train stage, opportunity scoring,
  workspace-tool setup service, prompt-library service, the stage-3 build
  offer as a sold stage, the stage-4 automated stewardship loop)
- Site-wide private-preview banner; every engagement CTA is inert and
  visibly labeled; the contact form and the scorecard placeholder are
  deleted (no email capture, no inputs anywhere); JS-off visitors get a
  truthful snapshot fallback
- Free rung shipped: the deterministic Operating Friction Snapshot card at
  `/card/` (versioned ruleset v1; six fixed-choice questions; scored by
  fixed rules in the browser; no answer transmitted or stored)
- Agent and data surfaces rewritten to the three-rung catalog: `llms.txt`,
  `llms-full.txt`, `data/offers.yaml`, `data/pricing.yaml` (all prices
  null), `data/site-manifest.json`, `content/pages/`, `content/offers/`
  (four superseded offer files deleted, three created)
- Editorial note: superseded offer names in the 0.2.0/0.3.0 entries below
  are paraphrased in square brackets (e.g. "[stage-3 build offer]",
  "[stage-4 stewardship retainer]", "[four superseded offer files]")
  because the ratified claim contract keeps those literals off every served
  surface; no other history was altered
- Remediation cycle 1 (multi-lane review findings, all applied as proposals):
  copy accuracy (the snapshot's two-minute promise stated up front; honest
  "coming soon" proof placeholders; "Working name — private preview" pills;
  card route texts now say nothing is bookable during the preview; the
  follow-on is consistently named "Implementation Sprint"), card robustness
  (JSON import replaced with a generated JS wrapper plus a static fallback
  inside the mount), accessibility (no focus steal on load, polite progress
  announcements, inert-CTA ARIA cleanup, print stylesheet, 44px nav
  toggle, banner landmark), and served-file hygiene (internal jargon and
  repo paths stripped, orphaned CSS removed, Content-Security-Policy meta
  added)
- Deviation from the §10.3 prepared copy, flagged for owner review:
  "maintained operating documents" → "versioned operating documents"
  (ongoing maintenance is not sold; "versioned" is what the product does)

## [0.3.1-draft] — 2026-07-12

Proposed by: Claude (Fable 5), OPERON-FIELD-ALPHA-1 Loop 1 (design system).
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Design-token alignment pass (styles.css + DESIGN.md only; rendered output
essentially identical — no content, copy, or layout changes):

- `styles.css` now carries a generated-from banner naming the repo-root
  canonical token source (`design/tokens.json`, W3C DTCG); token-mapped
  `:root` values are verified by `npm run design:check` in the app repo
- One-off literals promoted to named tokens: `--accent-bright` (#9d8bff,
  primary-button gradient end), `--error` (#ff9a9a, form error border and
  status text), `--on-accent` (#0a0a14, text on accent fills), and
  `--bg-overlay` (#0a0b0e, mobile nav dropdown)
- `.btn-primary` gradient and text now reference the tokens (same values);
  `.skip-link` text moved #0a0a12 → `--on-accent` #0a0a14 (Δ2/255 on the
  blue channel — imperceptible)
- Select-arrow data-URI stroke #888da0 → #86898e to match the
  `on-dark-tertiary` token (imperceptible)
- `DESIGN.md` gained a scope note pointing to the repo-root brand-level
  DESIGN.md as the token source of truth; this file remains the
  website-specific implementation guide

## [0.3.0-draft] — 2026-07-10

Proposed by: Claude (Fable 5), product-shape sprint.
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Conversion + credibility pass (draft-state changes only):

- Visible four-stage engagement path added to the services section (Audit →
  [stage-2 workflow-map offer] → [stage-3 build offer] → Stewardship) —
  previously the ladder existed only in agent files and JSON-LD
- CTA set strengthened: contact submit is now "Send your workflow"; audit
  section gained an honest secondary CTA previewing the [superseded
  readiness scorecard]; scorecard submit relabeled "Preview the scorecard"
  (it cannot deliver a scorecard yet)
- Hero trust note now names the audience (small businesses, solo operators,
  growing teams, non-technical owners) per the llms.txt "Who it serves" claim
- Wayfinding copy: audit kicker "Stage 1 — start here", services and
  stewardship subs reference the engagement path
- Canonical content files (home.md, services.md) synced with all of the above
- Organization JSON-LD description aligned to llms.txt ("AI/automation
  opportunities"); changelog intro reworded to not imply logged = approved;
  internal spine path reference clarified as repo-internal

## [0.2.0] — 2026-07-10

Proposed by: Claude (built at owner's request).
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Agent-readable layer added:

- Added `/llms.txt` and `/llms-full.txt` (agent summaries, approved claims,
  do-not-hallucinate list, source-of-truth index)
- Added `/DESIGN.md` (agent-readable design system with YAML front matter)
- Added structured content under `/content/pages/` (home, services, about,
  update-policy) and `/content/offers/` [four superseded offer files]
- Added machine-readable data: `/data/offers.yaml`, `/data/pricing.yaml`
  (status: not published), `/data/site-manifest.json`
- Added the [stage-4 stewardship retainer] section to the page
  (approval-first improvement loop)
- Added the [superseded readiness scorecard] placeholder section (front-end
  only, no backend)
- Added FAQ section with matching FAQ JSON-LD
- Added SEO/discoverability: `robots.txt`, `sitemap.xml`, Organization +
  Service + FAQ JSON-LD
- Added this changelog and the update-policy page
- Post-review fixes (multi-agent review, 9 confirmed findings): descriptive
  contact CTA label, draft-form caveats in llms files, proof-of-work copy
  synced with canonical `home.md`, [stage-3 build offer] added to `llms.txt`
  and Service JSON-LD, uniform `offers.yaml` record shape, scorecard field
  list canonicalized in `llms-full.txt` §4, FAQ accessible-name fix,
  softened absolute claims, footer wrapping on mobile
- Integration-gate follow-up: STATUS: DRAFT banners added to `llms.txt` and
  `llms-full.txt` so third-party agents cannot mistake unapproved claims for
  approved ones (removal is part of the owner-approval checklist; tracked
  as an open loop in the maintainers' internal planning docs —
  repo-internal, not served with this site)

## [0.1.0] — 2026-07-10

Proposed by: Claude (built at owner's request).
Approved by: Joshua (owner), 2026-07-20 — approved with the production go-live to https://tryoperon.io.

Initial website draft:

- Single-page static site: hero, how-it-works, services (6), AI Readiness
  Audit, proof-of-work placeholder, about, contact form, footer
- Orbital brand mark + OPERON wordmark; dark systems aesthetic
- Post-review fixes: WCAG AA contrast for tertiary text and form borders,
  accessible form errors (aria-invalid + focus), nav breakpoint 900px,
  hero orbit hidden ≤820px, theme-aware favicon
