Skip to content

Add governed QCoder implementation - #1

Merged
echoomegaprime merged 19 commits into
mainfrom
agent/qcoder-canonical
Aug 10, 2026
Merged

Add governed QCoder implementation#1
echoomegaprime merged 19 commits into
mainfrom
agent/qcoder-canonical

Conversation

@echoomegaprime

@echoomegaprime echoomegaprime commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

Built the QCoder governed plugin and added a pinned Crucible security-tool catalog covering 20 additional open-source repositories across low, medium, high, and critical tiers. Added strict catalog validation, tests, release staging, and documentation. High-risk tools require an authorized Crucible scope; critical Caldera is Crucible-only.

Why

QCoder needs stronger coding, security validation, and autonomous-maintenance capabilities without turning a local terminal into unrestricted target or credential authority.

Validation

  • pwsh -File .\scripts\verify-plugin.ps1 -SkipMcpSmoke — PASS
  • npm run typecheck — PASS
  • npm run lint — PASS
  • npm test — PASS (server 34, web 7, script 16, golden 60/60)
  • node .\scripts\validate-crucible-catalog.mjs — PASS (20; low 9, medium 5, high 5, critical 1)
  • npm audit --audit-level=high — PASS (0 vulnerabilities)
  • python .\launcher\tests\test_qcoder_adapter.py — PASS (17)

Security

Catalog entries are pinned to exact commits and license SHA-256 digests. Membership grants no shell, network, credential, or target authority. Low-risk scanners are workspace-safe; active discovery/fuzzing/proxy tools require Crucible scope; Caldera is critical and Crucible-only. No secrets or restricted data were added.

Evidence

Commit a8e4064 on agent/qcoder-canonical. Hosted checks must pass on this exact commit before merge.

Streamable HTTP MCP at /mcp, seven OAuth-scoped tools, MCP Apps UI
ui://qcoder/console/v1, skill, packaging, 60 golden prompts, reports.
Production oauth-mcp-qcoder-v1 binding remains external dependency.
Adds the second reviewed 20-tool batch requested after batch 1's draft PR,
restructuring config/crucible-tool-catalog.json to a multi-batch schema
(schemaVersion 2) so batch 1's validated data is preserved byte-for-byte.

Of the 20 originally proposed candidates (Nmap, Masscan, Gobuster, Nikto,
SQLMap, Amass, theHarvester, Recon-ng, Sherlock, Zeek, Suricata, Wazuh,
Velociraptor, Falco, Bandit, Semgrep, CodeQL, TruffleHog, BrowserGym, Open
Interpreter), 12 failed live re-verification against the MIT/Apache-2.0
policy gate (custom, AGPL, GPL, or unverifiable licenses) and were swapped
for equivalent permissively-licensed tooling: Grant, OSV-SCALIBR, gosec,
detect-secrets, Cosign, in-toto, OPA, CycloneDX CLI, honggfuzz, Garak, and
PyRIT. Garak/PyRIT are the catalog's first generative-AI red-team entries,
so the validator's route-prefix check now also accepts echo.ai_redteam.*
alongside echo.crucible.*.

Every entry's commit SHA and license SHA-256 was fetched live from the
GitHub API; four repos (amass, grant, in-toto, BrowserGym) whose GitHub
SPDX classifier reported NOASSERTION were confirmed Apache-2.0 by reading
their actual LICENSE file text before inclusion.

npm run verify (typecheck, lint, format, full test suite, build) and
npm audit are green.
@echoomegaprime

Copy link
Copy Markdown
Owner Author

Added batch 2 of the Crucible tool catalog (commit f00303e), requested as a follow-up after batch 1 above.

  • Restructured config/crucible-tool-catalog.json to a multi-batch schema (schemaVersion: 2) — batch 1's 20 entries are preserved byte-for-byte.
  • Batch 2 re-verified all 20 originally proposed candidates (Nmap, Masscan, Gobuster, Nikto, SQLMap, Amass, theHarvester, Recon-ng, Sherlock, Zeek, Suricata, Wazuh, Velociraptor, Falco, Bandit, Semgrep, CodeQL, TruffleHog, BrowserGym, Open Interpreter) live against GitHub. 12 failed the MIT/Apache-2.0 policy gate (custom/AGPL/GPL/unverifiable licenses) and were replaced with equivalent permissively-licensed tooling: Grant, OSV-SCALIBR, gosec, detect-secrets, Cosign, in-toto, OPA, CycloneDX CLI, honggfuzz, Garak, and PyRIT.
  • Garak/PyRIT are the catalog's first generative-AI red-team entries; the validator's route check now also accepts echo.ai_redteam.* alongside echo.crucible.*.
  • Every commit SHA and license SHA-256 was fetched live from the GitHub API; 4 repos whose GitHub SPDX classifier reported NOASSERTION (amass, grant, in-toto, BrowserGym) were confirmed genuinely Apache-2.0 by reading the actual LICENSE text before inclusion.

