Skip to content

Repository files navigation

anum_parser

Отдельный экспериментальный репозиторий для сериализации, десериализации и визуализации ачисел. Публичный адрес: https://netkeep80.github.io/anum_parser/

Зачем он нужен

Лаборатория позволяет наглядно исполнять принятую десериализацию ачисел и одновременно сохранять рядом экспериментальные варианты для сравнения. Экспериментальный алгоритм сам по себе не изменяет нормативную МТС: принятие происходит отдельно в anum_docs.

Текущая нормативная граница лаборатории:

semantic authority = netkeep80/anum_docs
accepted MTS       = v0.11
runtime package    = @mts/core@0.10.0
consumer mode      = exact pinned artifact

anum_parser не копирует текущую семантику МТС и не содержит второго принятого исполнителя. Принятый четверичный путь передаёт исполнение функции @mts/core.executeAbits из точно проверенного пакета.

Идентификатор anum-v0.4 сохранён как стабильный лабораторный идентификатор десериализатора. Это не номер текущего выпуска МТС. Версия пакета @mts/core@0.10.0 также сама по себе не определяет выпуск МТС: принятая версия задаётся совокупностью точного состояния исходного репозитория, контракта, корпуса соответствия и контрольной суммы артефакта.

В anum_docs МТС v0.11 является текущим принятым выпуском, а v0.10 — предыдущим неизменяемым свидетельством. Переход выполнен отдельной точной перепривязкой: без зависимости от подвижной ветки main, без локальной реализации контекстной семантики и без изменения четырёхсимвольного Q-транспорта.

Главное различение

Лаборатория никогда не называет одним словом следующие представления:

  1. последовательность исходных символов;
  2. последовательность абитов;
  3. связь;
  4. упорядоченную последовательность ссылок на связи;
  5. акорневую связь-последовательность, используемую как носитель;
  6. связь, хранящую ачисло;
  7. денотат, полученный конкретной десериализацией.

Для МТС действует базовая аксиома тождества связи:

(A ⟼ B) = (C ⟼ D)
⇔
A = C ∧ B = D

То есть связь полностью определяется началом и концом. Две различные связи с одинаковыми полюсами в МТС невозможны. Технические id в лабораторных файлах являются только адресами записей, а не дополнительным уровнем тождества.

Это принципиально отличает используемую здесь модель МТС от модели сети дуплетов Теории связей, где отдельная ссылка связи и значение пары могут быть разными уровнями.

Точная граница потребителя

Принятая среда исполнения фиксируется в:

contracts/mts-core-consumer-lock.json

Текущая фиксация связывает вместе:

upstream repository = netkeep80/anum_docs
exact upstream SHA  = 6b7f616c7b275310aebdbe998da13c5811c91391
contract            = mts-contract/v0.11
conformance         = mts-conformance/v0.11
package             = @mts/core@0.10.0
artifact sha256     = 6b4dbd701f46a6a339e20b892b8a5d9478bb40a9392415899291eb0fe30ddf9c

Предыдущее принятое свидетельство v0.10 не переписывается. Для дифференциальной проверки сохраняются его точные идентификаторы:

previous upstream SHA = 957c818d82bd3211f2a59547fff28e8ed0ec4331
previous contract     = mts-contract/v0.10
previous conformance  = mts-conformance/v0.10
previous artifact     = 0cd716b65fcdcfb8ca31ec3899f1a812f0b4c9dbfe46bfc1f31899b762cde007

Эта же фиксация запрещает неявное расширение доверенной границы:

channel                              = accepted-current
floatingRefAllowed                   = false
candidateAllowedAsCurrent            = false
deepSourceImportAllowed              = false
vendoredCurrentSemanticSourceAllowed = false

Перед тестами и публикацией сайта scripts/materialize-mts-core.mjs заново получает ровно указанный SHA исходного репозитория, проверяет принятый контракт и корпус соответствия, собирает пакет, сверяет контрольную сумму и только затем создаёт каталог generated/mts-core/, исключённый из Git.

Каталог generated/ является результатом воспроизводимой сборки, а не вторым источником семантики.

Корневой транспорт

Четверичное ачисло передаёт ровно четыре абита:

[ ] 1 0

Акорень ∞ = R не является пятым абитом. Принятая МТС v0.11 также сохраняет алфавит Q ровно [ ] 1 0; . и : не становятся Q-абитами.

Строгая проверка .anum4 является границей представления лаборатории: файл должен содержать только знаки [ ] 1 0. После проверки точная последовательность абитов передаётся в @mts/core.executeAbits.

Контрольные примеры принятого исполнения:

ε     -> R
[]    -> R
1     -> L
10    -> L ⟼ U
[1]   -> R ⟼ L
[[]]  -> R

Локальный AsetBuilder при принятом исполнении не определяет переходы OPEN/CLOSE/VALUE: он только материализует вызовы link(start,end), сделанные нормативным исполнителем, и строит проекцию для представления и визуализации.

Два входных транспорта принятого исполнения

Одна принятая среда исполнения имеет два входных пути.

Первый путь — обычный физический поток .anum4:

.anum4
  -> strict local validation
  -> exact [ ] 1 0 sequence
  -> @mts/core.executeAbits

Второй путь — существующая асеть с явно указанной связью-носителем в provenance.representations.carrier. Лаборатория читает её только как конечную историю начал от R, восстанавливает O/C/L/U, переводит их обратно в [ ] 1 0 и передаёт в ту же принятую среду исполнения.

Таким образом, для связи-носителя нет второго алгоритма OPEN/CLOSE/VALUE, скрытого пятого абита или отдельной нормативной семантики. Исходная импортированная асеть при чтении не изменяется.

В интерфейсе эти действия разделены явно:

  • .aset.json — открыть асеть — только показать уже существующую асеть;
  • .aset.json — прочитать carrier через ANUM v0.4 — восстановить четверичный транспорт и выполнить точно зафиксированную принятую семантику.

Форматы

  • .anum4 — исходное четверичное ачисло профиля [ ] 1 0;
  • .anums — исходное строковое ачисло в UTF-8 без скрытой нормализации;
  • .anum.json — самодокументируемый контейнер эксперимента;
  • .aset.json — наглядный снимок канонической асети; его можно открыть как снимок или явно использовать отмеченную связь-носитель как вход принятого исполнения.

Подробно: docs/formats.md.

Веб-лаборатория

Статическое приложение позволяет:

  • вводить или загружать разные форматы;
  • независимо выбирать десериализатор и сериализатор;
  • сравнивать принятый и экспериментальный алгоритмы на одном исходнике;
  • отдельно видеть символы, абиты, последовательности ссылок, акорневые цепочки и связи-хранилища;
  • пошагово видеть позицию источника, проекцию контекста, current и изменения асети;
  • наблюдать, как новые связи появляются в графе именно после нормативной операции построения связи;
  • открыть .aset.json как готовую асеть или прочитать её явно отмеченный носитель;
  • визуализировать асеть с перемещением, масштабированием и несколькими раскладками;
  • сохранять .aset.json и без потерь восстанавливать исходную запись, когда это доказано происхождением данных.

2D blueprint связей

Режим 2D — blueprint связей — третья проекция представления той же Aset и общей модели visualModel. Перед отрисовкой сохраняется основная граница МТС: связь X = start(X) ⟼ end(X) является одной первичной сущностью, а не обычным графом вида «узел и два ребра». Центр в этом режиме — только точка представления на той же связи; он не разрывает связь и не создаёт отдельный семантический узел.

Геометрия адаптирована из konard/links-visuals по точному снимку f377441533e4f10fa94aaa07138b684df88234b1, опубликованному под лицензией Unlicense. Для происхождения алгоритма зафиксированы animated-blueprint.html и js/path.mjs с преобразованием сплайна Катмулла—Рома в кубические кривые Безье и непрерывностью C¹, а также js/blueprint-link.mjs и js/markers.mjs для языка меток начала и конца. Материалы задачи #28 фиксируют отдельный цвет каждой связи при сохранении геометрии одиночной связи; задача #31 сохраняет исторический контекст визуализации связей между связями.

Одна семантическая связь отображается ровно одним непрерывным SVG-путём start → ... → center → ... → end. Начало и конец геометрически закреплены на центрах start(X) и end(X). В каждой внутренней точке, включая центр, совпадают первая производная входящего и исходящего кубических сегментов, поэтому в центре нет геометрического излома. Самопетля также остаётся одной конечной, видимой и непрерывной кривой.

