Skip to content

Establish the AI-first base for developerz-ai/mcp-ssh - #41

Open
developerz-ai[bot] wants to merge 4 commits into
mainfrom
dz/onboarding
Open

developerz-ai[bot] wants to merge 4 commits into
mainfrom
dz/onboarding

Conversation

@developerz-ai

@developerz-ai developerz-ai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

This pull request establishes the base an AI coding agent needs to work well in developerz-ai/mcp-ssh.

Stack

The account's model ran this repository and answered its stack: Rust + Cargo.

Established

  • bin/stop — 4. scripts that work
  • .claude/agents/job-supervision.md — 2. a specialist roster
  • .claude/agents/oauth-pkce.md — 2. a specialist roster
  • .claude/agents/sqlite-persistence.md — 2. a specialist roster
  • .claude/agents/mcp-tools.md — 2. a specialist roster
  • .claude/skills/verify-change/SKILL.md — 3. project skills
  • .claude/skills/sqlite-migrations/SKILL.md — 3. project skills
  • .claude/skills/release-cut/SKILL.md — 3. project skills
  • .claude/skills/bearer-token-mint/SKILL.md — 3. project skills
  • AGENTS.md
  • docs/README.md
  • .githooks/pre-commit — 4. scripts that work
  • .mcp.json — 5. agent wiring
  • .dz/maintainer/maintainer.yml — 0. the repo policy
  • .dz/schedules/hygiene.md
  • .dz/schedules/devops.md
  • .dz/maintainer/reviewer.md — 0. the repo policy
  • .dz/onboarding/scorecard.md

Left alone

These already existed and are yours — nothing here was rewritten, reordered or reflowed:

  • bin/setup — 4. scripts that work
  • bin/dev — 4. scripts that work
  • bin/check — 4. scripts that work
  • CLAUDE.md — 1. a brain
  • .env.example
  • .claude/commands — 9. workflow commands
  • .github/workflows/ci.yml — 4. scripts that work
  • .gitignore

Configured nowhere / not needed by the gate

Read by the code, set nowhere this run touched, and never named by a failed gate run — so they are dormant integrations or ops-only entries that never blocked anything. The list is bounded to ten to keep the body short:

  • MCP_SSH_PASS — read by bin/mcp-token (+2 more)
  • SENTRY_DSN — read by src/sentry.rs
  • MCP_SSH_BIND — read by bin/mcp-token (+3 more)
  • MCP_SSH_ALLOWED_HOSTS — read by deploy/install.sh (+1 more)
  • MCP_SSH_USER — read by bin/mcp-token (+1 more)
  • MCP_SSH_INLINE_TIMEOUT_SECS — read by src/config.rs
  • MCP_SSH_JOB_DIR — read by src/config.rs
  • RUST_LOG — read by .env.example
  • SENTRY_ENVIRONMENT — read by src/sentry.rs

Verification

The gate this pull request declares, run on the box that wrote it: bin/setup then bin/check, before these changes (base) and after them (head); then bin/stop, the teardown the platform runs when every session ends; then bin/setup and bin/stop once more on the same box (reuse), the way every later session meets it.

Proof: unprovable — bin/check did not run green at head on this box. Nothing in the repository’s own code was changed to force it; the excerpt below is the record.

  • ./bin/setup at base: red, exit 1 (0.0s)
    mise ERROR No version is set for shim: cargo
    Set a global default version with one of the following:
    mise use -g rust@stable
    mise use -g rust@1.95.0
    mise use -g rust@1.96.0
    mise use -g rust@1.98.0
    mise ERROR Version: 2026.10.17 linux-x64 (2026-10-21)
    mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
    
  • ./bin/check at base: red, exit 1 (0.0s)
    mise ERROR No version is set for shim: cargo
    Set a global default version with one of the following:
    mise use -g rust@stable
    mise use -g rust@1.95.0
    mise use -g rust@1.96.0
    mise use -g rust@1.98.0
    mise ERROR Version: 2026.10.17 linux-x64 (2026-10-21)
    mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
    
  • ./bin/setup at head: red, exit 1 (0.0s)
    mise ERROR No version is set for shim: cargo
    Set a global default version with one of the following:
    mise use -g rust@stable
    mise use -g rust@1.95.0
    mise use -g rust@1.96.0
    mise use -g rust@1.98.0
    mise ERROR Version: 2026.10.17 linux-x64 (2026-10-21)
    mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
    
  • ./bin/check at head: red, exit 1 (0.0s)
    mise ERROR No version is set for shim: cargo
    Set a global default version with one of the following:
    mise use -g rust@stable
    mise use -g rust@1.95.0
    mise use -g rust@1.96.0
    mise use -g rust@1.98.0
    mise ERROR Version: 2026.10.17 linux-x64 (2026-10-21)
    mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
    
  • ./bin/stop exited 0 at head (0.1s)
  • ./bin/setup at reuse: red, exit 1 (0.0s)
    mise ERROR No version is set for shim: cargo
    Set a global default version with one of the following:
    mise use -g rust@stable
    mise use -g rust@1.95.0
    mise use -g rust@1.96.0
    mise use -g rust@1.98.0
    mise ERROR Version: 2026.10.17 linux-x64 (2026-10-21)
    mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information
    
  • ./bin/stop exited 0 at reuse (0.0s)

