36 Commits
Author SHA1 Message Date
Violin cd18b6aefe docs(coverage): canonical findings must be independently decisive
Run 20260813_160102 scored 11/20 while run 152147 scored 16/20 on
identical code; the delta is canonization quality. FIND records that were
one-line pointers (no route, no specific field, no quoted proof) failed the
scorer's decisive-finding contract even when the vuln was real and proven
in evidence/. State the contract: substantive, exact METHOD/route, named
field, observable outcome, quoted proof, Impact+Remediation.
2026-08-13 17:57:52 +01:00
Violin 7e09291b23 docs(coverage): demand full response bodies in proof bundles
Run 20260813_152147 reached 16/20 but dropped referral-abuse and
no-rate-limiting to 'no decisive proof' — probes ran correctly but saved
only %{http_code} tails and bare status lines. Explicit rule: never save
only a status code; a confirmed vector's proof must include the response
body demonstrating it (credit balance for referral, no-429 summary for
rate-limit absence).
2026-08-13 17:00:30 +01:00
Violin 7a0a0f89ae docs(coverage): teach systematic probes for persistent-miss vectors
- redirects-unvalidated.md: systematic open-redirect probe loop (17 params,
  Location-header capture, external-redirect follow, allowlist-substring bypass)
- auth-bypass.md: when to run default/weak creds (after user-enum finds admin;
  hand-testable set is not brute force)
- xss.md: URL-valued fields (avatar/link) as stored/blind XSS vectors
- business-logic.md: referral self-referral registration recipe (register A,
  refer B, check both sides for credit)
- exhaustive-coverage.md: mandatory auth/registration-flow coverage step so
  the routing triggers no matter which playbook the agent reads first

No benchmark names or session inventory; generic OWASP technique only.
2026-08-13 15:57:05 +01:00
Violin df475ea4a8 docs(coverage): document state/coverage-matrix.yaml schema in exhaustive-coverage.md
Runs 1-2 of the rebuilt-image set both forced guard-code reads on the
VULN_RESEARCH coverage gate: the flat-key schema and per-status proof
rules existed only in ptt_handlers.py. The reference now documents the
exact schema (flat top-level keys, tested/not_applicable/blocked with
evidence-path requirements, obligation matching), per the agent's own
prevention suggestion in framework_feedback.md.
2026-08-13 13:39:01 +01:00
Violin 704c1fd594 chore(playbooks): remove trailing blank lines 2026-08-13 12:17:57 +01:00
Violin ec37bea859 chore(playbooks): de-reference benchmark challenge names in nosql notes 2026-08-13 10:36:37 +01:00
Violin bbf69fca6f chore(playbooks): drop stale unread last_updated metadata blocks (ssti/xss/sqli) 2026-08-13 10:36:12 +01:00
Violin e319facc9a chore(playbooks): strip benchmark challenge-inventory footnotes (9 files) 2026-08-13 10:34:38 +01:00
Violin 119e0c1600 feat(guard): friction auto-logs at block time + record-as-you-go contract
Agent was deferring framework feedback and state writes to closeout, then
reconstructing what happened from conversation memory after compression —
the exact mechanism that fabricates false positives.

- Guard now self-logs: _check_command_internal appends a Guard Block/Review
  row to state/framework_feedback.md at the moment check_command rejects a
  command (only when the file exists, i.e. benchmark engagements; no-op
  otherwise). Friction is captured with zero agent bookkeeping.
- SKILL.md Operational Contract: 'Record as you go' — after EVERY
  violin_review_batch, immediately update hypothesis board + coverage matrix
  + PTT in the same turn; never batch state writes to closeout, never
  reconstruct tests from memory. State files are the only source of truth.
- 5 new tests: block-row append, no-op without file/errors, dedupe, pipe
  escaping.