Validation: node scripts/validate-crucible-catalog.mjs — PASS (2 batches, 40 entries; batch 2 low=11 medium=6 high=2 critical=1). npm run verify (typecheck, lint, format, full test suite incl. server 34 / web 7 / script 16 / golden 60, build) and npm audit are green.

…tooling

Commander-requested: search GitHub for reverse-engineering repositories and
add them to QCoder's governed tool catalog. Adds a third 20-tool batch
covering the tool families FLEET_ROLES/reverse-engineer.md names as live
capability companions (echo.re.binary.*, echo.re.apk.*): Ghidra, capa, FLOSS,
YARA, jadx, Androguard, RetDec, LIEF, Capstone, Refinery, Detect It Easy,
BinExport, plyara, CyberChef, PortEx, StringSifter, angr, pe-sieve, syzkaller,
and Frida.

Frida is cataloged critical/crucible-only (live cross-platform code injection
into any running process is the same open-ended blast radius as Caldera and
Open Interpreter in batches 1-2) and is never installed or autonomously
launched outside Crucible.

Eight originally-considered candidates (MobSF, Keystone, Unicorn, radare2,
rizin, Cutter, Qiling, objection) were excluded after live GitHub
verification confirmed GPL-2.0/GPL-3.0/LGPL-3.0 licensing; x64dbg and
pyelftools were left out rather than included on an unverified or
out-of-policy basis.

Extends policy.allowedLicenses with BSD-3-Clause, BSD-2-Clause (Capstone,
YARA, angr, Refinery, pe-sieve — all confirmed by reading actual LICENSE
text after GitHub's classifier reported NOASSERTION/None) and wxWindows-3.1
(Frida only). Extends policy.routePrefixes with echo.re., echo.mobile_pentest.,
and echo.prometheus_strike. — real, live-verified ECHO capability namespaces.
The catalog test now derives its accepted route prefixes from
policy.routePrefixes instead of a hardcoded regex.

npm run verify (typecheck, lint, format, full test suite, build) and
npm audit are green.
@echoomegaprime

Copy link
Copy Markdown
Owner Author

Added batch 3 of the Crucible tool catalog (commit 77c9024) — reverse-engineering and binary-analysis tooling, per an explicit follow-up request to cover the tool families named in FLEET_ROLES/reverse-engineer.md.

20 new entries, all live-verified against GitHub (commit SHA + license):

  • Low (16): Ghidra, capa, FLOSS, YARA, jadx, Androguard, RetDec, LIEF, Capstone, Refinery, Detect It Easy, BinExport, plyara, CyberChef, PortEx, StringSifter.
  • Medium (2): angr, pe-sieve.
  • High (1): syzkaller.
  • Critical (1): Frida — crucible-only, cataloged for capability discovery only (live cross-platform code injection into any process is the same open-ended blast radius as Caldera/Open Interpreter).

8 candidates were excluded after live verification confirmed copyleft licensing (MobSF GPL-3.0, Keystone GPL-2.0, Unicorn GPL-2.0, radare2 LGPLv3, rizin LGPL-3.0, Cutter GPL-3.0, Qiling GPL-2.0, objection GPL-3.0); x64dbg and pyelftools were left out rather than included unverified/out-of-policy.

Required two policy extensions (both documented in policy.note):

  • allowedLicenses += BSD-3-Clause, BSD-2-Clause (Capstone/YARA/angr/Refinery/pe-sieve — GitHub's classifier reported NOASSERTION/None for several despite genuinely permissive BSD text, confirmed by reading the actual LICENSE files) and wxWindows-3.1 (Frida only).
  • routePrefixes += echo.re., echo.mobile_pentest., echo.prometheus_strike. — real ECHO capability namespaces, live-confirmed via arcanum_sdk.sdk_capabilities rather than invented. Several batch-3 entries (ghidra→echo.re.binary.decompile_fn, jadx→echo.re.apk.decompile, floss→echo.re.binary.strings, capa→echo.prometheus_strike.capa_analyze, yara→echo.crucible.fw_yara, cyberchef→echo.crucible.cyberchef_serve, frida→echo.mobile_pentest.frida_attach) route to real registered capabilities rather than the echo.crucible.tool.* placeholder pattern.

The catalog test now derives its accepted route prefixes from policy.routePrefixes instead of a hardcoded regex, so this won't need a matching test edit on every future namespace addition.

Validation: node scripts/validate-crucible-catalog.mjs — PASS (3 batches, 60 entries; batch 3 low=16 medium=2 high=1 critical=1). npm run verify and npm audit are green.

@echoomegaprime
echoomegaprime marked this pull request as ready for review August 10, 2026 11:32
@echoomegaprime
echoomegaprime merged commit 53acfc2 into main Aug 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants