{
  "_id": "6a102e81acfb0bcc41c9449e",
  "Package": "genproc",
  "Title": "Robust, Logged and Reproducible Iteration at Organizational\nScale",
  "Version": "0.2.0",
  "Authors@R": "person(\"Daniel\", \"Rakotomalala\", , \"rakdanielh@gmail.com\", role = c(\"aut\", \"cre\"))",
  "Description": "Turns one-off iterative R procedures (such as for loops,\nlapply() or pmap() from 'purrr') into production-grade\nworkflows by wrapping them with orthogonal, composable\nexecution layers. Two layers are always active: structured\nlogging with real traceback and per-case timing; and\nreproducibility capture, which records the R version, loaded\npackage versions, execution environment, the exact iteration\nmask, and a stat-based fingerprint of every input file\nreferenced in the mask (with a diff_inputs() helper to detect\nsilent drift between runs). Parallel execution (built on the\n'future' framework, Bengtsson (2021)\n<doi:10.32614/RJ-2021-048>), non-blocking background jobs, and\nopt-in progress reporting (via 'progressr') are implemented as\noptional, composable layers. Further layers (error replay,\ncontent-hash input fingerprinting, content-based case\nidentifiers) are planned and will remain composable with the\ndefault layers.",
  "License": "MIT + file LICENSE",
  "URL": "https://danielrak.github.io/genproc/,\nhttps://github.com/danielrak/genproc",
  "BugReports": "https://github.com/danielrak/genproc/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "RoxygenNote": "7.3.3",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-12 23:03:52 UTC",
    "User": "root"
  },
  "Author": "Daniel Rakotomalala [aut, cre]",
  "Maintainer": "Daniel Rakotomalala <rakdanielh@gmail.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-05-12 21:45:13 UTC",
  "RemoteUrl": "https://github.com/cran/genproc",
  "RemoteRef": "HEAD",
  "RemoteSha": "1315f242ccf23b1c423d2f3f48dd8fdfbb04fad5",
  "MD5sum": "769619180f79ebc9668cedd0212b506e",
  "_user": "cran",
  "_type": "src",
  "_file": "genproc_0.2.0.tar.gz",
  "_fileid": "36fd6d0b96c4d648ec5cc3ce50f212df3cf25326cfe8ad2dd5b2f702c2412673",
  "_filesize": 297283,
  "_sha256": "36fd6d0b96c4d648ec5cc3ce50f212df3cf25326cfe8ad2dd5b2f702c2412673",
  "_created": "2026-05-12T23:03:52.000Z",
  "_published": "2026-05-22T10:22:57.770Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77360951895,
      "time": 150,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6957876492"
    },
    {
      "job": 77360952002,
      "time": 125,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6957869270"
    },
    {
      "job": 77360951859,
      "time": 168,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6957840699"
    },
    {
      "job": 77360951276,
      "time": 106,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7158249696"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/25767274313",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/genproc",
  "_commit": {
    "id": "1315f242ccf23b1c423d2f3f48dd8fdfbb04fad5",
    "author": "Daniel Rakotomalala <rakdanielh@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.2.0\n",
    "time": 1778622313
  },
  "_maintainer": {
    "name": "Daniel Rakotomalala",
    "email": "rakdanielh@gmail.com",
    "login": "danielrak",
    "linkedin": "in/daniel-r-807192134",
    "uuid": 49936669
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "future",
      "role": "Imports"
    },
    {
      "package": "future.apply",
      "role": "Imports"
    },
    {
      "package": "parallel",
      "role": "Imports"
    },
    {
      "package": "progressr",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "magrittr",
      "role": "Suggests"
    },
    {
      "package": "purrr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-20",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.2.0",
      "date": "2026-05-12"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "danielrak",
      "count": 1,
      "uuid": 49936669
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/genproc"
  },
  "_devurl": "https://github.com/danielrak/genproc",
  "_pkgdown": "https://danielrak.github.io/genproc/",
  "_searchresults": 0,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/genproc.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.2.0",
      "date": "2026-05-12"
    }
  ],
  "_exports": [
    "add_trycatch_logrow",
    "await",
    "diff_inputs",
    "errors",
    "from_example_to_function",
    "from_function_to_mask",
    "genproc",
    "nonblocking_spec",
    "parallel_spec",
    "rename_function_params",
    "rerun_affected",
    "rerun_failed",
    "status"
  ],
  "_help": [
    {
      "page": "add_trycatch_logrow",
      "title": "Wrap a function with error handling and a structured log row",
      "topics": [
        "add_trycatch_logrow"
      ]
    },
    {
      "page": "await",
      "title": "Block until a non-blocking genproc run has resolved",
      "topics": [
        "await",
        "await.genproc_result"
      ]
    },
    {
      "page": "diff_inputs",
      "title": "Compare input file fingerprints between two genproc runs",
      "topics": [
        "diff_inputs",
        "print.genproc_input_diff"
      ]
    },
    {
      "page": "errors",
      "title": "Subset a genproc result to its failed cases",
      "topics": [
        "errors",
        "errors.genproc_result"
      ]
    },
    {
      "page": "from_example_to_function",
      "title": "Transform an example expression into a parameterized function",
      "topics": [
        "from_example_to_function"
      ]
    },
    {
      "page": "from_function_to_mask",
      "title": "Derive an iteration mask template from a function's signature",
      "topics": [
        "from_function_to_mask"
      ]
    },
    {
      "page": "genproc",
      "title": "Run a function over a mask with mandatory logging and reproducibility",
      "topics": [
        "genproc"
      ]
    },
    {
      "page": "nonblocking_spec",
      "title": "Specify a non-blocking execution strategy for genproc()",
      "topics": [
        "nonblocking_spec"
      ]
    },
    {
      "page": "parallel_spec",
      "title": "Specify a parallel execution strategy for genproc()",
      "topics": [
        "parallel_spec"
      ]
    },
    {
      "page": "print.genproc_result",
      "title": "Print a genproc result",
      "topics": [
        "print.genproc_result"
      ]
    },
    {
      "page": "print.genproc_result_summary",
      "title": "Print method for genproc_result_summary",
      "topics": [
        "print.genproc_result_summary"
      ]
    },
    {
      "page": "rename_function_params",
      "title": "Rename the parameters of a function",
      "topics": [
        "rename_function_params"
      ]
    },
    {
      "page": "rerun_affected",
      "title": "Re-run only the cases impacted by an input diff",
      "topics": [
        "rerun_affected"
      ]
    },
    {
      "page": "rerun_failed",
      "title": "Re-run only the cases that failed",
      "topics": [
        "rerun_failed"
      ]
    },
    {
      "page": "status",
      "title": "Query the status of a genproc run without blocking",
      "topics": [
        "status",
        "status.genproc_result"
      ]
    },
    {
      "page": "summary.genproc_result",
      "title": "Summarise a genproc result",
      "topics": [
        "summary.genproc_result"
      ]
    }
  ],
  "_readme": "https://github.com/cran/genproc/raw/HEAD/README.md",
  "_rundeps": [
    "codetools",
    "digest",
    "future",
    "future.apply",
    "globals",
    "listenv",
    "parallelly",
    "progressr"
  ],
  "_vignettes": [
    {
      "source": "genproc.Rmd",
      "filename": "genproc.html",
      "title": "genproc: deep dive",
      "engine": "knitr::rmarkdown",
      "headings": [
        "A small working example",
        "Anatomy of genproc_result",
        "The log",
        "The reproducibility snapshot",
        "Input fingerprinting",
        "Heuristic detection",
        "Shared inputs are deduplicated",
        "Overrides",
        "Comparing runs with diff_inputs()",
        "How errors are reported",
        "Inspecting and re-running a result",
        "Building blocks: extracting f and the mask from a working example",
        "1. from_example_to_function() — example expression to function",
        "2. from_function_to_mask() — function signature to mask template",
        "3. rename_function_params() — give the parameters domain names",
        "Parameter renaming with f_mapping",
        "Parallel execution in depth",
        "Power-user pattern: manage the plan yourself",
        "One-off pattern: let genproc install the plan",
        "Amortization threshold",
        "RNG reproducibility",
        "Non-blocking execution in depth",
        "What's in the skeleton",
        "Idempotence",
        "Default strategy: why \"multisession\"",
        "Plan lifetime",
        "Composition: parallel × non-blocking",
        "Default mc.cores in the wrapper subprocess",
        "Progress monitoring",
        "Current edges and roadmap"
      ],
      "created": "2026-05-12 21:45:13",
      "modified": "2026-05-12 21:45:13",
      "commits": 1
    }
  ],
  "_score": 2.6989700043360187,
  "_indexed": true,
  "_nocasepkg": "genproc",
  "_universes": [
    "cran",
    "danielrak"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-12T23:06:06.000Z",
      "distro": "noble",
      "commit": "1315f242ccf23b1c423d2f3f48dd8fdfbb04fad5",
      "fileid": "e83cbacc03e2457623836ebca03741bcf1d0b109a2abeffe5a70dda53ae6aa28",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/25767274313"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-12T23:05:35.000Z",
      "distro": "noble",
      "commit": "1315f242ccf23b1c423d2f3f48dd8fdfbb04fad5",
      "fileid": "f3abda00bd3cf70877aed2d1bfb413ad166b3be1b6dd063ae84e37ba8d910cf9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/25767274313"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-05-22T10:22:39.000Z",
      "commit": "1315f242ccf23b1c423d2f3f48dd8fdfbb04fad5",
      "fileid": "a31ca6b82479244dafa31944767cf5f0bf44d56857ae630a596733e80323f646",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/25767274313"
    }
  ]
}