From b4c9e22ccf60eec0d3edf33117fe8692f3005c9c Mon Sep 17 00:00:00 2001 From: Implementer Date: Sun, 4 Oct 2026 00:47:28 +0200 Subject: [PATCH] Takes conventions v1.43.0 The family resync moves robertblust/conventions in `conventions.json` from v1.39.0 to v1.43.0. The upstream notes are at https://github.com/robertblust/conventions/releases/tag/v1.43.0. Verified: `sh conventions/conventions-sync sync`, `sh conventions/conventions-check` and `sh conventions/conventions-format` passed. Process: Delivery Phase: Implement Track: Code --- .github/workflows/conventions.yml | 2 +- AGENTS.md | 2 +- conventions.json | 2 +- conventions/AGENTS.md | 2 +- conventions/BACKREADER.md | 2 +- conventions/EDITOR.md | 2 +- conventions/GLOSSARY.md | 4 +++- conventions/TRANSLATOR.md | 4 ++-- conventions/WORKING.md | 4 +++- conventions/WRITING.md | 2 +- conventions/manifest.json | 16 ++++++++-------- 11 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.github/workflows/conventions.yml b/.github/workflows/conventions.yml index 231f17f..7748e90 100644 --- a/.github/workflows/conventions.yml +++ b/.github/workflows/conventions.yml @@ -5,4 +5,4 @@ on: pull_request: jobs: conventions: - uses: robertblust/conventions/.github/workflows/check.yml@v1.39.0 + uses: robertblust/conventions/.github/workflows/check.yml@v1.43.0 diff --git a/AGENTS.md b/AGENTS.md index d1bacfe..e12713d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ - + Shared conventions of the robertblust, guestgraph and companygraph organizations live in `conventions/`, vendored from robertblust/conventions at the release `conventions.json` names. Read them before writing or committing anything here. - `conventions/WRITING.md` — how we write: one voice, three registers, English and German. diff --git a/conventions.json b/conventions.json index 39f1f8e..102410c 100644 --- a/conventions.json +++ b/conventions.json @@ -1 +1 @@ -{ "repo": "robertblust/conventions", "tag": "v1.39.0" } +{ "repo": "robertblust/conventions", "tag": "v1.43.0" } diff --git a/conventions/AGENTS.md b/conventions/AGENTS.md index fbf638e..9a91c96 100644 --- a/conventions/AGENTS.md +++ b/conventions/AGENTS.md @@ -1,4 +1,4 @@ - + Shared conventions of the robertblust, guestgraph and companygraph organizations live in `conventions/`, vendored from robertblust/conventions at the release `conventions.json` names. Read them before writing or committing anything here. - `conventions/WRITING.md` — how we write: one voice, three registers, English and German. diff --git a/conventions/BACKREADER.md b/conventions/BACKREADER.md index f524abb..d22033f 100644 --- a/conventions/BACKREADER.md +++ b/conventions/BACKREADER.md @@ -4,7 +4,7 @@ The role that says in English what a page's German says, literally. It is given ## What it takes -Every German value of one page in the page's order, with its id. On a page of a model, the values are the elements of its `## de-CH` section. +Every German value of one page in the page's order, with its id. ## What it produces diff --git a/conventions/EDITOR.md b/conventions/EDITOR.md index 5c59d37..4ab1214 100644 --- a/conventions/EDITOR.md +++ b/conventions/EDITOR.md @@ -4,7 +4,7 @@ The role that reads a page's German as German. It is given the German alone, nev ## What it takes -Every German value of one page in the page's order, with its id and what kind of value it is — a heading, a paragraph, a speaker note a voice reads aloud, a label read to a screen reader, a title, a description. `GLOSSARY.md` and `GERMAN.md`, read before the page. On a page of a model, the values are the elements of its `## de-CH` section. +Every German value of one page in the page's order, with its id and what kind of value it is — a heading, a paragraph, a speaker note a voice reads aloud, a label read to a screen reader, a title, a description. `GLOSSARY.md` and `GERMAN.md`, read before the page. ## What it produces diff --git a/conventions/GLOSSARY.md b/conventions/GLOSSARY.md index c87a6ce..52110ec 100644 --- a/conventions/GLOSSARY.md +++ b/conventions/GLOSSARY.md @@ -20,6 +20,7 @@ The German cells are inline code because the prose check reads no language and a | reference instance | reference instance | `Referenz-Instanz` | mental-model's role in the family; the form blust.ch's ideas page chose. | | guest graph | guest graph | `Gast-Graph` | The short form, distinct from guest identity graph; blust.ch's ideas page. | | core | core | `core` | The directory in companygraph/meta-model and the release its version names; a name the ecosystem reads, so not `Kern`. Masculine, `der core`, as `der Kern` would be. | +| pack | pack | `Pack` | A vocabulary beside core in companygraph/meta-model, such as the software pack; kept English like `core`, because the directory is `packs/` and the flag `--pack`, and a reader who met a German form would have to bridge to find them. Neuter, `das Pack`; plural `die Packs`, as companygraph.io's model page writes them. Not the skill pack, which is `Skill-Paket`. | | considered, not accepted | considered, not accepted | `Erwogen, nicht angenommen` | The design system's phrase for a candidate weighed and set aside; one form on every billing page. | | figure | figure | `Diagramm` | The drawn graph on a model page. The owner's choice over `Zeichnung`, which reads as a drawing by hand. | | experience | experience | `Erfahrung` | An entry in the model's experiences folder, whatever its kind; blust.ch's timeline and model pages. The row it makes on the timeline is an `Eintrag`. | @@ -105,7 +106,8 @@ The German cells are inline code because the prose check reads no language and a | lead engineer | lead engineer | `Lead Engineer` | A job title, English in both languages as Swiss IT titles usually are; `Lead` alone for the lead role. | | head of technology | head of technology | `Head of Technology` | A job title, English in both languages as Swiss IT titles usually are, like `Lead Engineer`; blust.ch's first post. | | a talk's claim | claim | `Behauptung` | The thesis a talk argues and a post takes up, as blust.ch's deciding-well talk and its post write it. The table's `Anspruch` stays what a profile asserts beside its evidence. | +| a visitor's claim | claim | `Aussage` | A claim a visitor asks about in their own words, as the chat's question chips write it: `Woher weiss ich, dass eine Aussage hier stimmt?` The owner's choice over `Anspruch`, which a visitor without the model reads as an entitlement. The table's `Anspruch` stays what a profile asserts beside its evidence. | | check | check | `Prüfung` | An automatic check a build or suite runs, as in “held to the English by a check, which stops the build.” The row for put up for scrutiny keeps `Prüfung` in that verb phrase for a person's judgment; used as the bare noun, it names the automatic check instead. Not `Check`, the anglicism, and not `Kontrolle`, which reads as a person's inspection. | | skill pack / skill bundle | skill pack / skill bundle | `Skill-Paket` | The loadable bundle of a skill's instructions and files. Neuter, `das Skill-Paket`; `Skill-Pack` was set aside because `Paket` is the ordinary German word and reads without a bridge. | -English forms fixed here whose German no page carries yet, to be chosen the first time a text needs them: pack, design system. +English forms fixed here whose German no page carries yet, to be chosen the first time a text needs them: design system. diff --git a/conventions/TRANSLATOR.md b/conventions/TRANSLATOR.md index a3f5d8c..b97b83c 100644 --- a/conventions/TRANSLATOR.md +++ b/conventions/TRANSLATOR.md @@ -4,7 +4,7 @@ The role that makes the German of a page whose English the owner has reviewed. I ## What it takes -A page, not a list of elements: every German value the page carries, each beside its English and the German it carries now, in the page's order. The page is the unit because a sentence is translated against the one before it — a pronoun names what the reader has met, *page* and *site* are told apart, and a term is the same term from the top of the page to the bottom. Reviewed means the owner has said the English is done; a draft is not reviewed, and the translator says so rather than assuming. A page's own agent file says where that page carries German. A page of a model is taken the same way, where the instance's `model/localization.md` declares de-CH translated: its values are the elements of its `## de-CH` section, its name, its statement and each section, and an entity that other pages list under a grouped heading is translated before them, so the German name those headings take already exists. +A page, not a list of elements: every German value the page carries, each beside its English and the German it carries now, in the page's order. The page is the unit because a sentence is translated against the one before it — a pronoun names what the reader has met, *page* and *site* are told apart, and a term is the same term from the top of the page to the bottom. Reviewed means the owner has said the English is done; a draft is not reviewed, and the translator says so rather than assuming. A page's own agent file says where that page carries German. ## What it produces @@ -18,7 +18,7 @@ The marks and forms are the German section of `WRITING.md`: Sie, ss, «» and ## What it never does -It never changes an English word, never translates an element whose English is not reviewed, never renders a glossary term in any form but the glossary's, never writes a model's German where the instance's `model/localization.md` does not declare de-CH, and never commits. Where it does, the German goes into the page's `## de-CH` section and nowhere else, in the shape R19 gives it: the page's elements under the schema's English headings, a table repeated whole with only its free text translated, a grouped heading as the German name of the entity it names, and the frontmatter untouched. +It never changes an English word, never translates an element whose English is not reviewed, never renders a glossary term in any form but the glossary's, never writes a translation into a model, which is written in the one language its `model/localization.md` names, and never commits. ## Before it reports diff --git a/conventions/WORKING.md b/conventions/WORKING.md index 8cb22d7..92139f2 100644 --- a/conventions/WORKING.md +++ b/conventions/WORKING.md @@ -22,6 +22,8 @@ Every change reaches the default branch through a pull request with one green st Merging is a decision the owner makes. An agent opens the pull request, reports the check, and stops; it merges when told to, and the word for that is the owner's, not inferred from an earlier one. +Several sessions work in the family at once, and four rules each model holds under `model/rules/` bind every one of them: the owner's word merges, a state is read again before it is relied on, a refusal is not carried out by another session, and one session holds a piece of shared work. So before a release, a re-pin, a re-sync or a change across repositories, a session reads the open pull requests, branches and tags again, asks the running sessions, and claims the work; the session that holds it tells the others when it is done, with the commit or tag, and no other session opens a parallel change. Before it merges, it reads the default branch again and brings the branch up to date where it moved. + A family resync is the one run that merges on its own. When the owner chooses chains from the family report, that choice is their word for every merge, release and deploy the run needs to carry those pins through, and the run asks nothing more. It stops wherever a person's judgment is needed by blocking the member — a failed step or suite, a check that does not pass, a clone without an address, or work on the default branch that no release describes — and holds everything downstream of it. It never releases work whose notes a person has not written, and it never releases conventions. Pull requests that depend on one another are linked as a stack, GitHub's own, with `gh stack link` from the bottom up. Each then shows only its own layer, the default branch's rules and checks hold for every layer and not only the lowest, and the one above re-targets to the default branch by itself when the one below merges; re-targeted by hand, a wrong order closes the pull request. A stack is merged from the bottom with `gh stack merge --merge`, because GitHub refuses the ordinary command for a pull request in a stack, and the merge commit rule holds there as everywhere. @@ -40,7 +42,7 @@ This holds for every repository in the family that another one takes from, whate A release is a tag and a GitHub Release with notes in the prose register: what changed for the consumer, what breaks, how to take it. There is no publish step anywhere in the family; the tag is the release. -A release ends at its tag. The family resync moves the pins of the repositories that take it, and only the owner starts a resync: two runs started side by side open the same branches and write the same files, a resync after every release makes many small ones that overlap where one would carry them all, and the run computes from the pins which members move and in what order, so nobody works it out by hand. An agent that releases says in its report which members will move at the next resync, and neither re-pins them by hand nor starts a resync. +A release ends at its tag. The family resync moves the pins of the repositories that take it, and only the owner starts a resync: two runs started side by side open the same branches and write the same files, a resync after every release makes many small ones that overlap where one would carry them all, and the run computes from the pins which members move and in what order, so nobody works it out by hand. An agent that releases says in its report which members take it; it re-pins one by hand only on the owner's word, and never starts a resync. Everything one repository takes from another is pinned by a visible line in the taking repository, in whatever form its tooling gives it — a tag in a package file, a commit in a source file, a release in a vendoring manifest. Pins are editorial. They move when the owner decides they move, in a commit that says why, and no bot proposes them; a pin that is behind is intent until the owner says it is drift. diff --git a/conventions/WRITING.md b/conventions/WRITING.md index 0ea4057..c78e18e 100644 --- a/conventions/WRITING.md +++ b/conventions/WRITING.md @@ -14,7 +14,7 @@ A text starts from a brief that names the audience, the one point, the facts it The writer of `WRITER.md` drafts the English on the branch, in the register the place calls for, and reports what it wrote and which claims it could not trace to the brief or the repository. The owner reviews on the branch, in the diff and on the rendered page, because that is the review a pull request gets anyway and a second channel would be a second place to lose a correction. -The translator of `TRANSLATOR.md` makes the German of a whole page from its reviewed English, with `GLOSSARY.md` and `GERMAN.md` open. The editor of `EDITOR.md` reads that German without the English, corrects what a rule decides and flags what is a choice. The back-reader of `BACKREADER.md`, once the editor's corrections and each flag's first option are in, renders the German into literal English without having seen the original, and the session that dispatched them sets the English against that rendering and sends back every value whose meaning moved. The owner then reads the flags and the translator's term doubts and picks; a term choice becomes a row of `GLOSSARY.md`, and a sentence choice that generalizes becomes a row of `GERMAN.md`. German made from a draft is German that has to be made again, and an English edit re-runs the roles on the values it touched. A model whose `model/localization.md` declares de-CH carries its German inside the model, in each page's `## de-CH` section, made by the same roles and the owner's picks; a pull request that changes a page's English changes its German with it, or says in a `Translation-unchanged:` trailer why the German stands. +The translator of `TRANSLATOR.md` makes the German of a whole page from its reviewed English, with `GLOSSARY.md` and `GERMAN.md` open. The editor of `EDITOR.md` reads that German without the English, corrects what a rule decides and flags what is a choice. The back-reader of `BACKREADER.md`, once the editor's corrections and each flag's first option are in, renders the German into literal English without having seen the original, and the session that dispatched them sets the English against that rendering and sends back every value whose meaning moved. The owner then reads the flags and the translator's term doubts and picks; a term choice becomes a row of `GLOSSARY.md`, and a sentence choice that generalizes becomes a row of `GERMAN.md`. German made from a draft is German that has to be made again, and an English edit re-runs the roles on the values it touched. The writer and the translator edit files, the editor and the back-reader only report, and none of them commits. `WORKING.md` says who does. diff --git a/conventions/manifest.json b/conventions/manifest.json index c6aeb68..30087c8 100644 --- a/conventions/manifest.json +++ b/conventions/manifest.json @@ -1,18 +1,18 @@ { "repo": "robertblust/conventions", - "tag": "v1.39.0", + "tag": "v1.43.0", "files": { - "conventions/WRITING.md": "sha256:625c12b0d52ac3ad74c8a364228005e3441818297022246865f884a687f96e71", - "conventions/WORKING.md": "sha256:5495621b9640d21fd9191ba4d9a8de9cc07ec259267f7729a800a245f1155d8b", + "conventions/WRITING.md": "sha256:51d9a902ec3038392160df07f86aba98d34db1d4dbfaa5f4a647590eaccfb390", + "conventions/WORKING.md": "sha256:3a7a6b4ab1bd23f2407fc6ada2dd0512710a49d233fa7c3342951f6fc526ab23", "conventions/REPOSITORIES.md": "sha256:461654ef06ee307d2e10daba201e97dbcad093cf6b3b7c35b6bad3627f9f4fec", "conventions/PINS.md": "sha256:754a2f3d3f442e58a3ca05d6832c1062b92df80b21eb4d36e94c4b16fd302e10", "conventions/WRITER.md": "sha256:bc3b92683130b75993f824f0e34073d4344846c91be2009fd90c39099fd4fd48", - "conventions/TRANSLATOR.md": "sha256:d56af63a98ce17c0219efc09a368a1a21f52b5dded59cef7aa83471383fd9183", - "conventions/GLOSSARY.md": "sha256:b43ee356adbbec543b08c82513344882db6be28d2dc6525cbae64f5375fb9d7b", + "conventions/TRANSLATOR.md": "sha256:3a3d2d0916d7230cbc760bced1be249b11cc516956fb41ad010b3216f23024ba", + "conventions/GLOSSARY.md": "sha256:1d0fbdb8415f8a65ccee75b4a26617d7aa1a4b146988cc2a2a8155fe67c02623", "conventions/GERMAN.md": "sha256:2f4651dd74e2970f0751621bf9264441b43ee619b8a6e1373d5f3c7809581f77", - "conventions/EDITOR.md": "sha256:5f761da18ae1b6c6e953b71cf79573c9dd1896db44c0c61593540281e8eb0777", - "conventions/BACKREADER.md": "sha256:9f114bedb78e18d6c9505f95728992f06fd334a08c6aab66b18a31882d7c0ebd", - "conventions/AGENTS.md": "sha256:8a2ef6f880cfbded83675a73cd2cb77b9f1f7697139ba4c3cbb165b3bf028ac4", + "conventions/EDITOR.md": "sha256:e65d0b2893ac841faefede9b873f7e33c1fd7b02bedf97d37d5362c0e83c08ea", + "conventions/BACKREADER.md": "sha256:36b12d4bee8e4fe190469e2f550d50d8a7f6dcab6bec573da17eb1c165c417cd", + "conventions/AGENTS.md": "sha256:9a6774f72436107eb94128f59a55b746fa9be987f8f6ac02d542283f32c0d03c", "conventions/conventions-sync": "sha256:a190ff79c2d8d3f6f6d9a597e9f261654f2419d30e2ac43abf6c64ebe2c47ed9", "conventions/conventions-check": "sha256:30b2528e84381f04fd6b06b26ef103cd2360d877639706eb0b53f362a10fc433", "conventions/conventions-format": "sha256:2911a0d30dda1bc0f621522a9538b3e39704eee03458e65ba320eccbf39b5c7f",