Skip to content

Codebase Concerns

This is a risk map, not an assertion that every item is a current defect. Severity reflects the impact of making a false release/correctness claim or changing the named area without its established evidence.

SeverityConcernEvidenceImpactSuggested action
HighLocal 0.1.0 wheel, sdist, and crate acceptance passed, but the authoritative complete final-SHA candidate does not exist yetPROGRESS.md TASK-092/TASK-093, docs/project/release.md, .github/workflows/build-wheels.ymlDirty-tree local artifacts and an older hosted wheel run cannot be published as the final synchronized candidateAfter the user commits/pushes the reviewed tree, run the complete dispatch-only build once and verify its 26 distributions, sidecars, and attestations
HighHosted CI, documentation, and 24 wheel lanes passed at c815339…, but that evidence predates the sdist/crate/attestation/manifest expansionGitHub Actions runs 32228452630, 32228472756, 32228463727; PROGRESS.md TASK-082/TASK-092Platform/runtime machinery is proven, but the final release workflow and source bytes have changed since that SHATreat the runs as TASK-082 evidence only; require a successful final-SHA complete release-artifact run for TASK-092
MediumCredentialed Telegram/CDN/proxy behavior remains separately gated and environment-dependenttests/integration/README.md, docs/faked-methods.md, .env.exampleFake-server correctness does not prove current service-side limits or every DC edgeRun only authorized narrow live gates and report not-run/blocked conditions honestly
MediumThree central orchestration modules are both large and high-churnsrc/miniproto/client.py, src/miniproto/media/download.py, src/miniproto/connection/sender.pyA lifecycle change can cross request, task, storage, sender, scheduler, and cleanup ownershipRequire focused cancellation/fake-server/parity tests before the full suite; refactor only behind behavior-preserving tests
MediumWindows ARM64 currently excludes cryptography pending upstream wheel availabilitypyproject.toml, .github/workflows/build-wheels.ymlNative extension availability is more important on that platform, and fallback coverage differs from other lanesKeep the explicit workflow expectation and remove the marker only after the tracked upstream release supplies supported wheels
MediumDurable storage uses a project-owned encrypt-then-MAC construction rather than a named library AEAD primitivesrc/miniproto/session/storage.pyNo break is established, but custom cryptographic composition and compatibility increase audit burdenPreserve nonce/key-separation/MAC-before-decrypt invariants, obtain specialist review, and evaluate a versioned migration to a standard AEAD envelope
MediumThe raw API and generated reference depend on several upstream pins with different roles and versionstools/schema/schema-metadata.json, tools/schema/schema-source-diff.json, tools/schema/rpc-errors.jsonAn upstream source can drift or disagree without a runtime package changeKeep offline pins authoritative, scheduled freshness informational, and review structural/prose/error diffs before regeneration
LowPacket Loom is a provisional community-poll identity rather than the permanent branddocs/project/brand.md, docs-site/src/assets/brand/concepts/README.md, docs/THOUGHTS.mdA later winner requires regenerated derivatives and screenshotsKeep the canonical asset boundary isolated and use pnpm --dir docs-site brand:build for a deliberate swap
Debt itemWhy it existsWhereRisk if ignoredSuggested fix
Large orchestration filesAlpha development concentrated cross-cutting protocol/media behavior before stable seams emergedclient.py, media/download.py, connection/sender.pyReview cost and ownership mistakes grow with each featureSplit only where tests prove a stable lifecycle boundary; do not introduce forwarding-only abstractions
Long-lived plan terminologyThe original roadmap called the first release “v1” before it was clarified as 0.1.0 AlphaPLAN.md, older plans/*.mdContributors can confuse product milestone names with semantic-version stabilityTreat the dated completion plan and current release docs as superseding; reconcile trackers without rewriting history
Broad benchmark configuration surfaceLive-media experimentation records many explicit variables to make runs reproducible.env.example, tools/bench/benchmark_live_media_limit.pyConfiguration/help/docs can drift and live comparisons can become incomparableKeep CLI-help, environment, normalized-report, and workflow-contract tests synchronized
No numeric coverage thresholdQuality gates prioritize behavioral protocol/parity/fake-server matricespyproject.toml, .github/workflows/ci.ymlA weakly exercised new branch may pass unrelated broad checksAdd targeted tests for each behavior change; consider coverage reporting only after defining exclusions for generated code
Full external-library comparison remains future evidenceCurrent benchmarks emphasize native/fallback and internal/runtime acceptancePLAN.md, docs/guides/performance-and-benchmarks.mdMarketing can outrun reproducible comparative evidenceKeep claims limited to recorded commands until a controlled cross-library matrix exists

The maintained-source scan found no tracked TODO, FIXME, or HACK markers under src/, rust/miniproto/src/, or tools/. Telegram RPC names containing the word TODO and cached/generated test trees are data/artifacts, not debt markers.

RiskCategoryEvidenceCurrent mitigationGap
Authorization/session disclosureSensitive-data exposureSECURITY.md, session/storage.py, session/strings.pyEncrypted durable domains, protected native strings, redacted representations/log helpers, import replacement checksProcess memory, direct serialization, third-party bearer formats, user logs, and copied credentials remain outside automatic protection
Unsafe replay after transport ambiguityProtocol integrityinvoke.py, connection/sender.py, errors.pyRetry-safety classification and AmbiguousRpcResultCaller-supplied retry=True can still be unsafe if the application misclassifies a write
Malformed hostile network inputInput validationmtproto/codec.py, connection/framing.py, tl/codec.pyBounded decoding, auth/padding checks, prevalidation before state mutation, fatal transport closureNew generated/native paths must retain exact validation parity and panic-free behavior
Custom session-storage cryptographyCryptographic designsession/storage.pyFresh nonce, separate derived keys, HMAC authentication verified before plaintext decodeIndependent cryptographic review and a standard versioned envelope migration are not recorded
Credentialed CI/live testsSecret-management boundary.env.example, live-media-bench.yml, tests/integration/README.mdManual/explicit gates, repository secrets, task-owned encrypted session paths, no ordinary-PR secretsMaintainer must still review logs/artifacts and prevent untrusted workflow execution
Native supply/provenanceSoftware supply chainpyproject.toml, Cargo.lock, release-artifact and publish workflowsExact/locked dependencies, clean wheel install, native import, complete checksums, per-artifact GitHub attestations, protected PyPI/crates.io OIDC publicationThe complete final-SHA candidate, registry publication, and immutable GitHub release are not yet produced; the older hosted platform matrix is not the publishable candidate
ConcernEvidenceCurrent symptomScaling riskSuggested improvement
Platform-sensitive backend winstools/bench/benchmark_session_crypto_backends.py, CI benchmark matrixRust wins the recorded protected-session workload while bulk AES-GCM can favor cryptographyA machine-specific router can regress another OS/CPU/interpreterKeep capability routing conservative and collect comparable multi-platform samples before thresholds
Media throughput depends on Telegrammedia/download.py, benchmark_live_media_limit.py, docs/media.mdFloods, DC placement, account type, network, disk, and file shape change tailsHigher concurrency can worsen rate limits or memory without increasing throughputPreserve byte budgets/fixed slots/pacing and compare repeated normalized live samples
Static reference scaledocs/reference/manifest.json, docs-site/astro.config.tsThousands of committed pages make Astro/Pagefind builds non-trivialBuild time and search index size rise with future layers/docsKeep sidebar collapsed, search chunked, generated output deterministic, and docs in a dedicated CI job
Process-local caches/indexespeers.py, media/download.py, media/scheduler.pyEach process owns peer/range/scheduler stateMulti-process applications do not share warm indexes or transfer budgetsDocument per-process semantics; use application-level coordination if cross-process limits matter

The 2026-08-19 repository scan used git log --since='90 days ago' --name-only and found the highest recent churn in docs/development.md (43 appearances), PROGRESS.md (43), src/miniproto/client.py (30), docs/THOUGHTS.md (27), tests/test_media_download.py (23), docs/media.md (21), and .env.example, .github/workflows/ci.yml, pyproject.toml, src/miniproto/media/download.py, tests/test_live_media_limit_benchmark.py, and tools/bench/benchmark_live_media_limit.py (20 each). Churn is a coordination signal, not proof of a bug.

AreaWhy fragileSafe change strategy
Client/sender lifecyclePending aliases, receive tasks, reconnect, storage, update dispatch, and media pools share shutdown/cancellation boundariesTrace the owner of every task/future/slot and test cancellation before/after each ownership transfer
Media download/live benchmarkOrdering, adaptive windows, flood policy, lanes, writer rollback, hashes, and reporting evolve togetherKeep engine correctness separate from live tuning; test fake invokers and accounting before live comparison
Development/progress/workflowsCommands and claimed evidence can drift from implemented CIChange command, CLI help, workflow contract, docs, and progress evidence in one reviewed unit
Schema/reference generationVery large output magnifies one generator/source errorReview source metadata and small focused fixtures, then run deterministic full stale checks
Stated intentCurrent realityResolution boundary
Older reports call the milestone “v1”The approved release target is 0.1.0 Alpha and breaking changes remain expectedPLAN.md, the dated completion plan, and release docs now state the current version; older dated evidence remains historical
Wave 5 provides a strict documentation gateThe site, generators, tests, and progress trackers are implemented and locally verified for origin-root and /miniproto artifactsPreserve the local evidence boundary; hosted Pages publication remains unverified until the trusted workflow runs
Release-facing docs describe 0.1.0 AlphaPython/Rust metadata agree on 0.1.0; local artifacts passed the canonical gate; the complete candidate/publisher are implemented but the final-SHA candidate and publication do not existTASK-092 owns final hosted construction; TASK-094 is ready for the maintainer’s protected external actions
One permanent identity should drive the final themeThe community poll is open; Packet Loom is the explicit temporary choiceSwap through the brand generator only if the maintainer reports a different winner
Cross-platform/free-threaded support is a premiseHosted CI and all 24 wheel lanes passed at c815339…; the final source tree and expanded candidate workflow are newerPreserve the successful platform evidence and rerun the complete artifact workflow from the final release SHA

No unresolved product question blocks the prepared 0.1.0 handoff. The permanent logo result is deliberately deferred to the community poll, and the maintainer has explicitly authorized Packet Loom until a different winner is reported. The remaining release items are explicit external actions and evidence gates, not unanswered design questions.

  • PROGRESS.md
  • PLAN.md
  • plans/2026-08-12-v0.1.0-alpha-completion-plan.md
  • pyproject.toml
  • rust/miniproto/Cargo.toml
  • src/miniproto/client.py
  • src/miniproto/media/download.py
  • src/miniproto/session/storage.py
  • tools/schema/schema-metadata.json
  • .github/workflows/build-wheels.yml
  • .github/workflows/publish-release.yml
  • SECURITY.md