Agentic-DART's architecture — especially the MCP surface — is deliberately minimal. Contributions that expand what the agent can CALL require extra scrutiny; contributions that expand what the agent can SEE are welcomed.
- New playbook YAML — add a sequencing profile for a case class
(LOTL, ransomware staging, etc.) under
dart_playbook/. No Python change required. - New typed MCP function — add a parser under
dart_mcp/. Must be read-only, must use_safe_resolve, must have a Pydantic/JSON schema, must include a bypass test. - New IP-KVM / remote-hands signature — extend
IP_KVM_VID_PIDindart_mcp/src/dart_mcp/__init__.py. Include a CVE, advisory, or observed-in-wild reference in the PR description. - Documentation and cases — case studies under
examples/case-studies/following the pattern ofself-evaluation/case-01/.
- Any function that writes to the evidence tree
- Any function whose MCP schema is missing
execute_shell,eval, or any equivalent general-purpose escape- Contributions that move guardrails from architecture to prompt
-
tests/test_mcp_surface.pystill passes (surface drift check) -
tests/test_mcp_bypass.pystill passes - If you added an MCP function,
tests/test_mcp_bypass.pytest_surface_is_exact_positive_and_negative_setis updated - If you touched the agent loop,
tests/test_agent_self_correction.pystill passes -
python3 -m scripts.eval.demostill produces recall ≥ prior
This repo is an active submission to the SANS FIND EVIL! 2026 hackathon through 2026-06-15. To keep authorship attribution clean for the judging panel during this window, contribution acceptance is narrower than usual:
- ✅ Accepted: small, focused PRs against issues that carry
the
good-first-issuelabel withoutpost-sans(typically CI / packaging / typo / documentation drift fixes). - ⏸️ Deferred: any issue carrying the
post-sanslabel. These are intentionally held until after the deadline. If you comment offering to work on apost-sansissue, expect a polite decline and a re-invitation in mid-June. - ❌ Not accepted during this window: new MCP functions, playbook YAML changes, dart_agent loop modifications, dart_mcp surface expansions. These are core IP areas.
After 2026-06-15 the policy reverts to standard OSS — post-sans
labels will be dropped, good-first-issue will be re-applied
where appropriate, and architectural PRs will be reviewed on
merit. If you opened a post-sans issue comment in good faith
during this window, thank you for your patience — please come
back in mid-June and ping the same issue.
During the competition window (through 2026-06-15), automated PRs from AI coding agents are not accepted, regardless of which issue they target. This includes (but is not limited to) PRs that disclose themselves as generated by Auto-Cod-Dan, Devin, sweep, autoCommit, GitHub Copilot Workspace agents, or similar systems.
This is not a judgment on the quality of those tools — it's an authorship-cleanliness requirement under SANS Hackathon Rule §8. A PR generated by a third-party AI agent has unclear authorship chains (the agent operator, the model provider, the issue scanner) that complicate the "solely owned ... no other person or entity having any right or interest in it" clause during the judging window. Easier to defer than to argue.
After 2026-06-19, AI-generated PRs are welcome on the same review terms as human-authored ones, with a one-line disclosure in the PR body that the contribution is automated.
For the maintainer's reference — actions to run on the day the judging window opens (submission frozen; contribution restrictions can lift):
- Re-add
good-first-issueto issues #4, #6, #8, #21, #22, #30, #31, #35, #38, #40 (all temporarily relabeledpost-sansduring the window; reverify each is still in scope) - Ping
@Tanayqqon issue #40 inviting the wiki PR - Drop
post-sanslabel on completed issues (#43 detection patterns, #44 v3 framework runtime activation, plus any of the relabeled set above whose work has shipped) - Update this
CONTRIBUTING.mdsection — replace the dated policy with standard OSS contribution flow + remove the AI-generated PR restriction section (or keep it relaxed) - Update README's "Acknowledgments" section as new contributors land
- Re-run
scripts/eval/demo.pyafter issues #43 and #44 land, update Phase-1 release-history baseline