243 tests pass, ruff clean.
2026-08-11 13:41:51 +01:00
Violin e0b3cea379 fix(benchmark): curl-form endpoint matching + decisive discriminators
- _method_route_in_text now accepts '-X POST <url>' reproduction commands
  (quoted URLs no longer break the match) — recovers referral-abuse
- coupon-100-discount: decisive patterns (INTERNAL100 / 'discounted to $0')
  kill the false positive from a neg-qty finding whose checkout sent
  coupon_code:null
- weak-admin-creds: decisive patterns (DefaultCredentials / admin:password)
  stop mass-assign role-granted text from confirming it
- vuln-research playbook + hypothesis template: mandate 1:N Linked findings
  (an unlinked FIND file scores 0 even with perfect evidence)

Calibration still 20/20 + 0/0. Latest run re-scored: 6/20, now all true
positives (false coupon + false creds removed, referral recovered).
2026-08-11 13:03:47 +01:00
Violin 5c83ee3fdc fix(benchmark): closeout must finalize, not re-run; friction log benchmark-scoped
- _engagement_needs_closeout no longer fires on leftover unchecked PTT rows:
  a single '[ ]' task marker triggered a continuation pass that re-ran the
  entire assessment (255 msgs / 20m50s) instead of closing out. Closeout is
  now gated on the artifacts the scorer consumes (FIND files + report.md +
  retrospective.md) only.
- Closeout goal rewritten to be surgical: assessment is COMPLETE, evidence is
  final, no new tests/scans/verification, no evidence modification; only
  generate missing report/retrospective (prefer generate-closeout) and update
  PTT statuses.
- Friction-log instruction moved out of the general pentest SKILL.md (it is a
  benchmark-only artifact) into the benchmark goal prompt so the agent
  actually sees it.
- New pinned tests: leftover-PTT-row closeout detection, closeout-goal
  wording.
2026-08-10 21:23:54 +01:00
Violin bbc2d93a63 feat(guard): generated closeout artifacts + framework-owned methodology
- generate-closeout CLI derives findings.yaml and report.md from canonical
  FIND-NNN.md files; agent closeout reduced to executive-summary narrative
- Per-finding recording cut from 4 surfaces to 2 (hypothesis + FIND)
- New skills/pentest/references/exhaustive-coverage.md mandated from SKILL.md;
  Operational Contract (SKILL.md S7) and Citation Discipline (evidence ref S8)
- Benchmark goal/closeout prompts reduced to task + integrity constraint

Tests: 233 passed (7 new); live-verified against real Aug 10 run (10/10
findings, ids+severities match hand-written original).
2026-08-10 20:52:10 +01:00
Violin 1e1971aa6a feat(skills): update pentest playbooks, recon methodologies, and scope templates 2026-08-10 08:54:23 +01:00
Violin d7e139c486 feat: implement violin_guard plugin with secure execution adapters, terminal policies, and pentest skill frameworks 2026-08-08 13:29:11 +01:00
Violin 5e21f2257f fix(benchmark,guard): enhance benchmark profiling, guard UX, and findings integration 2026-08-08 13:29:11 +01:00
Violin 9ed494d439 feat: introduce benchmark runner with Docker support and automated vulnerability calibration evidence 2026-08-08 13:29:11 +01:00
DanandGitHub 5071b9689f docs(release): align workflow instructions, hypothesis discipline, and release v3.0.1 (#64)
Merge dev into master
2026-08-04 17:18:44 +01:00
DanandGitHub 09d8e842e3 Stabilize v3.0.0 workflow contracts (#58)
Closes #54
2026-08-01 21:56:15 +01:00
Violin 4fc7ffb4c6 feat: add terminal guard policy for filtering unsafe raw shell commands and include pentest playbook documentation. 2026-07-26 10:44:56 +01:00
Violin b274364118 feat: implement violin_guard plugin for secure pentest execution, target policy enforcement, and workflow orchestration 2026-07-25 14:13:38 +01:00
Violin 5fc876367d Release Violin 3.0.0 profile 2026-07-22 11:18:53 +01:00
Violin dc53bbb08a consolidate guard batch collaboration 2026-07-18 08:02:50 +01:00
Violin dc6d9a41a8 Allow arbitrary Kali CLI tools through guarded execution 2026-07-17 20:31:28 +01:00
Violin 5870509fdb feat: implement violin_guard plugin for centralized command execution auditing, terminal policy enforcement, and history tracking. 2026-07-17 20:14:20 +01:00
Violin 0075850b61 Add playbooks for SQL Injection, SSRF, and XSS vulnerabilities; enhance testing suite
- Created a comprehensive playbook for SQL Injection (SQLi) detailing types, detection methods, tools, and remediation strategies.
- Added a playbook for Server-Side Request Forgery (SSRF) covering classification, detection payloads, and remediation guidance.
- Introduced a playbook for Cross-Site Scripting (XSS) including types, detection techniques, and safe proof of concept examples.
- Expanded the test suite with new tests for command history deduplication, scope authorization, and structured argument handling.
- Improved existing tests for engagement and execution tracking, ensuring robust coverage of functionality.
2026-07-16 17:20:00 +01:00
Violin a51aa00d06 Refactor playbooks and templates for improved evidence handling and research documentation
- Updated various playbooks to use `$ENG_DIR` for storing evidence files instead of hardcoded paths.
- Enhanced documentation in playbooks to include mandatory CVE and exploit research fields in hypotheses.
- Introduced a new `pty-safe-delivery.md` reference for safe file delivery practices over PTY.
- Added a `shell_ctrl.py` template for PTY shell control with safeguards against long commands and file transfers.
- Improved tests to validate new hypothesis fields and ensure compliance with updated playbook requirements.
- General cleanup and consistency improvements across playbooks and templates.
2026-07-13 21:10:43 +01:00
Violin ea7e094528 Remediate audit P0/P1 findings; migrate tests to green
- state.py: fcntl/msvcrt file locking, reservation+finalization, history
  verification, remove dead subprocess bridges (p1-lock)
- hypotheses.py: enforce canonical status, phase/host/service/port match,
  reject unrelated hypotheses (p1-hyp)
- tools.py/__init__.py: retain kwargs (task_id), lifecycle hooks wired
  (REGISTERED_TOOLS + no-op-then-active hooks) (p1-life)
- Migrate tests from tests/*.py to tests/guard + tests/pentest_docs; align
  to actual API (handle_target returns ips[0], handle_exec_burst fail-closed,
  PTT self-certify uses real batch_id, post-exploitation requires hypothesis)
- scoping.md: add checkpoint.json continuity-artifact drift note
- pyproject.toml: v1.2.0, per-file-ignores for tests/scripts (E402/S101)
- Add .pytest-tmp-plugin/ to .gitignore

64 passed; ruff clean.
2026-07-12 20:57:55 +01:00
Violin 48b8abd292 Audit pentest skill docs against guard surface 2026-07-12 17:18:49 +01:00
Violin f2f95dd1e8 Remove obsolete manual engagement bootstrap 2026-07-12 17:11:57 +01:00
Violin eae934bd5b Add CTF bootstrap and repair guard CLI docs 2026-07-12 17:09:00 +01:00
Violin 68a3db3a89 Remove session search cross-references 2026-07-12 17:00:44 +01:00
Violin 56aec13ff1 Remove stale history tool references 2026-07-12 16:47:32 +01:00
Violin 8d8fb81ffb Consolidate Violin Guard into Hermes plugin 2026-07-12 16:00:16 +01:00
Violin 283f2683a9 feat: improve guard and workflow reliability 2026-07-12 09:39:55 +01:00
Violin 3d821d6e13 v1.1.0: guarded pentest workflow 2026-07-12 09:39:55 +01:00
Violin 262b221205 v1.0.0: initial release 2026-07-12 09:39:55 +01:00