From a25a365f19dc19a0d723e591d487d8d3225eeb17 Mon Sep 17 00:00:00 2001 From: Roanny Lamas Date: Sun, 11 Oct 2026 18:42:07 -0300 Subject: [PATCH] docs: closing review fixes for the AGENTS.md round MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Five findings of the Fable 5.1 closing review, each validated against the files before the fix: - git-hygiene.md pointed at CLAUDE.md § Git identity, which the round moved; it now points at AGENTS.md § Conventions. - AGENTS.md's CI sentence now scopes the author gate to pull requests and pushes and names its two exceptions. - The JSON-LD and call-to-action sentence moved to AGENTS.md; CLAUDE.md keeps only the Claude-specific coupling check. - CLAUDE.md's index line for git-hygiene.md names the deny floor. - README says the subjects gate runs on pull requests only. CLAUDE.md's title now uses the same name as AGENTS.md (operator-sites-agents-md). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01WYawTHteKW5v8W8ZYNrycG --- .claude/CLAUDE.md | 6 +++--- .claude/rules/git-hygiene.md | 2 +- AGENTS.md | 4 ++-- README.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index a6a4b66..676f9de 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -1,6 +1,6 @@ @../AGENTS.md -# roanny-site — Claude Code +# roanny.github.io — Claude Code `AGENTS.md`, imported above, says what the site is, how it is previewed and checked, and the conventions a change respects; this file adds what holds only for a Claude Code session. @@ -10,11 +10,11 @@ Two rulesets guard `main`: "Protect main branch" (24806684: no deletion, no forc ## The one coupling -The design tokens mirror `DESIGN.md` of `coabana-site` (checkout `coabana/`); `coabana-site`'s `CLAUDE.md` says the same from its side. Before stating what that file holds now, read it or verify it with the `contract-checker` agent. The JSON-LD names Coabana as the affiliation, and a call to action links to https://coabana.github.io/. +The `DESIGN.md` that `AGENTS.md` § Conventions names is `coabana-site`'s (checkout `coabana/`), whose `CLAUDE.md` says the same from its side. Before stating what that file holds now, read it or verify it with the `contract-checker` agent. ## Index -- `.claude/rules/git-hygiene.md` — linear history, the 72-character subject, the commit author, no force push or remote-ref deletion, landing as a deploy, the two rulesets, Dependabot, the round authorization (every session). +- `.claude/rules/git-hygiene.md` — linear history, the 72-character subject, the commit author, no force push or remote-ref deletion, landing as a deploy, the two rulesets, Dependabot, the round authorization, the deny floor (every session). - `.claude/rules/rules-discipline.md` — what a rule file may hold (fleet shared block). - `.claude/rules/markdown-docs.md` — the shape of the Markdown working documents (fleet shared block). - No commands and no agents: there is no release and no code to review beyond the page's script. diff --git a/.claude/rules/git-hygiene.md b/.claude/rules/git-hygiene.md index f6f0af8..6e21e77 100644 --- a/.claude/rules/git-hygiene.md +++ b/.claude/rules/git-hygiene.md @@ -7,7 +7,7 @@ Loads in every session: it carries the authorization clause, which has to be pre - **Linear history.** A branch lands on `main` by fast-forward, `git push origin :main`, once `Validate` is green on the pull request's head SHA. No merge commits; `gh pr merge` is denied, because it and the UI button collapse or rewrite the branch's commits. - **A session never pushes to `main` on its own.** The ruleset "Require Validate" (24807145) requires a green `Validate` but lets the repository admin bypass it, so the operator can push a fix by hand; sessions push with his credentials and inherit that bypass, so for them this rule is the gate, not the server. A session pushes to `main` only the head of a pull request whose `Validate` is green, by the fast-forward above. - **Commit subjects.** The whole first line at most 72 characters, no trailing period; measure it before the push (`printf '%s' "$subject" | wc -m`), because correcting a pushed subject is a force push. CI's "Commit subjects" step reads every commit a pull request adds. -- **Commit authors.** Every commit is authored as `roannylamaslopez@gmail.com`, which this checkout's local git config carries (`CLAUDE.md` § Git identity); CI's "Commit authors" step refuses any other author but Dependabot's and GitHub's own. The admin bypass of "Require Validate" means a direct push of the operator's with another address is not stopped, only shown red after the push; a session never relies on that. +- **Commit authors.** Every commit is authored as `roannylamaslopez@gmail.com`, which this checkout's local git config carries (`AGENTS.md` § Conventions); CI's "Commit authors" step refuses any other author but Dependabot's and GitHub's own. The admin bypass of "Require Validate" means a direct push of the operator's with another address is not stopped, only shown red after the push; a session never relies on that. - **No force push, in any spelling** — `--force`, `-f`, `--force-with-lease`, a `+refspec` — on any branch. - **A landing can be a deploy.** GitHub Pages publishes `main` within minutes of every push to it: a landing that changes what a visitor sees is a deploy of the public site, and Round authorization says whose word that takes. - **No remote-ref deletion.** Deleting a remote branch or tag is the operator's act. The colon-refspec deletion (`git push origin :`) has no working deny; the rule is the guard, and the ruleset "Protect main branch" (24806684: deletion, non-fast-forward, linear history; no bypass) is the floor on `main`. There are no tags here. diff --git a/AGENTS.md b/AGENTS.md index 9283275..b12d6f5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,12 +15,12 @@ The operator's personal CV and portfolio, served at https://roanny.github.io/ by - The gates, as CI runs them: `npx --yes html-validate@11.16.0 --config .github/htmlvalidate.json index.html 404.html`, `python3 .github/scripts/check_site.py i18n`, `python3 .github/scripts/check_site.py sitemap`. - A content change updates `lastmod` in `sitemap.xml`. A changed social card takes a new filename (`og-image-.jpg`) and the three references in `index.html` (`og:image`, `twitter:image`, the JSON-LD `image`), because LinkedIn, WhatsApp and X cache a card by its URL; LinkedIn's Post Inspector refetches it once it is live. -CI (`Validate`, `.github/workflows/ci.yml`) refuses invalid HTML in either page, an `i18n` key missing from either language, a malformed sitemap, a changed shared block under `.claude/`, on pull requests a commit subject over 72 characters or with a trailing period, and a commit author other than the one below. +CI (`Validate`, `.github/workflows/ci.yml`) refuses invalid HTML in either page, an `i18n` key missing from either language, a malformed sitemap, a changed shared block under `.claude/`, on pull requests a commit subject over 72 characters or with a trailing period, and on pull requests and pushes a commit author other than the one below, Dependabot's or GitHub's own. ## Conventions - **Language.** The content is English by default with Spanish, by audience: the text lives in the `en` and `es` dictionaries of the `i18n` object at the end of `index.html`, with the same keys, and each translatable element carries `data-i18n=""`; the English default in the HTML stays aligned with `en`. The working documents — README, this file, the rules, code comments and commit subjects — are English; Spanish text quoted from the content stays Spanish. -- **Design.** The design tokens (palette, type, chips, buttons, motion) mirror `DESIGN.md` of `Coabana/coabana.github.io`, the canonical source, copied by hand into the `