[package] name = "jouleclaw-recombination" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true authors.workspace = true description = "Recombination provenance primitive for JouleClaw — typed expression of 'the agent inherits the provenance stamp by resemblance, not by carrying it.' When code is generated by recombining template X with library Y, this crate's RecombinationStamp says what fraction of the new artifact is inherited from each upstream and how much NOVELTY MASS remains (the fraction needing a fresh adjudication). Composes with jouleclaw-adjudication: BorrowedAdjudication::unbuyable() is true iff inherited stamps are unbuyable AND novelty mass is below the operator's threshold. Closes the gap pointed out in conversation: AI coding 'works' because it inherits upstream open-source verification, but borrowed stamps don't auto-cover novelty. This crate makes the novelty visible." [dependencies] jouleclaw-adjudication = { path = "../jouleclaw-adjudication" } serde = { workspace = true } serde_json = { workspace = true } thiserror = { workspace = true } blake3 = { workspace = true } chrono = { workspace = true, features = ["serde"] }