Skip to content

Commit bb3a305

Browse files
committed
docs(cli): A1 — owen issue template (EN) + Known limitations section
The bug-report template asks exactly what triage needs (version, OS/SDK, command, exit code, output, optional diagnostic report / sanitized facts — with an explicit review-before-attaching note), and routes the documented exit-3/exit-4 behaviors away from the bug queue. The Known limitations section separates unsupported-by-design (frontend scope, symbol-tolerant analysis of non-compiling projects, alpha rule families, static-only evidence, versioned vocabulary, Python requirement) from bugs, per the alpha first-run contract. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015de4MezSeUnZBoWq1fFU5M
1 parent ce9096b commit bb3a305

2 files changed

Lines changed: 98 additions & 0 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: "owen CLI problem (alpha)"
2+
description: "Something went wrong running `owen check` — a crash, a wrong exit code, a confusing message, or a suspected wrong finding."
3+
labels: ["bug", "owen-cli"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for trying the alpha. Two quick pointers before you file:
9+
- **Exit 4** ("no supported input") and **exit 3** (no Python ≥ 3.11) are
10+
documented behavior, not bugs — see `owen --help`. If the message was
11+
unclear or wrong for your case, that IS worth filing.
12+
- **Exit 5** means owen hit an internal error and wrote a diagnostic
13+
report to `~/.owen/diag/last-failure.json` — attaching it makes the fix
14+
much faster. It contains tool/OS/runtime identity, the command line and
15+
the failure cause, and **no source file contents**.
16+
- type: input
17+
id: version
18+
attributes:
19+
label: "owen --version"
20+
placeholder: "0.1.0"
21+
validations:
22+
required: true
23+
- type: input
24+
id: os
25+
attributes:
26+
label: "OS and .NET SDK"
27+
description: "e.g. `Windows 11 / .NET SDK 8.0.4` or `Ubuntu 24.04 / .NET SDK 8.0.4`"
28+
validations:
29+
required: true
30+
- type: input
31+
id: command
32+
attributes:
33+
label: "Exact command"
34+
placeholder: "owen check MyApp.sln --format sarif"
35+
validations:
36+
required: true
37+
- type: input
38+
id: exit-code
39+
attributes:
40+
label: "Exit code"
41+
description: "`echo $?` (bash) / `echo $LASTEXITCODE` (PowerShell) right after the run"
42+
validations:
43+
required: true
44+
- type: textarea
45+
id: output
46+
attributes:
47+
label: "Output (stderr/stdout)"
48+
description: "What owen printed. If you can, re-run with `--debug` and include that instead."
49+
render: shell
50+
validations:
51+
required: true
52+
- type: textarea
53+
id: artifact
54+
attributes:
55+
label: "Diagnostic report / sanitized repro (optional but very helpful)"
56+
description: |
57+
- For exit 5: attach `~/.owen/diag/last-failure.json`.
58+
- For a wrong/missed finding: a minimal `.cs` snippet that shows it, or the
59+
facts file from `owen check <path> --emit-facts facts.json` — **review it
60+
before attaching**; it contains file paths and code structure (names,
61+
lines), though no full source text. Never attach anything you consider
62+
private without sanitizing it first.
63+
validations:
64+
required: false
65+
- type: textarea
66+
id: expected
67+
attributes:
68+
label: "What you expected instead"
69+
validations:
70+
required: true

‎frontend/roslyn/OwnSharp.Cli/README.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,34 @@ runtime identity, command line, stage, cause — **no source file contents**;
8686
sharing facts stays the explicit `--emit-facts` action). `--debug` (or
8787
`OWEN_DEBUG=1`) prints the full technical cause instead.
8888

89+
## Known limitations (alpha)
90+
91+
What is *unsupported by design* — distinct from bugs (which we want reported):
92+
93+
- **.NET / C# frontend only.** `.cs`, `.csproj`, `.sln`. Anything else is
94+
exit 4 ("no supported input"), never a silent clean scan.
95+
- **A non-compiling project is analyzed anyway** — symbol-tolerantly. Roslyn
96+
compile errors are deliberately ignored (the analysis reads symbols, not
97+
IL); unresolved external references degrade to *advisory* notes
98+
(OWN050/OWN051), never to invented findings. Consequence: a broken build
99+
does not fail `owen check`, and findings that depend on an unresolved type
100+
may be missed — check the project compiles if a finding you expected is
101+
absent.
102+
- **Alpha rule scope**, not a general leak detector: event-subscription
103+
lifetime (the WPF/WinForms `+=`-without-reachable-`-=` family), timers,
104+
local `IDisposable` flows, DI lifetime mismatches, pooled-buffer misuse.
105+
- **Static analysis only.** A finding is a lifetime-contract violation with
106+
the evidence the code shows — not a runtime-proven leak. Runtime retention
107+
proof is separate tooling.
108+
- **Vocabulary is versioned and fails loud.** Facts from a mismatched
109+
extractor/core pair are a hard exit 2 by contract — never a guess.
110+
- **Python ≥ 3.11 required** at run time; never auto-installed.
111+
- Analysis of WPF-shaped code does **not** require Windows; only *running*
112+
WPF apps does.
113+
114+
Anything outside this list that ends in a crash, a wrong exit code, or a
115+
wrong finding is a bug — please use the "owen CLI problem" issue template.
116+
89117
## Release process
90118

91119
Versioning policy, the release pipeline (`.github/workflows/owen-cli-release.yml`),

0 commit comments

Comments
 (0)