gen-types 0.1.7

gen — typed IR for the universal package-manager → build-system engine. One typed Manifest / Package / Dependency / Feature / Constraint / Lockfile / Workspace / BuildStep / Derivation shape that every ecosystem reduces to. Foundation crate; the only thing every adapter + renderer + cache backend depends on. See theory/GEN.md for the full design.
Documentation

gen-types — typed IR for the universal package-manager → build- system engine.

Foundation crate. Every adapter (gen-cargo, gen-npm, gen-bundler, gen-pip, gen-gomod, gen-helm, …) emits this shape; every renderer (gen-nix-incremental, gen-nix-bulk, gen-bazel, …) consumes it; every cache backend (gen-cache-attic, gen-cache-cachix, …) keys on it.

See theory/GEN.md for the full design — why universal lifting, the 80/20 split, the trait architecture, the milestone plan.

Shape

Manifest (1)
  └─ packages: Vec<Package>             (one per crate / gem / wheel / etc.)
        ├─ source: PackageSource        (Registry | Git | Path | Local)
        ├─ dependencies: Vec<Dependency>
        │     ├─ constraint: VersionConstraint
        │     ├─ kind: DependencyKind   (Direct | Build | Dev | Optional | Peer)
        │     ├─ features_enabled: Vec<String>
        │     └─ target_predicate: Option<TargetPredicate>
        ├─ features: Vec<Feature>
        └─ build_steps: Vec<BuildStep>
  └─ lockfile: Option<Lockfile>

Every adapter is a thin Manifest-producer; every renderer is a thin Manifest-to-Derivation translator. The trait surface stays narrow.