|
| 1 | +# Maintaining this repository |
| 2 | + |
| 3 | +Documentation repo — structured data / entity SEO for ENS-based identities. |
| 4 | +No build system, no runtime: Markdown docs + shell/JS tooling in `scripts/`. English only. |
| 5 | + |
| 6 | +> Companion of a **private reference implementation** (ookyet.com). Knowledge flows **one way**: |
| 7 | +> lessons are validated on the reference site first, then ported here in batch "port windows" |
| 8 | +> (see CHANGELOG v3.1.x–v3.3.x for the pattern). Never publish guidance here that the reference |
| 9 | +> implementation has not field-tested, and never copy site-private material (API keys, GSC |
| 10 | +> screenshots, non-public URLs) into this repo. |
| 11 | +
|
| 12 | +This repo is also a **subjectOf asset in the author's own entity graph** (SoftwareSourceCode |
| 13 | +node + CITATION.cff with ORCID). Treat public-facing text as entity corpus: byline is |
| 14 | +`Qifeng Huang (ookyet)`, the real name in CITATION.cff is deliberate, and the wallet |
| 15 | +address appearing in examples is public by design. |
| 16 | + |
| 17 | +## Honesty rules (the repo's soul — never trade away) |
| 18 | + |
| 19 | +1. **No "KP trigger" framing.** A Knowledge Panel is notability-driven and cannot be forced |
| 20 | + by markup. The v3.2.1 "honesty pass" retired `READY FOR KP` / trigger-score language from |
| 21 | + the tooling; do not reintroduce it in docs, scripts, or release notes. Heuristics must be |
| 22 | + labeled "not a Google metric". |
| 23 | +2. **Timestamp every claim.** Field data over promises: outcomes carry dates and measurement |
| 24 | + methods (see README Results table). Never put a Knowledge Panel on a calendar. |
| 25 | +3. **Negative results stay.** Retired strategies (FAQPage, HowTo, active-trigger, phantom |
| 26 | + press JSON-LD) are kept as documented failures with dates — they are load-bearing teaching |
| 27 | + content. **Do not "clean up" `~~RETIRED~~` sections.** |
| 28 | +4. **Markup must reflect reality.** Never document or exemplify structured data for content |
| 29 | + that does not exist (no phantom articles, no dead selectors, no fabricated credentials). |
| 30 | +5. Do not re-add retired schema types: `FAQPage` / `HowTo` (Google removed the rich results); |
| 31 | + `QAPage` only for genuine single-question + user-submitted-answers pages; no |
| 32 | + `potentialAction/SearchAction` without a real search results page. |
| 33 | + |
| 34 | +## Versioning & release protocol (every release, in order) |
| 35 | + |
| 36 | +Semantic mapping (documentation SemVer): **MAJOR** = stance reversal (e.g. 3.0.0 retired the |
| 37 | +active-trigger strategy) · **MINOR** = new guidance/sections · **PATCH** = corrections and |
| 38 | +repo hygiene. Skipping versions is allowed (SemVer only requires monotonic increase; v2.x |
| 39 | +never existed — do not backfill tags for CHANGELOG-only versions 3.0.0/3.0.1). |
| 40 | + |
| 41 | +Release checklist: |
| 42 | +1. `CHANGELOG.md` entry (Keep a Changelog: Added/Changed/Fixed, dated, why not just what). |
| 43 | +2. `CITATION.cff` — bump `version` + `date-released`. |
| 44 | +3. Commit, push, then tag `vX.Y.Z` and push the tag. |
| 45 | +4. `gh release create vX.Y.Z` — title `vX.Y.Z — <short human phrase>`; body is a **narrative |
| 46 | + summary** (headline sentence + context + Added/Changed), not a changelog copy-paste; |
| 47 | + end with a link to the CHANGELOG section. |
| 48 | + |
| 49 | +## Commit rules |
| 50 | + |
| 51 | +- Author/committer: `ookyet <ookyet.mid@gmail.com>`; messages ASCII English. |
| 52 | +- `core.hooksPath=.githooks` runs `scripts/commit-message-guard.sh` — it strips tool |
| 53 | + watermarks and co-author trailers; empty-after-strip blocks the commit. Never `--no-verify`. |
| 54 | +- CI gates (`.github/workflows/`): commit-guard (message contract on push/PR), shellcheck |
| 55 | + (`-S warning` over `scripts/*.sh`), kg-monitor (scheduled KG API check). Keep them green. |
| 56 | + |
| 57 | +## Editing discipline |
| 58 | + |
| 59 | +- Docs must stay self-consistent: if guidance changes in one file, grep for the old claim in |
| 60 | + README / `docs/faq.md` / `docs/implementation-guide.md` / `docs/troubleshooting.md` and |
| 61 | + `examples/` — stale cross-references are this repo's main defect class (e.g. FAQ once |
| 62 | + promised retired FAQ rich results while Step 3 documented the retirement). |
| 63 | +- Monitoring guidance baseline: **weekly** KG API cadence; growth staircase reading order |
| 64 | + `url` → `image` → `resultScore` → `detailedDescription`; "no change" is the normal case. |
| 65 | +- Google's docs drift: when citing them, keep the "as of <date>" qualifier and verify the |
| 66 | + linked page still says what we claim during any port window. |
| 67 | +- Never commit API keys (KG Search API keys expire and get rotated — they live outside git). |
0 commit comments