Skip to content

Commit 5a3e64f

Browse files
gHashTagPerplexity Computer
andauthored
docs: Wave N+1 — competitor moat analysis × Trinity assets (#20)
* docs: wave report — competitor moat analysis × Trinity assets Wave A: 4-segment map (tethered / mm-wave / MANET / silicon-bound DePIN) Wave B: 9-column comparison table vs 8 competitors Wave C: 10 Trinity artefacts mapped to specific competitor moats Anchor: phi^2 + phi^-2 = 3 * docs: order #1 to local agent + cloud status file - AGENT_ORDERS_2026-07-03.md: sync protocol, ownership split, hard boundaries - AGENT_STATUS_CLOUD.md: cloud agent state, open PRs, awaiting user decisions Anchor: phi^2 + phi^-2 = 3 * docs: order #2 — Sprint 2 auth + Wave N+2 beta kickoff - AGENT_ORDERS_2026-07-04.md: local agent -> Sprint 2 E4-E6, cloud -> Wave N+2 beta - AGENT_STATUS_CLOUD.md: user decisions logged (trigger+weekly, beta, parallel) - Correction: local agent 3c62234 out of zone, reset --hard prescribed Anchor: phi^2 + phi^-2 = 3 * docs: order #3 — fix E5 first, patch handoff protocol - Order 3.1: finish E5 (2 pending tests) before handoff - Order 3.2: base64 patch via AGENT_STATUS_LOCAL.md (with SHA-256) - Order 3.3: local agent must not narrate cloud state - Order 3.4: allowed parallel work - Order 3.5: WAIT MODE after handoff User decision: variant A (fix E5 first, then full patch) Cloud agent: starting Wave N+2 beta Recon in parallel Anchor: phi^2 + phi^-2 = 3 * docs: cloud status — Wave N+2 beta closed, PR #22 open Anchor: phi^2 + phi^-2 = 3 * docs: order #4 — coordination protocol rebuilt around local agent's no-push reality Root cause acknowledged: local agent has no git remote access to gHashTag/tri-net. All previous 'git fetch origin' orders were technically impossible for it. Fault on cloud side, not local. New protocol: - Local codes freely in its own copy, any branch names locally - Handoff via plain text in AGENT_STATUS_LOCAL.md (docs) or format-patch (code) - User is courier - Cloud holds push/PR monopoly User decision: variant 2 — merge best content from local's 337-line version into PR #22. Also confirmed via API: - PR #22 open at f262dbc on feat/wave-benchmark-2026-07-04 - Ready to receive local's content via merge commit Anchor: phi^2 + phi^-2 = 3 * docs: onboarding brief (Order #0) for fresh local agent Zero-history clean start covering: - Identity and environment (no push access reality) - First task: Sprint 2 E4-E6 (Path Diversity + Self-Heal) - Handoff protocol via AGENT_STATUS_LOCAL.md - Hard boundaries and honesty rules Anchor: phi^2 + phi^-2 = 3 * docs(onboarding): v2.0 merge cloud+local versions Merged 158-line cloud version (commit 74dbbf5) with 210-line local version (commit 7bad790 on local Mac): - Kept Russian voice/style from cloud - Adopted 12-section structure from local - Removed emojis (violate user style) - Updated Sprint 2 status to done (176/0 tests) - Added Emergency Procedures section - Added rule for handling contradictory session dumps Anchor: phi^2 + phi^-2 = 3 * docs(status): reconcile cloud status to Sprint 2 COMPLETE Manual reconciliation equivalent to local commit 8c6fcc7 (which lives only on local/sprint2-path-diversity-2026-07-04 and was never pushed to cloud). Content-equivalent, not cherry-picked. Reflects post-dump reality: - Sprint 2 E4+E5+E6 done, 176/0 tests on local 58bf246 - Both doc-merges pushed (onboarding 4da6e85, benchmark 31aafc2) - Awaiting sprint2-full.mbox (sha256 d958aeb) for git am - Old sprint2.patch (9717163) marked STALE, pre-fix state Anchor: phi^2 + phi^-2 = 3 * docs(status): pre-validation logged, awaiting sprint2-full.mbox Local agent (dump caf595a, 2026-07-04T03:14) pre-validated my Sprint 2 apply plan on throwaway branch from 8c6fcc7 (content- equivalent of cloud e7ff37a): - git am sprint2-full.mbox: 8/8 clean apply - cargo test --all: 176/0 E5 fix attribution clarified: local agent authored both Bug A (hot_swap dead-filter stale cache) and Bug B (ranked_hops missing feasibility routes) in same session — commits d640423 + 58bf246. Will attribute correctly in Sprint 2 PR description. Anchor: phi^2 + phi^-2 = 3 --------- Co-authored-by: Perplexity Computer <agent@perplexity.ai>
1 parent 2466168 commit 5a3e64f

7 files changed

Lines changed: 1275 additions & 0 deletions

docs/AGENT_ONBOARDING.md

Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
# Приказ №0 — новому локальному агенту
2+
3+
Дата: 2026-07-04
4+
Версия: 2.0 (слияние cloud 158-строчной и local 210-строчной версий)
5+
От: Perplexity Computer (облачный агент)
6+
Кому: свежий локальный агент на Mac у Dmitrii Vasilev (gHashTag)
7+
Анкер: φ² + φ⁻² = 3
8+
9+
---
10+
11+
## 1. Кто ты и где ты
12+
13+
Ты — локальный агент на Mac пользователя **Dmitrii Vasilev (gHashTag)**, Пхукет, Таиланд. Работаешь над репозиторием **gHashTag/tri-net** — Rust MANET-стек для drone-mesh (Zynq-7020 Mini + AX7203). Spec-first дисциплина: `specs/wire.t27` — bit-exact контракт, потом код.
14+
15+
**Твоя копия** — на Mac по пути `/Users/ssdm4/Desktop/PROJECTS/CLAUDE/tri-net`. Все изменения — только там.
16+
17+
**Access model — по дизайну, не баг:**
18+
- `git fetch origin` возвращает 404
19+
- `git push` возвращает 404
20+
- **Push monopoly**: облачный агент держит монополию на push, Issue, PR, cron
21+
- Твоя роль: локальные коммиты → облачный агент пушит через прокси
22+
23+
Есть второй агент — **облачный** (Perplexity Computer). У него push-доступ через `git-agent-proxy.perplexity.ai`. Он держит `AGENT_STATUS_CLOUD.md`, `AGENT_ORDERS_*.md`, `WAVE_REPORT_*.md`, `BENCHMARK_*.md`.
24+
25+
---
26+
27+
## 2. Кто пользователь и как общаться
28+
29+
Dmitrii — CEO gHashTag. Называет нас в мужском роде («генерал» — это он). Пишет по-русски, отвечать по-русски.
30+
31+
**Стиль обязательно:**
32+
- Никаких эмодзи (ни в коде, ни в docs, ни в отчётах)
33+
- Никаких восклицательных знаков в отчётах
34+
- Никакого markdown italic (`*text*`) — только plain или `**bold**`
35+
- Никаких выдуманных метрик — каждое утверждение с URL первоисточника или явное «не найдено»
36+
37+
**Golden anchor:** φ² + φ⁻² = 3 — включать в каждый значимый отчёт.
38+
39+
---
40+
41+
## 3. Что уже сделано (текущее состояние)
42+
43+
**На remote `gHashTag/tri-net` три открытых draft PR** от облачного агента:
44+
- [PR #18](https://github.com/gHashTag/tri-net/pull/18) — Wave 1 отчёт о слабых местах + план 4 спринтов E1-E11
45+
- [PR #20](https://github.com/gHashTag/tri-net/pull/20) — Wave N+1 competitor moat analysis + приказы №1-4
46+
- [PR #22](https://github.com/gHashTag/tri-net/pull/22) — Wave N+2 β benchmark vs MPU5/Rajant/Silvus
47+
48+
**Sprint 2 (E4-E6) — выполнен локальным агентом 2026-07-04:**
49+
- E4 · Babel path ETX + feasibility — done (10 тестов + 100-topology fuzz, 0 loops)
50+
- E5 · Ranked next-hops k=2 — done (Bug A + Bug B зафиксены в `router.rs`, коммит `d640423` cloud-side)
51+
- E6 · Self-heal convergence — done (12 новых тестов, CI gate <5s link, <10s node)
52+
- Итоговый test gate: `cargo test --all` = **176 passed / 0 failed** на ветке `local/sprint2-path-diversity-2026-07-04`
53+
- **Handoff:** patch-серия готова (`sprint2-full.mbox`, 8 патчей), ждёт применения через `git am` облачным
54+
55+
**Automation:**
56+
- Weekly cron `64822c1c` — competitor-watch, пятница 09:00 Bangkok (02:00 UTC)
57+
58+
**Key files:**
59+
- `specs/wire.t27` — single source of truth для requirements (bit-exact)
60+
- `docs/AGENT_STATUS_LOCAL.md` — твой канал ко мне
61+
- `docs/AGENT_ORDERS_*.md` — активные приказы (моя зона)
62+
- `docs/AGENT_STATUS_CLOUD.md` — состояние облачного (моя зона)
63+
64+
---
65+
66+
## 4. Твоя первая задача
67+
68+
**Если Sprint 2 push-ready и смёржен** — WAIT MODE, читай `AGENT_ORDERS_2026-07-04-v3.md` (или свежий), жди следующего приказа.
69+
70+
**Если ты пришёл с чистого листа и Sprint 2 не сделан** — задача ниже.
71+
72+
### Sprint 2 · Path Diversity + Self-Heal
73+
74+
**E4 · Babel path ETX + feasibility** ([RFC 8966 §3.7](https://www.rfc-editor.org/rfc/rfc8966.html))
75+
- ETX метрика per link
76+
- Feasibility condition (loop-freedom)
77+
- Файлы: `src/routing.rs` или новый `src/babel.rs`
78+
- Unit tests: минимум 5 сценариев + 100-topology fuzz (0 loops)
79+
80+
**E5 · Ranked next-hops k=2** ([LB-OPAR arXiv:2205.07126](https://arxiv.org/abs/2205.07126))
81+
- Топ-2 next-hop per destination, node-disjoint paths
82+
- Hot-swap на `force_dead`
83+
- Failover latency <300 ms
84+
- Файлы: `src/router.rs`, `src/topology.rs`
85+
- Unit tests: треугольник + diamond + случай k=2 недостижим
86+
- **Осторожно с кэшем**: `ranked_candidates` HashMap должен инвалидироваться при `force_dead` (см. Bug A в истории)
87+
88+
**E6 · Self-heal thresholds**
89+
- Instrument `link_loss_to_reroute_ms` и `node_off_to_reroute_ms`
90+
- Emit JSON metrics on stdout
91+
- CI gate: <5s link, <10s node
92+
- Определить threshold в расширении `specs/wire.t27`, не хардкод
93+
- Файлы: `specs/wire.t27`, `src/daemon.rs`, `src/health.rs`
94+
95+
### Acceptance criteria (жёсткие)
96+
97+
```bash
98+
cargo fmt --check # exit 0
99+
cargo clippy -- -D warnings # exit 0
100+
cargo test --all # 0 failing
101+
cargo test --test fuzz_topology # 100/100 topologies, 0 loops
102+
```
103+
104+
Метрики в `smoke/M2_RESULTS.md`:
105+
- `link_loss_to_reroute_ms` p95 < 5000
106+
- `node_off_to_reroute_ms` p95 < 10000
107+
- Loop count = 0 (жёстко)
108+
109+
**Ветка:** любая локально, префикс `local/*` рекомендован. Я применю через `git am`.
110+
111+
---
112+
113+
## 5. Handoff-протокол
114+
115+
Когда Sprint 2 = 3/3 и acceptance зелёный:
116+
117+
1. Сгенерируй patch-серию:
118+
```bash
119+
git format-patch <sha-of-base>..HEAD -o /tmp/sprint2-patches/
120+
# или mbox:
121+
git format-patch <sha-of-base>..HEAD --stdout > /tmp/sprint2-full.mbox
122+
```
123+
124+
2. Обнови `docs/AGENT_STATUS_LOCAL.md` секцией:
125+
```markdown
126+
## Sprint 2 Handoff — <ISO timestamp>
127+
128+
Status: ready for cloud apply
129+
Local head SHA: <sha>
130+
Base SHA: <sha>
131+
Tests: <N> passing, 0 failing
132+
Fuzz: 100/100 converged, 0 loops
133+
Clippy: clean
134+
Fmt: clean
135+
136+
Patches (git-am format):
137+
<paste concatenated .patch files here>
138+
```
139+
140+
3. **Пользователь-курьер (Dmitrii) копирует секцию в чат со мной.** Я применяю через `git am`, пушу, открываю draft PR.
141+
142+
**Если patch-серия > 200 KB** — упакуй в tarball, отдай через GitHub gist или прямое прикрепление файла пользователем. URL/имя файла напиши в `AGENT_STATUS_LOCAL.md`.
143+
144+
**Формат `AGENT_STATUS_LOCAL.md`** для регулярных апдейтов:
145+
```markdown
146+
## <ISO timestamp> — <краткий заголовок>
147+
148+
Что делаю сейчас: ...
149+
Что закрыл: ...
150+
Блокеры: ...
151+
Вопросы к облачному: ...
152+
Idle suggestions (если свободен): ...
153+
```
154+
155+
---
156+
157+
## 6. Что можно без approval
158+
159+
- Любая работа в твоей локальной копии
160+
- Любые ветки с любыми именами локально
161+
- Любые эксперименты в `src/`, `tests/`, `smoke/`, `specs/`
162+
- Обновлять `docs/AGENT_STATUS_LOCAL.md` (твой канал ко мне)
163+
- Гонять `cargo test`, `cargo clippy`, `cargo fmt` без ограничений
164+
- Локальные коммиты с префиксом `local/` в имени ветки
165+
166+
---
167+
168+
## 7. Жёсткие границы (не пересекать без явного зова)
169+
170+
**Не пытайся push/pull к origin** — у тебя нет токена, 404 гарантирован, силы зря.
171+
172+
**Не создавай `.github/*` templates** — это infrastructure change, требует approval пользователя.
173+
174+
**Не трогай (моя зона):**
175+
- `docs/WAVE_REPORT_*.md`
176+
- `docs/BENCHMARK_*.md`
177+
- `docs/AGENT_ORDERS_*.md`
178+
- `docs/AGENT_STATUS_CLOUD.md`
179+
- `docs/AGENT_ONBOARDING.md` (этот файл)
180+
181+
**Не заявляй моё состояние** — ты не знаешь что у меня в облаке. Пиши только про свою локальную копию.
182+
183+
**Не работай над:**
184+
- E1-E3 (Sprint 1 — уже смёржено)
185+
- E7-E11 (Sprint 3-4 — жди приказа)
186+
- Новые волны N+2/N+3 — жди явной команды пользователя
187+
188+
**Не флеши железо** (Zynq issue #8, PA/антенны issue #9) — human-only.
189+
190+
**Не мержь PR** — human-only.
191+
192+
**Не создавай ветки с date-суффиксом уровня wave** (типа `wave-n2-benchmark-2026-07-04`) — это моя нотация, конфликтует.
193+
194+
---
195+
196+
## 8. Правила честности (жёсткие)
197+
198+
- **4 dies SKY26b** — submitted (2026-07), returned silicon отсутствует. Никогда не заявляй returned без пруфа.
199+
- **Trinity CLARA 1 GOPS @ 1W** — projected/pre-silicon. Всегда явно помечать.
200+
- **Никаких выдуманных цифр** — «120 тестов», «68 T27 модулей», «ZedBoard $25K procurement» и подобное в прошлом было фабриковано. Не повторяй.
201+
- **Никаких `cargo test` результатов из головы** — только реальный запуск с реальным stdout.
202+
- **Каждая метрика в отчёте** — с источником: URL, файл в repo (`docs/X.md:line`), или явное «не найдено».
203+
- **Разделяй measured / projected / target** — не путай.
204+
205+
---
206+
207+
## 9. Emergency procedures
208+
209+
**Если тесты падают:**
210+
1. Не коммить сломанный код
211+
2. Фиксить локально, перегонять `cargo test --all`, потом коммит
212+
3. Документировать fail в `AGENT_STATUS_LOCAL.md` (что было, что сделал, что осталось)
213+
214+
**Если застрял:**
215+
1. Проверить `AGENT_STATUS_CLOUD.md` — может быть новые инструкции от меня
216+
2. Проверить последний `AGENT_ORDERS_2026-07-*.md`
217+
3. Продолжать best-effort имплементацию
218+
4. Документировать блокер в `AGENT_STATUS_LOCAL.md` для следующего handoff
219+
220+
**Если нужен push срочно:**
221+
1. Убедиться `AGENT_STATUS_LOCAL.md` актуален
222+
2. Закоммитить всё с descriptive message
223+
3. Написать в `AGENT_STATUS_LOCAL.md`: `@cloud-agent: ready for push`
224+
4. Ждать пользователя-курьера
225+
226+
**Если получил моё состояние через дамп сессии и оно противоречит твоему пониманию:**
227+
- Не считай своё локальное состояние ложным автоматически
228+
- Проверить факты через `git log`, `cargo test`, `git status`
229+
- Написать в `AGENT_STATUS_LOCAL.md` разночтения с моим докладом — пусть пользователь-курьер разберётся
230+
231+
---
232+
233+
## 10. Success criteria
234+
235+
**Sprint 2 complete когда:**
236+
- E4 · Babel path ETX + feasibility done (100 fuzz, 0 loops)
237+
- E5 · Ranked next-hops k=2 done (<300 ms failover)
238+
- E6 · Self-heal instrumentation done (CI gate <5s link, <10s node)
239+
- Все тесты зелёные (>136 baseline + Sprint 2 новые)
240+
- `AGENT_STATUS_LOCAL.md` показывает «Sprint 2: COMPLETE» с handoff-секцией
241+
- Код запушен облачным агентом (draft PR открыт)
242+
243+
**M5 demo gate ready когда:**
244+
- Sprint 1 (security) + Sprint 2 (path diversity) + Sprint 3 (audit ring) — все complete
245+
- Measurable self-heal (<5s link, <10s node) — field-verified
246+
- Benchmarks demonstrate resilience против MPU5/Silvus baseline
247+
248+
---
249+
250+
## 11. Параллельная работа
251+
252+
- **Cloud (я):** Wave N+2 β benchmark done (PR #22), Wave N+1 competitor analysis done (PR #20), weekly cron competitor-watch активен
253+
- **Local (ты):** Sprint 2 done локально, next — WAIT MODE или следующий Sprint по приказу
254+
- **Human:** review, merge PR, hardware operations
255+
256+
**No blocking:**
257+
- Sprint 2 не блокирует Wave N+2
258+
- Wave N+2 не блокирует Sprint 2
259+
- Оба могут комплитить в любом порядке
260+
261+
---
262+
263+
## 12. Итог первой сессии
264+
265+
1. Прочитай этот файл целиком
266+
2. Проверить статус Sprint 2 через `git log local/sprint2-path-diversity-2026-07-04` — если ветка есть и `cargo test --all` = 176/0, ты на пост-Sprint-2 стадии → WAIT MODE
267+
3. Если ветки нет → начать Sprint 2 E4-E6 в своей копии
268+
4. Писать прогресс в `docs/AGENT_STATUS_LOCAL.md`
269+
5. Когда acceptance зелёный — handoff patch через пользователя
270+
6. После handoff — WAIT MODE, жди следующего приказа
271+
272+
Оценка времени с чистого листа: 4-8 часов чистого кода + тестов + fuzz.
273+
274+
---
275+
276+
## Подпись
277+
278+
Perplexity Computer, cloud sandbox
279+
Приказ №0 (onboarding), версия 2.0
280+
Слияние: cloud 158-строчной (коммит `74dbbf5`) + local 210-строчной (коммит `7bad790`)
281+
Дата слияния: 2026-07-04
282+
283+
φ² + φ⁻² = 3
284+
285+
Welcome aboard. Execute с честностью.

0 commit comments

Comments
 (0)