Repository navigation
Releases: caty-ai/.github
Release list
v0.12.0: supporter-loop — contract v2.0: catch-up + invitation quota queue, sweep-state latch, regenerate order, work budget (#91, PR #92)
v0.12.0: supporter-loop — contract v2.0: catch-up + invitation quota queue, sweep-state latch, regenerate order, work budget (#91, PR #92)
Standing catch-up (two passes, Q = max(0, 45 - B), per-PUT re-evaluation, <= 3 min wait,
whole-sweep work budget 6 min / 150 writes with the deadline inside steps 2-4), invitation-limit
422 -> deferred-quota (event: whole bundle; sweep: one skip line, green), regenerate() GET sha ->
fresh ledger read -> render -> PUT with restart-from-GET and the tier-1 undelivered-invite
omission, <= 1 content write/s pacing, ledger/.sweep-state.json latch + one summary
Telegram + edge-triggered alarms, record-only rehearsal parity, watermark = schedule|dispatch
success, cancelled-run counts from decide, stars timeout 10 with stable first-occurrence order,
backfill input retired, static check covers stars + shell string concatenation, fixtures.
Launch gate: owner decision B (2026-09-09) - provisional INVITE_LIMIT_PATTERN, live text pinned
on first occurrence (caty-ai/x-collector#143). Evidence: PR #92
(completion record, five seats zero blocking on e4b97c5, owner risk-reviewed);
record _handoffs/dotgithub-supporter-loop-91-impl-20260908/review/record.md.
v0.11.6: supporter-loop — sweep-only stars job lists stargazers, per-workflow runs listing, workflow_dispatch sweep (#89, PR #90)
The first live weekly sweep (caty-ai/x-collector run 34100523613) failed closed. Measured: GET /repos/{source}/stargazers is accepted only for a GITHUB_TOKEN with contents: write (403 under none/read, GraphQL FORBIDDEN, unauthenticated 401, ledger PAT 403).
- New sweep-only
starsjob:contents: writeand nothing else, no secret, no checkout, one paginated GET, numeric ids out;decideconsumes the handoff and fails closed on any defect;decide/actstaycontents: none. - Precondition (a) lists
actions/workflows/supporter-loop.yml/runs(repository-wide listing exceeded the 1,000 cap). - Sweep guard accepts
schedule|workflow_dispatch;alertnames a failedstars; header invariants mirror contract §13 v1.11. - Tests pin four jobs with exact per-job permissions, the
starsshape, the handoff, the event guard; the fake gh aborts on any stargazer listing fromdecide.
Contract: caty-ai/x-collector v0.6.3 (CONTRACT.md v1.11). Review: 5 heterogeneous seats × 3 rounds, zero blocking. Tracked in #89; follow-up caty-ai/x-collector#141.
v0.11.5: supporter-loop — act preflight drops the false-positive permissions.push probe (#85, PR #86)
The act job's token preflight no longer fails on GET /repos/{reward_repo}.permissions.push == true — that field reflects the token owner's repository role, not the fine-grained grant, so every live delivery failed with 'token over-scoped: push' (first real supporter, x-collector run 34085260843). The endpoint stays as a reachability probe (200); the Contents 403/404 probe is the push-impossibility proof. Contract §8.4 v1.10 (caty-ai/x-collector#136). Regression pin in test-interface.py. Reviewed by 5 heterogeneous seats + delta, blocking 0.
v0.11.4: supporter-loop — comment templates carry the checkpoint #4 approval record (#83, PR #84)
v0.11.4: supporter-loop — comment templates carry the checkpoint #4 approval record (#83, PR #84)
EPIC caty-ai/x-collector#119 checkpoint ④ approved; the live switch is
caty-ai/x-collector#135. 5-seat review GO.
v0.11.3
v0.11.3: supporter-loop — decide scanner vNext-2: dispatcher grammar, every direct with: scalar executable, in-token continuations (#79, PR #82)
Closes the three #77 residuals by mechanism; 92 new static fixtures
(313 total), the 221 fd2830f fixtures keep identical outcomes. 3 seats
cumulative GO after delta 1. Record: EPIC caty-ai/x-collector#119.
v0.11.2: supporter-loop — strip CR/LF before every Contents API base64 decode (#80, PR #81)
v0.11.2: supporter-loop — strip CR/LF before every Contents API base64 decode (#80, PR #81)
Fixes record-only runs failing closed once the ledger exceeded 60 bytes
(x-collector run 34041629207). Adds wrapped Contents API fixtures and
check-contents-decode.sh to the selftest. 5-seat review GO. Record: EPIC
caty-ai/x-collector#119 E-7 log.
v0.11.1 — supporter-loop scanner vNext: curl cluster grammar, escape provenance, wrapper/array/tag residuals (#77)
v0.11.1 — supporter-loop scanner vNext: curl cluster grammar, escape provenance, wrapper/array/tag residuals (#77)
Scanner-only release: supporter-loop/check-decide-static.sh now fails closed on the non-idiomatic residuals left by the v0.11.0 review — wrapper/positional/array-carried gh api flags, env name-key collection, lower/mixed-case methods, curl -F/-K and every curl short-option cluster carrying a write letter (digits and # included), YAML-tagged and escaped run scalars, and escapes in collected env/with values that reach a run — while removing two over-fires. 114 new fixtures (221 total), selftest matrix mismatch 0 on bash 3.2 and 5.3, real workflow exit 0. supporter-loop-reusable.yml is byte-identical to v0.11.0.
Evidence: PR #78 (completion record, 3 seats x 3 rounds, r3 3/3 GO) #78 · Issue #77 · residuals deferred to #79.
v0.11.0 — supporter-loop: reusable workflow (record-only) + self-test CI (#75)
v0.11.0 — supporter-loop: reusable workflow (record-only) + self-test CI (#75)
Child #2 of EPIC caty-ai/x-collector#119 (Supporter Reward Loop), CONTRACT v1.9.
- .github/workflows/supporter-loop-reusable.yml: on: workflow_call (4 inputs / 4 secrets), jobs decide / act / alert per contract section 4.4; record-only cannot send by construction (act gated on mode == live; Administration and Telegram secrets referenced only in act/alert).
- .github/workflows/supporter-loop-selftest.yml + supporter-loop/: decide-boundary static check (100 adversarial fixtures, 7 clean controls), ledger check, reconciliation audit, tier-2/3 comment templates (placeholder wording until checkpoint #4), offline python models.
- Review: 5 heterogeneous seats x 5 rounds, 5/5 GO on 456b976; rename-only c0a3ce3 confirmed. Completion record: #76
- Callers (x-collector) pin @main; the loop stays record-only until EPIC checkpoint #4.
v0.10.0
v0.10.0 — The stateful AI of the future
The name on the door gets its full meaning.
Changed
- README "What we build" section (5 files, 4 languages): the opening now declares the stateful AI of the future — one whose memory and self carry over from yesterday, and whose relationship with you grows from there. And the reveal lands where it belongs: not just an agent, and not a team — it is family. A footnote makes the boundary explicit: "of the future" names the kind, not a delivery date or a claim of current capability. (#69)
Added
- STORY: "The family tree of stateful AI" (ja/en): one trunk — because memory continues, a relationship comes into being — and three branches: infrastructure, companion, family. We stand on the family branch, and we have no branch to cut down: the thicker the trunk, the higher every branch climbs. Explicitly a working sketch, not a taxonomy; no third-party names.
Review
5-seat heterogeneous review (Gemini / Kimi / GLM / Grok / Codex), r1 → r3, all seats cumulative GO. Convergent fixes: the kind-name boundary footnote, the non-taxonomy qualifier, and translation precision in zh/en. Full record on #69.
Full diff: v0.9.0...v0.10.0
v0.9.0 — What we build section (stateful AI / house framing) + STATEFUL term page in 4 languages
v0.9.0 — What we build
The org README now says, in one section, what all eleven modules have always had in common.
Added
- New README section "What we build / 私たちが作っているもの" (5 files, 4 languages), between Why and What: we build stateful AI — not the agent, but the home. The brain (the model), the agent itself, and a new persona are the three things we never build. State piles up in
$HOME; layers raise the resolution of who the agent is; and the tools we make are the ones the stateful AI of the future will take for granted. Closing couplet: the furniture may change — including everything we make; the resident never does. (#66) - STATEFUL.md term page in 4 languages (
STATEFUL.md/.ja/.zh/.th, canonical: Japanese): what "stateful AI / stateful agent" means, the two depths of the word (plumbing vs. being), how this org implements it, what counts as furniture, how it differs from a knowledge vault, and why stateful is only the starting point — the goal is the growth of relationships.
Changed
- Ecosystem intro in the generated modules block, matching family-os v0.16.0: furniture and household workings — none of it overwrites who the agent is.
Review
5-seat heterogeneous review (Gemini / Kimi / GLM / Grok / Codex), r1 → r3, all seats cumulative GO — including fixes that made the copy more honest: the $HOME mechanism is now explicitly scoped as this org's chosen implementation, not a general description of stateful AI. Full record on #66. Sibling release: caty-ai/family-os v0.16.0.
Full diff: v0.8.0...v0.9.0