Scorecard

10 of 15 items ok. The whole card, with every piece of evidence, is .dz/onboarding/scorecard.md.

  • policy — ok — .dz/maintainer/maintainer.yml established
  • brain — ok — CLAUDE.md already present, left alone
  • roster — ok — .claude/agents/job-supervision.md established
  • skills — ok — .claude/skills/verify-change/SKILL.md established
  • scripts — unprovable — bin/setup already present, left alone
  • wiring — ok — .mcp.json established
  • commands — ok — .claude/commands already present, left alone
  • access — gap — landed 0 of 9 asked
  • layout — gap — migration to the house layout filed as tasks
  • smoke_test — unprovable — src/app_tests.rs in the repository
  • env_example — ok — .env.example already present, left alone
  • agents_md — ok — AGENTS.md established
  • per_workspace_brains — ok — single-package repository: 0 workspaces
  • docs_readme — ok — docs/README.md established
  • gate_proved — unprovable — ./bin/check at head: red, exit 1 (0.0s)

First tasks

Queued from what this pass found, and none of them runs before this merges:

  • Verify the existing dev scripts run clean
  • Refine CLAUDE.md into a tight project brain
  • Align bin/check with the existing CI pipeline (proposal)
  • Move the application into apps/mcp-ssh (house layout)

Merging

This rewrites how agents read your repo, on a repo the platform has not worked before,
so it is yours to merge — not the bot's. Merging it is also what marks the repo
onboarded; until then coding tasks on it are held (issue triage, PR review and
report-only tasks are unaffected).


🤖 Opened by developerz.ai for task tsk_a9e8580adb2da18c3ff9190a7a3a69a5 on developerz-ai/mcp-ssh.

Raised automatically by the repo-onboarding lane, from an interactive repository setup session.

🤖 developerz.ai, an automated agent, not a human — this PR is one slice of a stacked plan.
Dispatched automatically by the repo-onboarding lane
Model deepseek-v4.1-flash on router.ai.developerz.ai via native, funded by account_key
Ran on box sebastian-1
Cost unknown: no list price on record for deepseek-v4.1-flash on router.ai.developerz.ai
Run timeline run_883496399aa342b8885ae9eebc00958f
Part 1/1 of plan tsk_a9e8580adb2da18c3ff9190a7a3a69a5

Dz-Task-Id: tsk_a9e8580adb2da18c3ff9190a7a3a69a5
@developerz-ai developerz-ai Bot added dz/fleet-pr Opened by developerz.ai, an automated agent, from a fleet run. dz/model:deepseek-v4.1-flash developerz.ai: model that wrote this bot PR. dz/provider:router.ai.developerz.ai developerz.ai: provider that served this bot PR. labels Nov 6, 2026
@developerz-ai

developerz-ai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor Author

✅ Reviewed — nothing blocking

0 actionable comment(s) · grounded on your code

⚠️ 2 config note(s): the pull request title was withheld by the untrusted-input screen (injection) — the reviewer did not read it. This pull request was opened by this platform's own App, so this alone does not change the review's verdict · test files were not shown to the reviewer — this diff touched no path recognised as a test, so no assertion was available to read the change against

⏱ 1m 24s wall clock · deepseek-v4.1-flash via router · 2 model call(s) · 14,791 output token(s)

🤖 developerz.ai — automated review, running on your model and your box.

@developerz-ai developerz-ai Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary — 18 file(s), 9 finding(s).

Critical 0 · Major 0 · Minor 7 · Nit 2

Onboarding PR adds machine-read policy files, scorecard and schedules. The new reviewer.md is a reviewer-instruction file full of TODO placeholders and quotes a gate command that contradicts the environment's mise-based toolchain. Onboarding-only PR adding agent definitions and skills; no code.

File Findings
.claude/agents/oauth-pkce.md 1 nit
.claude/skills/bearer-token-mint/SKILL.md 1 minor
.claude/skills/verify-change/SKILL.md 3 minor
.dz/maintainer/maintainer.yml 1 minor
.dz/maintainer/reviewer.md 2 minor
docs/README.md 1 nit
  • the pull request title was withheld by the untrusted-input screen (injection) — the reviewer did not read it. This pull request was opened by this platform's own App, so this alone does not change the review's verdict
  • test files were not shown to the reviewer — this diff touched no path recognised as a test, so no assertion was available to read the change against

🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash on box hv-dedicated-dev-marshall — 351.5k in / 7.81k out over 10 calls, on your flat-rate plan: no per-token charge (~$0.06 at list price).

Comment thread .claude/skills/verify-change/SKILL.md Resolved
Comment thread .claude/skills/verify-change/SKILL.md Resolved
Comment thread .claude/skills/verify-change/SKILL.md Resolved
Comment thread .dz/maintainer/maintainer.yml Resolved
Comment thread .dz/maintainer/reviewer.md Resolved
Comment thread .dz/maintainer/reviewer.md Resolved
Comment thread .claude/agents/oauth-pkce.md Resolved
Comment thread docs/README.md Resolved
@developerz-ai

developerz-ai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor Author

Address review findings on #41

Work landed on #41 — watching it toward merge.

10m · 58 tool calls · 3 messages

Sessions: coding run · review 1 · review 2 · review 3


🤖 developerz.ai, an automated agent, not a human — hv-dedicated-2 (developerz-ai[bot]) · model deepseek-v4.1-flash on router.ai.developerz.ai

@developerz-ai

developerz-ai Bot commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor Author

Waiting on the repository owner: this pull request changes a gate file, which the platform does not merge by itself.

It changes .dz/maintainer/maintainer.yml, .dz/maintainer/reviewer.md, .mcp.json.

The merge check refused the edit: .dz/maintainer/reviewer.md: a new file that differs from the platform template rendered for it for #41 — proof path: git rm .dz/maintainer/maintainer.yml && git rm .dz/maintainer/reviewer.md && git checkout 70eb4ce9b992cfd51f832b4b4b7e53f5206a85ea -- .mcp.json and push — a head that leaves every gate path as the base has it needs no proof, and the rest of the PR merges; or keep only an edit that is exactly a declared transform below. When the gate edit IS the goal, no head of ours proves it: the owner applies it. the PR is re-proved when its head changes, when the platform changes its gate-path transforms or templates, and on the hourly re-check; no .maintainer.yml key and no approval releases it — a workflow edit proves only as a tag pin, a permissions narrowing or a platform template, an added .mcp.json or reviewer prompt only as the platform template, a modified .mcp.json only as the platform adding its managed servers to the base file and touching nothing of the maintainer's, and a policy file only as a NEW .dz/maintainer/maintainer.yml on a repo with none that grants no more than the account's posture default

The task it answers planned this edit, so the goal cannot be met without it and it is not re-filed without them.

To take it, merge it on GitHub. To have the platform merge it, push a narrower edit: a new head is checked again and merged when the check passes. Nothing here is re-tried or closed automatically, and no email is sent; the pull request is listed with the stuck pull requests.

🤖 Posted by developerz.ai — an automated agent, not a human.

Follow-up intent: Address review findings on #41

Dz-Task-Id: tsk_1913232f9809f78aef3167ac2bdf15a1

@developerz-ai developerz-ai Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary — 6 file(s), 0 finding(s).

Docs-only increment: fills the reviewer.md placeholders, corrects the release mechanism in maintainer.yml, rewrites the verify-change exit-code contract to match the actual bin/check chain, and converts the token-mint step to env-injection — all resolving prior review findings; no new defects visib…

  • the pull request title was withheld by the untrusted-input screen (injection) — the reviewer did not read it. This pull request was opened by this platform's own App, so this alone does not change the review's verdict
  • test files were not shown to the reviewer — this diff touched no path recognised as a test, so no assertion was available to read the change against

🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash on box hv-dedicated-dev-marshall — 54.8k in / 728 out over 2 calls, on your flat-rate plan: no per-token charge (~<$0.01 at list price).

…ge proof can pass

The babysit follow-up 0cca4e7 rewrote .dz/maintainer/reviewer.md and
.dz/maintainer/maintainer.yml. The merge egress has refused this PR as
gate_path_edit_unproven since, because its proof needs these paths to match
the template's bytes. This restores both files to the setup commit 1693cc2
and leaves every non-gate edit from 0cca4e7 as it is. The lane fix is
developerz-ai/developerz.ai#8405. The model-written reviewer rules belong
in a separate PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sebyx07

sebyx07 commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

Restored .dz/maintainer/reviewer.md and .dz/maintainer/maintainer.yml to the setup commit's bytes (1693cc2) in 904529d. A babysit follow-up had rewritten them, and the merge egress refuses any gate file that does not match the platform template (gate_path_edit_unproven). The other edits from that follow-up are kept. The model-written reviewer rules belong in a separate PR. The follow-up lane no longer edits these files (developerz-ai/developerz.ai#8405, on boxes with the next runner release). The platform re-grades this PR on the new head.

@developerz-ai developerz-ai Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary — 2 file(s), 3 finding(s).

Critical 0 · Major 1 · Minor 2 · Nit 0

This increment reverts the accurate, repo-specific maintainer/reviewer content added earlier in this PR back to generic onboarding boilerplate: the release mechanism is again described as unobserved and the reviewer file's conventions, gates and never-flag rules are back to TODO(setup).

  • the pull request title was withheld by the untrusted-input screen (injection) — the reviewer did not read it. This pull request was opened by this platform's own App, so this alone does not change the review's verdict
  • test files were not shown to the reviewer — this diff touched no path recognised as a test, so no assertion was available to read the change against

🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/deepseek-v4.1-flash on box sebastian-1 — 22.1k in / 3.65k out over 2 calls, on your flat-rate plan: no per-token charge (~<$0.01 at list price).

Comment thread .dz/maintainer/reviewer.md Resolved
@developerz-ai

developerz-ai Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor Author

No code change warranted. The address_comments follow-up for this pull request investigated its feedback and concluded no code change is warranted:

No change warranted — reviewer feedback on #41 is already handled at head

Feedback (@​sebyx07): .dz/maintainer/reviewer.md and .dz/maintainer/maintainer.yml were
restored to the setup commit's bytes (1693cc2) in 904529d, because the merge egress refuses
any gate file that does not match the platform template (gate_path_edit_unproven); the
model-written reviewer rules belong in a separate PR; the follow-up lane no longer edits these
files. The platform re-grades the PR on the new head.

What I checked at head

  • .dz/maintainer/reviewer.md — 1080 bytes, the setup template: header comment plus
    TODO(setup): placeholders under Review conventions / Gates that matter / Never flag.
    No model-written rules remain.
  • .dz/maintainer/maintainer.yml — 5429 bytes, the setup template: version: 1,
    services: [], the pr:/release:/review:/triage:/escalate:/scout: blocks with the
    schedules: entries still commented out. No hand- or model-rewritten gate content.
  • code_grep over the whole tree for 904529d, 1693cc22, gate_path_edit_unproven and the
    reviewer-rule headings (Review conventions, Gates that matter, Never flag): no hits
    outside reviewer.md's own template headings. Nothing else in the repository carries or
    depends on the reverted content.
  • Working tree clean (code_changes empty); cargo fmt --check exits 0.

Why no edit

The requested end state is the current end state: both gate files already hold the setup
commit's bytes, so re-writing them would either be a no-op or reintroduce the
gate_path_edit_unproven refusal this feedback is clearing. The "other edits from that
follow-up are kept" instruction likewise leaves nothing to revert.

The two follow-on items in the feedback are outside this working tree by design, not
refusals:

  1. The model-written reviewer rules go in a separate PR — writing them here is exactly
    what the merge egress rejects.
  2. "The follow-up lane no longer edits these files" is a platform change
    (developerz-ai/developerz.ai#8405, shipped with the next runner release), not a repo file.
    Nothing in this checkout can pin it; a template-drift check would need the platform's
    template, which is not in the repository, and bin/check is off-limits for this round.

No defect class in this repository produced the rewrite, so there is nothing here to guard.

Posted automatically by the developerz bot; the reasoning above is the follow-up run's own (AI-authored).

Follow-up intent: Address review findings on #41

Dz-Task-Id: tsk_3d76830814acd24e2ee6d8120d14cc4a

@developerz-ai developerz-ai Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review summary — 1 file(s), 0 finding(s).

This increment replaces the three TODO(setup) placeholders in .dz/maintainer/reviewer.md with substantive review conventions, gate definitions and never-flag rules mirrored from CLAUDE.md/reviewer instructions. Docs-only, no code touched, no defect I can anchor against the repo at this head.

  • the pull request title was withheld by the untrusted-input screen (injection) — the reviewer did not read it. This pull request was opened by this platform's own App, so this alone does not change the review's verdict
  • test files were not shown to the reviewer — this diff touched no path recognised as a test, so no assertion was available to read the change against

🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/deepseek-v4.1-flash on box hv-dedicated-dev-marshall — 43k in / 14.8k out over 2 calls, on your flat-rate plan: no per-token charge (~$0.02 at list price).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dz/fleet-pr Opened by developerz.ai, an automated agent, from a fleet run. dz/model:deepseek-v4.1-flash developerz.ai: model that wrote this bot PR. dz/provider:router.ai.developerz.ai developerz.ai: provider that served this bot PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant