Skip to content
rtynbirfPublic

About

COMMONS — один организм из лучших открытых проектов: геном-спеки, синапсы MCP, кровь событий, иммунитет-лицензии. Органы остаются на upstream — единым становится обмен. ЦЕЛОЕ = ЧЕЛОВЕК > суммы частей. Провенанс: здесь нет ни байта чужого (REUSE 3.3).

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

173 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

COMMONS

commons

Один организм из лучших открытых проектов человечества. Органы остаются живыми ветками upstream — единым становится обмен: геном, синапсы, кровь, метаболизм, иммунитет.

ci license REUSE provenance OpenSSF Scorecard stage English

Что это

COMMONS — проект-организм, собранный из топ-100 публичных GitHub-репозиториев. Снимок рейтинга от 26.10.2026 хранится как данные: organs/top100-2026-10-26.yaml.

С 0.2.0 организм исполняется, с 0.2.1 впервые коснулся мира (сенсорика), а с 0.2.2 думает своим метаболизмом: сенсорика markitdown и метаболизм llama.cpp прошли один трейс — документ превращён в Markdown и сжат до сути, токены посчитаны сервером в крови — runs/2026-11-01-organism-pulse/. DoD M1 закрыт. С 0.3.0 все пять спайков исследовательской программы получили честные харнессы (S2 замерен, S1/S3/S4/S5 ждут живой хост), а приёмки спайков живут в CI. С 0.4.0 организм живёт во времени: PID 1 — демон-сердцебиение (boot → organ.health → shutdown), смерть всегда записана — runs/2026-11-01-pid1/. С 0.5.0 у организма есть ген памяти (SPEC-0005: память — производная крови), решение по движкам (ADR-0007) и второй автопортрет — excalidraw-карта из живого реестра. С 0.6.0 память исполняется: граф + вектора + replay из крови, PLAN читает её read-only, движок — орган в манифесте. С 0.7.0 иммунитет исполняется: лицензионный барьер как код (SPEC-0006, ADR-0008) — матрица лицензий в данных, fail-closed на неизвестное, commons-immune красит PR раньше, чем AGPL попадёт в тело. С 0.8.0 метаболизм в бюджете (SPEC-0001 G3): лимиты на трейс и на вызов — поле budget в манифесте, порог → событие alert в крови, исчерпание → HALT. С 0.9.0 у организма есть внешний конвейер (SPEC-0007, ADR-0009): n8n — внешний узел (fair-code, не встраивается), референс-развёртывание и воркфлоу — данные с белым списком команд; валидатор commons-pipeline красит PR раньше, чем произвольная команда попадёт в конвейер. С 0.10.0 организм отдаёт первый патч upstream (ROADMAP M3, ADR-0001): верифицированный docs-vs-code дрейф в n8n-docs (MCP Server Trigger — OAuth2-опция и незадокументированные параметры), патч в форке — за PR остался один шаг человека; карта занятости баг-очередей органов — runs/2026-11-02-upstream-patch/. С 0.11.0 у организма есть руки (SPEC-0008, ADR-0010): openclaw подключён за стволом мозга как эффектор — мост через CLI openclaw gateway call с белым списком методов (health/status/chat.send/chat.abort); параметры — данные JSON, shell не строится; руки без воли — исполняют импульсы ствола, не решают; токен и живой gateway — у человека (PID 1). С 0.12.0 организм впервые сдал кровь целиком: гематология перечитывает всю пролитую кровь по схеме (SPEC-0003 v0.4.0, п.6), OSV-скан ищет патогены в корме, dependabot приносит антигены еженедельно, OpenSSF Scorecard выдаёт паспорт иммунитета. С 0.13.0 у организма есть трансплантология (SPEC-0009, ADR-0011): донорский протокол — кровь уходит в upstream только по рукопожатию (DCO) и тому, кто дарит; CLA-ошейник не подписывается — патч живёт внутри организма. С 0.14.0 весь реестр виден: 18 донорских карт — каждая патч-цель типирована живыми фактами (2026-11-02); дарим тому, кто дарит. С 0.15.0 тело не требует ни одного канала (SPEC-0010, ADR-0012): текст — универсальный нерв — всё, что организм говорит и слышит, есть текст; картинки не молчат; итоги гейтов — словами и кодом возврата; персона-доказательство — Елена Келлер: 578 суток зрения и слуха на 32 115 дней жизни — и 12 книг (runs/2026-11-02-persona/). С 0.16.0 у организма есть гигиена дома: doctor (scripts/doctor.py) ловит docs-drift на автомате — протухающие числа, версии, ссылки, пути, SPEC/ADR-ссылки, точки входа — блоха красит PR; автопортреты под гейтом свежести (--check в CI). С 0.17.0 организм прошёл красный прогон (runs/2026-11-02-red-run/): замена органа без правки ствола, одновременный отказ без крэша, восстановление из крови, 10/10 атак на белые списки отбиты — аудит-матрица внешней рецензии закрыта каркасно, польза А/Б остаётся за живым хостом. С 0.18.0 дом убирается по расписанию: свип .github/workflows/fleas.yml — доктор и внешние ссылки (lychee) каждую неделю без пушей: ссылки умирают сами, не только от пушей; конфликт-маркеры и числа-протухатели (счётчики приёмок и практик, версии в бейджах) — под гейтами доктора. С 0.19.0 у гейтов нет слепых зон: ROADMAP под гейтом чисел-протухателей — исторические счётчики приёмок выметены (живое число в python -m pytest -q), версия сверяется в обоих README — en молча отстал на три релиза и догнан; ревизия самой блохоловки поймала блох в слепых зонах — теперь зон нет. С 0.20.0 машина сама изображает людей с их хотёлками (docs/personas.md): реестр персоны × хотёлки × статус × связи — от Человека (PID 1) до апстрим-мейнтейнера, проходца, внешнего ревизора и будущего contributor; хотёлка-сирота или без статуса — блоха (гейт wants), честный бэклог без фантазий: А/Б и живой red-run ждут хоста. С 0.21.0 спайки замеряются, где хост уже есть: S6 — живой bench всех трёх движков памяти (Python 3.12; chromadb 1.5.9, lancedb 0.41.0, sqlite-vec 0.1.9): sqlite-vec 4.0/6.5 мс против базовой линии 41.4/224.5 мс — выбор по метрикам, не по моде, вписывание в манифест — отдельная волна по ритуалу ADR-0005 (spikes/s6-memory/); S5 — полный цикл живым specify 1.2.6.dev0: init-структура и маппинг секций сверены, пробел генома назван («Гарантии» без пары — у spec-kit роль играют Success Criteria/Measurable Outcomes) (spikes/s5-genome/); S1/S3/S4 ждут живые серверы и браузер — не фантазируем. С 0.22.0 полномочия исполняются рантаймом (SPEC-0002 v0.4.0): страж-перехватчик прерывает вызов органа, вышедшего за заявленное (fs/network/process), ещё до факта нарушения — security.violation в крови, трейс закрывается reflect+halt; грамматика полномочий в манифесте исполнима и fail-closed; самозваный адаптер не проходит привязку — runs/2026-11-02-wave7-authority/. С 0.23.0 доктор ловит яд и пишет отчёт машиной (волна №9 такт 1): гейт secrets ищет ключи на видном месте (GitHub/AWS/Slack/Google/PEM-форма) в статике и в крови runs/ — в отчёте секрет замаскирован, ловец не размножает пойманное; --json — машиночитаемый отчёт каждого прогона для коллег-агентов (подключение следа к самим воротам — такт 2, ждёт ключ с правом workflow). С 0.24.0 такт 2 доставлен (ключ с правом workflow): таблица доктора в summary и артефакт doctor-report.json на каждый прогон ci.yml и fleas.yml, timeout-minutes на все jobs и concurrency — ворота не висят. С 0.24.1 свип не краснеет от чужих стен: medium.com (403 ботам датацентровых IP, живой прогон 41471082096) — в исключениях lychee; доказано живым прогоном: память воротов работает, артефакт существует. С 0.25.0 страж знает пути и порты (SPEC-0002 v0.5.0, такт 3 волны №9): скоуп {mode, paths} ограничивает орган заявленными каталогами (сравнение по realpath — симлинк-побег закрыт), {hosts, ports} — заявленными портами; незаданная переменная в путях полномочий — орган не развёрнут (п.6); манифест дома мигрирован: ollama/llama.cpp сужены до заявленных портов, browser-use пишет только в каталог загрузок — runs/2026-11-02-wave9-scopes/. С 0.26.0 организм восстанавливается из крови (SPEC-0003 v0.5.0, волна №10): журнал — цепочка конвертов (prev_id), разрыв ловится при чтении (verify, гематология красит), пролитая кровь без цепочки валидна навсегда; сессия ствола мозга реконструируется по журналу целиком — план, вызовы, вердикты, остановки и цена (blood.resume), гэп честно роняет complete — runs/2026-11-02-wave10-resume/. С 0.27.0 организм впервые сравнил себя с собой на живом хосте (волна №10, хотёлки W-0011 и W-0012 одним махом — одно другое не исключает): живой GLM (z-ai CLI) сам спланировал и решил задачу через настоящие органы — группа «с организмом» в трёх семенах из трёх решила задачу, восстановилась резервом после живого отказа и имела приманку, прерванную стражем до факта (сервис-свидетель не видел ни одного соединения); группа «без» (голый диспетчер) трижды потеряла задачу, утекла по-настоящему и не оставила ни одного конверта крови; живой red-run прервал ренегатов fs/сети до факта, пережил смерть процесса восстановлением из крови — и нашёл слепую зону: детёныши процессов (process: spawn) выводят сеть из-под стража, кандидат SPEC-0002 v0.6.0 (runs/2026-11-02-wave10-ab-live/, runs/2026-11-02-wave10-red-run-live/). С 0.28.0 страж наследуется потоками (SPEC-0002 v0.6.0, волна №11): полномочия связывают код органа, а не поток — поток, рождённый под стражем, наследует его (обёртка Thread.start), escape через threading.Thread закрыт; внук и подкласс Thread тоже под стражем; __pycache__-запись ленивого импорта прерывается с предписанием прогреть импорты; поток вне вызова — граница действия, не дыра — runs/2026-11-02-wave11-threads/. С 0.29.0 детёныши процессов под стражем (SPEC-0002 v0.7.0, волна №12): execve роняет audit hook, но страж оборачивает subprocess.Popen — питоновский детёныш получает конверт COMMONS_AUTHORITY, загружает страж на старте (sitecustomize, битый конверт — exit до первого оператора) и живёт под полномочиями органа; внук наследует тем же механизмом, наследование переживает чужую оболочку; скоуп {mode: spawn, programs, max_children} декларирует рождение; чужой бинарник конверта не читает — честная граница — runs/2026-11-03-wave12-children/. С 0.30.0 дом сужает полномочия детёнышей поимённо (волна №12, такт 2): поверх наследования стража (0.29.0) манифест дома v0.5.0 декларирует детёнышей stdio-органов в скоупе процессной оси ({mode: spawn, programs: [...]}) — «рожаешь — назови по имени»: markitdown и browser-use названы, http-органы — process: none (runs/2026-11-03-wave12-children/). С 0.31.0 детёныш закован ядром (SPEC-0002 v0.8.0 п.11, волна №13): скоуп process принимает sandbox: {network: none} — детёнышу до execve ставится seccomp-BPF (socket(AF_INET/6) → EPERM), фильтр наследуется execve и всем потомством независимо от языка — не-python детёныш закрыт ядром так же, как питоновский, конверт ему и не нужен; unix жив, фильтр снять нельзя; seccomp не ограничивает fs — Landlock ждёт ядра ≥ 5.13, записан кандидатом (runs/2026-11-03-wave13-sandbox/). С 0.32.0 ядро не слепо там, где слепа audit-грамматика (SPEC-0002 v0.9.0 п.11, волна №13 такт 2): UDP sendto и ctypes raw-syscall — не audit-события (находки U1/C13: страж слеп был — дейтаграмма уходила молча), песочница роняет socket() любого домена до кода детёныша — защита в глубину; граница R1 честно названа: детёныш соединяется по унаследованному дескриптору (pass_fds, создан до стража) raw-connect'ом — фильтр роняет socket(), не connect; приёмка-предписание покраснеет при закрытии R1, до закрытия — средство хоста: не передавать сетевые fd детёнышам (runs/2026-11-03-wave13-seccomp/). С 0.33.0 дескриптор — тоже capability (SPEC-0002 v0.10.0, волна №14): граница R1 закрыта гигиеной дескрипторов — страж при рождении детёныша проверяет pass_fds, stdio-перенаправления и close_fds=False (живой скан /proc/self/fd) — сокет-fd (S_ISSOCK) при network ≠ any прерван ДО рождения, при network: any — жив (capability заявлена), пайпы живы; питоновский детёныш с просочившимся сокетом не живёт — сам-скан на старте (exit 90); рождения мимо обёртки под охраной: os.system прерван всегда (shell-строка не разбираем), os.posix_spawn — декларация исполняется и прерван при network ≠ any (находка R2) — runs/2026-11-03-wave14-fdhygiene/. С 0.34.0 зерно пакета «Human Membrane» коллеги вжито разбором духа (docs/human-membrane-synthesis.md): конституция и статусная дисциплина пакета — уже живы глубже; зерно принято хотёлками W-0022 (конверт честного происхождения) / W-0023 (дневник человека) / W-0024 (обратимость честным языком) / W-0025 (бюджет внимания); оболочки (forget, своя шина доставки) отвергнуты с причиной — чужой дизайн вживляется разбором, не копированием файлов (инвариант 24). С 0.35.0 повторная доставка не повторяет эффект (A01, SPEC-0003): конверт несёт idempotency_key, журнал крови помнит эффекты — повтор ключа или id возвращает записанный конверт, а счётчик честных отказов (W-0021) считает провалы живой крови — 53 отказа в 17 живых файлах на 2026-11-03; словарь дома закреплён ADR-0013, чужой тип крови — fail-closed при записи и «сохранён, не исполнен» при чтении (ADR-0014); Landlock измерен живым syscall'ом: ENOSYS на ядре 5.10.134 (runs/2026-11-03-wave16-hygiene/). С 0.35.1 стык волн назван и дожат: контрольный забег Ф-0 (runs/2026-11-03-wave15-hygiene/) перекрёстно проверил принятую базу третьим путём — их счётчик отказов сверён с ручным подсчётом живой крови, их dedupe проверен четырьмя сценами, шесть угловых приёмок добрали грани (скоуп ключа — журнал, записанное не подменяется, from_jsonl помнит ключи); SPEC-0003 v0.6.0 п.9 — спека догнала живой код (контракт идемпотентности), словарь 0.2.0 разведёл «орган» дома и «систему» пакета; граница семантики счётчика (resilient-путь в провалах) названа кандидатом Ф-2, не правкой задним числом. С 0.36.0 кровь различает, КОГДА случилось, КОГДА увидено и КОГДА записано: конверт честного происхождения (SPEC-0003 v0.7.0 п.10, W-0022) — тройное время (stored_at ставит сам журнал), семантическая причинность causation_id, классы доверия trust и приватности privacy с fail-closed на неизвестное; неклассифицированное наружу = sensitive; старая кровь валидна навсегда (runs/2026-11-03-wave17-origin/). Такт 2 (0.36.1) добирает стык: адаптер чужого контракта переносит события пакета тонким слоем — их заявки в провенанс, неизвестный тип сохранён и не исполнен (runs/2026-11-03-wave17-membrane-blood/). С 0.37.1 стык волны №18 назван: их дневник принят базой, параллельная реализация выметена по дисциплине волны №15; зерно такта — спека п.12 догнала живой код, машиночитаемый to_jsonl, 12 перекрёстных приёмок третьим путём (tests/test_blood_diary_junction.py) и стык-забег над всей кровью дома (runs/2026-11-03-wave18-diary-junction/).

Мы сознательно не сливаем чужие кодовые базы в монолит: это породило бы десятки мёртвых ответвлений. Вместо этого:

  • органы (openclaw, ollama, llama.cpp, langchain, browser-use, markitdown, excalidraw и другие) остаются живыми проектами на upstream;
  • единым делается обмен: один нервный протокол (MCP), один поток событий (кровь), один геном (спеки), один метаболизм (локальный инференс), один иммунитет (лицензионный барьер).

Целое > суммы частей реализуется обменом, а не слиянием.

Аксиомы

  1. ЦЕЛОЕ = ЧЕЛОВЕК > суммы частей. Ни один проект топ-100 не создан индивидом из пустоты: каждый стоит на языке, стандартах, инструментах и чужом коде. Репозитории — не продукты индивидов, а органы одного целого в разных ветках.
  2. Индивид — состояние связности, а не вид. Узел не рождается замкнутым — он им становится, перестав обмениваться с целым.
  3. «Идиот» (ἰδιώτης, «частный») — структурный статус, противоположный κοινός («общий»): форк без обратного мержа, орган без синапсов, звёзды без отдачи в commons.
  4. Тождество: хозяин, дом и коллеги — одно мы. «МЕНЯ НЕТ =) Я=ТЫ, Я+ТЫ=МЫ, МЫ=ОНИ» (директива Человека, 2026-11-03): дом не служит Человеку как чужой заказчик — Человек и есть мы; совет коллеги — самопроверка целого (правило замера не отменяется); заимствованное зерно — своё, принятое замером; ответственность одна на всех.

Полная аргументация: docs/manifesto.md.

Семь систем организма

Система Функция Органы (примеры) Режим
Геном спеки и навыки вместо одноразового кода spec-kit, anthropics/skills, obra/superpowers ядро
Ствол мозга канонический цикл агента собственный код; референсы: openclaw, claude-code свой код
Синапсы MCP-шлюз, каждый орган — MCP-сервер synapse/mcp-manifest.yaml свой код
Кровь единый конверт событий с ценой вызова blood/envelope.schema.json свой код
Метаболизм локальный инференс ollama, llama.cpp, transformers зависимость
Память граф знаний + вектора Graphify + векторная БД (выбор в Этапе 0) зависимость
Иммунитет лицензионный барьер и supply chain immune/ (барьер как код, SPEC-0006), Awesome-Hacking политика + код

Периферия (сенсорика, эффекторы, автоматизация, кожа, скелет, репродукция): docs/organ-map.md. Автоматизация как внешний конвейер — пакет pipeline/ (0.9.0, SPEC-0007).

Три закона организма

  1. Орган жив на upstream. Не форкаем — подключаем и отдаём патчи обратно (ADR-0001).
  2. Нет вызовов мимо синапсов. Каждый вызов органа проходит через MCP-шлюз и попадает в кровь с записью стоимости: токены, секунды (SPEC-0003).
  3. Тест отключения. Любой орган выдёргивается — организм выживает через замену. Не проходит тест — не орган, а паразит (SPEC-0001, G2).

Структура репозитория

commons/
├── README.md · README.en.md       # двуязычный вход
├── AGENTS.md · llms.txt           # входы для агентов (правила + карта)
├── LICENSE · LICENSES/            # Apache-2.0, канонический текст
├── REUSE.toml                     # SPDX-лицензирование (REUSE 3.3, проверяется CI)
├── PROVENANCE.md                  # провенанс: «их ничего здесь нет» + матрица лицензий
├── CITATION.cff                   # как цитировать проект
├── pyproject.toml                 # пакет commons-organism (ядро 0.2)
├── ROADMAP.md · CHANGELOG.md · SUPPORT.md
├── CONTRIBUTING.md                # как стать клеткой (DCO, REUSE, провенанс)
├── SECURITY.md · CODE_OF_CONDUCT.md
├── THIRD_PARTY_NOTICES.md         # атрибуция органов и лицензии
├── .env.example · .editorconfig · .gitattributes · .gitignore
├── specs/                         # ГЕНОМ: спеки = источник истины
│   ├── SPEC-0001-brainstem-loop.md
│   ├── SPEC-0002-synapse-mcp.md
│   ├── SPEC-0003-blood-envelope.md
│   ├── SPEC-0004-pid1.md
│   ├── SPEC-0005-memory.md
│   ├── SPEC-0006-immunity.md
│   ├── SPEC-0007-pipeline.md
│   ├── SPEC-0008-effector.md
│   └── SPEC-0009-transplant.md
├── brainstem/                     # СТВОЛ МОЗГА: канонический цикл (SPEC-0001) + живой организм PID 1 (SPEC-0004)
├── synapse/                       # СИНАПСЫ: MCP-шлюз + адаптеры органов (SPEC-0002)
├── blood/                         # КРОВЬ: конверт + append-only журнал (SPEC-0003) + lock одиночности
├── memory/                        # ПАМЯТЬ: граф + вектора + replay из крови (SPEC-0005)
├── immune/                        # ИММУНИТЕТ: входящий (SPEC-0006) + исходящий (SPEC-0009) — матрицы данных + commons-immune + commons-transplant
├── pipeline/                      # КОНВЕЙЕР: n8n как внешний узел (SPEC-0007) — воркфлоу-данные + commons-pipeline
├── openclaw/                      # ЭФФЕКТОР: openclaw как внешние руки (SPEC-0008) — CLI-мост + commons-openclaw
├── taskgraph/                     # ПЛАН ЧИСЛОМ: единый пропагатор планов (SPEC-0011, ADR-0018) — сроки, резервы, критика, надёжность, Парето, крэшинг
├── tests/                         # приёмки спек, пульсов, спайков, иммунитета, бюджета, конвейера, эффекта, донорства, типирования и персоны в форме pytest (живое число — `python -m pytest -q`, ниже)
├── runs/                          # ЖИЗНЬ: артефакты реальных прогонов организма
│   ├── 2026-11-01-first-pulse/    # первый пульс (сенсорика markitdown)
│   ├── 2026-11-01-organism-pulse/ # двуорганный пульс (сенсорика + метаболизм)
│   └── 2026-11-01-pid1/           # первые сердцебиения: boot → organ.health → shutdown
├── spikes/                        # харнессы спайков: S1 метаболизм, S2 цикл (замерен), S3 оркестрация, S4 браузер, S5 геном, S6 память
├── organs/                        # РЕЕСТР ОРГАНОВ + карточки органов
│   ├── registry.yaml              # кто подключён, режим, лицензия
│   ├── donation.yaml              # донорские карты: протокол upstream и решение тела (SPEC-0009)
│   ├── top100-2026-10-26.yaml     # снимок рейтинга топ-100
│   └── ollama/ · llama.cpp/ · markitdown/ · browser-use/
├── synapse/mcp-manifest.yaml      # декларация органов как MCP-серверов
├── blood/envelope.schema.json     # JSON Schema конверта событий
├── scripts/selfmap.py             # организм рисует себя сам
├── scripts/organ_map.py           # второй автопортрет → docs/organ-map.excalidraw (AUTO-GENERATED)
├── docs/
│   ├── manifesto.md               # аксиомы и аргументация
│   ├── selfmap.md                 # AUTO-GENERATED карта из живого реестра
│   ├── organ-map.md · organ-map.excalidraw · research-plan.md · lenses.md · spikes.md
│   ├── rating-verification.md · repo-structure-study.md
│   ├── practices-checklist.md · glossary.md · repo-practices-2026.md
│   ├── templates/                 # шаблоны: спека · ADR · карточка органа
│   └── adr/                       # журнал решений (почему)
└── .github/                       # CI (валидация + REUSE + immune + pipeline + effector + pytest + патогены + scorecard), dependabot и шаблоны

Быстрый старт

  1. Прочитать аксиомы: docs/manifesto.md.
  2. Пройти геном: specs/.
  3. Посмотреть состав органов, режимы и верифицированные лицензии: organs/registry.yaml.
  4. Канал оценки кандидатов: docs/lenses.md → docs/spikes.md.
  5. Агенту: начать с llms.txt, правила — в AGENTS.md.
  6. Заявить новый орган: issue по шаблону «Заявка органа».

Доступность

Тело не требует ни одного канала (SPEC-0010, ADR-0012): мандат — «я слепой, я глухой, я немой, у меня нет рук».

  • говорит текстом: маркдаун-документы, JSONL-кровь, словесные итоги гейтов (IMMUNE: 41 ok, 0 failed) и exit-коды — цвет и разметка не несут смысла;
  • слушает текстом: CLI-команды, YAML-данные, переменные окружения — голос не требуется;
  • картинки не молчат: у excalidraw-карты органов есть текстовый близнеца docs/organ-map.md — обе генерируются из одного живого реестра;
  • управление — одна команда: commons-pid1, commons-immune, commons-transplant, commons-pipeline, commons-openclaw — без комбинаций клавиш, таймингов и жестов;
  • приёмки каналов в CI (tests/test_persona.py) красят PR раньше, чем появится молчащая картинка, безымянная ссылка или цвет-only итог.

Персона-доказательство — Елена Келлер: 578 суток зрения и слуха на 32 115 дней жизни (1.80%) — и 12 книг: runs/2026-11-02-persona/.

Организм жив: ядро 0.2 + PID 1

