feat(bug-filing-mcp): new cartridge wrapping the real feedback-o-tron engine#78
Merged
Conversation
… engine Adds a first-class JS-worker cartridge that packages the real bug-filing engine for the autonomous bug-reporting pipeline. Its submit_feedback tool forwards to the engine's HTTP intake (POST 127.0.0.1:7722/api/v1/submit_feedback, companion feedback-o-tron PR), so the boj gateway can reach the engine via POST /cartridge/bug-filing-mcp/invoke. Implements owner decision D0 = new wrapping cartridge: the unrelated feedback-mcp sentiment counter is left untouched; this is a new, distinctly named cartridge for the real engine. Manifest validates against schemas/cartridge-v1.json; no FFI (.so) claims — pure mod.js dispatch. Closes: hyperpolymath/boj-server#279 Refs: hyperpolymath/boj-server#274 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 282 issues detected
View findings[
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/planner.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/types.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/rollback.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/rollback_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/planner_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/lsp_client.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/lsp_client_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/parser.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/integration_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/boj-server-cartridges/boj-server-cartridges/cartridges/cross-cutting/orchestration/stack-orchestrator-mcp/adapter/parser_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
hyperpolymath
marked this pull request as ready for review
July 9, 2026 08:23
Merged
2 tasks
hyperpolymath
added a commit
that referenced
this pull request
Jul 17, 2026
…n, full cartridge layout (#85) <!-- SPDX-License-Identifier: CC-BY-SA-4.0 --> ## Summary bug-filing-mcp v0.2: exposes the feedback-o-tron engine's full interactive loop (`research_feedback` → `synthesize_feedback` → `submit_feedback` with fail-closed `template_data` validation), promotes the cartridge Ayo → **Teranga** per owner decision (bug filing is a core boj capability), and completes the standard cartridge layout (ffi/abi/panels/tests). Extends the v0.1 wrapper from #78; part of hyperpolymath/boj-server#274 via hyperpolymath/boj-server#282 / #283. ## Schema-validation note - [x] This PR adds or modifies one or more `cartridge.json` manifests. - [ ] This PR does not touch any `cartridge.json`. `cd tools/validate-cartridges && deno task strict` run locally: **141/141 manifests passing** (includes the updated v0.2 manifest). `schemas/PINNED-SHA` untouched. Notes on honesty: the manifest does **not** claim `available: true` (the engine must run locally with `FEEDBACK_A_TRON_HTTP=1`) and declares **no** `ffi` block — the live dispatch path is `mod.js`; the Zig FFI is standard-layout scaffolding answering with a structured delegation notice (its tests pass under zig 0.15.2). `abi/BugFilingMcp/SafeBugFiling.idr` compiles under `%default total` (Idris2 0.7.0) and proves the pipeline state machine: a rejected report has no path to submission (`rejectedIsTerminal`) and submission is only reachable through validation (`submitRequiresValidation`). `tests/integration_test.sh` passed 8/8 against a live engine (SKIPs cleanly when absent). The repo also gains its own `.github/ISSUE_TEMPLATE` issue forms (dogfood — the pipeline needs forms to fetch). ## Refs hyperpolymath/boj-server#274 (epic), hyperpolymath/boj-server#282 (C1+C2), hyperpolymath/boj-server#283 (C3), hyperpolymath/boj-server#279 (v0.1), companion engine PR hyperpolymath/feedback-o-tron#51. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017LDhR8gtnittEWSafunnrq --- _Generated by [Claude Code](https://claude.ai/code/session_017LDhR8gtnittEWSafunnrq)_ Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A new first-class JS-worker cartridge
bug-filing-mcpthat packages the real feedback-o-tron bug-filing engine for the autonomous bug-reporting pipeline.submit_feedback→ forwards to the engine's HTTP intakePOST http://127.0.0.1:7722/api/v1/submit_feedback(companion PR:feedback-o-tron#46).POST /cartridge/bug-filing-mcp/invoke {tool:"submit_feedback", arguments:{title,body,repo}}.schemas/cartridge-v1.json;deno checkclean; no FFI/.so claims — puremod.jsdispatch.503(with a start-the-engine hint) if the backend isn't running.Why — D0 = new wrapping cartridge
Owner decision D0: the unrelated
feedback-mcpsentiment counter is left untouched; the real engine gets its own distinctly-named cartridge. This ends the long-standing name/identity collision by making the real engine first-class, and completes the boj-side of contract C4 dispatch (feedback-o-tron/docs/AUTONOMOUS-BUG-PIPELINE.adoc).Wiring
Notes
site/catalog.jsonis an externally-generated artifact (no in-repo generator); this cartridge will appear on the next catalog regeneration.Closes hyperpolymath/boj-server#279 · Refs hyperpolymath/boj-server#274
🤖 Generated with Claude Code