aws-samples / aws-samples/sample-autonomous-cloud-coding-agents

fix(agent): is_verify_command_inert misses mise's "unknown command" output — INERT build-gating warning never fires

Abierto Apto para principiantes
#749 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
146
Forks
46
Merge medio
3 d 10 h
PR fusionados (30 d)
24

Descripción

### Component

Agent (Python runtime)

### Describe the bug

`is_verify_command_inert()` (`agent/src/post_hooks.py:77-99`) fails to recognise mise's actual "task does not exist" phrasing, so a repository with **no `mise.toml` at all** is never classified as inert.

The most damaging consequence is not the wrong `build_passed`/`lint_passed` value — it is that the operator-facing warning at `agent/src/repo.py:517-526` never fires:

```python
if not config.build_command and is_verify_command_inert(result.returncode, result.stderr):
build_gate_inert = True
notes.append(
"⚠️ Build-regression gating is INERT: no runnable `mise run build` task ..."
)
```

Because the detector returns `False`, that note is never appended. A repo onboarded with no `pipeline.buildCommand` and no `mise.toml` therefore gets **build-regression gating silently disabled with no warning to anyone** — precisely the failure mode the warning exists to prevent.

### Expected behavior

`mise run build` / `mise run lint` in a repo with no `mise.toml` should be detected as inert, so that:

1. `build_gate_inert` / lint-inert is set,
2. the "⚠️ Build-regression gating is INERT" note is appended and surfaced on the PR, and
3. `build_passed` / `lint_passed` reflect inert-treated-as-passing rather than a bogus red.

### Current behavior

The detector returns `False`, no inert warning is emitted, and `lint_passed` is persisted as `false` on every task against such a repo.

### Reproduction steps

In any checkout with no `mise.toml` (e.g. a clone of `aws-samples/sample-semantic-layer-structured`):

```console
$ mise run lint; echo "EXIT=$?"
mise ERROR unknown command: lint

Did you mean:
mise install-into
mise plugin-list
mise ERROR Version: 2026.8.4 macos-arm64
EXIT=1
```

Then feed that verbatim to the detector:

```console
$ python3 -c "
import sys; sys.path.insert(0,'agent/src')
from post_hooks import is_verify_command_inert
print(is_verify_command_inert(1, 'mise ERROR unknown command: lint'))"
False
```

The heuristics check exit `127`, `"no tasks defined"`, `"no task named"`, `"mise"` + `"not found"`, and `"command not found"`. Real mise emits **`unknown command`** with exit **1**, matching none of them.

Observed in practice on task `01KZS7NFB480DGF2A6FZ5N3CZD` and `01KZS86KNZPVK8FZXX757ADZ8S` (both `lint_passed=false`, no inert note on the PR).

### Possible solution

Add mise's real phrasing to the heuristic list in `is_verify_command_inert`:

```python
or "unknown command" in s
```

Worth reviewing the full set of mise task-missing messages across versions rather than adding one string, and adding a regression test that feeds the verbatim stderr above. Note the mise version string is included in that stderr, so a test fixture should not match on version.

Related: the same detector is used for the post-agent gate in `agent/src/post_hooks.py` and for the lint inert path, so build and lint inert handling are both affected by the single missed match.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza en agent/src/post_hooks.py, en is_verify_command_inert(), y reproduce literalmente el stderr de mise del issue. Comprueba el manejo relacionado en agent/src/repo.py, donde se añade la advertencia de inercia, y añade una prueba de regresión que cubra el código de salida y stderr; estará terminado cuando los casos inert de build y lint muestren la advertencia y eviten falsos fallos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
backend
Tipo de issue
Error
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Tranquilo
Claridad
Bien especificado
Aptitud para principiantes
78/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.