Skip to content

Establish the AI-first base for tesote/coding-challenge-quick - #1

Open
developerz-ai[bot] wants to merge 1 commit into
mainfrom
dz/onboarding
Open

developerz-ai[bot] wants to merge 1 commit into
mainfrom
dz/onboarding

Conversation

@developerz-ai

@developerz-ai developerz-ai Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

This pull request establishes the base an AI coding agent needs to work well in tesote/coding-challenge-quick.

Stack

Detected Ruby + Bundler from the repository's own files.

Established

  • bin/setup — 4. scripts that work
  • bin/dev — 4. scripts that work
  • bin/check — 4. scripts that work
  • CLAUDE.md — 1. a brain
  • .claude/agents/json-persistence.md — 2. a specialist roster
  • .claude/skills/verify-change/SKILL.md — 3. project skills
  • AGENTS.md
  • docs/README.md
  • .claude/commands/planx.md — 9. workflow commands
  • .claude/commands/feature.md — 9. workflow commands
  • .github/workflows/ci.yml — 4. scripts that work
  • .githooks/pre-commit — 4. scripts that work
  • .mcp.json — 5. agent wiring
  • .dz/maintainer/maintainer.yml — 0. the repo policy
  • .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:

  • .gitignore

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).

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 absent at base
  • ./bin/check absent at base
  • ./bin/setup at head: not_runnable, exit 127 (0.0s)
    mise by @jdx – installing 1 tool
    mise ⇢ bun@1.3.14  1ms · already installed
    mise ████████████████ 1/1 · installed 0 tools · 1 already installed in 1ms
    mise all tools are installed
    ./bin/setup: line 6: bundle: command not found
    
  • ./bin/check at head: not_runnable, exit 127 (0.0s)
    ./bin/check: line 5: bundle: command not found
    

Scorecard

9 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 established
  • roster — ok — .claude/agents/json-persistence.md established
  • skills — ok — .claude/skills/verify-change/SKILL.md established
  • scripts — unprovable — bin/setup established
  • wiring — ok — .mcp.json established
  • commands — ok — .claude/commands/planx.md established
  • access — gap — asked for 0 credentials
  • layout — gap — migration to the house layout filed as tasks
  • smoke_test — unprovable — spec/person_repo_spec.rb in the repository
  • env_example — gap — nothing recorded
  • 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: not_runnable, exit 127 (0.0s)

First tasks

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

  • Verify the base runs clean
  • Move the application into apps/coding-challenge-quick (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_a4773748e1d7b371892f56d5c269f462 on tesote/coding-challenge-quick.

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


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Dz-Task-Id: tsk_a4773748e1d7b371892f56d5c269f462
@developerz-ai developerz-ai Bot added the dz/fleet-pr Opened by the developerz.ai maintainer bot from a fleet run. label Sep 18, 2026
@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 081a8935-19e3-4f75-90d7-4ecd21f0b1e7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@developerz-ai

developerz-ai Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Author

🟡 Reviewed

12 actionable comment(s) · 5 refuted by verification · 9 suppressed (anti-noise) · grounded on your code

⚠️ 1 config note(s): 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

⏱ 5m 34s wall clock · z-ai/glm-5.3-flash via openrouter · 39 model call(s) · 19,970 output token(s) · 26 tok/s observed (slowest call 3m 21s). The slowest model call was 3m 21s of the 5m 34s wall clock.

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

@developerz-ai developerz-ai Bot left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Review summary — 17 file(s), 12 finding(s).

Critical 0 · Major 3 · Minor 9 · Nit 0

agent-config-docs

Agent-config/docs files are internally consistent, but CLAUDE.md claims "no CI" while this same PR adds a GitHub Actions workflow — a stale claim future agents will trust.

pipeline-and-tooling

Onboarding tooling is mostly sound, but bin/setup aborts before bundle install on hosts without mise, and bin/check's comment overstates what the gate runs.

concern-security

No auth surface widens; the only security note is that .mcp.json executes @sentry/mcp-server via bunx with no version pin, an unmanaged supply-chain path.

concern-tests

The repo's test gate is unrunnable as wired: CI has no Ruby toolchain step, so bin/check fails exit 127 on every run; no other test-surface defects in the added files.

concern-api-contract

The declared gate is broken: bin/setup provides no Ruby/Bundler, so bin/check (and the CI workflow this PR adds) exits 127; CLAUDE.md also falsely says no CI exists.

concern-style-nits

Style/doc-consistency: two generated docs contradict the scripts and workflow added by this same PR; scripts themselves read clean.

pipeline-and-tooling (handoff)

The new gates cannot run: bin/setup aborts without mise and still leaves bundle off PATH (CI and local both exit 127), ci.yml installs no Ruby toolchain, and bin/check lacks the exit-75 precondition guard its docs promise.

agent-config-docs (handoff)

Agent-facing docs and commands are internally consistent, but CLAUDE.md's 'no CI or linting present' contradicts the CI workflow and pre-commit hook this same PR adds, and the documented gate scripts are unproven (exit 127).

No findings from: maintainer-docs.

(Some reviewers completed only 2 of 3 review samples; findings are the union of the samples that completed.)

File Findings
.claude/agents/json-persistence.md 1 minor
.claude/skills/verify-change/SKILL.md 2 minor
.github/workflows/ci.yml 2 major
.mcp.json 1 minor
CLAUDE.md 2 minor
bin/check 2 minor
bin/dev 1 minor
bin/setup 1 major

5 candidate finding(s) refuted by verification (each was judged against the diff and did not hold).

9 lower-signal comment(s) suppressed (anti-noise: 8 duplicate, 1 below floor).

Config notes
  • 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 openrouter/z-ai/glm-5.3-flash on box Azure Gull — 450k in / 20k out over 39 calls, ~$0.08 on your key (estimate: list price x reported tokens).

Implement `save` inside `Person::PersonRepo` in `lib/person_repo.rb` following the code comment's contract: write `tmp/persons.json` as `{ "persons": [ { "id": <uuid>, "full_name": ..., "age": ... } ] }`.
- Read the existing file, append the person, rewrite it — never overwrite blindly.
- Create `tmp/` with `require 'fileutils'` + `FileUtils.mkdir_p('tmp')` if it does not exist.
- Generate ids with `require 'securerandom'` (`SecureRandom.uuid`) so they persist across runs.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · docs Tells the agent to generate ids with SecureRandom.uuid inside the save path, while the repo contract (CLAUDE.md line 38) says ids come from the Person constructor and must be identical before save and after reload. Reword so save persists the id the Person already carries; SecureRandom belongs in Person's constructor.

grounded: .claude/agents/json-persistence.md, lib/person_repo.rb:4, lib/person.rb … · 🤖 developerz.ai review — automated, what is this?


## The one gate

`bin/check` is the gate. CI runs it and the pre-commit hook runs it, so a change that

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · docs The skill asserts bin/check is the gate 'CI runs and the pre-commit hook runs, so a change that passes it locally passes everywhere', yet the head's own CI 'check' runs failed and the local run exited 127 because bundle was unavailable — the claimed guarantee does not hold for the gate this PR installs.

grounded: .claude/skills/verify-change/SKILL.md · 🤖 developerz.ai review — automated, what is this?

- Run every command from the repo root — the scripts `cd` there themselves.
- `bin/check` red is not a pull request. Fix the cause, never silence the gate.

## Exit codes `bin/check` must use

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · docs SKILL.md mandates bin/check exit 75 for unmet environment preconditions, but bin/check has no precondition guard and delegates every failure to bundle exec rspec's exit code. Add the exit-75 guard to bin/setup/bin/check (e.g. command -v bundle or bundle check, else exit 75).

grounded: .claude/skills/verify-change/SKILL.md · 🤖 developerz.ai review — automated, what is this?

Comment thread .github/workflows/ci.yml
Comment on lines +11 to +15
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: bin/setup
- run: bin/check

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

major · maintainability CI relies on whatever Ruby/bundler the ubuntu-latest image happens to carry — no setup-ruby step and no version pin — so green runs can silently break on runner-image updates, and the PR's own proof shows bundle: command not found on one box. Add actions/setup-ruby (or ruby/setup-ruby) with a pinned Ruby version before bin/setup.

grounded: .github/workflows/ci.yml, lib/person_repo.rb, lib/person.rb · 🤖 developerz.ai review — automated, what is this?

Comment thread .github/workflows/ci.yml
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: bin/setup

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

major · bug The workflow runs bin/setup with no Ruby/Bundler toolchain step, and both head CI runs failed (exit 127, bundle not found) — ubuntu-latest's default Ruby lacks the setup this script assumes. Add ruby/setup-ruby with bundler-cache before bin/check so the declared green gate can actually pass.

Suggested change
- run: bin/setup
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- run: bin/setup
- run: bin/check

grounded: .github/workflows/ci.yml · 🤖 developerz.ai review — automated, what is this?

Comment thread CLAUDE.md

Ruby + Bundler + RSpec

Toolchain: `mise.toml` — `bin/setup` runs `mise install`; the box carries only bun.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · docs Claiming 'the box carries only bun' bakes one setup box's state into a permanent doc, and the PR's own verification shows the result: bin/check fails with 'bundle: command not found', contradicting the Commands table that presents bin/check as working. Reword to describe the toolchain (mise + Ruby) without asserting what any particular box carries.

grounded: lib/person_repo.rb, ./tmp/persons.json, lib/person.rb · 🤖 developerz.ai review — automated, what is this?

Comment thread bin/check
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
# one-command check (typecheck + lint + test) — established by dz-runner setup mode. One command; adjust as the repo grows.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · docs The comment claims the check covers "typecheck + lint + test" but line 5 runs only bundle exec rspec, so readers (and the CI comment in ci.yml that promises the same gate) believe checks run that do not. Reword to "test" or add the lint/typecheck steps.

Suggested change
# one-command check (typecheck + lint + test) — established by dz-runner setup mode. One command; adjust as the repo grows.
# one-command check (test) — established by dz-runner setup mode. One command; adjust as the repo grows.

grounded: lib/person_repo.rb, ./tmp/persons.json, lib/person.rb · 🤖 developerz.ai review — automated, what is this?

Comment thread bin/check
# one-command check (typecheck + lint + test) — established by dz-runner setup mode. One command; adjust as the repo grows.
set -euo pipefail
cd "$(dirname "$0")/.."
bundle exec rspec

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · test The skill's exit-code contract (SKILL.md lines 26-39) says bin/check must exit 75 when a needed precondition (e.g.

missing bundle) is unreachable, but bin/check has no precondition guard — the head-run excerpt shows it exiting 127, which the platform reads as 'the change is red'. Add a command -v bundle guard that exits 75 in bin/check.

🤖 developerz.ai review — automated, what is this?

Comment thread bin/dev
# one-command dev — established by dz-runner setup mode. One command; adjust as the repo grows.
set -euo pipefail
cd "$(dirname "$0")/.."
ruby app.rb

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

minor · bug bin/dev runs ruby app.rb with the same bare-interpreter assumption as bin/setup, so on a mise-managed toolchain where shims are not active it fails with command-not-found instead of using the project's Ruby. Consider mise exec -- ruby app.rb for consistency with the setup path.

grounded: lib/person_repo.rb · 🤖 developerz.ai review — automated, what is this?

Comment thread bin/setup
Comment on lines +5 to +6
command -v mise >/dev/null && mise install
bundle install

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

major · bug Under set -e, command -v mise >/dev/null && mise install makes the whole script exit non-zero on any machine without mise, so bundle install never runs — the very environment the PR's own verification shows (bundle not found). Use an if so absence of mise is not fatal.

Suggested change
command -v mise >/dev/null && mise install
bundle install
if command -v mise >/dev/null; then
mise install
fi
bundle install

🤖 developerz.ai review — automated, what is this?

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

Labels

dz/fleet-pr Opened by the developerz.ai maintainer bot from a fleet run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants