- Update AGENTS.md watermarks to current HEAD (e8df73e)
- No code changes since last gardener run — watermark-only refresh
- No blocked issues to review
- Pending actions: none
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace /api/v1/user with /api/v1/repos/{owner}/{repo} in three places:
- preflight_check() auth verification
- setup_codeberg_auth() --token flag verification
- setup_codeberg_auth() interactive flow verification
The repo endpoint only requires repo-level access, which matches the
scopes disinto actually needs (write:issue, write:repository). Tokens
without read:user scope now pass verification correctly.
Also use generic "token" as netrc login since the username is no longer
retrieved from the API (git operations authenticate via the token, not
the login field).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add interactive Codeberg auth setup to `disinto init`:
- Guide user through token creation with URL and required scopes
- Save token to ~/.netrc with correct permissions (600)
- Verify token via API call before proceeding
- Support --token flag for non-interactive use
- Backwards compatible: existing CODEBERG_TOKEN / .netrc still work
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add --netrc flag to curl when CODEBERG_TOKEN is unset so ~/.netrc
auth users don't get false-positive API failures
- Check claude auth status exit code separately; only skip the check
when the subcommand is unrecognized (old claude version), otherwise
treat failures as auth errors
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace validate_env() with preflight_check() that verifies all factory
requirements before init proceeds:
- Required tools: claude, tmux, git, jq, python3, curl (hard errors)
- Claude Code authentication via claude auth status
- Codeberg auth: CODEBERG_TOKEN or ~/.netrc, verified with API call
- Codeberg SSH access: verified with ssh -T git@codeberg.org
- Optional: docker (warn only)
- Clear error messages with install hints for each missing tool
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add projects/*.toml to .gitignore
- Remove existing TOML files from git tracking (git rm --cached)
- Add .toml.example templates with placeholder values
- Update BOOTSTRAP.md with new section on project TOML setup
- Update AGENTS.md directory layout description
Existing local installations are unaffected — gitignore only
prevents tracked files from being committed, local copies persist.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- When --yes is passed with a differing --repo-root, auto-apply the TOML
update instead of silently skipping. Prevents stale repo_root in TOML.
- Replace sed with python3+re for updating repo_root to avoid delimiter
injection from user-supplied paths.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When projects/<name>.toml already exists (e.g. committed from another box),
skip TOML generation and continue with remaining setup steps (clone repo,
create labels, install cron). Reads repo_root and branch from the existing
TOML. If --repo-root flag differs from TOML value, prompts to update it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add two-tier backlog pickup in dev-poll.sh:
1. in-progress issues (existing)
2. priority + backlog issues (FIFO within tier)
3. plain backlog issues (FIFO within tier)
The priority label coexists with backlog (not a replacement).
ensure_priority_label() auto-creates the label if missing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update all AGENTS.md watermarks to current HEAD (251d160)
- dev/AGENTS.md: document dev-poll's early direct-merge scan (before lock
check) — approved PRs now merge without waiting for active dev sessions;
chore/gardener PRs merge without issue numbers in branch name
- planner/AGENTS.md: document dispatch-idle-formulas phase (step 4); note
that planner reads both factory and project-specific formulas; clarify
that all planner artifacts use $PROJECT_REPO_ROOT, not $FACTORY_ROOT
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a new `dispatch-idle-formulas` step between `file-at-constraints` and
`journal-and-memory`. This step scans available formulas, checks for stale
or missing data, and files action issues to dispatch idle formulas.
Key changes:
- New step runs after constraint filing, independent of the 3-issue budget
- Excludes nervous-system formulas (AD-001: cron, not action issues)
- Checks open action issues, recently closed issues, and evidence timestamps
to determine staleness (7-day window)
- Journal format updated to log dispatched idle formulas
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace $FACTORY_ROOT/planner/ and $FACTORY_ROOT/vault/ references with
$PROJECT_REPO_ROOT/planner/ and $PROJECT_REPO_ROOT/vault/ in the planner
formula and planner-run.sh. Planner artifacts (journal, memory, prerequisite
tree) and vault state are per-project, not factory-owned. The old paths
caused cross-repo contamination when the planner ran for non-disinto projects.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Root cause: the gardener quality gate strips the `backlog` label from
issues missing "## Acceptance criteria" checkboxes and "## Affected
files" sections. The planner formula never instructed including these
sections, so every planner-created issue lost its label on the next
gardener run.
Three changes to formulas/run-planner.toml:
1. Require issue bodies to include acceptance criteria and affected
files sections (matching the issue template format the gardener
quality gate enforces).
2. Add post-creation label verification via separate API call as a
belt-and-suspenders defense against Codeberg silently dropping
labels during issue creation.
3. Make label ID resolution unconditional in prediction-triage (was
skippable when no predictions existed, starving file-at-constraints
of the backlog label ID).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update the landing page to clearly communicate Disinto's value proposition:
- Reframe pitch as "autonomous code factory for solo founders"
- Add full lifecycle section with all six stages (build, review, ship,
operate, plan, groom) and descriptions of what each agent does
- Add vault differentiator section contrasting Disinto with generic CI/CD,
explaining the vision + vault quality gate model
- Update meta descriptions for SEO consistency
- Update footer to list all eight agents
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>