Repository navigation
Releases: prodBirdy/painpoints
Releases · prodBirdy/painpoints
Release list
painpoints 0.3.0
Minor release: any System One model, and findings that name concrete bad
decisions instead of only scoring how much of a quality a file has.
Models
- Cloudflare Workers AI is a provider beside TypeSafe:
CLOUDFLARE_API_TOKEN
andCLOUDFLARE_ACCOUNT_IDselect Clef,PAINPOINTS_PROVIDERpicks when
both credentials are set, andPAINPOINTS_MODELoverrides the model for
either. ExistingTYPESAFE_*setups behave as before. - The Cloudflare
{result, success}envelope is unwrapped. - On Cloudflare, Clef-flash answers everything and Clef re-answers any
bad-decision question Clef-flash put at 0.3 or above
(PAINPOINTS_CONFIRM_MODEL,noneto turn it off). Decisions answered
that way carryconfirmed_by. - Rule questions are sent as
rule.<id>(wasrule:<id>): Clef only accepts
question names made of letters, digits,_,.and-. Answers keyed the
old way are still read. - The model module is
systemone, notjev.
Bad decisions
- Ten existence questions with worked examples: query in a loop, unbounded
read, swallowed error, unsafe retry, injection, missing ownership check,
hardcoded secret, raw error shown to a user, speculative abstraction and
data access or business rules inside UI. A detector at 0.75 or above is a
bad:<id>finding; files with confirmed decisions or rule violations rank
first.summary.by_decisioncounts them. painpoints evalruns fourteen labelled files built into the binary
through the configured model and prints how well each detector separates
the planted problem from clean code, next to how many the dimension scores
catch.
Coverage and noise
- Long files are read whole, in overlapping windows of up to 8000 characters
(at most six), instead of only their first 8000 characters. Scores take the
worst window; decisions and rule verdicts carry thelinesof the window
they were found in. - A compiled rule that comes back broken on half or more of at least ten
files is bandednoisy, listed insummary.noisy_rulesand the Markdown
report, and left out of findings and ranking. - The Markdown report's file table no longer ends its separator row with an
extra|.
Rules
- Recompiling after an instruction file changes keeps hand-edited rules:
every rule whose instruction text is still in the sources keeps its id,
scope, phase, question and status, andthresholdsare kept. Before, any
change toAGENTS.mdsilently replaced the whole file with fresh
scaffolds. - A single-file
--jsonresult andpainpoints_fileinclude every
decisionsandrule_verdictsentry with its probability, so a rewritten
rule can be tested on a violating and a compliant file. - New
painpoints-rulesskill: how to bucket, scope, phrase and test rule
questions for a System One model, from whatpainpoints evaland a real
run measured.
painpoints 0.1.0
First release.
painpoints scores every source file in a repository on six architectural pain dimensions and hands AI coding agents a ranked, self-explaining report.
- Six dimensions with levels written from published guidance: Google eng-practices, Google SRE, web.dev, the Amazon Builders' Library and OWASP. Every finding carries the URL of the standard it was judged against.
- Three entry points sharing one cache:
painpoints <file> --jsonfor one atomic result,painpoints <repo> --jsonfor the whole codebase,painpoints mcpfor an MCP server exposingpainpoints_fileandpainpoints_repo. - The JSON report is the cache. Unchanged files cost no tokens; a fully cached run needs no API key.
- Native viewer (GPUI) with per-dimension distribution, heat cells and a panel that explains which level each score landed on.
- Ships a Claude Code skill under
.claude/skills/painpoints.
Needs a TypeSafe API key (TYPESAFE_API_KEY), or TYPESAFE_BASE_URL pointed at a gateway. Windows x64 binary attached; other platforms build with cargo build --release.