Каждая связь получает собственный детерминированный цвет. Тот же цвет используется для всей кривой, метки начала и открытой метки конца. Цвет является только свойством представления и не участвует в тождестве или семантике МТС. Выбор и отладчик могут менять подсветку, прозрачность или акцент, но не цвет связи. Общий цветовой путь RED → GREEN → BLUE к этому режиму больше не относится; он сохраняется только в тех других проекциях, где уже принят отдельным визуальным контрактом.

Перетаскивание, панорамирование, масштабирование, вписывание, выбор и состояние отладчика меняют только представление; сериализованная Aset не изменяется. Структурный 2D, blueprint и живая 3D-механика используют одну семантическую модель, но разные средства отрисовки; при переключении ресурсы неактивного средства отрисовки освобождаются.

Живая 3D-механическая асеть

Режим 3D — механическая асеть является интерактивной визуально-механической проекцией, а не источником семантики МТС. Он работает поверх уже построенных Aset и visualModel: перетаскивание, физика, камера, полноэкранный режим и визуальный выбор не меняют семантическую идентичность асети и не создают вторую принятую среду исполнения.

Одна связь показывается как зелёный центр и две смысловые пружины: начало идёт от красного к зелёному, конец — от зелёного к синему. Обе зелёные касательные в центре одной связи остаются противоположными на 180° в истинном 3D. Корневая связь закреплена в (0,0,0), самопетля остаётся видимой, но не создаёт силы сама на себя.

Живая механика управляется глобально:

  • Заряд узлов меняет силу одноимённого отталкивания;
  • Жёсткость пружин меняет силу возврата вдоль механических связей;
  • Затухание регулирует длительность релаксации;
  • Пауза / Продолжить останавливает и возобновляет только физическую интеграцию;
  • Сбросить возвращает исходную детерминированную 3D-раскладку и нулевые скорости;
  • перетаскивание временно фиксирует свободный центр связи и передаёт возмущение остальной механической асети;
  • На весь экран разворачивает то же средство отрисовки и то же физическое состояние через браузерный полноэкранный режим или резервное разворачивание на весь экран средствами оформления без повторной десериализации.

После успокоения механическая система засыпает и перестаёт выполнять лишние шаги физики. Навигация камерой сама по себе физику не будит. Переключения 2D ↔ 3D и повторные полноэкранные циклы обязаны освобождать или переиспользовать ресурсы отрисовки без накопления холстов, слоёв подписей, запланированных кадров, захвата указателя и наблюдателей размеров. Если трёхмерная аппаратная отрисовка недоступна, интерфейс возвращается к пригодному структурному 2D.

Публикация через GitHub Pages материализует ту же точно зафиксированную зависимость потребителя, которая проверяется в CI. Браузерная версия не исполняет отдельную локальную принятую стековую машину.

Десериализаторы

  • anum-v0.4принятый лабораторный идентификатор: строгий четверичный вход и транспорт существующего носителя передают семантику точно зафиксированному @mts/core / МТС v0.11;
  • stack-group-value-v0экспериментальный: локальная историческая стековая машина, где группа возвращает внутреннее значение напрямую; нормативной МТС не является;
  • abit-flat-v0экспериментальный: контрольная плоская свёртка четырёх абитов;
  • string-flat-v0экспериментальный: строковая UTF-8 левая свёртка.

Локальный deserializeStack разрешён только для явно экспериментальных алгоритмов. Попытка использовать его как источник принятой семантики должна завершаться отказом.

Происхождение принятого результата

Принятый .aset.json фиксирует не только status=accepted, но и точную нормативную зависимость:

semanticAuthority.package
semanticAuthority.version
semanticAuthority.contract
semanticAuthority.conformance
semanticAuthority.upstreamRepository
semanticAuthority.upstreamCommit
semanticAuthority.artifactSha256
semanticAuthority.generatedTreeSha256
semanticAuthority.consumerLock

Это позволяет отличить нормативную семантику от локальной проекции и не принять случайную подвижную ветку или кандидатную версию за текущую.

Сериализаторы

  • aset-json-v0 — сохранить лабораторную .aset.json;
  • source-replay-v0 — без потерь вернуть исходное .anum4 или .anums при наличии свидетельства происхождения;
  • source-envelope-v0 — сохранить тот же источник в .anum.json.

Лаборатория не предполагает, что произвольную асеть можно автоматически и однозначно сериализовать в ачисло.

Корпус тестов

examples/cases.json содержит принятые четверичные входы, ошибочные границы, сравнительные эксперименты, исторические строки и Unicode.

Автоматические проверки подтверждают одновременно:

  • точную пересборку и контрольную сумму SHA256 текущего артефакта v0.11;
  • независимую пересборку и контрольную сумму SHA256 предыдущего артефакта v0.10 для дифференциального свидетельства;
  • доступ только через публичную поверхность пакета и отказ импорта внутренних исходников;
  • наблюдаемое совпадение v0.10 ↔ v0.11 на общем корпусе из 33 принятых Q-входов и общих классов ошибок;
  • совпадение локальной проекции результата с прямым вызовом текущего @mts/core.executeAbits;
  • принятые обязательства v0.11 для верхнего контекста, пары точек, вложенной привязки и неизменного алфавита Q — по принятому контракту и корпусу соответствия исходного репозитория, без второй локальной семантической машины;
  • точные сведения semanticAuthority о происхождении результата;
  • совпадение физического транспорта и пути через существующий носитель;
  • неизменность входной асети при чтении носителя;
  • [] = R и схлопывание R ⟼ R = R;
  • тождество связей по полюсам;
  • инварианты пошагового отладчика и визуализации;
  • браузерный контракт blueprint: одна непрерывная кривая на связь, C¹ во всех стыках включая центр и самопетлю, собственный стабильный цвет и одноцветные метки концов, закрепление полюсов, сохранение цвета после перетаскивания и повторного входа, очистка ресурсов и неизменность Aset;
  • браузерный контракт живого 3D: смысловой цветовой градиент и угол 180°, неподвижность корня и корректность самопетель, передача возмущения при перетаскивании, регуляторы механики, засыпание без пробуждения камерой, воспроизводимый сброс, полноэкранный режим, очистка ресурсов и резервный переход в 2D;
  • явную ненормативность экспериментальных алгоритмов.

Конкретные принятые обязательства v0.11:

TopBind(R,S)
top-level . -> R
.. -> ExactSequence([R,R]) -> Pair(R,R)=R
nearest structural A:E binding
Q alphabet = [ ] 1 0

Принятая МТС v0.11 и контекстное изменение

Машинно-видимое состояние текущего выпуска в исходном репозитории:

mts-contract/v0.11:
  status = accepted
  accepted = true
  acceptanceReady = true

mts-conformance/v0.11:
  status = accepted
  accepted = true
  coverageState = complete
  acceptanceBlockers = []

Принятое изменение v0.11 включает верхнеуровневое структурное связывание, разрешение верхнеуровневой . в R, сохранение двух физических вхождений точки в .. до Pair(R,R)=R и ближайшую структурную привязку для вложенного A:E. При этом граница Q не расширяется: [ ] 1 0 остаются единственными Q-абитами.

anum_parser не реализует эти контекстные правила второй локальной машиной. Его рабочий путь остаётся потребителем публичного @mts/core; специфические обязательства v0.11 проверяются по принятому контракту и корпусу соответствия исходного репозитория, а общий Q-путь дополнительно сравнивается с предыдущим точно зафиксированным артефактом v0.10.

Локальная проверка

Требуется Node.js 24 или новее и доступ к точно указанным хешам исходного репозитория для воспроизводимой сборки и дифференциального свидетельства.

npm run check
npm test

Обе команды автоматически выполняют npm run mts:prepare перед импортом текущей принятой среды исполнения. Отдельная проверка потребителя в CI пересобирает и сравнивает точно зафиксированные артефакты v0.10 и v0.11.

Материалы

  • docs/history.md — историческая выжимка; старые версии там могут упоминаться как история;
  • docs/formats.md — файловые форматы и сведения о происхождении;
  • docs/architecture.md — текущая граница исполнения и нормативного источника;
  • examples/cases.json — общий корпус примеров.

Управление изменениями

Изменения проходят обязательную проверку repo-guard. Принятая версия МТС меняется только явной перепривязкой по машинно-читаемой фиксации; подвижная ветка main или кандидатный контракт не считаются рабочим источником семантики.

About

Отдельный репозиторий для отработки экспериментов по десериализации ачисел

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages