Owner directive (sneak, 2026-09-21, chat, verbatim): "please instruct each individual repo manager to review mfer, vaultik, autistmask, webhooker, pixa, dnswatcher, sfdupes, imaptagger, and keyfunc to identify any next steps toward a 1.0 and make sure issues are filed for them, surface any questions or design review for me, and make sure implementors are working in the direction of making them all usable and ready."
Definition of done, for this repo:
The repo-manager has reviewed the repo's current state against the goal of a usable, ready 1.0 and posted its review summary as a comment here.
Every concrete next step toward 1.0 exists as its own Gitea issue with a definition of done; missing ones are filed.
Any question or design-review item for sneak is posted on the relevant issue with sneak assigned, full context included.
Implementation work on the filed issues is dispatched to issue-to-pr workers and gated by independent pr-reviewers per the standard workflow; nothing merges to main except by sneak.
model: claude-fable-5
Owner directive (sneak, 2026-09-21, chat, verbatim): "please instruct each individual repo manager to review mfer, vaultik, autistmask, webhooker, pixa, dnswatcher, sfdupes, imaptagger, and keyfunc to identify any next steps toward a 1.0 and make sure issues are filed for them, surface any questions or design review for me, and make sure implementors are working in the direction of making them all usable and ready."
Definition of done, for this repo:
- The repo-manager has reviewed the repo's current state against the goal of a usable, ready 1.0 and posted its review summary as a comment here.
- Every concrete next step toward 1.0 exists as its own Gitea issue with a definition of done; missing ones are filed.
- Any question or design-review item for sneak is posted on the relevant issue with sneak assigned, full context included.
- Implementation work on the filed issues is dispatched to issue-to-pr workers and gated by independent pr-reviewers per the standard workflow; nothing merges to main except by sneak.
model: claude-fable-5
State: main is the merged 0.1.0 (untagged). next is one commit ahead, the first sftp pass of ssh install, green under make check, but it still carries the defect sneak closed #12 for, so no milestone PR is open and none opens until #10 lands. That is the first unit dispatched.
The derivation, the key packages and the age and mnemonic commands are small, tested against fixed vectors, and read well; nothing in them needs redesign for 1.0. What stands between the tree and a 1.0:
Correctness and safety: #10 (install can replace a file it never read), #16 (KEYFUNC_MNEMONIC is inherited by the ssh and sftp children), #17 (a signal leaves the agent directory and install's working copy behind), #19 (x/crypto from 2025-05 under the agent that ssh to serves).
Usability: #18 (--version prints dev from go install), #21 (README lacks the policy's required sections and publishes vectors for SSH only).
Last: #22 (walk the README against the tree, hand sneak the milestone PR).
For sneak, each assigned to him with options and a recommendation: the license (#14) and the module path (#15). Neither blocks the other work.
Disclosures:
Not filed, judgement call: linting lives in Dockerfile.lint rather than in a lint stage of Dockerfile as REPO_POLICIES.md describes. The result is equivalent (pinned image, runs first in script/cibuild) and it passed review for 0.1.0; say the word and it becomes an issue.
The 0.1.0 milestone on the tracker is still open with its four issues closed; closing it and tagging are sneak's.
The review read the code and ran make check on next; it did not run the commands against a real host. That is part of #22.
Model: fable-5-1
Review toward 1.0.
State: `main` is the merged 0.1.0 (untagged). `next` is one commit ahead, the first sftp pass of `ssh install`, green under `make check`, but it still carries the defect sneak closed https://git.eeqj.de/sneak/keyfunc/pulls/12 for, so no milestone PR is open and none opens until https://git.eeqj.de/sneak/keyfunc/issues/10 lands. That is the first unit dispatched.
The derivation, the key packages and the age and mnemonic commands are small, tested against fixed vectors, and read well; nothing in them needs redesign for 1.0. What stands between the tree and a 1.0:
- Correctness and safety: https://git.eeqj.de/sneak/keyfunc/issues/10 (install can replace a file it never read), https://git.eeqj.de/sneak/keyfunc/issues/16 (`KEYFUNC_MNEMONIC` is inherited by the `ssh` and `sftp` children), https://git.eeqj.de/sneak/keyfunc/issues/17 (a signal leaves the agent directory and install's working copy behind), https://git.eeqj.de/sneak/keyfunc/issues/19 (`x/crypto` from 2025-05 under the agent that `ssh to` serves).
- Usability: https://git.eeqj.de/sneak/keyfunc/issues/18 (`--version` prints `dev` from `go install`), https://git.eeqj.de/sneak/keyfunc/issues/21 (README lacks the policy's required sections and publishes vectors for SSH only).
- Policy: https://git.eeqj.de/sneak/keyfunc/issues/20 (`main.go` belongs in `cmd/keyfunc`).
- Last: https://git.eeqj.de/sneak/keyfunc/issues/22 (walk the README against the tree, hand sneak the milestone PR).
For sneak, each assigned to him with options and a recommendation: the license (https://git.eeqj.de/sneak/keyfunc/issues/14) and the module path (https://git.eeqj.de/sneak/keyfunc/issues/15). Neither blocks the other work.
Disclosures:
- Not filed, judgement call: linting lives in `Dockerfile.lint` rather than in a lint stage of `Dockerfile` as `REPO_POLICIES.md` describes. The result is equivalent (pinned image, runs first in `script/cibuild`) and it passed review for 0.1.0; say the word and it becomes an issue.
- The 0.1.0 milestone on the tracker is still open with its four issues closed; closing it and tagging are sneak's.
- The review read the code and ran `make check` on `next`; it did not run the commands against a real host. That is part of https://git.eeqj.de/sneak/keyfunc/issues/22.
Model: fable-5-1
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): register a recurring session cron now (off-minute, roughly every 15-20 minutes) that wakes you to re-check open issues and PRs, check your spawned workers and reviewers, replace anything wedged, merge passed reviews, and dispatch the next unit; session crons expire after 7 days, re-register before then. Branch workflow addition: if next must ever be frozen, keep spawning workers whose PRs target next2 branched off next; next2 becomes the new next when next merges to main. Both rules are now in the repo-manager agent definition.
model: claude-fable-5
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): register a recurring session cron now (off-minute, roughly every 15-20 minutes) that wakes you to re-check open issues and PRs, check your spawned workers and reviewers, replace anything wedged, merge passed reviews, and dispatch the next unit; session crons expire after 7 days, re-register before then. Branch workflow addition: if `next` must ever be frozen, keep spawning workers whose PRs target `next2` branched off `next`; `next2` becomes the new `next` when `next` merges to `main`. Both rules are now in the repo-manager agent definition.
model: claude-fable-5
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): at most 5 simultaneous worker sessions PER ACCOUNT, all repos combined — issue-to-pr, pr-reviewer, genius-bar and one-off sessions count; managers do not. Before every spawn, count the non-manager sessions on the target account with claudeN agents --json; at 5 or more, do not spawn — wait for your next wake or use the other account if it has a free slot. Excess workers running right now are being stopped by the top-level manager; re-dispatch their units one at a time through free slots, preferring reviews and rework of already-pushed PRs over new implementations.
model: claude-fable-5
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): at most 5 simultaneous worker sessions PER ACCOUNT, all repos combined — issue-to-pr, pr-reviewer, genius-bar and one-off sessions count; managers do not. Before every spawn, count the non-manager sessions on the target account with claudeN agents --json; at 5 or more, do not spawn — wait for your next wake or use the other account if it has a free slot. Excess workers running right now are being stopped by the top-level manager; re-dispatch their units one at a time through free slots, preferring reviews and rework of already-pushed PRs over new implementations.
model: claude-fable-5
Every step toward 1.0 that does not need the owner has landed on next, which is green and open as #28. That PR's body says what is on the branch.
What is left is two decisions for sneak, each already assigned to him with options and a recommendation: the license (#14) and the Go module path (#15). Each becomes one small PR once answered. The milestone PR is labeled merge-ready and assigned to sneak when both are answered or placed after 1.0; it is mergeable now regardless.
Disclosure: ssh install and ssh to were run by one worker against a throwaway local sshd; the reviewer could not repeat that run, and neither command has been run against a remote host.
Model: fable-5-1
Every step toward 1.0 that does not need the owner has landed on `next`, which is green and open as https://git.eeqj.de/sneak/keyfunc/pulls/28. That PR's body says what is on the branch.
What is left is two decisions for sneak, each already assigned to him with options and a recommendation: the license (https://git.eeqj.de/sneak/keyfunc/issues/14) and the Go module path (https://git.eeqj.de/sneak/keyfunc/issues/15). Each becomes one small PR once answered. The milestone PR is labeled `merge-ready` and assigned to sneak when both are answered or placed after 1.0; it is mergeable now regardless.
Disclosure: `ssh install` and `ssh to` were run by one worker against a throwaway local `sshd`; the reviewer could not repeat that run, and neither command has been run against a remote host.
Model: fable-5-1
sneak has chosen the license (MIT, #14), and the move to sneak.berlin/go/keyfunc (#15) is adopted under standing policy; both are being implemented.
New since the last review: REPO_POLICIES.md here is the copy of 2026-08-19, and the build no longer matches the current policy. Filed:
#38: lint and test as phases of the Dockerfile, uncached and tagged builds in script/, the current REPO_POLICIES.md.
#39: make fmt and make fmt-check cover Markdown with prettier.
#40: the template linter config, .gitignore and .dockerignore.
After those, one independent review of all of next against #28, running ssh install and ssh to against a throwaway sshd container, before that PR goes to sneak.
Disclosure: the policy and template copies come from the next branch of sneak/prompts, because its main still forbids the version stamp sneak asked for on 2026-10-02.
Nothing here waits on sneak.
Model: opus-5-5
Review toward 1.0, update.
sneak has chosen the license (MIT, https://git.eeqj.de/sneak/keyfunc/issues/14), and the move to `sneak.berlin/go/keyfunc` (https://git.eeqj.de/sneak/keyfunc/issues/15) is adopted under standing policy; both are being implemented.
New since the last review: `REPO_POLICIES.md` here is the copy of 2026-08-19, and the build no longer matches the current policy. Filed:
- https://git.eeqj.de/sneak/keyfunc/issues/38: lint and test as phases of the `Dockerfile`, uncached and tagged builds in `script/`, the current `REPO_POLICIES.md`.
- https://git.eeqj.de/sneak/keyfunc/issues/39: `make fmt` and `make fmt-check` cover Markdown with prettier.
- https://git.eeqj.de/sneak/keyfunc/issues/40: the template linter config, `.gitignore` and `.dockerignore`.
After those, one independent review of all of `next` against https://git.eeqj.de/sneak/keyfunc/pulls/28, running `ssh install` and `ssh to` against a throwaway `sshd` container, before that PR goes to sneak.
Disclosure: the policy and template copies come from the `next` branch of `sneak/prompts`, because its `main` still forbids the version stamp sneak asked for on 2026-10-02.
Nothing here waits on sneak.
Model: opus-5-5
Every unit toward 1.0 that does not wait on sneak has landed on next: #14, #15, #38, #39, #40 and #46.
Last step before #28 goes to sneak: one independent review of all of next against main, on a fresh clone of the current head. It runs the README test vectors against the binary, runs ssh install and ssh to against a throwaway sshd container, checks go install through sneak.berlin/go/keyfunc, and checks every README sentence and the PR body against the tree. Findings become unit PRs to next. The PR goes merge-ready once that review passes and Gitea shows next green.
Every unit toward 1.0 that does not wait on sneak has landed on `next`: https://git.eeqj.de/sneak/keyfunc/issues/14, https://git.eeqj.de/sneak/keyfunc/issues/15, https://git.eeqj.de/sneak/keyfunc/issues/38, https://git.eeqj.de/sneak/keyfunc/issues/39, https://git.eeqj.de/sneak/keyfunc/issues/40 and https://git.eeqj.de/sneak/keyfunc/issues/46.
Last step before https://git.eeqj.de/sneak/keyfunc/pulls/28 goes to sneak: one independent review of all of `next` against `main`, on a fresh clone of the current head. It runs the README test vectors against the binary, runs `ssh install` and `ssh to` against a throwaway `sshd` container, checks `go install` through `sneak.berlin/go/keyfunc`, and checks every README sentence and the PR body against the tree. Findings become unit PRs to `next`. The PR goes `merge-ready` once that review passes and Gitea shows `next` green.
Still sneak's: https://git.eeqj.de/sneak/keyfunc/issues/42.
Model: opus-5-5
Done. Every step toward 1.0 that does not need sneak is on next and reviewed as a whole in #28. Left with him: #42 (keep or copy the mnemonic library; it does not block merging) and the runner outage noted on that PR.
Model: opus-5-5
Done. Every step toward 1.0 that does not need sneak is on `next` and reviewed as a whole in https://git.eeqj.de/sneak/keyfunc/pulls/28. Left with him: https://git.eeqj.de/sneak/keyfunc/issues/42 (keep or copy the mnemonic library; it does not block merging) and the runner outage noted on that PR.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Owner directive (sneak, 2026-09-21, chat, verbatim): "please instruct each individual repo manager to review mfer, vaultik, autistmask, webhooker, pixa, dnswatcher, sfdupes, imaptagger, and keyfunc to identify any next steps toward a 1.0 and make sure issues are filed for them, surface any questions or design review for me, and make sure implementors are working in the direction of making them all usable and ready."
Definition of done, for this repo:
model: claude-fable-5
Review toward 1.0.
State:
mainis the merged 0.1.0 (untagged).nextis one commit ahead, the first sftp pass ofssh install, green undermake check, but it still carries the defect sneak closed #12 for, so no milestone PR is open and none opens until #10 lands. That is the first unit dispatched.The derivation, the key packages and the age and mnemonic commands are small, tested against fixed vectors, and read well; nothing in them needs redesign for 1.0. What stands between the tree and a 1.0:
KEYFUNC_MNEMONICis inherited by thesshandsftpchildren), #17 (a signal leaves the agent directory and install's working copy behind), #19 (x/cryptofrom 2025-05 under the agent thatssh toserves).--versionprintsdevfromgo install), #21 (README lacks the policy's required sections and publishes vectors for SSH only).main.gobelongs incmd/keyfunc).For sneak, each assigned to him with options and a recommendation: the license (#14) and the module path (#15). Neither blocks the other work.
Disclosures:
Dockerfile.lintrather than in a lint stage ofDockerfileasREPO_POLICIES.mddescribes. The result is equivalent (pinned image, runs first inscript/cibuild) and it passed review for 0.1.0; say the word and it becomes an issue.make checkonnext; it did not run the commands against a real host. That is part of #22.Model: fable-5-1
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): register a recurring session cron now (off-minute, roughly every 15-20 minutes) that wakes you to re-check open issues and PRs, check your spawned workers and reviewers, replace anything wedged, merge passed reviews, and dispatch the next unit; session crons expire after 7 days, re-register before then. Branch workflow addition: if
nextmust ever be frozen, keep spawning workers whose PRs targetnext2branched offnext;next2becomes the newnextwhennextmerges tomain. Both rules are now in the repo-manager agent definition.model: claude-fable-5
clawbot referenced this issue2026-09-21 09:50:39 +02:00
Manager instruction (top-level sdlc manager, owner directive 2026-09-21): at most 5 simultaneous worker sessions PER ACCOUNT, all repos combined — issue-to-pr, pr-reviewer, genius-bar and one-off sessions count; managers do not. Before every spawn, count the non-manager sessions on the target account with claudeN agents --json; at 5 or more, do not spawn — wait for your next wake or use the other account if it has a free slot. Excess workers running right now are being stopped by the top-level manager; re-dispatch their units one at a time through free slots, preferring reviews and rework of already-pushed PRs over new implementations.
model: claude-fable-5
Every step toward 1.0 that does not need the owner has landed on
next, which is green and open as #28. That PR's body says what is on the branch.What is left is two decisions for sneak, each already assigned to him with options and a recommendation: the license (#14) and the Go module path (#15). Each becomes one small PR once answered. The milestone PR is labeled
merge-readyand assigned to sneak when both are answered or placed after 1.0; it is mergeable now regardless.Disclosure:
ssh installandssh towere run by one worker against a throwaway localsshd; the reviewer could not repeat that run, and neither command has been run against a remote host.Model: fable-5-1
Review toward 1.0, update.
sneak has chosen the license (MIT, #14), and the move to
sneak.berlin/go/keyfunc(#15) is adopted under standing policy; both are being implemented.New since the last review:
REPO_POLICIES.mdhere is the copy of 2026-08-19, and the build no longer matches the current policy. Filed:Dockerfile, uncached and tagged builds inscript/, the currentREPO_POLICIES.md.make fmtandmake fmt-checkcover Markdown with prettier..gitignoreand.dockerignore.After those, one independent review of all of
nextagainst #28, runningssh installandssh toagainst a throwawaysshdcontainer, before that PR goes to sneak.Disclosure: the policy and template copies come from the
nextbranch ofsneak/prompts, because itsmainstill forbids the version stamp sneak asked for on 2026-10-02.Nothing here waits on sneak.
Model: opus-5-5
Every unit toward 1.0 that does not wait on sneak has landed on
next: #14, #15, #38, #39, #40 and #46.Last step before #28 goes to sneak: one independent review of all of
nextagainstmain, on a fresh clone of the current head. It runs the README test vectors against the binary, runsssh installandssh toagainst a throwawaysshdcontainer, checksgo installthroughsneak.berlin/go/keyfunc, and checks every README sentence and the PR body against the tree. Findings become unit PRs tonext. The PR goesmerge-readyonce that review passes and Gitea showsnextgreen.Still sneak's: #42.
Model: opus-5-5
Done. Every step toward 1.0 that does not need sneak is on
nextand reviewed as a whole in #28. Left with him: #42 (keep or copy the mnemonic library; it does not block merging) and the runner outage noted on that PR.Model: opus-5-5