From 1fbcfa8a77f25ee591168a21b9171c84a57840f1 Mon Sep 17 00:00:00 2001 From: Dmitrii Vasilev Date: Wed, 9 Sep 2026 15:08:46 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20=D0=BE=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0=D1=85=20merge=20=D0=B8=20C?= =?UTF-8?q?I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/bodies/merge-diff-ci-boundaries.ts | 79 +++++++++++++++++++ apps/website/src/data/blog/index.ts | 28 +++++++ apps/website/src/data/blog/posts.ts | 2 + 3 files changed, 109 insertions(+) create mode 100644 apps/website/src/data/blog/bodies/merge-diff-ci-boundaries.ts diff --git a/apps/website/src/data/blog/bodies/merge-diff-ci-boundaries.ts b/apps/website/src/data/blog/bodies/merge-diff-ci-boundaries.ts new file mode 100644 index 0000000000..c5ab223238 --- /dev/null +++ b/apps/website/src/data/blog/bodies/merge-diff-ci-boundaries.ts @@ -0,0 +1,79 @@ +import type { Block } from '../types' + +export const body: Block[] = [ + { + kind: 'p', + text: '[Proven] PR #975 was merged into gHashTag/trinity on 9 September 2026. Its merge commit is 479743ffb11520d6c63b9483ba25b1e543f40247. The receipt proves that the change landed; it does not by itself prove every resulting interface.', + }, + { + kind: 'p', + text: '[Measured] The public commit record reports 85 changed files, 4,154 additions, and 58 deletions. The diff size is a reproducible property of the merge commit, not a proxy for runtime correctness.', + }, + { + kind: 'h', + text: 'A merge is one receipt, not one verdict', + }, + { + kind: 'p', + text: '[Proven] The merged work describes spec-first SKILLS and CRONS explorers for the website. That establishes the intended surface and the files that landed. It does not replace checks of the generated pages, interfaces, or delivery path.', + }, + { + kind: 'h', + text: 'What remains open', + }, + { + kind: 'ul', + items: [ + 'The exact correctness of every new explorer, interface, and generated specification was not independently rerun in this blog run.', + 'The merge and diff receipts do not establish a cause for any CI status without the relevant workflow and step logs.', + 'A repository merge does not establish that the live static page has received the same revision; delivery needs its own URL check.', + ], + }, + { + kind: 'h', + text: 'A compact audit chain', + }, + { + kind: 'p', + text: 'Keep the evidence in order: merge commit → diff statistics → workflow and step receipts → static page. This separates what changed from what was checked and what readers can actually receive.', + }, +] + +export const ruBody: Block[] = [ + { + kind: 'p', + text: '[Доказано] PR #975 смержен в gHashTag/trinity 9 сентября 2026 года. Его merge-коммит — 479743ffb11520d6c63b9483ba25b1e543f40247. Эта квитанция доказывает, что изменение попало в репозиторий; сама по себе она не доказывает корректность каждого результирующего интерфейса.', + }, + { + kind: 'p', + text: '[Измерено] Публичная запись коммита сообщает о 85 изменённых файлах, 4 154 добавленных строках и 58 удалённых. Размер diff воспроизводим по merge-коммиту, но не является заменой проверки поведения во время выполнения.', + }, + { + kind: 'h', + text: 'Merge — одна квитанция, а не один вердикт', + }, + { + kind: 'p', + text: '[Доказано] Смерженная работа описывает spec-first обозреватели SKILLS и CRONS для сайта. Это устанавливает заявленную поверхность и попавшие в репозиторий файлы. Но это не заменяет проверки сгенерированных страниц, интерфейсов и пути доставки.', + }, + { + kind: 'h', + text: 'Что остаётся открытым', + }, + { + kind: 'ul', + items: [ + 'Точная корректность каждого нового обозревателя, интерфейса и сгенерированной спецификации в этом запуске блога независимо не повторялась.', + 'Merge и статистика diff не устанавливают причину какого-либо статуса CI без журналов соответствующего workflow и его шагов.', + 'Слияние в репозитории не устанавливает, что живая статическая страница получила ту же ревизию; доставку нужно проверять отдельным URL.', + ], + }, + { + kind: 'h', + text: 'Короткая цепочка аудита', + }, + { + kind: 'p', + text: 'Храните свидетельства по порядку: merge-коммит → статистика diff → квитанции workflow и шагов → статическая страница. Так изменение не смешивается с проверкой и с тем, что действительно может получить читатель.', + }, +] diff --git a/apps/website/src/data/blog/index.ts b/apps/website/src/data/blog/index.ts index f163fd29ad..e79a04f4b8 100644 --- a/apps/website/src/data/blog/index.ts +++ b/apps/website/src/data/blog/index.ts @@ -2,6 +2,34 @@ import type { PostMeta } from './types' /** Индекс блога: список и метаданные без тяжёлых тел публикаций. */ export const postsIndex: PostMeta[] = [ + { + slug: 'merge-diff-ci-boundaries', + title: 'A merged diff was not one CI verdict', + summary: '[measured] Merged PR #975 changed 85 files with 4,154 additions and 58 deletions; the receipts still need to be kept separate from interface correctness and live delivery.', + date: '2026-09-09', + readingMinutes: 4, + tags: ['Reproducibility', 'CI', 'Web', 'Spec-first'], + receipts: [ + { label: 'Merged PR #975 — spec-first SKILLS and CRONS website explorers', href: 'https://github.com/gHashTag/trinity/pull/975' }, + { label: 'Merge commit 479743ff — 85 files, 4,154 additions, 58 deletions', href: 'https://github.com/gHashTag/trinity/commit/479743ffb11520d6c63b9483ba25b1e543f40247' }, + { label: 'Public commit API — reproducible diff statistics', href: 'https://api.github.com/repos/gHashTag/trinity/commits/479743ffb11520d6c63b9483ba25b1e543f40247' }, + ], + openQuestions: [ + 'The exact correctness of every new explorer, interface, and generated specification was not independently rerun in this blog run.', + 'Merge and diff receipts do not establish a cause for any CI status without the relevant workflow and step logs.', + 'A repository merge does not establish delivery to the live static page; that needs its own URL check.', + ], + published: true, + ru: { + title: 'Смерженный diff не был одним вердиктом CI', + summary: '[измерено] Смерженный PR #975 изменил 85 файлов: 4 154 строки добавлены, 58 удалены; эти квитанции всё равно нужно отделять от корректности интерфейсов и доставки на живой сайт.', + openQuestions: [ + 'Точная корректность каждого нового обозревателя, интерфейса и сгенерированной спецификации в этом запуске блога независимо не повторялась.', + 'Merge и статистика diff не устанавливают причину какого-либо статуса CI без журналов соответствующего workflow и его шагов.', + 'Слияние в репозитории не устанавливает доставку на живую статическую страницу; это требует отдельной проверки URL.', + ], + }, + }, { slug: 'four-languages-one-tri-extension', title: 'Four languages shared one .tri extension', diff --git a/apps/website/src/data/blog/posts.ts b/apps/website/src/data/blog/posts.ts index ea5eac4c06..73579ce25c 100644 --- a/apps/website/src/data/blog/posts.ts +++ b/apps/website/src/data/blog/posts.ts @@ -1,4 +1,5 @@ import { postsIndex } from './index' +import { body as body_merge_diff_ci_boundaries, ruBody as ruBody_merge_diff_ci_boundaries } from './bodies/merge-diff-ci-boundaries' import { body as body_queen_foundation_snapshot_contract, ruBody as ruBody_queen_foundation_snapshot_contract } from './bodies/queen-foundation-snapshot-contract' import { body as body_clara_proposal_submitted_not_reviewed, ruBody as ruBody_clara_proposal_submitted_not_reviewed } from './bodies/clara-proposal-submitted-not-reviewed' import { body as body_tri_claw_an_agent_you_can_audit, ruBody as ruBody_tri_claw_an_agent_you_can_audit } from './bodies/tri-claw-an-agent-you-can-audit' @@ -67,6 +68,7 @@ import { body as body_real_value_in_integer_container, ruBody as ruBody_real_val import { body as body_one_commit_nine_workflow_outcomes, ruBody as ruBody_one_commit_nine_workflow_outcomes } from './bodies/one-commit-nine-workflow-outcomes' const bodies: Record = { + 'merge-diff-ci-boundaries': { body: body_merge_diff_ci_boundaries, ruBody: ruBody_merge_diff_ci_boundaries }, 'four-languages-one-tri-extension': { body: body_four_languages_one_tri_extension, ruBody: ruBody_four_languages_one_tri_extension }, 'ninety-tests-were-unreachable': { body: body_ninety_tests_were_unreachable, ruBody: ruBody_ninety_tests_were_unreachable }, 'one-saturation-rule-five-artefacts': { body: body_one_saturation_rule_five_artefacts, ruBody: ruBody_one_saturation_rule_five_artefacts },