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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions