Files
alkgit/Cargo.toml
T
glm-5.3-flash d067cf558a docs(arch): A-2 + A-6 — async-trait trait family, pinned execution model
Resolves review 001 findings A-2 (critical) and A-6 (major) — the same
signature surface:

- ADR-012 §1: registry traits amended to #[async_trait] (bare async fn
  in traits is not dyn-compatible, E0038; ops sit behind Arc<dyn
  GitRegistryStore>). Desugared boxed Future form pinned in OQ-03's
  freeze inventory. async-trait = "0.1" added to the manifest.
- backend.md concurrency model: the five-trait family is
  #[async_trait] Send + Sync dyn-compatible; the wire layer enforces
  ADR-009's pipeline-concurrency budget itself (permit acquired around
  each GitPackGen/GitPackIngest call — the concrete admission point);
  impls must not block the async executor and own their internal
  threading (gix impls run spawn_blocking inside the impl — POC-2's
  shape restated at its true layer).
- transport.md §fetch: spawn_blocking sentence rephrased to the
  trait-contract version (the wire spec stops speaking gix).
- ADR-009: enforcement point of the blocking-pool budget made concrete.
- ADR-013 §6: ingestion spawn_blocking line aligned.
- review 001: A-2, A-6 marked resolved.

Verification: cargo test, clippy -D warnings, fmt --check, doc
--no-deps, check --no-default-features, check --all-features — all
clean.
2026-09-29 08:29:46 +00:00

67 lines
2.6 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[package]
name = "alkgit"
version = "0.0.1"
edition = "2021"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
repository = "https://git.alk.dev/alkdev/alkgit"
description = "Git smart protocol for the alk family: pkt-line substrates, protocol V2 serving (upload-pack/receive-pack), producer/consumer halves on alkcall channels, and backend traits with a feature-gated gitoxide implementation"
keywords = ["git", "protocol", "alkcall", "vcs", "network"]
categories = ["network-programming", "asynchronous"]
[lib]
name = "alkgit"
path = "src/lib.rs"
[features]
default = ["gix", "registry-file"]
# gitoxide-backed engine implementations (refs, pack gen/ingest). The
# `gix` facade crate is NOT a dependency (ADR-012 §4) — the impls drive
# the component crates directly (POC-2's shape). Disable for a
# wire/protocol-only embed or with your own object-storage backend.
gix = [
"dep:gix-odb",
"dep:gix-pack",
"dep:gix-ref",
"dep:gix-object",
"dep:gix-fsck",
]
# File-backed GitRegistry/GitRegistryStore default (per-repo record
# files + in-memory index) + the `git/repo/*` op set (ADR-012 §2–3).
# No gitoxide. Disable to bring your own registry backend.
registry-file = []
# sha256 passthrough (untested end-to-end; sha1 is pinned by default — OQ-05).
# gix-hash stays always-on with sha1: the wire layer needs it, and gix-hash
# fails to compile with neither hash feature selected (compile-time-rejected
# invariant, see docs/research/gitoxide.md).
sha256 = ["gix-hash/sha256"]
[dependencies]
alkcall = "0.8"
# Trait-family dyn-compatibility (ADR-012 §1: all backend traits are
# #[async_trait] — bare `async fn` in a trait is not dyn-compatible,
# review 001 A-2; the family-wide pattern: alktty TtyBackend, alkcall
# ProtocolHandler).
async-trait = "0.1"
gix-odb = { version = "0.84", optional = true, default-features = false, features = ["sha1"] }
gix-pack = { version = "0.74", optional = true, features = ["sha1"] }
gix-ref = { version = "0.67", optional = true }
gix-object = { version = "0.64", optional = true, features = ["sha1"] }
gix-fsck = { version = "0.25", optional = true, features = ["sha1"] }
gix-hash = { version = "0.26", features = ["sha1"] }
gix-packetline = "0.22"
gix-protocol = "0.65"
gix-transport = "0.59"
tokio = { version = "1", default-features = false, features = ["rt", "sync", "io-util", "macros", "time"] }
tokio-util = { version = "0.7", features = ["compat"] }
futures = "0.3"
bytes = "1"
thiserror = "2"
tracing = "0.1"
parking_lot = "0.12"
[dev-dependencies]
tokio = { version = "1", features = ["full", "test-util", "macros"] }
[profile.release]
lto = "thin"