Skip to content

I3134 — The product sentence is declared once, and the homepage, README, page titles, Open Graph and launch kit read it

Make the owner's chosen product sentence a field of the declared site copy, have scripts/generate-site-data read it instead of grepping README.md for '**A lightweight', render README's bold line and lead from it (or fail homepage-check when they differ), and close docs/HARDCODING_LEDGER.yaml row product-sentence-has-two-wordings.

READY wave 0 · p2 · implementation profile · parallel safe

Part of a-visitor-understands-and-checks-majordomus — A first-time visitor of majordomus.dev understands what Majordomus does and can check every claim it makes.

Ready. Every dependency is done, so majordomus plan start I3134 will be accepted.

Objective

Make the owner's chosen product sentence a field of the declared site copy, have scripts/generate-site-data read it instead of grepping README.md for '**A lightweight', render README's bold line and lead from it (or fail homepage-check when they differ), and close docs/HARDCODING_LEDGER.yaml row product-sentence-has-two-wordings.

Why

The owner's standing order of 2026-10-13 is that the landing page reflects and derives the positioning. Today the sentence a visitor reads depends on the door: the homepage hero (edited 2026-10-16, I2745) and the README's 'A lightweight supervisory control layer' disagree, and every page title follows the README by a grep. Proposed in ADR 0210 (The sentence that says what Majordomus is has one declaration, and every surface reads it) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c250#2, chatgpt-majordomus:c250#4, chatgpt-majordomus:c156#4, chatgpt-majordomus:c001#26, chatgpt-majordomus:c038#0.

Current state

scripts/generate-site-data:317 TAGLINE=grep '^\\*\\*A lightweight' README.md; site/templates/base.html:27-51 use project.tagline for title, description and og:description; site/data/marketing.toml [hero] title/subtitle/lead; ledger row status open, recommended MOVE_TO_CANONICAL_DATA.

Desired state

One declaration; every reader derived; homepage-check holds README and titles to it.

Scope

  • site/data/marketing.toml
  • scripts/generate-site-data
  • scripts/ci/homepage-check
  • README.md
  • docs/HARDCODING_LEDGER.yaml

Out of scope

  • Choosing the wording; that is the owner's
  • Rewriting the rest of the README

Dependencies

None. This issue is a root of the graph.

What waits on this

Acceptance criteria

  • Changing the declared sentence changes the homepage, README bold line, every page title and og:description after one regeneration
  • homepage-check fails when README states the sentence in other words
  • The ledger row is closed with this issue's id

Validation

  • scripts/generate-site-data --check
  • scripts/ci/homepage-check
  • scripts/site-check

Evidence required

  • site_reads_one_sentence

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Timeline

started
—
verified
—
completed
—

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I3134.yaml. Read it back with majordomus plan show I3134.

Searches the titles and descriptions of every page this site publishes.