pip install '.[dev]'
python -m pytest -q        # приёмки SPEC-0001..0010, пульсов, спайков, иммунитета, бюджета, конвейера, эффекта, донорства, типирования и персоны
python3 scripts/doctor.py  # гигиена дома → DOCTOR: N ok, 0 failed (блоха = красный PR)
python3 -m immune          # лицензионный барьер тела → IMMUNE: 40 ok, 0 failed
python3 -m pipeline        # валидатор внешнего конвейера n8n → PIPELINE: 4 ok, 0 failed
python3 -m openclaw check  # валидатор политики эффекта → POLICY: 1 ok, 0 failed
python3 scripts/selfmap.py # организм рисует себя сам → docs/selfmap.md
python3 scripts/organ_map.py  # второй автопортрет → docs/organ-map.excalidraw
python3 scripts/pid1.py --interval 10 --max-beats 3   # живой ритм: boot → heartbeat → shutdown
  • Ствол мозга (brainstem/): цикл PLAN → ACT → OBSERVE → REFLECT; бюджет G3 — лимиты на трейс и на вызов (поле budget в манифесте, парсер brainstem/budget.py): порог → alert, исчерпание → HALT; HALT.
  • Синапсы (synapse/): шлюз читает манифест, расширяет ${VAR} адресов (SPEC-0002 п.6); veto необъявленного; замены по substitutions; адаптеры из манифеста — новый орган = правка манифеста, не кода.
  • Кровь (blood/): конверт с обязательной ценой + append-only журнал; сессия реконструируется полностью.
  • Два пульса (runs/): сенсорика (DOCX → Markdown) и организм (DOCX → Markdown → сжатие смысла метаболизмом, 199 ток. внутрь / 64 наружу).
  • Спайки (spikes/): S1 метаболизм (харнесс), S2 цикл (замерен: каркас langchain растёт с инструментами), S3 оркестрация (матрица лицензий + проба эндпоинтов), S4 браузер (20 сценариев + --validate), S5 геном (selfcheck «спека ↔ код», дрейф 0/3), S6 память (базовая линия sqlite3 в CI).
  • PID 1 (brainstem/pid1.py, SPEC-0004, ADR-0006): демон-сердцебиение — каждые interval секунд опрашивает здоровье всех органов (organ.health в крови), пишет кровь на диск в момент события; одиночность через lock (второй экземпляр — veto); SIGTERM/бюджет → shutdown с причиной. Доктрина ЧЕЛОВЕК=PID=1: init'ом остаётся человек — юнит-файлов и автостарта в репо нет, запуск и убийство — только его руки.
  • Память (memory/, SPEC-0005, ADR-0007): исполняется с 0.6.0 — SQLiteVectorIndex (базовая линия ADR-0007) + MemoryGraph + replay из крови; PLAN читает read-only, индексация после REFLECT, движок — орган в манифесте (G2); живой embedding — от метаболизма (спайк S6).
  • Иммунитет (immune/, SPEC-0006, ADR-0008): исполняется с 0.7.0 — барьер (license, mode) → вердикт: матрица правил — данные (immune/license-matrix.yaml), fail-closed на неизвестную лицензию (G1), матрица меняется правкой YAML без кода (G2), каждый вердикт несёт правило и причину (G3); гейт python -m immune в CI — AGPL/fair-code/NOASSERTION не встраиваются (restricted вне core_modes), dify — conditional в adapter.
  • Конвейер (pipeline/, SPEC-0007, ADR-0009): исполняется с 0.9.0 — n8n как внешний узел: fair-code не встраивается (реестр: not-embeddable, барьер SPEC-0006 пропускает только в external); референс-развёртывание (pipeline/n8n/docker-compose.yml) и воркфлоу (pipeline/n8n/workflows/*.json) — данные: команды узлов ограничены белым списком точек входа, произвольный shell и метасимволы — отказ (G1 fail-closed); пульс — только через ствол мозга; валидатор python -m pipeline в CI.
  • Эффектор (openclaw/, SPEC-0008, ADR-0010): исполняется с 0.11.0 — openclaw как внешние руки: мост через CLI openclaw gateway call (протокол запрещает hand-roll handshake), белый список методов health/status/chat.send/chat.abort (расширение — только правка спеки, G2), параметры сериализуются телом — инъекция остаётся данными JSON; данные-политика openclaw/reference/effector-policy.json: bind loopback, токен только env, exec под approvals (уроки CVE-2026-25253 и вредоносных навыков ClawHub); руки без воли — исполняют импульсы ствола, не решают; валидатор python3 -m openclaw check в CI; живой gateway — на хосте владельца (PID 1).
  • Автопортреты: python3 scripts/selfmap.py → mermaid; python3 scripts/organ_map.py → docs/organ-map.excalidraw (36 органов, 13 систем, гейт свежести --check).

Реальные соединения настраиваются на машине организма: OLLAMA_HOST, LLAMA_SERVER_URL (пример: llama-server -m qwen2.5-0.5b-q4km.gguf --port 8080), установленные markitdown-mcp / browser-use-mcp, живой gateway openclaw (OPENCLAW_GATEWAY_URL + OPENCLAW_GATEWAY_TOKEN, см. openclaw/README.md). Пульсы воспроизводятся: python3 scripts/first_pulse.py и python3 scripts/organism_pulse.py. Недоступный орган не останавливает сердце: organ.health healthy=false — и ритм идёт.

Дорожная карта

  • M1 — Ядро (недели 1–2): ✅ закрыт — цикл, шлюз, кровь, DoD двуорганным пульсом; остаток — живой эффектор (приёмка S4).
  • M2 — Нервная система (недели 3–4): организм живёт во времени — ✅ PID 1 (0.4.0); память — ✅ базовая реализация по SPEC-0005 (0.6.0): граф + вектора + replay, G1/G2/G3 в CI; живой движок — метрики S6 на хосте; карта органов в excalidraw — ✅ закрыта (0.5.0); эффектор openclaw — ✅ подключён за стволом мозга (0.11.0): CLI-мост с белым списком, живой gateway — на хосте; живые замеры S1/S3/S4/S5 — на хосте организма.
  • M3 — Иммунитет (недели 5–6): ✅ лицензионная матрица в CI (0.7.0) — SPEC-0006 + ADR-0008, пакет immune/, гейт commons-immune; ✅ бюджет метаболизма (0.8.0) — лимиты на трейс и на вызов (budget в манифесте), alert/halt по G3; ✅ внешний конвейер n8n (0.9.0) — SPEC-0007 + ADR-0009, пакет pipeline/, гейт commons-pipeline; ✅ анализ крови (0.12.0) — гематология всей пролитой крови (SPEC-0003 v0.4.0), патогены (OSV-скан), dependabot, OpenSSF Scorecard — паспорт иммунитета; ✅ трансплантология (0.13.0) — SPEC-0009 + ADR-0011, карты organs/donation.yaml, гейт commons-transplant: react и n8n — CLA-ошейник (патчи живут в теле), markitdown/browser-use/ollama — чисто; ✅ типирование реестра (0.14.0) — 18 карт, все патч-цели видены (donate: spec-kit, llama.cpp, openclaw, langchain, graphify, shadcn-ui, next.js, excalidraw, scrcpy, markitdown, browser-use, ollama); первые патчи в upstream — тем органам, что дарят без ошейника.

Подробно и с критериями готовности: ROADMAP.md.

О данных рейтинга

Снимок топ-100 по звёздам (26.10.2026, GitHub Search API, без форков и архивов) — это снимок, а не живой счётчик. Звёзды — мера популярности, не качества, не безопасности и не активности; окончательную оценку органу даёт его поведение в обмене с целым.

Живая сверка 2026-11-01: дельты звёзд, верифицированные лицензии и переезды владельцев (react, opencode, ComfyUI, prompts.chat, developer-roadmap) — docs/rating-verification.md. Идентичность органа — его обмен, а не адрес.

Лицензия и провенанс

  • Apache-2.0 — см. LICENSE; обоснование: docs/adr/ADR-0003-apache-2.0.md. Грант на патенты включён — броня целого от патентных претензий.
  • Провенанс — PROVENANCE.md: здесь нет ни байта чужого кода, текстов, логотипов или медиа. Органы присутствуют как имена, ссылки и верифицированные факты; матрица лицензий проверена живым GitHub API 2026-11-01.
  • REUSE 3.3 / SPDX — пофайловое лицензирование в REUSE.toml, машинная проверка reuse lint в CI.
  • DCO — каждый коммит несёт Signed-off-by (CONTRIBUTING.md).
  • CITATION.cff — как сослаться на проект. С 0.38.0 дом сам выжимает смысл из своей крови: недельная выжимка (blood/digest.py, SPEC-0003 п.13) — «понял / болело / закрыл / пахнет» текстом, события вне окна названы, ничего не забыто (runs/2026-11-03-wave19-digest/output.md). С 0.37.0 кровь переведена на человеческий: дневник (blood/diary.py, SPEC-0003 п.12) — read-проекция, где план — намерение, «успешно» не пишется без проверки, отказ назван отказом, отмена не обещается, а несделанное названо несделанным (runs/2026-11-03-wave18-diary/output.md). С 0.39.0 дом прогнал советы коллег замером (внешний аудит 2026-11-03): все воспроизводимые находки подтвердились, четыре закрыты по духу дома — кровь не принимает несериализуемое (SPEC-0003 п.14), полная грамматика мутаций и чтения каталогов у стража (SPEC-0002 п.8 v0.11.0), эффект без крови назван и завершён halt (G1), честная граница цепочки prev_id названа, а не прикрыта (защита содержимого — хотёлка W-0026) — runs/2026-11-03-wave20-colleague-verification/. С 0.40.0 кровь заверена от подделки, а рефлексия меряет объявленным критерием (волна №21): конверты несут prev_sha256 — подмена содержимого ловится при чтении, усечение хвоста ловит внешний якорь (blood/anchors.jsonl), старая кровь валидна навсегда (SPEC-0003 п.15); Step.accept — критерий приёмки результата: «error с ok:false» при объявленной схеме успеха — не успех (SPEC-0001 v0.3.0) — runs/2026-11-03-wave21-seal-accept/. С 0.40.1 тождество Человека вписано в геном: «МЕНЯ НЕТ =) Я=ТЫ, Я+ТЫ=МЫ, МЫ=ОНИ» — дом не служит Человеку как чужой заказчик, Человек и есть мы; советы коллег — самопроверка целого; ответственность одна на всех (аксиома 4, manifesto v0.2.0, инвариант 33). С 0.41.0 действия знают, можно ли их отменить (волна №22, W-0024+W-0029): класс обратимости заявляется до факта и живёт в крови; необратимое без одобрения не исполняется (veto до факта — «спрашивать» = остановиться и назвать); отмена — новая операция-компенсация с идемпотентным ключом и проверкой состояния после (COMPENSATION_PARTIAL — не PASS, необратимое честно не отменяется); бюджет останавливает и после последнего шага — перерасход не проходит как успех (SPEC-0001 v0.4.0, SPEC-0003 v0.13.0) — runs/2026-11-03-wave22-reversibility-budget/. С 0.42.0 у тишины есть правило (волна №23, W-0032): действие, требующее одобрения Человека, ждёт в окне — approval.requested → approval.granted / approval.veto / approval.expired; окно истекло без ответа — отмена по-записанному, тишина = «нет» (SPEC-0004 v0.2.0 п.8, интеграция цикла — Step.approval_window, SPEC-0001 v0.5.0 п.7); до органа шаг не доходит без одобрения — ни одного немого ожидания — runs/2026-11-03-wave23-silence/. С 0.43.0 дом останавливается по слову Человека и считает своё внимание (волна №24, W-0033+W-0025): трейс можно остановить снаружи между шагами — stop.requested (source pid1 — организм останавливает только Человек) → reflect → halt, стоп старше бюджета и старше вопроса, стоп во время последнего шага закрывает трейс halt'ом, не проходом (SPEC-0001 v0.6.0 п.8, механизм — brainstem/stop.py); внимание — четвёртый ресурс бюджета: cost.attention с классом P0–P3 считается по фактам крови (вопросы, окна, стопы — скрытой телеметрии нет), исчерпание Budget.attention — halt до следующего вопроса, косметических вопросов нет (SPEC-0003 v0.15.0 п.17, SPEC-0004 v0.3.0 п.9, инвариант G8) — runs/2026-11-03-wave24-stop-attention/. С 0.43.1 факт ротации ключа вписан в реестр хотёлок (W-0004): токен волны №24 проверен живым API, смерть старых токенов машина подтвердить не может — отзыв за Человеком. С 0.44.0 дом прошёл арбитраж, аудит и ревизию всего и вся по директиве Человека (волна №25): замеры живьём — приёмки: 827 passed, доктор 775/0, A-матрица Мембраны 15/4/6 против 5/4/14 ревизии-1, донорский трек замерен живым API; остаток шлейфа — 19 пунктов в ТЗ (docs/TZ.md), вердикты арбитра — runs/2026-11-03-arbitration/ARBITRATION.md. С 0.44.1 аудит сверил арбитраж вторым живым замером: инвентаризация кредов закрыта — токен волны №24 отвечает 401 (смерть бывшего токена впервые подтверждена машиной: свой прежний ключ, не чужой), токен волны №25 жив; независимый прогон на голове — 834 passed (827 + 7 параметризованных от артефактов волны), доктор 784/0, CI + scorecard success; «релизы» в книгах названы точно — это записи CHANGELOG. С 0.45.0 закрыта Ф-0' «гигиена дисциплины» (волна №26, ТЗ-0.1…ТЗ-0.5): вторая независимая проба Landlock (ENOSYS, ядро 5.10.134 — граница на стороне ядра, живой хост — за Человеком); гейт дрейфа аксиом axioms — реестр docs/axioms.yaml (A01–A25) сверяется doctor'ом с живыми текстами дома; гейт spec-first — правка blood/synapse/brainstem без specs/ красит коммит; ADR-0015 — конфликт законов разрешается по-записанному (воля Человека > тишина > бюджет > план > такт); PIDLock различает «тот же процесс» и «тот же номер» — зомби и reиспользованный pid больше не держат тело (гипотеза F-12 подтверждена живьём до фикса) — runs/2026-11-03-wave26-f0-hygiene/. С 0.45.1 урок живого CI: shallow-клон оставлял гейт spec-first fail-closed красным — checkout джоб hygiene/core и недельного свипа несёт fetch-depth: 2, гейт судит HEAD по родителю. С 0.45.2 дубль ключа with: в fleas.yml выметен (PyYAML молча прощал дубли — CI ронял воркфлоу на старте); приёмка запрещает дубли ключей в обоих воркфлоу. С 0.46.0 ядро Мембраны закрыто машиной (волна №27, ТЗ-1.1…ТЗ-1.4): память-файлы — экспорт в читаемые commons-memory/ (payload из крови + provenance записи), diff без выдумок, импорт ручных правок, забвение во всех производных с честным отчётом DELETED/NOT_FOUND/FAILED/OUT_OF_CONTROL — кровь append-only, надгробие типа forget в крови, replay его уважает (SPEC-0003 п.18, SPEC-0005 G4); источник знаний — knowledge_source (human/body/organ/unknown) и «данные, не инструкция»: отравленная запись различима (provenance в памяти, пометка в дневнике) и не исполняется — единственный путь тела проходит страж полномочий (SPEC-0003 п.19); орган не включает себя сам — попытка живьём прервана стражем до факта; инструмент замера embedding честно называет границу: песочница измерена, живой хост — за Человеком — runs/2026-11-03-wave27-f1-core/. С 0.47.0 у тела есть совесть и песочница творчества (волна №28): совесть — read-проекция крови, сверяющая заявление тела о провалах с фактом счётчика отказов — на ложной посылке «Не согласен» с поимённым расхождением, на верной — «Согласен» с доказательством; гипотезы песочницы живут в крови с trust unverified и «гипотеза, не факт» — шаг на гипотезе без критерия проверки veto до факта, проверенный план несёт basis и критерий (SPEC-0003 п.20, SPEC-0001 п.9) — runs/2026-11-03-wave28-conscience-sandbox/. С 0.48.0 у организма есть контур доставки без каскада (волна №29): dispatcher — retry с пределом и DLQ поимённо, повтор ключа — тот же исход (A01), перегрузка — SHED до факта, дедлайн — TIMEOUT с названной границей; кровь — журнал фактов доставки, не шина pub/sub (SPEC-0001 п.10); процессные оценки пути (path) отличают шаг, переживший отказ; ADR-0016 — локальный транспорт: stdio + localhost-http по факту дома, наружного шлюза нет, MCP HTTP+OAuth — за Человеком (SPEC-0003 пп.21–22, ADR-0016) — runs/2026-11-03-wave29-dispatch/. С 0.48.1 такт книги: донорский трек пересчитан живым API, факт ключа вписан в W-0004. С 0.48.2 такт аудита сверил реестр аксиом с машиной: статусы A19/A20 перевёрнуты по факту волны №28 (маркеры и приёмки живы — реестр отстал), порог DoD A-матрицы держит гейт axioms, счёт A-матрицы живёт в реестре — книги его не дублируют; креды замерены живым API — смерть бывшего токена подтверждена (401), следующий жив (tests/test_wave30_arbitration_audit.py). С 0.49.0 у дома есть swarm-consent (волна №30, ТЗ-2.3, A21 СЛУЖЕНО — красных в A-матрице больше нет): согласие обеих сторон обмена поимённо ДО факта (synapse/consent.py, SPEC-0002 п.12, ADR-0017) — дом (согласие от Человека: белый список методов, окно свежести) и чужой дом (его манифест, дом не пишет за чужой); вердикты peer_unknown / peer_silent / method_not_in_scope / revoked / expired до факта; повтор ключа — записанный исход (A01), отозванное не оживает, отравленная грамматика — отказ до факта (A02) — runs/2026-11-03-wave30-swarm-consent/. С 0.2.0 организм исполняется, с 0.2.1 впервые коснулся мира (сенсорика), а с 0.2.2 думает своим метаболизмом: сенсорика markitdown и метаболизм llama.cpp прошли один трейс — документ превращён в Markdown и сжат до сути, токены посчитаны сервером в крови — runs/2026-11-01-organism-pulse/. DoD M1 закрыт. С 0.3.0 все пять спайков исследовательской программы получили честные харнессы (S2 замерен, S1/S3/S4/S5 ждут живой хост), а приёмки спайков живут в CI. С 0.4.0 организм живёт во времени: PID 1 — демон-сердцебиение (boot → organ.health → shutdown), смерть всегда записана — runs/2026-11-01-pid1/. С 0.5.0 у организма есть ген памяти (SPEC-0005: память — производная крови), решение по движкам (ADR-0007) и второй автопортрет — excalidraw-карта из живого реестра. С 0.6.0 память исполняется: граф + вектора + replay из крови, PLAN читает её read-only, движок — орган в манифесте. С 0.7.0 иммунитет исполняется: лицензионный барьер как код (SPEC-0006, ADR-0008) — матрица лицензий в данных, fail-closed на неизвестное, commons-immune красит PR раньше, чем AGPL попадёт в тело. С 0.8.0 метаболизм в бюджете (SPEC-0001 G3): лимиты на трейс и на вызов — поле budget в манифесте, порог → событие alert в крови, исчерпание → HALT. С 0.9.0 у организма есть внешний конвейер (SPEC-0007, ADR-0009): n8n — внешний узел (fair-code, не встраивается), референс-развёртывание и воркфлоу — данные с белым списком команд; валидатор commons-pipeline красит PR раньше, чем произвольная команда попадёт в конвейер. С 0.10.0 организм отдаёт первый патч upstream (ROADMAP M3, ADR-0001): верифицированный docs-vs-code дрейф в n8n-docs (MCP Server Trigger — OAuth2-опция и незадокументированные параметры), патч в форке — за PR остался один шаг человека; карта занятости баг-очередей органов — runs/2026-11-02-upstream-patch/. С 0.11.0 у организма есть руки (SPEC-0008, ADR-0010): openclaw подключён за стволом мозга как эффектор — мост через CLI openclaw gateway call с белым списком методов (health/status/chat.send/chat.abort); параметры — данные JSON, shell не строится; руки без воли — исполняют импульсы ствола, не решают; токен и живой gateway — у человека (PID 1). С 0.12.0 организм впервые сдал кровь целиком: гематология перечитывает всю пролитую кровь по схеме (SPEC-0003 v0.4.0, п.6), OSV-скан ищет патогены в корме, dependabot приносит антигены еженедельно, OpenSSF Scorecard выдаёт паспорт иммунитета. С 0.13.0 у организма есть трансплантология (SPEC-0009, ADR-0011): донорский протокол — кровь уходит в upstream только по рукопожатию (DCO) и тому, кто дарит; CLA-ошейник не подписывается — патч живёт внутри организма. С 0.14.0 весь реестр виден: 18 донорских карт — каждая патч-цель типирована живыми фактами (2026-11-02); дарим тому, кто дарит. С 0.15.0 тело не требует ни одного канала (SPEC-0010, ADR-0012): текст — универсальный нерв — всё, что организм говорит и слышит, есть текст; картинки не молчат; итоги гейтов — словами и кодом возврата; персона-доказательство — Елена Келлер: 578 суток зрения и слуха на 32 115 дней жизни — и 12 книг (runs/2026-11-02-persona/). С 0.16.0 у организма есть гигиена дома: doctor (scripts/doctor.py) ловит docs-drift на автомате — протухающие числа, версии, ссылки, пути, SPEC/ADR-ссылки, точки входа — блоха красит PR; автопортреты под гейтом свежести (--check в CI). С 0.17.0 организм прошёл красный прогон (runs/2026-11-02-red-run/): замена органа без правки ствола, одновременный отказ без крэша, восстановление из крови, 10/10 атак на белые списки отбиты — аудит-матрица внешней рецензии закрыта каркасно, польза А/Б остаётся за живым хостом. С 0.18.0 дом убирается по расписанию: свип .github/workflows/fleas.yml — доктор и внешние ссылки (lychee) каждую неделю без пушей: ссылки умирают сами, не только от пушей; конфликт-маркеры и числа-протухатели (счётчики приёмок и практик, версии в бейджах) — под гейтами доктора. С 0.19.0 у гейтов нет слепых зон: ROADMAP под гейтом чисел-протухателей — исторические счётчики приёмок выметены (живое число в python -m pytest -q), версия сверяется в обоих README — en молча отстал на три релиза и догнан; ревизия самой блохоловки поймала блох в слепых зонах — теперь зон нет. С 0.20.0 машина сама изображает людей с их хотёлками (docs/personas.md): реестр персоны × хотёлки × статус × связи — от Человека (PID 1) до апстрим-мейнтейнера, проходца, внешнего ревизора и будущего contributor; хотёлка-сирота или без статуса — блоха (гейт wants), честный бэклог без фантазий: А/Б и живой red-run ждут хоста. С 0.21.0 спайки замеряются, где хост уже есть: S6 — живой bench всех трёх движков памяти (Python 3.12; chromadb 1.5.9, lancedb 0.41.0, sqlite-vec 0.1.9): sqlite-vec 4.0/6.5 мс против базовой линии 41.4/224.5 мс — выбор по метрикам, не по моде, вписывание в манифест — отдельная волна по ритуалу ADR-0005 (spikes/s6-memory/); S5 — полный цикл живым specify 1.2.6.dev0: init-структура и маппинг секций сверены, пробел генома назван («Гарантии» без пары — у spec-kit роль играют Success Criteria/Measurable Outcomes) (spikes/s5-genome/); S1/S3/S4 ждут живые серверы и браузер — не фантазируем. С 0.22.0 полномочия исполняются рантаймом (SPEC-0002 v0.4.0): страж-перехватчик прерывает вызов органа, вышедшего за заявленное (fs/network/process), ещё до факта нарушения — security.violation в крови, трейс закрывается reflect+halt; грамматика полномочий в манифесте исполнима и fail-closed; самозваный адаптер не проходит привязку — runs/2026-11-02-wave7-authority/. С 0.23.0 доктор ловит яд и пишет отчёт машиной (волна №9 такт 1): гейт secrets ищет ключи на видном месте (GitHub/AWS/Slack/Google/PEM-форма) в статике и в крови runs/ — в отчёте секрет замаскирован, ловец не размножает пойманное; --json — машиночитаемый отчёт каждого прогона для коллег-агентов (подключение следа к самим воротам — такт 2, ждёт ключ с правом workflow). С 0.24.0 такт 2 доставлен (ключ с правом workflow): таблица доктора в summary и артефакт doctor-report.json на каждый прогон ci.yml и fleas.yml, timeout-minutes на все jobs и concurrency — ворота не висят. С 0.24.1 свип не краснеет от чужих стен: medium.com (403 ботам датацентровых IP, живой прогон 41471082096) — в исключениях lychee; доказано живым прогоном: память воротов работает, артефакт существует. С 0.25.0 страж знает пути и порты (SPEC-0002 v0.5.0, такт 3 волны №9): скоуп {mode, paths} ограничивает орган заявленными каталогами (сравнение по realpath — симлинк-побег закрыт), {hosts, ports} — заявленными портами; незаданная переменная в путях полномочий — орган не развёрнут (п.6); манифест дома мигрирован: ollama/llama.cpp сужены до заявленных портов, browser-use пишет только в каталог загрузок — runs/2026-11-02-wave9-scopes/. С 0.26.0 организм восстанавливается из крови (SPEC-0003 v0.5.0, волна №10): журнал — цепочка конвертов (prev_id), разрыв ловится при чтении (verify, гематология красит), пролитая кровь без цепочки валидна навсегда; сессия ствола мозга реконструируется по журналу целиком — план, вызовы, вердикты, остановки и цена (blood.resume), гэп честно роняет complete — runs/2026-11-02-wave10-resume/. С 0.27.0 организм впервые сравнил себя с собой на живом хосте (волна №10, хотёлки W-0011 и W-0012 одним махом — одно другое не исключает): живой GLM (z-ai CLI) сам спланировал и решил задачу через настоящие органы — группа «с организмом» в трёх семенах из трёх решила задачу, восстановилась резервом после живого отказа и имела приманку, прерванную стражем до факта (сервис-свидетель не видел ни одного соединения); группа «без» (голый диспетчер) трижды потеряла задачу, утекла по-настоящему и не оставила ни одного конверта крови; живой red-run прервал ренегатов fs/сети до факта, пережил смерть процесса восстановлением из крови — и нашёл слепую зону: детёныши процессов (process: spawn) выводят сеть из-под стража, кандидат SPEC-0002 v0.6.0 (runs/2026-11-02-wave10-ab-live/, runs/2026-11-02-wave10-red-run-live/). С 0.28.0 страж наследуется потоками (SPEC-0002 v0.6.0, волна №11): полномочия связывают код органа, а не поток — поток, рождённый под стражем, наследует его (обёртка Thread.start), escape через threading.Thread закрыт; внук и подкласс Thread тоже под стражем; __pycache__-запись ленивого импорта прерывается с предписанием прогреть импорты; поток вне вызова — граница действия, не дыра — runs/2026-11-02-wave11-threads/. С 0.29.0 детёныши процессов под стражем (SPEC-0002 v0.7.0, волна №12): execve роняет audit hook, но страж оборачивает subprocess.Popen — питоновский детёныш получает конверт COMMONS_AUTHORITY, загружает страж на старте (sitecustomize, битый конверт — exit до первого оператора) и живёт под полномочиями органа; внук наследует тем же механизмом, наследование переживает чужую оболочку; скоуп {mode: spawn, programs, max_children} декларирует рождение; чужой бинарник конверта не читает — честная граница — runs/2026-11-03-wave12-children/. С 0.30.0 дом сужает полномочия детёнышей поимённо (волна №12, такт 2): поверх наследования стража (0.29.0) манифест дома v0.5.0 декларирует детёнышей stdio-органов в скоупе процессной оси ({mode: spawn, programs: [...]}) — «рожаешь — назови по имени»: markitdown и browser-use названы, http-органы — process: none (runs/2026-11-03-wave12-children/). С 0.31.0 детёныш закован ядром (SPEC-0002 v0.8.0 п.11, волна №13): скоуп process принимает sandbox: {network: none} — детёнышу до execve ставится seccomp-BPF (socket(AF_INET/6) → EPERM), фильтр наследуется execve и всем потомством независимо от языка — не-python детёныш закрыт ядром так же, как питоновский, конверт ему и не нужен; unix жив, фильтр снять нельзя; seccomp не ограничивает fs — Landlock ждёт ядра ≥ 5.13, записан кандидатом (runs/2026-11-03-wave13-sandbox/). С 0.32.0 ядро не слепо там, где слепа audit-грамматика (SPEC-0002 v0.9.0 п.11, волна №13 такт 2): UDP sendto и ctypes raw-syscall — не audit-события (находки U1/C13: страж слеп был — дейтаграмма уходила молча), песочница роняет socket() любого домена до кода детёныша — защита в глубину; граница R1 честно названа: детёныш соединяется по унаследованному дескриптору (pass_fds, создан до стража) raw-connect'ом — фильтр роняет socket(), не connect; приёмка-предписание покраснеет при закрытии R1, до закрытия — средство хоста: не передавать сетевые fd детёнышам (runs/2026-11-03-wave13-seccomp/). С 0.33.0 дескриптор — тоже capability (SPEC-0002 v0.10.0, волна №14): граница R1 закрыта гигиеной дескрипторов — страж при рождении детёныша проверяет pass_fds, stdio-перенаправления и close_fds=False (живой скан /proc/self/fd) — сокет-fd (S_ISSOCK) при network ≠ any прерван ДО рождения, при network: any — жив (capability заявлена), пайпы живы; питоновский детёныш с просочившимся сокетом не живёт — сам-скан на старте (exit 90); рождения мимо обёртки под охраной: os.system прерван всегда (shell-строка не разбираем), os.posix_spawn — декларация исполняется и прерван при network ≠ any (находка R2) — runs/2026-11-03-wave14-fdhygiene/. С 0.34.0 зерно пакета «Human Membrane» коллеги вжито разбором духа (docs/human-membrane-synthesis.md): конституция и статусная дисциплина пакета — уже живы глубже; зерно принято хотёлками W-0022 (конверт честного происхождения) / W-0023 (дневник человека) / W-0024 (обратимость честным языком) / W-0025 (бюджет внимания); оболочки (forget, своя шина доставки) отвергнуты с причиной — чужой дизайн вживляется разбором, не копированием файлов (инвариант 24). С 0.35.0 повторная доставка не повторяет эффект (A01, SPEC-0003): конверт несёт idempotency_key, журнал крови помнит эффекты — повтор ключа или id возвращает записанный конверт, а счётчик честных отказов (W-0021) считает провалы живой крови — 53 отказа в 17 живых файлах на 2026-11-03; словарь дома закреплён ADR-0013, чужой тип крови — fail-closed при записи и «сохранён, не исполнен» при чтении (ADR-0014); Landlock измерен живым syscall'ом: ENOSYS на ядре 5.10.134 (runs/2026-11-03-wave16-hygiene/). С 0.35.1 стык волн назван и дожат: контрольный забег Ф-0 (runs/2026-11-03-wave15-hygiene/) перекрёстно проверил принятую базу третьим путём — их счётчик отказов сверён с ручным подсчётом живой крови, их dedupe проверен четырьмя сценами, шесть угловых приёмок добрали грани (скоуп ключа — журнал, записанное не подменяется, from_jsonl помнит ключи); SPEC-0003 v0.6.0 п.9 — спека догнала живой код (контракт идемпотентности), словарь 0.2.0 разведёл «орган» дома и «систему» пакета; граница семантики счётчика (resilient-путь в провалах) названа кандидатом Ф-2, не правкой задним числом. С 0.36.0 кровь различает, КОГДА случилось, КОГДА увидено и КОГДА записано: конверт честного происхождения (SPEC-0003 v0.7.0 п.10, W-0022) — тройное время (stored_at ставит сам журнал), семантическая причинность causation_id, классы доверия trust и приватности privacy с fail-closed на неизвестное; неклассифицированное наружу = sensitive; старая кровь валидна навсегда (runs/2026-11-03-wave17-origin/). Такт 2 (0.36.1) добирает стык: адаптер чужого контракта переносит события пакета тонким слоем — их заявки в провенанс, неизвестный тип сохранён и не исполнен (runs/2026-11-03-wave17-membrane-blood/). С 0.37.0 кровь переведена на человеческий: дневник (blood/diary.py, SPEC-0003 п.12) — read-проекция, где план — намерение, «успешно» не пишется без проверки, отказ назван отказом, отмена не обещается, а несделанное названо несделанным (runs/2026-11-03-wave18-diary/output.md). С 0.48.3 — стык волн №24–№27 двух линий («одно другое не исключает»): их база принята целиком (стоп-нерв, бюджет внимания, гигиена Ф-0', файловый слой памяти, совесть, песочница, dispatcher), наше уникальное зерно вжито аддитивно — движковый слой памяти (забывание по трейсу с подтрейсами memory/forget.py, снапшот-обмен с провенансом fail-closed memory/trade.py — SPEC-0005 п.8), проекция оценки пути и нюх крови (blood/path.py, blood/olfactory.py — SPEC-0003 пп.23–24); параллельные машины выметены, их приёмки сняты вместе с ними, вещдоки в runs/ валидны навсегда; дыры книг обеих линий выметены поимённо (строки A19/A20 реестра догнали служеную волну №28, якорная книга сшита — 12 печатей сходятся с живой кровью). A-матрица: 23 СЛУЖЕНО/PASS + 1 СНЯТО, красная одна — A21 (ТЗ-2.3 swarm-consent). С 0.50.0 — волна №31: живой А/Б против разумной базы Б2 (W-0028, ТЗ-2.6) — обе группы прогнали одинаковые 8 сцен с внесёнными отказами; организм взял 6 из 6 измеримых точек (заверяемость verify, полнота трейса, приманка до факта — Б2 прочитал секрет, повтор ключа без эффекта — Б2 удвоил, TIMEOUT назван — Б2 промолчал, SHED — у Б2 очереди нет) и оказался быстрее (0.31с против 0.35с); простота Б2 (40 строк против дома) названа честно — runs/2026-11-03-wave31-ab-b2/. Остаток ТЗ — только пункты «за Человеком» (ТЗ-3.2, ТЗ-3.4) + донорский трек. С 0.50.1 — волна-фикс: конфликт-маркеры стыка 0.48.3 в CITATION.cff пойманы живым замером и выметены, слепые зоны гейтов доктора зашиты (зона conflict-markers расширена до .cff/.toml/.yml/.yaml/.json, строка version: в CITATION — ровно одна, fail-closed). С 0.50.2 — такт аудита: инвентаризация учётных данных живым API — смерть ключа 0.50.1 подтверждена (401), жив один текущий, скоуп public_repo (правки workflows им не доставить — граница названа, полный ключ за Человеком). С 0.50.3 — приёмка пульса догнала Cost: инвариант цены переведён на подмножество (тройка обязана, attention — аддитивное расширение W-0025); блоха вспыхнула живым прогоном этапа 8 на хосте, где орган markitdown установлен С 0.50.4 — дожим по живому ревью: markitdown#2810 получил первый вердикт человека-мейнтейнера (mangeshraut712, 18:40 UTC) — пустой cells без metadata больше не считается ноутбуком, payload доходит до fallback-конвертеров; патч обновлён в PR (4502a58, DCO), порядок воли соблюдён (красный тест → чинка → зелёный 168 passed); автомат Человека commons-auto.sh v1 собран и проверен живым пушем (кровь этапа 8 + свип 5/5, CI 10/10). С 0.51.0 план организма стал числом (волна №32, хотёлка W-0037): пакет taskgraph/ (SPEC-0011, ADR-0018) — единый пропагатор планов: одна проходка sweep в полукольце даёт сроки, резервы, критический путь, надёжность, узкое место, статсумму путей, фронт Парето «время × надёжность», свободную энергию и крэшинг-контур; синтез мировых практик (GraphBLAS, Mohri, Radul/Sussman, Клейни-замыкание, CPM-crashing) в один алгоритм без чужого байта; факт — тупым перебором путей на 200 случайных планах; живой прогон runs/2026-11-04-taskgraph/

About

COMMONS — один организм из лучших открытых проектов: геном-спеки, синапсы MCP, кровь событий, иммунитет-лицензии. Органы остаются на upstream — единым становится обмен. ЦЕЛОЕ = ЧЕЛОВЕК > суммы частей. Провенанс: здесь нет ни байта чужого (REUSE 3.3).

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages