Crafter.Review/packaging/flatpak/net.catcrafts.CrafterReview.metainfo.xml
Jorijn van der Graaf ceb87f70ef
All checks were successful
Flatpak / check (push) Has been skipped
Flatpak / publish (push) Successful in 5m30s
feat(seats): an API seat's cycle starts on its own grant day
The ledger reset every API seat's spend on one
REVIEW_GATES_API_CYCLE_DAY and cleared every credit-out, an OpenRouter
key's too, at that reset. Each API seat's cycle starts on its
ANTHROPIC_API_KEY<n>_GRANT_DAY now (1..31, a day past a month's end its
last), else the cycle day, also 1..31. A credit-out carries across the
rollover, and the run's probe tries a key held out on credit again, as
`seats` does an API key: an ok lifts the mark - an API key's is new
credits, its cycle restarting from the grant day, or from today when
that day is over a week back; an OpenRouter key keeps its cycle's spend,
and a key that answers with its cycle's budget spent stays out on that
budget. A probe that finds a key out of credit records it, unless the
ledger already has it out. Both are decided in one locked update on the
file's entry, a mark another driver made since the probe started
standing, and the ledger's stamps carry their UTC offset so marks are
ordered by instant.

`seats` shows the probe's reading beside the driver's verdict (the
`probe` and `driver` columns replace `state` and `ledger: out`), each
seat's grant day and when its next credits are due, and notes on what
the probe changed in the ledger or why the driver's verdict stands; the
run logs the days.
2026-11-02 18:44:02 +01:00

66 lines
3.8 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- SPDX-License-Identifier: CC0-1.0 -->
<component type="console-application">
<id>net.catcrafts.CrafterReview</id>
<name>Crafter Review</name>
<summary>Adversarial pre-push review of a frozen commit range</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>AGPL-3.0-only</project_license>
<developer id="net.catcrafts">
<name>Catcrafts</name>
</developer>
<description>
<p>
The pre-push review pipeline: crafter-review freezes a commit range,
partitions it into units, and runs adversarial lenses over it — the
approach, the running application through the Playwright MCP server,
a bug proof and a security review — one claude process per unit, on the
seats the repository or the machine provides. A range is send-ready
only when every gate passes on the exact frozen hash.
</p>
</description>
<url type="homepage">https://forgejo.catcrafts.net/Catcrafts/Crafter.Review</url>
<url type="bugtracker">https://forgejo.catcrafts.net/Catcrafts/Crafter.Review/issues</url>
<url type="vcs-browser">https://forgejo.catcrafts.net/Catcrafts/Crafter.Review</url>
<provides>
<binary>crafter-review</binary>
</provides>
<content_rating type="oars-1.1"/>
<releases>
<release version="1.1.0" date="2026-11-02">
<description>
<p>New</p>
<ul>
<li>Each API seat's credit cycle starts on its own grant day, <code>ANTHROPIC_API_KEY&lt;n&gt;_GRANT_DAY</code> in the seats file. A seat out of credit stays out across the rollover until a probe sees its key answer again, and <code>seats</code> shows each API seat's grant day, when its next credits are due and whether the driver holds it out.</li>
<li>Leaving <code>authors</code> out of the config turns the freeze's author and committer check off, where it used to check <code>git config user.email</code>. An empty list is a config error.</li>
</ul>
<p>Fixes</p>
<ul>
<li>An OpenRouter key that ran out of credit is probed again at every run instead of waiting for the month's turn.</li>
</ul>
</description>
</release>
<release version="1.0.1" date="2026-11-02">
<description>
<p>Fixes</p>
<ul>
<li>The <code>.flatpakref</code> attached to a release carries the Catcrafts repository's key, so installing from that file works; 1.0.0's had a placeholder.</li>
</ul>
</description>
</release>
<release version="1.0.0" date="2026-11-02">
<description>
<p>New</p>
<ul>
<li>Pre-push review gates for a commit range: Claude processes review the approach, the running application, a bug proof, security and the commit messages, and a range is send-ready only when every gate passes on its exact frozen hash.</li>
<li><code>crafter-review init</code> sets a repository up: its config and the <code>/prepush</code> skill.</li>
<li>Modes in the repository's config (<code>modes.&lt;name&gt;</code>): the kind of artifact, the lenses it runs and their effort. Every lens is off until a mode lists it.</li>
<li>Seats from a dotenv file - <code>--env-file</code>, <code>$SEATS_ENV_FILE</code>, the working directory's <code>.env</code> or the machine's own <code>~/.config/crafter-review/env</code> - over the environment's, on one seat board for every driver on a machine.</li>
<li>A repository's own section appended to a lens's charter (<code>lenses.&lt;name&gt;.section</code>).</li>
<li>Pre-send review of a kernel patch series or a mailing-list reply (<code>--mode series</code>, <code>--mode reply</code>).</li>
<li>Shipped as a Flatpak with its own git, Node and ripgrep.</li>
</ul>
</description>
</release>
</releases>
</component>