Help us shape the future of Go! Take the 2026 Go Developer Survey

moduleselfgating

package
v1.16.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 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