chore: initialize crate base (manifest, lib stub, licensing, agents)

Phase 0 base for the russh-wrapped SSH adapter (family ADR-003):

- Cargo.toml: single-crate alkssh 0.1.0, MIT OR Apache-2.0, lib only,
  publish exclude list matching the sibling-crate policy; deliberately
  empty [dependencies] — the russh pin is phase 0 research output
  (alknet main's 0.49 is a data point, not the decision). [features]
  carries the fail-closed posture as a comment until the capability
  feature graph lands with the committed architecture
- src/lib.rs: crate-root doc describing the adapter shape and the
  fail-closed feature contract
- LICENSE-MIT / LICENSE-APACHE (alktty's standard texts)
- .gitignore (target/, node_modules/, .worktrees/)
- CHANGELOG.md: Keep a Changelog stub, [Unreleased] initialization
- AGENTS.md: full agent operating instructions — git workflow
  (conventional commits, commit-and-push), 13 project conventions
  (russh owns the wire, fail-closed capability features, key reuse via
  alkvault-backed sources, visible-surface=authorized-surface,
   ALPN as one-way door), verification commands, taskgraph
  task rules, SDD phase 0 lifecycle status, architecture context

Verification: cargo build/test/clippy --all-targets -D warnings and
cargo fmt --check all pass (lib stub, zero deps)
This commit is contained in:
glm-5.3-flash committed 2026-10-25 05:32:29 +00:00
1 parent 2340738a19
commit e0805cd438
8 files changed
+535

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
# Single-crate protocol/door crate (the alktty template). No workspace:
# the composition story is deferred — alkssh's substance is the mappings
# (family ADR-003), and phase 0 research settles the russh pin first.
[workspace]
members = ["."]
[package]
name = "alkssh"
version = "0.1.0"
edition = "2021"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
description = "SSH adapter for the alk family: russh-wrapped vanilla-ssh termination bridged to/from alkcall channels — session/pty, tunnels, dynamic forwarding, git exec/subsystem — with every capability mapping a fail-closed cargo feature (no features: no capabilities)"
repository = "https://git.alk.dev/alkdev/alkssh"
keywords = ["ssh", "russh", "protocol", "alkcall", "network"]
categories = ["network-programming", "asynchronous"]
# The package policy (the sibling crates' convention): the published crate
# ships the architecture docs (the authoritative contract) but not the
# process surface — reviews, research, plans, task files, the working
# agents' config, AGENTS.md.
exclude = [".opencode/", "AGENTS.md", "docs/reviews/", "docs/plans/", "docs/research/", "docs/sdd_process.md", "tasks/"]
[lib]
name = "alkssh"
[features]
# The capability feature graph (family ADR-003 decision 3) lands with the
# committed architecture: session (→ alktty), tunnel (→ alktunnels),
# dynamic-forward (→ alksocks), git (→ alkgit), sftp (→ alkfs, deferred).
# The default build carries no capabilities by design — every mapping is
# opt-in and every unfeatured channel open declines fail-closed.
default = []
[dependencies]
# Deliberately empty at initialize time — the russh version pin is phase 0
# research output (alknet main's `russh = "0.49"` is the reference, not the
# answer). alkcall + sibling-crate deps land with the committed architecture.
[dev-dependencies]
[profile.release]
lto = "thin"