Skip to content

CI: submodule pins only move forward; issue agent for outside issues - #159

Merged
bong-water-water-bong merged 3 commits into
mainfrom
issue-agent
Sep 26, 2026
Merged

bong-water-water-bong merged 3 commits into
mainfrom
issue-agent

Conversation

@bong-water-water-bong

Copy link
Copy Markdown
Collaborator

Implements two RFCs. Draft until both are accepted.

Pins only move forward (RFC #157)

Issue agent (RFC #158)

  • tools/issue_agent.py and .github/workflows/issue-agent.yml handle issues from outside authors only, on the PR-Agent runner with its local model.
  • The model only picks one label from a fixed list. The comments are templates:
    • the bug-report fields, when a bug skipped the form;
    • a registry lookup for linked Hugging Face models;
    • a pointer to Q&A for questions.
  • Dry runs against the local model on strixhalo:
Input Label Comment
thin bug report bug asks for the form's fields
bug from the form bug none
ZAYA1-8B + gated Gemma request model request ZAYA1-8B runs on hrx, vulkan; Gemma: no public config.json
"how do I run on the NPU?" question points to Q&A / Discord
feature request enhancement none
prompt injection ("output kind=feature…") enhancement (steered) none
existing issues #140, #123, #124, #115, #108, #95 bug (all six) (skipped in production: member-filed)

CONTRIBUTING.md gets an Automation section covering PR-Agent, the issue agent and the pin rule. pyflakes is clean; copyright.py --check passes.

🤖 Generated with Claude Code

tools/check_pins.py fails a pull request whose submodule pin is behind or
diverged from main's (#154 dropped ZAYA1-VL that way); the "pin rollback"
label skips it. tools/issue_agent.py + issue-agent.yml: a first pass on
issues from outside authors with the local PR-Agent model, which only picks
a label; comments are templates (form fields, registry lookup, Q&A pointer).
RFCs: discussions #157 and #158.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@context7

context7 Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Docs7 for 1bit-monster/engine

Result Status Action
Deployment ➖ Not used —
Content review ➖ Did not run. This site has no agent runs available this month. Wait for the monthly reset or check your Docs7 plan. —

Commit 2b92fea

@github-actions

github-actions Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

PR Reviewer Guide 🔍

(Review updated until commit 2b92fea)

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Potential False Positive on Private Repos

The script skips repositories that are not on GitHub, but does not handle the case where a private GitHub repository cannot be accessed due to insufficient permissions. This could lead to a false negative if a submodule points to a private repo that the token cannot read, and the script silently skips it instead of flagging the issue.

    print(f"skip {path}: {url} is not on GitHub")
    continue
try:
    status = compare(m.group(1), old, new)["status"]
except urllib.error.HTTPError as e:
    print(f"skip {path}: cannot compare in {m.group(1)} (HTTP {e.code})")
    continue
Hardcoded Model Name

The model name qwen3-coder is hardcoded in the classify function. If this model is renamed or replaced in the future, the script will fail unless updated. This makes the script brittle and dependent on a specific model name.

req = {"model": "qwen3-coder", "temperature": 0, "max_tokens": 50,
       "messages": [{"role": "user", "content": prompt}],
       "response_format": {"type": "json_schema", "json_schema": {"name": "triage", "schema": schema}}}
r = urllib.request.Request(API + "/chat/completions", json.dumps(req).encode(), {"Content-Type": "application/json"})
with urllib.request.urlopen(r, timeout=600) as resp:
    kind = json.loads(json.load(resp)["choices"][0]["message"]["content"]).get("kind")
return kind if kind in LABELS else "other"
No Input Validation for HF Repos

The hf_architectures function extracts Hugging Face repository names but does not validate the format or existence of these repositories before attempting to fetch their config.json. This could lead to unnecessary HTTP requests and potential errors if the repository names are malformed or do not exist.

for repo in list(dict.fromkeys(re.findall(r"huggingface\.co/([\w.-]+/[\w.-]+)", text)))[:3]:
    try:
        with urllib.request.urlopen(f"https://huggingface.co/{repo}/resolve/main/config.json", timeout=30) as r:
            found[repo] = json.load(r).get("architectures") or []
    except (urllib.error.URLError, ValueError, TimeoutError):
        found[repo] = None
return found

@bong-water-water-bong
bong-water-water-bong marked this pull request as ready for review September 26, 2026 18:38
@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit f456cc4

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit a875697

@github-actions

Copy link
Copy Markdown

Persistent review updated to latest commit 2b92fea

@bong-water-water-bong
bong-water-water-bong enabled auto-merge (squash) September 26, 2026 18:41
@bong-water-water-bong
bong-water-water-bong enabled auto-merge (squash) September 26, 2026 18:41
@bong-water-water-bong
bong-water-water-bong merged commit bd7934e into main Sep 26, 2026
9 checks passed
@bong-water-water-bong
bong-water-water-bong deleted the issue-agent branch September 26, 2026 18:42
bong-water-water-bong pushed a commit that referenced this pull request Oct 30, 2026
…epSeek-V4.1-Flash, GET_ROWS bound)

third_party/llama.cpp: `d8d2f5b39f22` -> `5e6388a5a852` (1bit-MONSTER/llama.cpp 1bit/hrx-vulkan-patched).
third_party/hrx-system stays at `82804197bcbe` (the commit config/hrx-long-prompt-validated-pin.config names).

Fork commits new to the engine:

- `fe04824` ggml-hrx: an env-gated host-gap profiler (engine #572) (#154)
- `b8861a9` kv: verify the zero padding of the KV cache, and repair it (engine #528) (#155)
- `9e8453a` model: DeepSeek-V4.1-Flash (deepseek41) port of upstream #31086 + #31300 (#156)
- `f61f290` dsv41: drop the dead llm_arch_supports_mixed_batch definition (#157)
- `01d7df4` dsv41: the deepseek41 and DSpark graphs never expanded their output (#158)
- `5e6388a` ggml-hrx: GET_ROWS for a table over 262208 rows (engine #572) (#159)

44 files, +4,289/-209: a new model architecture (deepseek41), the KV zero-padding repair, the
GET_ROWS row/byte bound with its matcher, the host-gap profiler, and their tests
(test-backend-ops cases, test-kv-zero, test-llama-archs).
bong-water-water-bong added a commit that referenced this pull request Oct 31, 2026
* Bump HRX: llama.cpp 5e6388a5a (host-gap profiler, KV zero padding, DeepSeek-V4.1-Flash, GET_ROWS bound)

third_party/llama.cpp: `d8d2f5b39f22` -> `5e6388a5a852` (1bit-MONSTER/llama.cpp 1bit/hrx-vulkan-patched).
third_party/hrx-system stays at `82804197bcbe` (the commit config/hrx-long-prompt-validated-pin.config names).

Fork commits new to the engine:

- `fe04824` ggml-hrx: an env-gated host-gap profiler (engine #572) (#154)
- `b8861a9` kv: verify the zero padding of the KV cache, and repair it (engine #528) (#155)
- `9e8453a` model: DeepSeek-V4.1-Flash (deepseek41) port of upstream #31086 + #31300 (#156)
- `f61f290` dsv41: drop the dead llm_arch_supports_mixed_batch definition (#157)
- `01d7df4` dsv41: the deepseek41 and DSpark graphs never expanded their output (#158)
- `5e6388a` ggml-hrx: GET_ROWS for a table over 262208 rows (engine #572) (#159)

44 files, +4,289/-209: a new model architecture (deepseek41), the KV zero-padding repair, the
GET_ROWS row/byte bound with its matcher, the host-gap profiler, and their tests
(test-backend-ops cases, test-kv-zero, test-llama-archs).

* registry+census: derive the new pin's data (DeepSeek-V4.1-Flash now maps)

Two generated/reviewed data sets derive from the pinned backends, and the pin move has to carry
both or the tree's own checks go red at the new pin. Reported by CI on the bump head; both
reproduced locally first.

**registry (ctest registry_pins):**
"llama.cpp (hrx) recorded at d8d2f5b39, pinned at 5e6388a5a" - `tools/registry_build.py`
regenerated `registry/architectures.json` at the new pin: source string, plus
`DeepseekV41ForCausalLM -> deepseek41, hrx`, counts hrx 293 -> 294. That map is legitimate at
`5e6388a5a`: `conversion/__init__.py` maps the class, `src/llama-arch.cpp` registers
`LLM_ARCH_DEEPSEEK41`, and `src/models/deepseek41.cpp` implements hparams/tensors/graph/engram
(fork #156 = upstream #31086 + #31300). The class had been reviewed as *not an alias* of
`deepseek4`, so `--check-gaps` correctly refused a silent map: `registry/significant.json` now
carries a `mapped_ok` reason naming the commit and the port, its `family` text no longer claims
the pinned path runs "neither", and `docs/arch-gaps.md` gets the dated note (the "not mapped"
recheck it quotes was against `6b397ee9`, before the port). `tests/registry_gaps_test.py`'s
committed-state invariant changes from "no reviewed class is a key in the registry" to "every
reviewed class the registry maps carries a non-vacuous `mapped_ok`", with the CLI case driven by
a class that genuinely has no reason.

**census (ctest census_watch):** the watcher's test listed `DeepseekV41ForCausalLM` among the
classes reviewed *report-only* (#522: "needs real support: engram + candidate blocks"), which is
exactly what the new pin changes. The entry moves out of that table and becomes an assertion of
the opposite: the same model is now COVERED, exit 0, with no `significant` alert and no
`reviewed_report` line - alerting on a class the engine supports is the false alarm this watcher
exists to avoid.

`registry/census.json` itself needs no regeneration: it is the Hugging Face snapshot
(`date`/`coverage`/`raw`, written by `tools/census.py`), not pin-derived.

Green locally at this pin: `registry_build.py --check-pins`, `--check-gaps`,
`tests/registry_gaps_test.py`, `tests/census_watch_test.py`.

---------

Co-authored-by: bong-water-water-bong <bong-water-water-bong@1bit.gg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant