Repository navigation
refactor: move app and gem into apps/ruby2html (house layout) - #19
developerz-ai[bot] wants to merge 7 commits into
Conversation
Move the 22 house-layout items (app, config, db, ext, lib, spec, bench, gemfiles, public, log, storage, vendor, Gemfile+lock, Rakefile, config.ru, ruby2html.gemspec, llms.txt, .rspec, .rubocop.yml, .ruby-version) under apps/ruby2html/, file by file. The root keeps the boundary: bin/, .github/, .dz/, .claude/, docs/, .devcontainer/, .gitignore, .dockerignore, .gitattributes, lefthook.yml, mise.toml, tmp/. Root Gemfile becomes a workspace stub eval_gemfile'ing apps/ruby2html/Gemfile; bundler always runs from the app dir (bin/check, bin/setup, lefthook root:, CI working-directory, dependabot /apps/ruby2html). Boundary references updated: bin/ scripts, CI workflows, dependabot, .dz policies and briefs, .claude skills/agents, AGENTS.md and docs. Packaging copies of README.md/LICENSE/CHANGELOG.md added beside the gemspec: bin/gem-smoke:43 requires them inside the built gem, which the gemspec selects via File.file? next to itself. .gitignore gains apps/ruby2html re-anchors; no existing rule removed; root .dockerignore untouched (devcontainer builds use root context). Dz-Task-Id: tsk_697d58676e6ed343d2e14497993be198
|
Waiting on the repository owner: this pull request changes a gate file, which the platform does not merge by itself. It changes The merge check refused the edit: .dz/maintainer/maintainer.yml: a modified policy has no declared transform — only a new one on a repo with none for #19 — proof path: 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. |
|
Resolve merge conflict on #19
Work landed on #19 — watching it toward merge. 4m · 8 tool calls · 6 messages 🤖 developerz.ai, an automated agent, not a human — developerz-ai[bot] |
Follow-up intent: Fix failing CI on #19 Dz-Task-Id: tsk_a9004fbdca2d40f4c61ad24ed552390e
Benchmarks: x86_64 (linux)
escape_bench (C ext) · peak RSS 120 MB
escape_bench (pure Ruby) · peak RSS 152 MB
render_bench (C ext) · peak RSS 132 MB
render_bench (pure Ruby) · peak RSS 132 MB
tag_bench (C ext) · peak RSS 39 MB
tag_bench (pure Ruby) · peak RSS 27 MB
Rails request (C ext) · peak RSS 238 MB
|
Benchmarks: aarch64 (linux)
escape_bench (C ext) · peak RSS 118 MB
escape_bench (pure Ruby) · peak RSS 150 MB
render_bench (C ext) · peak RSS 131 MB
render_bench (pure Ruby) · peak RSS 131 MB
tag_bench (C ext) · peak RSS 38 MB
tag_bench (pure Ruby) · peak RSS 26 MB
Rails request (C ext) · peak RSS 241 MB
|
🟡 Reviewed1 actionable comment(s) · grounded on your code
⏱ 44s wall clock · 🤖 developerz.ai — automated review, running on your model and your box. |
There was a problem hiding this comment.
Review summary — 183 file(s), 8 finding(s).
Critical 0 · Major 1 · Minor 7 · Nit 0
House-layout move of the gem into apps/ruby2html with byte-identical files; verified Rakefile's ../../bin/gem-smoke and setup_spec's ../../../../bin/setup resolve correctly. One defect: the README copy's root-relative doc links now 404.
| File | Findings |
|---|---|
.github/workflows/release.yml |
1 major |
.ruby-version |
1 minor |
CONTRIBUTING.md |
1 minor |
README.md |
1 minor |
apps/ruby2html/README.md |
1 minor |
apps/ruby2html/ruby2html.gemspec |
1 minor |
apps/ruby2html/spec/bin/setup_spec.rb |
1 minor |
docs/release.md |
1 minor |
6 finding(s) GitHub refused inline
GitHub rejected this review's inline comments, so posting them would have lost the entire review — summary and all. The most common cause is that the pull request moved after this pass read it, which retires the lines these findings anchor to. They are reproduced here so nothing is lost; the line numbers are the ones this pass read.
.ruby-version:1minor · other The root .ruby-version now contains the literal string 'apps/ruby2html/.ruby-version' instead of a version, so tools that read this file as a version (rbenv/chruby local, and mise's legacy .ruby-version support before mise.toml wins) fail with "version not installed" at the repo root. Consider maki…CONTRIBUTING.md:33minor · docs CHANGELOG.md moved under apps/ruby2html/, so this root-level CHANGELOG.md link is broken. Use the new path.README.md:260minor · docs The move put CHANGELOG.md at apps/ruby2html/CHANGELOG.md, but this root README still links CHANGELOG.md, which now 404s. Point the link at apps/ruby2html/CHANGELOG.md.apps/ruby2html/README.md:44minor · docs This packaging copy's relative links still resolve against the new apps/ruby2html/ location, where the targets don't exist: .dz/maintainer/maintainer.yml, AGENTS.md (line 52), .claude/…apps/ruby2html/ruby2html.gemspec:51minor · docs The new comment claims the README.md/LICENSE/CHANGELOG.md copies beside the gemspec are "byte-identical copies ... kept in sync", but the diff shows the app README already diverges from the root one (it linksllms.txt,../../.github/workflows/benchmark.yml, andapp/components/...while the ro…docs/release.md:20minor · docs The move removed CHANGELOG.md from the repo root, so the claim thatbin/changelog-notes"reads the root CHANGELOG.md" is now false unless the script was updated to apps/ruby2html/CHANGELOG.md. Verify the script's path and word the note accordingly.
Findings outside the diff
-
.github/workflows/release.yml:155major · bug The release job runs with working-directory apps/ruby2html, but download-artifact drops the java-gem at the workspace (repo) root, so../../ruby2html-*-java.gemresolves above the checkout and matches nothing; the push fails and the release job aborts after the CRuby gem build, leaving no publish… -
apps/ruby2html/spec/bin/setup_spec.rb:17minor · test The spec asserts the order of stubbed commands but never the subprocess's working directory, yet the exact behaviour this PR changes is that bundle/rake now run inside apps/ruby2html instead of the repo root — a regression that reverted the chdir would still pass. Have the stub log$(pwd)alongsi… -
2 noise file(s) auto-skipped (lockfiles/generated/vendored — re-include with path_filters)
-
ci-release-workflows: nothing to review — Pure repo-restructure slice: workflow/path updates and root binstubs all consistently re-anchored to apps/ruby2html with ../../ for root scripts. Checked the tricky spots: release.yml artifact paths (upload path apps/ruby2html/...
-
concern-security: nothing to review — Pure workspace re-layout: file moves plus path-anchored updates to CI workflows, bin scripts, gitignore/attributes, and docs. No new code paths, no new input handling, no auth/tenant surface touched.
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash — 750k in / 13.7k out over 13 calls; cost unknown: no price on record for router/glm-5.3-flash.
|
File fence widened for a merge conflict resolution. The
Why: main auto-merged a comment into .github/ISSUE_TEMPLATE/bug_report.yml telling the release agent to read the gem version from "lib/gem/ruby2html/version.rb" and the Rails version from "Gemfile.lock". This PR moves the app into apps/ruby2html/, so in the merged tree those paths no longer exist (verified: The platform granted it under the same area lock a new task takes (no other in-flight task holds these files), after checking the path is not a secret, CI configuration or a human-merge path. Posted automatically by the developerz bot (AI-authored). |
…the-application-into-apps-ruby2html-house--697d5867 # Conflicts: # .claude/skills/release/SKILL.md # docs/release.md
There was a problem hiding this comment.
Review summary — 3 file(s), 1 finding(s).
Critical 0 · Major 1 · Minor 0 · Nit 0
House-layout move of the gem/app tree under apps/ruby2html/ plus path updates in release docs, the release skill and the issue template. Diff shown is docs-only; no defect surfaced in these lines.
- 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
- 1 finding(s) from an earlier review still stand (
.github/workflows/release.yml) — nothing this pass saw withdraws them. They are listed again here and hold this pull request until a push fixes them
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/MiniMax-M3 — 21.8k in / 200 out over 2 calls, on your flat-rate plan: no per-token charge (~<$0.01 at list price).
Follow-up intent: Address review findings on #19 Dz-Task-Id: tsk_8bdfb20c10fdda445cc9ac5da6842b0c
There was a problem hiding this comment.
Review summary — 1 file(s), 0 finding(s).
Release workflow fix: the java-gem artifact is now downloaded into apps/ruby2html and the push/release globs are relative to that directory. Path handling looks consistent; no defects found in this increment.
- 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/MiniMax-M3 — 12.9k in / 85 out over 1 call, on your flat-rate plan: no per-token charge (~<$0.01 at list price).
…the-application-into-apps-ruby2html-house--697d5867 # Conflicts: # AGENTS.md # apps/ruby2html/spec/bin/brakeman_spec.rb
There was a problem hiding this comment.
Review summary — 1 file(s), 0 finding(s).
Pure file-move PR under apps/ruby2html; the only visible content change (brakeman_spec's script path) correctly gains two extra parent hops for the new depth, and all CI gates are green.
- concern-tests: nothing to review — My slice is a renamed spec file with one line changed: script_path was re-anchored from ../../bin/brakeman to ../../../../bin/brakeman, which correctly resolves from apps/ruby2html/spec/bin to the root bin/brakeman that stays at the repo boundary.
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash — 31.9k in / 471 out over 2 calls, on your flat-rate plan: no per-token charge (~<$0.01 at list price).
|
File fence widened for a merge conflict resolution. The
Why: Main's audit feature auto-merged into the PR's moved layout and broke: (1) apps/ruby2html/Rakefile:94 runs The platform granted it under the same area lock a new task takes (no other in-flight task holds these files), after checking the path is not a secret, CI configuration or a human-merge path. Posted automatically by the developerz bot (AI-authored). |
…the-application-into-apps-ruby2html-house--697d5867 # Conflicts: # AGENTS.md # apps/ruby2html/spec/bin/ruby_version_spec.rb
There was a problem hiding this comment.
Review summary — 6 file(s), 1 finding(s).
Critical 0 · Major 1 · Minor 0 · Nit 0
House-layout move with correct path re-anchoring in Rakefile, bin/audit-advisories and the ruby-version spec; but the diff silently deletes spec/ci/advisory_audit_spec.rb and its driver — the tests guarding the CI audit wiring — instead of re-anchoring them.
Findings outside the diff
-
spec/ci/advisory_audit_spec.rb:1major · test The PR moves files but silently deletes the coverage guard for the dependency audits: the spec pinning the rake audit wiring, the ACCEPTED_ADVISORIES snapshot against re-review, and the root-lockfile coverage all vanish instead of re-anchoring to apps/ruby2html. Nothing in the description accounts… -
concern-security: nothing to review — Security review: the PR is a pure file relocation. It introduces no new input path, no auth change, no secret handling, and no injection surface.
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash — 342.2k in / 6.65k out over 12 calls, on your flat-rate plan: no per-token charge (~$0.05 at list price).
…the-application-into-apps-ruby2html-house--697d5867 # Conflicts: # README.md
There was a problem hiding this comment.
Review summary — 1 file(s), 1 finding(s).
Critical 0 · Major 1 · Minor 0 · Nit 0
Monorepo-layout move: all 22 file trees relocated under apps/ruby2html/ with root boundary scripts, CI, and docs updated; CI matrix, packaging, and pure-Ruby/C parity checks all pass. README path updates verified consistent with the new layout; no defect found.
Findings outside the diff
-
spec/ci/advisory_audit_spec.rb:1major · test The PR moves files but silently deletes the coverage guard for the dependency audits: the spec pinning the rake audit wiring, the ACCEPTED_ADVISORIES snapshot against re-review, and the root-lockfile coverage all vanish instead of re-anchoring to apps/ruby2html. Nothing in the description accounts… -
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
-
1 finding(s) from an earlier review still stand (
spec/ci/advisory_audit_spec.rb) — nothing this pass saw withdraws them. They are listed again here and hold this pull request until a push fixes them
🤖 developerz.ai review — automated, running on your model and your box. What is this? · Reviewed by router/glm-5.3-flash — 22.9k in / 544 out over 2 calls, on your flat-rate plan: no per-token charge (~<$0.01 at list price).
What
Move the 22 house-layout items (app, config, db, ext, lib, spec, bench, gemfiles, public, log, storage, vendor, Gemfile+lock, Rakefile, config.ru, ruby2html.gemspec, llms.txt, .rspec, .rubocop.yml, .ruby-version) under apps/ruby2html/, file by file. The root keeps the boundary: bin/, .github/, .dz/, .claude/, docs/, .devcontainer/, .gitignore, .dockerignore, .gitattributes, lefthook.yml, mise.toml, tmp/.
Root Gemfile becomes a workspace stub eval_gemfile'ing apps/ruby2html/Gemfile; bundler always runs from the app dir (bin/check, bin/setup, lefthook root:, CI working-directory, dependabot /apps/ruby2html). Boundary references updated: bin/ scripts, CI workflows, dependabot, .dz policies and briefs, .claude skills/agents, AGENTS.md and docs.
Packaging copies of README.md/LICENSE/CHANGELOG.md added beside the gemspec: bin/gem-smoke:43 requires them inside the built gem, which the gemspec selects via File.file? next to itself. .gitignore gains apps/ruby2html re-anchors; no existing rule removed; root .dockerignore untouched (devcontainer builds use root context).
Acceptance
Changes
apps/ruby2html/lib/assets/.keep(create) — Create with the exact bytes of old root path lib/assets/.keep (house-layout move; no content change).apps/ruby2html/lib/tasks/.keep(create) — Create with the exact bytes of old root path lib/tasks/.keep (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html.rb. Its require_relative/version lines and dir-based autoloads (lines 6-28) are self-relative — no content change.apps/ruby2html/lib/gem/ruby2html/version.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/version.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/render.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/render.rb. Line 20 require_relative '../../ruby2html/ruby2html' stays correct (lib/ruby2html/ moves alongside) — no content change.apps/ruby2html/lib/gem/ruby2html/render/pure_ruby.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/render/pure_ruby.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/component.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/component.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/component_helper.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/component_helper.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_helper.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_helper.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/html_beautifier_middleware.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/html_beautifier_middleware.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/railtie.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/railtie.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/base_component.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/base_component.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/button_to.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/button_to.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/form_with.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/form_with.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/image_tag.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/image_tag.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/link_to.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/link_to.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/output_capture.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/output_capture.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/template_collector.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/template_collector.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/template_compiler.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/template_compiler.rb (house-layout move; no content change).apps/ruby2html/lib/gem/ruby2html/rails_components/template_helpers.rb(create) — Create with the exact bytes of old root path lib/gem/ruby2html/rails_components/template_helpers.rb (house-layout move; no content change).apps/ruby2html/ext/ruby2html/attributes.c(create) — Create with the exact bytes of old root path ext/ruby2html/attributes.c (house-layout move; no content change).apps/ruby2html/ext/ruby2html/buffer.h(create) — Create with the exact bytes of old root path ext/ruby2html/buffer.h (house-layout move; no content change).apps/ruby2html/ext/ruby2html/content.c(create) — Create with the exact bytes of old root path ext/ruby2html/content.c (house-layout move; no content change).apps/ruby2html/ext/ruby2html/extconf.rb(create) — Create with the exact bytes of old root path ext/ruby2html/extconf.rb. Its dir-based source glob (line 40) is self-relative — no content change.apps/ruby2html/ext/ruby2html/html_escape.c(create) — Create with the exact bytes of old root path ext/ruby2html/html_escape.c (house-layout move; no content change).Verification
./bin/checkpassed (exit 0) in 12s.Notes
Premises of the request the team disproved:
🤖 Opened by developerz.ai for task
tsk_697d58676e6ed343d2e14497993be198on sebyx07/ruby2html.Raised automatically by the
setuplane.