Skip to content

Fleet next milestone: unbuilt tools, docs hygiene, safety gaps #1

Description

@lorenzoliuzzo

MyThingsLab fleet — next milestone (org-wide tracking issue)

Snapshot as of 2026-07-08: 12 repos live — the above plus my-planner and
my-projector, both shipped 2026-07-07 (main CI green; my-projector needed the
new mythings.projects core module, landed via mythings-core#29). 9 My[X]
tools are now shipped, including my-researcher (live arXiv+Tavily topic
research → cited study brief + study path; design PR mythings-core#28). The
remaining designed tools exist only as design docs under
mythings-core/docs/tools/. Note: my-planner/my-projector fail-closed on public
edits when unattended — they need an ASK channel (TelegramPolicy) to post in CI. This issue tracks the fleet's next milestone
across repos — sub-tasks get filed as issues in their own repo and linked
back here as they're picked up.

1. Docs hygiene — shipped tools missing the required historical banner

Per docs/CONVENTIONS.md, a docs/tools/<name>.md must get a one-line
historical banner once its tool ships. Only my-reporter.md has one; five
shipped tools don't:

  • docs/tools/my-orchestrator.md — banner pointing at my-orchestrator's README
  • docs/tools/my-tester.md — banner pointing at my-tester's README
  • docs/tools/my-telegram-bot.md — banner pointing at my-telegram-bot's README
  • docs/tools/my-changelogger.md — banner pointing at my-changelogger's README
  • docs/tools/mythings-template.md — reconcile naming: the design names a
    dedicated mythings-template template repo, but CONVENTIONS.md's
    "Starting a new tool" already points at the existing my-template repo.
    Confirm whether my-template is the shipped resolution (then banner +
    redirect) or whether a second, GitHub-native template repo is still
    wanted for the "Use this template" button use case.

2. Designed tools not yet built (recommended order, per docs/tools/README.md)

  • MySearcher — ranks files relevant to an issue; unblocks MyReviewer and MyGroomer
  • MyReviewer — flags correctness bugs on an open PR; needs github.GitHub.diff() (see §3)
  • MyGroomer — splits/labels raw issues; needs create_issue/add_labels/list_labels (see §3)
  • MyWiki — Q&A over this project's own ledger history
  • MyGrapher — keeps a repo's knowledge graph fresh (graphify incremental --update only)
  • MyKnowledger — Q&A over external literature via a separate graphify corpus
  • MyScaffolder — bootstraps a new tool repo from a proposal
  • MyDriftWatcher — flags cross-repo convention drift
  • MyAdvisor — recommends a course of action with trade-offs
  • MyDescriber — writes/improves a PR's title+description after it opens; needs diff() too
  • MyCoder (issue → diff → PR) — was deferred pending a real Engine backend.
    ClaudeCLIEngine shipped 2026-07-07 in mythings-core, so the blocker is
    gone — worth re-scoping this one now, it's the highest-leverage
    remaining tool (the only one that writes the actual feature/fix).

3. Core contract additions — confirm before implementing (per workspace CLAUDE.md)

  • github.GitHub.diff() — now has two callers-in-waiting (MyReviewer, MyDescriber)
  • github.GitHub.create_issue() / add_labels() / list_labels() — for MyGroomer
  • Decide the shared "shortlist-from-a-corpus-then-cite" reuse mechanism —
    5 tools independently want it (MyWiki, MySearcher, MyAdvisor, MyDescriber,
    MyKnowledger). Options on the table: tool-to-tool package deps (like
    my-guardmythings-core), or promote into mythings-core once
    duplicated. Leaning toward the latter per the design doc; not decided.

4. Safety/process gaps not covered by any existing design doc

Things that matter more now that ClaudeCLIEngine makes unattended, real
(non-Noop) runs possible, and that fleet_dispatch.py already runs multiple
concurrent workers against real accounts:

  • No dependency-vulnerability scanning anywhere in the fleet. No
    Dependabot config, no pip-audit/osv-scanner/CodeQL in any repo's CI.
    Every repo pulls mythings-core + a small dep set; one compromised
    transitive dependency currently has no automated tripwire.
  • No GitHub App yet — every tool acts under the personal PAT via the
    gh CLI (mythings/github.py has no App/token-scoping logic).
    ARCHITECTURE.md calls out a permission-scoped GitHub App as the
    intended identity model; today a bug in any tool has the same blast
    radius as the human account. Worth scoping once MyCoder makes
    unattended code-writing real.
  • Spend/usage guardrails are ad hoc. fleet_usage.py parses
    transcripts for denials after the fact; there's no hard per-run/per-day
    token or dollar cap enforced before a headless session starts. Worth
    a --max-cost/--max-turns guard in fleet_dispatch.py or a small
    policy rule in MyGuard, given --execute already runs real paid
    sessions across two accounts concurrently.
  • No secret-leak check on ledger/PR content. dev-ledger/*.jsonl and
    PR bodies are free-text (detail, data); nothing scans them before
    they're committed/pushed. Low risk today (no tool touches real
    credentials yet) but worth a cheap regex/gitleaks-style pre-commit gate
    before MyCoder starts writing arbitrary diffs.
  • Kill switch is implicit, not explicit. fleet_dispatch.py defaults
    to --dry-run, which is good, but there's no single documented command
    to halt an in-flight --execute run across both accounts if something
    misbehaves. Worth a one-line runbook note at minimum, a real
    abort-and-cleanup command at best.

Not in scope here

Anything already flagged inside a design doc as "not decided here" stays
undecided in this issue too — it's tracked, not resolved, by listing it.
Actual implementation of any checkbox above happens as its own issue/PR in
the owning repo, following the normal harness loop.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions