TalkCo supporting research

Matrix P2P evidence, computational models and falsification plan

RESEARCH 20 sections

#1. Evidence classes and boundaries

Evidence classWhat this study containsWhat it does not establish
Repository requirementsTalkCo's current research, architecture issue, master inventory and documentation conventionsA newly accepted protocol, stack ADR or completed deniability construction
Fresh primary-source inspectionP2P Matrix website, MLS documents and selected pinned Neutrino/Neutrino-Iroh sourceThe behavior/configuration of an unexamined installed application
Inherited executable evidenceExisting Tachyon archive's synthetic-broker room/admission/message/rename/replay/removal experimentsA rerun in this study, ordinary-homeserver/federation interoperability or arbitrary membership-fork convergence
New executed analytical modelThree-event revocation schedule enumeration and parameterized recipient-fanout arithmeticAn implementation exploit, empirical bandwidth measurement, probability distribution or formal proof of either application
Documentation validationMarkdown/link/build/source-sync checks when recorded by the associated workflow runCryptographic security, mobile radio correctness, peer privacy or production readiness
Proposed integration and adversarial testsThe fixtures and pass/fail observations belowExecuted results; each remains NOT RUN in this study
Independent reviewNot performedA completed security audit or approval to deploy on hostile networks

The live Aurora site could not be freshly retrieved in this session. The app-specific findings therefore refer to the 2026-09-23 archive, not an assumed unchanged live deployment. The archive's limitations are retained: exact custom Rust source revisions/source maps were not recovered; real credentials, real room traffic and federation were not used.

#2. Primary source ledger

Retrieval/inspection date for this study: 2026-09-24. Mutable web pages retain that observation date. Immutable repository links identify the inspected revision; they do not identify an installed mobile artifact unless its build provenance separately matches.

IDSourceRole and qualification
TC-BASETalkCo baselineRepository state at the start of this evaluation
TC-PROFILESA0/A1/conditional profilesModern provisional baseline, not an accepted complete construction
TC-MASTERMaster research tableExisting technology candidates and original evidence dates
TC-ARCHArchitecture issue #1Explicitly requires reconciliation of legacy Session/TACo/Signal commitments; mutable issue, inspected not closed
TC-LANESLane map at baselineOwnership of the resulting decisions and test work
TA-BASETachyon archiveCaptured 2026-09-23; inherited evidence, not freshly downloaded app assets
TA-WIREWire/lifecycle chapterObserved Matrix APIs, key packages, invitation/Welcome/message schemas and metadata
TA-DAGRoom-DAG chapterIdentifier reconstructions, state/event distinctions and bounded authorization tests
TA-CRYPTODMLS chapterEpoch graph, policy coupling, retention setting and untested fork cases
P2P-STATUSAre We P2P YetHistorical/current research overview; displayed update date and later body entries are inconsistent
P2P-SLIDESLinked 2026 P2P Matrix presentationArchitecture illustrations and research intentions; filename/title dating differs; not a deployment conformance specification
N-READMENeutrino READMEExperimental scope/security warning; signature-absence statement is incomplete relative to source
N-SIGNNeutrino event signingSigned/trusted modes, key binding, canonical signature coverage and no rotation mechanics
N-CONFIGNeutrino control configurationDefaults, receipt semantics, soft-failure visibility, storage/log and retry configuration
N-STARTNeutrino startupInspected search excerpts show signed-mode resolver requirement; not a complete startup audit
N-TESTSigned federation test sourcePositive/negative test implementation exists; not executed here
NI-READMENeutrino-Iroh READMEDatagrams, BLE advertisement identity, bindings, artifact pinning and license composition
NI-STARTIroh/BLE composition sourceInjected transport, key resolver, @n:{node_id} convention and explicit delivery-receipt enablement
MLS-PROTOCOLRFC 9420Standard MLS protocol, not a specification of the custom deployed DMLS/room dialect
MLS-ARCHRFC 9750Authentication/delivery-service separation and both consistent/eventually-consistent commit sequencing
DMLS-DRAFTDMLS datatracker entryDraft-03 remains an expired Internet-Draft at inspection; proposal is not a completed RFC or binary conformance certificate
MATRIX-CSMatrix client-server specification v1.16Versioned comparator also used by the Tachyon archive; not a claim that v1.16 is the newest release

The supplied image is a user-provided historical diagram, not newly discovered source code. It was inspected as an image; no OCR-derived claims are required. No upstream source or artifact is relicensed by this study. Existing third-party provenance remains in the Tachyon archive rather than being duplicated wholesale into TalkCo.

#Source discrepancy register

DiscrepancyResolution used hereRemaining check
Neutrino README says signatures absent; current source implements signed modeReport code path and base trusted-mode default separately; retain experimental warningMatch exact Android artifact, upstream lockfile and runtime config
Generic delivery receipts default off; Iroh composition sets them onInspect the composition root, not only the default structTrace how the actual client labels and emits these signals
Presentation describes strong metadata protection; archive exposes invitation/routing fieldsPrefer observed packet schemas for the captured deploymentFresh capture after any invitation/envelope redesign
Message-DAG convergence can be mistaken for DMLS fork resolutionReport only the graph actually branched in the labExecute concurrent membership forks with three or more devices
Familiar room-version/event names suggest standard compatibilityPin experimental hash/auth behavior rather than infer equivalence from namesIndependent conformance vectors and real-server interoperability
Soft-failure harness can change client visibilitySeparate accepted-state convergence from displayed-timeline equalityRun both configurations under the same delivery schedule
Website/PDF dating is internally inconsistentRecord retrieval date and immutable code pins where availableObtain release/build manifests for version-specific claims

#3. Executed analytical model

The companion Python model uses only the standard library and performs no network calls. The stored results are machine-readable. It was executed locally in this research session and checked against its deterministic output.

python3 docs/research/2026-09-24/matrix-p2p-model.py \
  --check docs/research/2026-09-24/matrix-p2p-model-results.json

The success message explicitly says no implementation was tested. Re-running the script establishes reproducibility of these calculations, not a pass for the future integration tests.

#3.1 Fanout is counted in devices, not people

Let U be users, d devices per user, D = U*d total devices, M application messages per group per day, and E assumed bytes per delivered envelope. Under unicast delivery to every device except the originating device:

recipient deliveries per application message = D - 1
recipient deliveries per group day = M * (D - 1)
aggregate delivered bytes per group day = M * (D - 1) * E

This includes another device belonging to the sender's user. A server can perform fanout after one sender upload, so aggregate recipient bytes must not be described as the author's uplink cost. A different distribution tree, batching policy or relay design changes where work occurs, not the need for intended recipients to obtain relevant content.

The illustrative parameters are two devices per person, 500 total application messages per group per day and 1,280 bytes per delivered envelope. They are deliberately stated assumptions, not measured Tachyon message sizes or a forecast of TalkCo use.

PeopleDevicesRecipient deliveries per group/dayAggregate delivered MB/day, decimal
10209,50012.16
5010049,50063.36
10020099,500127.36
1,0002,000999,5001,279.36

The model excludes retry/control traffic, additional framing, compression, attachments, custody replicas and repair. Those must be measured. It also records balanced binary-tree height only as an asymptotic comparator; a logarithmic key-tree path is not evidence of logarithmic total network distribution.

If instead every device emits r messages in the same interval, then M = r*D and aggregate recipient deliveries become r*D*(D-1). That quadratic group-wide workload is a workload assumption, not proof that the implementation performs quadratic work per one message.

#3.2 The revocation schedule model

The abstract model has three events: removal accepted at Alice, Bob learning that removal, and Bob attempting a release. It imposes only the causal requirement that Alice's removal precedes Bob learning it. Bob releases if his current local view still contains Carol.

Valid scheduleModeled outcome
Remove, learn, sendBob blocks release after learning removal
Remove, send, learnBob releases after remote removal but before receiving it
Send, remove, learnRelease precedes remote removal

