moduleselfgating

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package moduleselfgating — ОБЪЯВЛЕНИЕ отношений модели прав, которые модуль платформы гейтит СВОИМ прод-кодом.

───────────────────────────────────────────────────────────────────────────── ЗАЧЕМ ЭТО СУЩЕСТВУЕТ

Отношение, которое материализация ПРОИЗВОДИТ, обязано кем-то ЧИТАТЬСЯ при решении о доступе: оно оплачивается трижды — выводом, записью и индексом, — и отношение без читателя есть стоимость без предмета. Читателей три: каталог прав края, вывод самой модели и ПРОД-КОД модуля-владельца. Третий источник ловит решения, которых каталог выразить не может: часть модулей гейтит собственные RPC сама.

Первые два источника служба доступа читает у себя (каталог она везёт побайтовой копией, модель — своим каноном). Третий лежал в дереве ПЛАТФОРМЫ, и после разреза службы читать его было бы неоткуда: утверждение перестало бы исполняться в ОБОИХ деревьях — у службы нет чужого кода, у платформы нет модели, — а вопрос «оплачивается ли это отношение впустую» задать стало бы некому. Тихо: ни красного, ни зелёного.

───────────────────────────────────────────────────────────────────────────── ПОЧЕМУ ОБЪЯВЛЕНИЕ, А НЕ ВЫВОД — И ЧТО ЗА ЭТО ПЛАТИТСЯ

Вывести это из дерева может только тот, у кого дерево есть; прочитать — только тот, у кого есть модель. После разреза это РАЗНЫЕ продукты, и общего дерева у них не будет ни одного. Значит одна сторона обязана ОБЪЯВИТЬ факт, а другая — его прочитать; форма связи выбрана та же, что у словаря написаний модулей (`pkg/platformmodules`): объявление живёт в ФУНДАМЕНТЕ, который оба продукта тянут зависимостью, а его ИСТИННОСТЬ держит гейт ПЛАТФОРМЫ.

Плата названа прямо: объявленное расходится с деревом молча, если его никто не сверяет. Поэтому сверка обязательна и двусторонняя — гейт платформы (`internal/repohygiene`, TestModuleSelfGatingMatchesTheProdCodeOfEachModule) требует РАВЕНСТВА: отношение, объявленное и не читаемое, — находка ровно так же, как читаемое и не объявленное. Обе координаты этой сверки платформенные, поэтому разрез она переживает.

───────────────────────────────────────────────────────────────────────────── ЧЕГО ЗДЕСЬ НЕТ И ПОЧЕМУ

Службы доступа здесь НЕТ, и это не пропуск. Её собственный прод-код лежит в её же поставке, поэтому свой источник она ВЫВОДИТ обходом собственного модуля — в обеих посадках одинаково. Объявить его здесь значило бы завести второе место об одном предмете там, где вывод доступен: после разреза сверять объявление с кодом службы платформе стало бы нечем, и запись пережила бы свой предмет.

Правило шва: КАЖДАЯ сторона ВЫВОДИТ то, чем владеет, и ОБЪЯВЛЯЕТ то, чем не владеет. Тогда ни одна координата сверки границу разреза не пересекает.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Modules

func Modules() []string

Modules — короткие имена модулей, о которых объявление что-либо говорит.

Отдельно от Relations ради вызывающего, который сверяет объявление с деревом: без перечня «объявлено про модуль, которого нет» и «про модуль не объявлено ничего» были бы неотличимы.

func Reads

func Reads(module, relation string) bool

Reads — гейтит ли модуль это отношение сам. Удобная форма Relations для единственного вопроса, который задаёт читатель на пути проверки.

func Relations

func Relations(module string) ([]string, bool)

Relations — отношения, которые модуль гейтит своим прод-кодом.

Различайте два «нет»: ok=false — про модуль не объявлено ничего (его прод-код не читает ни одного отношения либо модуля нет вовсе); ok=true с пустым перечнем здесь не бывает by construction — пустая запись есть запись без предмета, и её отвергает гейт платформы.

Возвращается КОПИЯ: перечень объявления вызывающим не правится.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL