feat: workspace skeleton + phase 0 research docs

- Cargo workspace with 5 sub-crates: alkgit-core (storage),
  alkgit-transport (smart protocol), alkgit-http, alkgit-ssh, alkgitd
  (binary); sha1 pinned through the gix stack, sha256 passthrough feature
- docs/research/: vision, gitoxide alignment, alk stack fit, server-side
  protocol inventory, license/reference policy, POC plan
- AGENTS.md: conventions mirroring alkcall (no comments, thiserror, tokio,
  no secrets on wire/at rest, visible-surface=authorized-surface,
  gitoxide-only serving path, bounded resources, registry-resolved repos)

Verified: cargo build, clippy -D warnings, fmt, test, check --all-features
This commit is contained in:
glm-5.3-flash committed 2026-09-19 15:36:21 +00:00
1 parent a633dddd6b
commit a3cdef909b
20 files changed
+965

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
[package]
name = "alkgit-core"
description = "Core git plumbing for alkgit: repository storage, ref management, pack handling, and access rules — transport-agnostic"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[dependencies]
gix = { workspace = true }
gix-odb = { workspace = true }
gix-pack = { workspace = true }
gix-ref = { workspace = true }
gix-object = { workspace = true }
gix-hash = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
[features]
default = []
sha256 = ["gix/sha256"]
+1
View File
@@ -0,0 +1 @@
#![forbid(unsafe_code)]
+25
View File
@@ -0,0 +1,25 @@
[package]
name = "alkgit-http"
description = "HTTP interface for alkgit: git smart-http (info/refs, git-upload-pack, git-receive-pack) and the admin API over alkhttp"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[dependencies]
alkgit-core = { workspace = true }
alkgit-transport = { workspace = true }
alkhttp = { workspace = true }
alkcall = { workspace = true }
bytes = { workspace = true }
tokio = { workspace = true }
futures = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
[features]
default = []
sha256 = ["alkgit-transport/sha256"]
+1
View File
@@ -0,0 +1 @@
#![forbid(unsafe_code)]
+21
View File
@@ -0,0 +1,21 @@
[package]
name = "alkgit-ssh"
description = "SSH interface for alkgit: git-over-ssh command serving (git-upload-pack / git-receive-pack) on alkcall channels"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[dependencies]
alkgit-core = { workspace = true }
alkgit-transport = { workspace = true }
alkcall = { workspace = true }
tokio = { workspace = true }
futures = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
[features]
default = []
sha256 = ["alkgit-transport/sha256"]
+1
View File
@@ -0,0 +1 @@
#![forbid(unsafe_code)]
+25
View File
@@ -0,0 +1,25 @@
[package]
name = "alkgit-transport"
description = "Git smart-protocol transport for alkgit: packetline framing, capability advertisement, upload-pack and receive-pack serving over alkcall BiStreams"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[dependencies]
alkgit-core = { workspace = true }
alkcall = { workspace = true }
gix-packetline = { workspace = true }
gix-protocol = { workspace = true }
gix-transport = { workspace = true }
gix-hash = { workspace = true }
bytes = { workspace = true }
tokio = { workspace = true }
futures = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
[features]
default = []
sha256 = ["alkgit-core/sha256"]
+1
View File
@@ -0,0 +1 @@
#![forbid(unsafe_code)]
+31
View File
@@ -0,0 +1,31 @@
[package]
name = "alkgitd"
description = "The alkgit server binary: assembles storage, smart protocol, HTTP, SSH, and TLS into one self-hosted git server"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
[[bin]]
name = "alkgitd"
path = "src/main.rs"
[dependencies]
alkgit-core = { workspace = true }
alkgit-transport = { workspace = true }
alkgit-http = { workspace = true }
alkgit-ssh = { workspace = true }
alkhttp = { workspace = true }
alktls = { workspace = true }
alkvault = { workspace = true }
tokio = { workspace = true }
serde = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
thiserror = { workspace = true }
[features]
default = []
sha256 = ["alkgit-http/sha256"]
acme = ["alktls/acme"]
+3
View File
@@ -0,0 +1,3 @@
fn main() {
println!("alkgitd: skeleton — server assembly lands after architecture (SDD phase 1)");
}