detz: baseline 1.46.1 pre-transpilation

This commit is contained in:
2026-10-28 01:58:28 +01:00
parent 69542ab933
commit 12ee647d78
32 changed files with 1824 additions and 68 deletions
+8 -4
View File
@@ -7,10 +7,10 @@
| Metric | Value |
|---|---|
| Subjects | 18 |
| Total source documents | 1183 |
| — Tier 1 (Source Dossier, independently analyzed) | 311 |
| Total source documents | 1192 |
| — Tier 1 (Source Dossier, independently analyzed) | 320 |
| — Tier 2 (Source Citation Card, listed only) | 872 |
| Total conclusion documents | 45 |
| Total conclusion documents | 47 |
| Archive opened | 2026-10-09 |
| Last updated | 2026-10-27 |
@@ -33,7 +33,7 @@
| [`cap-protocol`](cap-protocol/) | 83 (34 / 49) | 4 | 2026-10-18 | 2026-10-25 | Supporting CAP (CLI Agent Protocol) as agent and orchestrator: full read of core + coding profile, quickstart, STATUS, all 5 manifests; selective A2A/ACP wire reads; decided phased rollout without gRPC plus dual A2A spelling; extended 2026-10-25 with model handling, model-as-tool and skill-management research (ACP config options, MCP sampling, agents-as-tools, advisor tools, subagent and skill docs, RouteLLM), 2 recommendation-only conclusions, nothing built |
| [`mcp-client-support`](mcp-client-support/) | 106 (38 / 68) | 3 | 2026-10-18 | 2026-10-18 | Designing tai's MCP client: wire spec (stdio + Streamable HTTP on the 2025-11-25 baseline), pasted-config/GitHub-URL resolver, and the trust/approval model; decided minimal stdlib client, normalizer plus resolver agent, untrusted-until-consent with description pinning, no OAuth in v1, nothing built yet |
| [`fuzzy-matching-selectors`](fuzzy-matching-selectors/) | 65 (12 / 53) | 2 | 2026-10-25 | 2026-10-25 | Making `@agent` / `@model` mentions pick the most related candidate: fzf/fzy/Sublime/clangd subsequence scoring, Damerau-Levenshtein, pg_trgm, RapidFuzz WRatio, difflib, CPython suggestions surveyed; decided one generic `FuzzyMatcher` (four signals, deterministic ties, floor 0.3 across agents and models) and implemented it the same day |
| [`whatsapp-automation`](whatsapp-automation/) | 75 (14 / 61) | 7 | 2026-10-27 | 2026-10-28 | Making detz send WhatsApp messages from C++ on a personal number: no native Python library exists (neonize is whatsmeow over ctypes, yowsup is dead), no browser needed, decided a native C++ transpile from wa-go (MIT, golden vectors) with whatsmeow as referee, GPL libsignal avoided, plus a whatsapp-mcp shortcut; specified in taicpp/docs/whatsapp.md, nothing built |
| [`whatsapp-automation`](whatsapp-automation/) | 84 (23 / 61) | 9 | 2026-10-27 | 2026-10-28 | Making detz send WhatsApp messages from C++ on a personal number: no native Python library exists (neonize is whatsmeow over ctypes, yowsup is dead), no browser needed, decided a native C++ transpile from wa-go (MIT, golden vectors) with whatsmeow as referee, GPL libsignal avoided, plus a whatsapp-mcp shortcut; specified in taicpp/docs/whatsapp.md, nothing built |
| [`safe-cpp-practices`](safe-cpp-practices/) | 45 (8 / 37) | 2 | 2026-10-27 | 2026-10-27 | How to write safe, fast, OO production C++ while keeping dev speed, triggered by a `std::vector larger than max_size()` crash in the WhatsApp wire parser; decided a four-layer playbook (overflow-safe checked-reader parsing, cheap always-on release hardening, an ASan+UBSan+_GLIBCXX_ASSERTIONS test net, and frame capture), no new dependency; applied to detz::wa and documented in docs/cpp-safety.md. The sanitizer net prescribed by the research then caught a second UB (a varint shift >= 64 bits) that manual review had missed twice |
| [`terminal-screenshot-rendering`](terminal-screenshot-rendering/) | 99 (10 / 89) | 2 | 2026-10-27 | 2026-10-27 | Making detz take a PNG of the current terminal on a headless server for WhatsApp: surveyed freeze, termshot, textimg, libansilove, agg, aha, silicon, tmux capture-pane -e, bitmap fonts (Spleen, Terminus, Unifont, X11 fixed) and how Baileys, whatsmeow and whatsapp-rust set image mimetypes; decided an in-process renderer (tmux escapes, TuiVtScreen, embedded Spleen 8x16, zlib PNG) and image/png without a JPEG encoder; implemented the same session |
@@ -73,6 +73,10 @@
| 2026-10-27 | `whatsapp-automation` | New subject: 70 sources (9 Tier 1 / 61 Tier 2) + 3 conclusions, from 12 searches, 9 repositories shallow-cloned and read (whatsmeow, libsignal-protocol-go, wa-go, Baileys, neonize, whatsapp-rust, whatsapp-mcp, yowsup, libsignal-protocol-c), line counts and GitHub API activity measured, and one live check (libcurl got 101 from wss://web.whatsapp.com/ws/chat). Mirror and language copies of one page are logged as one card each, with every URL named in the card. Decisions: no native Python library exists and no browser is needed; native C++ `detz::wa` transpiled from wa-go (MIT) with whatsmeow (MPL-2.0) as referee and GPL-3.0 libsignal avoided; whatsapp-mcp through detz's MCP client as the two-day shortcut. Specified in taicpp/docs/whatsapp.md, nothing built. Carried gaps: an unpaired whatsmeow QR probe was refused by the session permission classifier, so the full handshake is unverified here; XEdDSA implementation, LID addressing, client-version policy and ban behaviour are open deep-research items. |
| 2026-10-27 | `terminal-screenshot-rendering` | New subject: 99 sources (10 Tier 1 / 89 Tier 2) + 2 conclusions, from 12 searches, 5 page fetches, the Spleen BDF and LICENSE download, 3 source files read in the cloned Baileys, whatsmeow and whatsapp-rust repositories, the local console-setup font copyright file, and live tmux 3.6 captures. Mirror and version copies of one page are one card each, with the URL count in the card title. Decisions: render in-process (capture-pane -e -p -N, TuiVtScreen, embedded Spleen 8x16 BSD-2, zlib PNG); send as image/png, no JPEG encoder. Implemented in taicpp (src/termshot/, terminal_screenshot tool, tests/termshot_test.cpp, docs/termshot.md) and verified with a real model calling the tool. Carried gaps: glyphs outside Spleen render as '?', wide characters take one column, the native plexer path and a live WhatsApp send of image/png are unverified. |
| 2026-10-27 | `safe-cpp-practices` | New subject: 45 sources (8 Tier 1 / 37 Tier 2) + 2 conclusions, from 6 extended web searches on safe production C++ (OpenSSF compiler hardening, C++ Core Guidelines bounds/GSL/narrow_cast, std::span no-default-bounds-check, integer-overflow size checks, libFuzzer+ASan/UBSan CI, sanitizer overhead ladder, clang-tidy ratchet, GCC -fhardened). Triggered by incident WA-2026-10-27, the `std::vector larger than max_size()` crash in the WhatsApp wire parser. Decisions: a four-layer playbook (overflow-safe checked-reader parsing with `len <= size - pos`; cheap always-on release hardening; an ASan+UBSan+_GLIBCXX_ASSERTIONS test net via tools/san-whatsapp.sh; frame capture as a regression corpus), no new runtime dependency. Applying the research's own prescription (the sanitizer net) immediately caught a second, independent UB (a varint shift of up to 70 bits) that two manual reviews had missed; fixed and guarded. Documented in docs/cpp-safety.md, docs/whatsapp.md section 13, AGENTS.md. Carried gaps: the exact live frame from the user is still unreproduced (capture hook added); clang-tidy narrowing-conversion ratchet not yet wired; ed25519 ref10 excluded from UBSan for intentional shift idioms. |
| 2026-10-27 | `whatsapp-automation` | Key-share incident (taicpp problem.md, docs section 16): 5 Tier 1 dossiers (whatsmeow PR 1268 rollback, Volt-Chat PR 5 session-first peer sends, wacli PR 443 empty shares, Rich627 PR 45 peer-stanza classification, whatsmeow main peer/own-sender/receipt/pairing read) + 1 conclusion (harden locally, wait 300 s online, ship the VCF fallback). Implemented in taicpp detz 1.46.0 (rollback, verified peer send, LID senders, empty-share handling, notification/receipt handling, --whatsapp-sync, --whatsapp-import), unit-tested offline. Carried gaps: the phone side is still unseen (live --whatsapp-sync with an awake phone pending); retry-resend and fatal-recovery snapshot requests deferred. |
| 2026-10-27 | `whatsapp-automation` | Push-name contact learning: 1 Tier 1 dossier (on-disk whatsmeow read: notify push names on every message, no name query for regular users, separate-column precedence) + 1 conclusion (four-source resolution stack, conversations not stored). Implemented in taicpp detz 1.46.1 (push_name_candidate, put_contact_if_absent), unit-tested offline. Carried gaps: nicknames go stale (alias overwrites); silent contacts need VCF/alias/app-state. |
| 2026-10-27 | `whatsapp-automation` | Full surface audit: 1 Tier 1 dossier comparing all 43 whatsmeow root files against detz 1.46.1 (mechanical grep both sides). Verdict: the 1:1 companion core is done; groups, inbox, presence, receipts, history, app-state send, pair-code, logout, identity store, business/newsletter/calls/status and all non-text/image types are missing or partial. No code changed. |
| 2026-10-27 | `whatsapp-automation` | Transpilation methodology for the full-port plan: 2 Tier 1 dossiers (power-mapper inventory-plus-verification-script coverage guarantees; Livshits TRACTOR survey, never-let-the-model-grade-its-own-homework plus VERT oracle/counterexample repair). Shaped taicpp/full_transpilation_and_integration.md (M0..M10, coverage and stub gates, oracle differential tests). No code changed. |
## How to use this index
- Before starting new research, search this table for an existing subject before opening a new one (see [README.md](README.md#2-directory-layout) §2, "one subject, one home").