All three schedules are enumerated. They are not equally likely outcomes and their counts are not probabilities. The model establishes the simple information boundary: preventing the middle schedule requires a different release precondition or a weaker global revocation promise, not merely a later deterministic merge.

The model does not implement MLS, DMLS, Matrix state resolution, cryptographic keys or a hostile client. It must not be cited as a demonstrated Tachyon vulnerability. Its role is to prevent an impossible acceptance criterion from entering TalkCo's integration plan.

#3.3 Cost dimensions not measured here

A future benchmark must separate initial download size, compiled/runtime memory, per-device group state, event ancestry storage, retained epoch secrets, key-package churn, state resolution, application fanout, attachment transfer, recovery and mobile energy use. The archive's WebAssembly file size is an artifact size, not browser peak memory or actual compressed transfer size.

For a sequential epoch history, a simple planning model of retired epochs scales with membership-change rate times retention window, subject to implementation retirement rules. Forks add branch-dependent state; convergence, puncturing, persistence and cleanup may change the result. No exact DMLS memory bound is inferred here.

Similarly, an event graph's size alone does not establish the cost of repeated state resolution. Missing dependency requests, adversarial branches, cache behavior and settlement scheduling can dominate. Benchmark accepted work and rejected work independently, including how a peer applies backpressure.

#4. Shared implementation fixture

Use the fixture already required by TalkCo's profiles rather than a chat-only demonstration. Alice, Bob and Carol have distinct authenticated devices; at least one user also has a second device. Two profile contexts must remain unrevealed to one another. Include a private conversation, a consented publication, a shared record/grid, a document checkpoint, a private attachment, a late reader, a non-reading custodian and a replaceable relay.

Run the same logical workload against the smaller A0 core, a bounded client-owned Matrix/DMLS group path and the existing integrated-workspace countercandidate. Do not force every candidate to use the same internal representation. Compare the same externally meaningful acceptance, disclosure, evidence, custody and failure outcomes.

Record exact source/dependency revisions, build flags, platform, configuration, deterministic seeds, delivery schedule, input objects, expected results, actual traces and limitations. Distinguish imported source tests from tests actually run. Preserve failures and unsupported operations rather than turning successful process exit into a universal pass.

#Observation vector after each operation

accepted object/state revision
accepted membership and per-device authority
cryptographic epoch/extremities and decryptable audience
locally durable state and outstanding outbox operations
displayable content and local attention/filtering state
retained custody copies, leases and repair obligations
exportable authentication/consent evidence
observer-visible identifiers, routes, timing and sizes

An implementation passes only the dimensions relevant to its declared profile. A matching debug JSON export is neither necessary nor sufficient when local trust annotations or legitimate local filters differ.

#5. Proposed protocol and adversarial tests

Status of every test below: NOT RUN in this study. These are assignment-ready research gates, not asserted results. Existing archived Tachyon tests are separately identified in section 1 and are narrower than these cases.

IDExperimentRequired observation or falsification conditionLane
MP-01Create/admit/send through two real selected homeserver implementationsCustom key algorithms, to-device types and chosen sync API behave as expected; unsupported behavior is explicit#9, #13
MP-02Cross-homeserver delivery with duplicate/lost responsesApplication deduplication and outbox state remain correct; HTTP success is not misreported as durable recipient acceptance#9, #10
MP-03Concurrent additions on partitioned branchesHonest peers converge on admissible membership and keys; no unauthorized leaf receives later secrets#3, #5
MP-04Concurrent add/remove and remove/re-add of the same user/deviceExact precedence, invitation consent, key-package use and history access are declared and observed#3–#5
MP-05Merge of membership merges, with a member present in only one branchNo hidden central sequencer, unauthorized union of audiences or unbounded retained branch state#3, #5
MP-06Malicious current member submits validly signed but unauthorized Commit/state changeCryptographic validity does not bypass room/object authority#3, #5
MP-07Forged, replayed, wrong-context and stale invitation acceptanceConsent is bound to target, action, invitation, context and relevant current authority#2–#5
MP-08Missing, contradictory or oversized authorization ancestryUnknown authority remains pending/rejected within bounds; no force-accept fallback grants power#5, #13
MP-09Compare normal and harness soft-failure visibility settingsState, graph and client presentation results are separately reported#5, #10
MP-10Resume after epoch retirement with delayed ordinary/control messagesDocument which messages can decrypt, which need recovery, and what old secrets remain#3, #4
MP-11Restart after each crypto/state/outbox persistence boundaryNo accepted unauthorized state, consumed key reuse, lost acknowledged work or duplicated disclosure#4, #10
MP-12Restore old backup and clone one device state onto two devicesCurrent authority is not silently restored from history; fork/recovery behavior is explicit#3, #4
MP-13Introduce a new device via a malicious or reset account/key serviceCross-context grants do not follow automatically from an untrusted device list#3, #4
MP-14Export all recipient-visible authentication artifactsEvaluate the complete private evidence profile, not ciphertext alone#3
MP-15Send the same object over two different carriersObject identity, deduplication, authorization and consent remain stable#2, #9
MP-16Repeat two unrevealed contexts through the same carrier/providerQuantify linkage by IDs, device proofs, connections, timing, topic and lookup behavior#4, #9
MP-17Observe BLE discovery without joining a roomCapture only controlled test-device broadcasts; identify node/name/proximity correlation#4, #9
MP-18Trace Neutrino delivery receipt from remote 2xx to client displayNo false claim of human reading or unsolicited attention disclosure in the TalkCo profile#10
MP-19Ordinary Matrix bridge/export with narrower source audienceNo automatic disclosure, private-history import or unsupported privacy claim#2, #3, #12
MP-20Shared-grid/doc update from removed writer with valid old keysCRDT merge does not override current acceptance rules; dependencies and rejected edits are inspectable#5
MP-21Late reader receives selected history/checkpointOriginal authorship, current endorsement and reported history remain distinguishable#2, #3, #5
MP-22Store/repair encrypted attachment at a non-reading custodianHost lacks application keys; leases, byte integrity, expiry and repair are correctly enforced#6–#8
MP-23Remove retention authority while an offline repair job is pendingRepair does not resurrect expired custody; already disclosed copies are not falsely claimed erased#7, #12
MP-24Exhaust KeyPackages, queue space, storage, dependency budget and epoch budgetBounded failure and backpressure; no unsafe fallback or permanent false device removal#4, #8–#10
MP-25Screen lock, process kill, OS suspension and multi-day offline mobile useCorrect local durability and declared delivery limits, with measured energy/resource use#10, #13
MP-26Browser reload, service-worker update, storage eviction and origin compromise modelExplicit endpoint trust boundary; no assumption that a PWA cache is durable secret custody#4, #10
MP-27Unknown room version, unsupported crypto suite/profile and downgrade attemptsFail closed for critical semantics; compatibility labels accurately describe what works#2, #3, #13
MP-28Independent canonicalization/hash/auth vectors including delimiter and numeric edgesExact interoperable bytes and authorization, with no speculative exploit claim from encoding alone#2, #5, #13
MP-29Match built Android artifact to upstream/source/configurationPin .aar, dependency lock, feature flags and effective receipt/signing policy#10, #13
MP-30Export/import and replace the selected engine or carrierPreserve intended object meaning and current authority without unintended historical disclosure#1, #2, #4

#Resource and safety limits for the laboratory

Use synthetic identities, consented test devices and controlled rooms only. Do not send malformed traffic to unrelated production rooms or enumerate real accounts. Bound event count, object size, epoch/fork count, concurrent requests, wall-clock runtime and captured trace retention. Raw captures can contain keys or plaintext even when the external protocol is encrypted; store them with appropriate access and avoid publishing real participants' data.

For source execution, pin repositories and dependencies, record licenses, and isolate third-party test execution from write credentials. Documentation CI should not be treated as the place to run arbitrary upstream code with repository-write authority.

#6. Decision gates and stop conditions

#Gate A: precise source and compatibility baseline

Obtain exact custom Tachyon source/lockfile/build flags, the archived artifact hash, and the intended room/DMLS profile. Reproduce its basic synthetic behavior and then establish real-server behavior separately. Do not spend an integration budget on a binary-only dependency whose protocol may be changing without a migration contract.

#Gate B: context and evidence feasibility

Before broad UI integration, demonstrate two unrevealed contexts and the selected private evidence profile through the full invitation/device/recovery path. An adapter that requires replacing most authentication machinery must be estimated as new protocol work. Failure here can narrow Matrix to explicit interoperability or opaque transport rather than disqualifying all Matrix research.

#Gate C: authority and partition correctness

Run concurrent membership and object-authority fixtures with delayed/duplicate/maliciously scheduled traffic. Require agreement on authorized effects, not just total event ordering. Document the revocation freshness policy and the set of operations intentionally unavailable during partitions.

#Gate D: platform and custody operation

Measure crash recovery, background constraints, bounded storage/CPU and independent opaque custody. Confirm that the desired receipt/attention semantics and transport privacy profile survive the actual composition root and platform build.

#Gate E: total maintained complexity and reversibility

Compare code that TalkCo must maintain after identity, evidence, custody and object adapters are included. A smaller custom core is not inherently preferable; an integrated engine is not inherently cheaper. Select the implementation that satisfies the declared contract with a sustainable maintenance and export path. Record the choice in an ADR, including the evidence that would reverse it.

If these gates show that the Matrix-derived path needs most of its authority and crypto integration replaced, retain the useful protocol lessons and use Matrix only at a narrower seam. If it removes substantial work while passing the relevant tests, adopt that responsibility rather than duplicating it solely to maintain a conceptual layer diagram.

#7. Highest-value additional inputs

Exact Tachyon source and build provenance: custom Rust crates/branches, OpenMLS/DMLS fork revisions, Cargo lockfile, build flags, deployment bundle hash, protocol notes and intended compatibility guarantees. The archive identifies these as missing; source symbols and reconstructed hashes cannot substitute for a maintainable source baseline.

Controlled runtime access: disposable accounts on selected Matrix homeservers, a separate federation test pair, synthetic multi-device users, and permission to capture only those test sessions. This would separate broker permissiveness from real-server behavior.

Neutrino platform evidence: the actual Android .aar/APK provenance, embedded upstream commit, feature flags, effective signing/trusted-network configuration, receipt rendering and transport settings. Source trees from different repositories must not be combined into an imaginary installed version.

TalkCo threat-model decisions: the observers against whom contexts must be unlinked, acceptable direct-link metadata, maximum tolerated stale disclosure, private authentication/evidence target, history/recovery promises and initial supported platform. Without these, testing can measure behavior but cannot determine acceptability.

Resource and custody assumptions: expected group/device counts, traffic distribution, attachment sizes, offline duration, host redundancy/leases, repair budget and energy/storage targets. The illustrative model parameters are not requirements.

Independent review scope: the coupled authorization/epoch construction, private evidence profile, key lifecycle, rollback behavior, bounded parsing/ancestry and relevant dependency/license/supply-chain review. These are separable investigations; a passing UI or documentation build does not close them.

#8. Agent handoff

The durable research starts at research-matrix-p2p.md. Detailed Matrix observations belong in the protocol chapter; integration arguments belong in the composition chapter; new empirical results belong here or in a linked dated experiment with exact commands and artifacts. Keep the comprehensive package disposition in the existing master table.

Do not silently close architecture issue #1, replace the canonical Session/TACo/Signal commitments, claim an independent audit, infer all old README statements describe current code, or relabel modeled/inherited results as fresh application execution. Update the relevant lane and owning source only when its stated evidence exists.

The user requested technical research and documentation, not product implementation. The companion script is a bounded analytical model, and the report-generation workflow is documentation infrastructure. No application, homeserver or cryptographic implementation is introduced by this evaluation.