feat: agentic orchestrator — forge detector, plugin protocol, LangGraph agent, Gittuf (example) and reproducibility plugins#130
Conversation
…n/darnit into feature/project-detectors
…n/darnit into feature/project-detectors
Kusari Analysis Results:
After synthesizing both analyses, the combined risk profile supports proceeding with this PR. The code analysis recommended DO NOT PROCEED solely because its dependency scanner was disabled (govulncheck_run: false), leaving it unable to confirm whether CVE-2026-34070 (HIGH severity path traversal in langchain-core@1.2.20) had been resolved. The dependency analysis directly fills this gap, explicitly confirming that langchain-core has been upgraded to 1.2.24, which resolves CVE-2026-34070. The condition stated by the code analysis ('upgrade langchain-core to >= 1.2.22 and confirm via dependency scan') is fully satisfied. The only remaining code-level findings are 2 LOW severity dynamic URL construction issues in llm/backends.py and storage/backends.py, both using configuration-time values (not user-controlled input), making them non-actionable and not a meaningful risk. License concerns on transitive dependencies (jsonpointer, jsonpatch, xxhash, orjson) are minor and likely reflect tool classification limitations rather than true licensing conflicts. No secrets, workflow issues, or unresolved high/critical vulnerabilities remain. The PR is safe to merge. Note View full detailed analysis result for more information on the output and the checks that were run.
Found this helpful? Give it a 👍 or 👎 reaction! |
|
Kusari PR Analysis rerun based on - 6165772 performed at: 2026-04-02T15:45:39Z - link to updated analysis |
Summary
Extends Darnit toward the agentic/skills-based workflow. Darnit can now drive its own audit pipeline via
darnit run, and external tools can plug in via a plugin protocol.What was built:
Forge / CI detector —
init_project_config()now auto-detects hosting platform, CI system, and build tool, writing results to.project.yaml. Moves detection logic into the framework core rather than repeating it in each plugin.Plugin protocol extension —
ComplianceImplementationnow supports three optional action handlers:get_check_handlers(),get_context_handlers(),get_remediation_handlers(). Backwards compatible existing plugins unaffected.LangGraph state machine —
darnit/agent/graph.pydrives the full pipeline: load context → run checks → collect context → remediate → finish. Replaces the passive MCP-only model with an autonomous agent.Bring-your-own LLM —
darnit/llm/backends.pyadds Anthropic, OpenAI, and Ollama backends. PENDING_LLM results are now resolved directly in standalone mode.Gittuf plugin —
packages/darnit-gittufis a reference external plugin implementing the new protocol. Three controls: GittufInitialized, GittufPolicyValid, CommitsSigned.Reproducibility module —
packages/darnit-reproducibilityadds a new compliance domain with 5 controls across 3 levels: DependenciesPinned, BuildEnvDeclared, HermeticBuild, ProvenanceExists, BitForBitReproducible.darnit runCLI command — triggers the full agentic pipeline from the terminal. "darnit run ."Type of Change
Framework Changes Checklist
If this PR modifies the darnit framework (
packages/darnit/):openspec/specs/framework-design/spec.md) if behavior changednote: validate_sync.py and generate_docs.py fail on Windows due to a pre-existing cp1252 encoding issue (UnicodeDecodeError on spec.md). Not caused by this PR, same failure exists on main branch on Windows.
uv run python scripts/validate_sync.py --verboseand it passesuv run python scripts/generate_docs.pyand committed any doc changesControl/TOML Changes Checklist
If this PR modifies controls or TOML configuration:
Testing
uv run pytest tests/ -v)uv run ruff check .)Additional Notes