Skip to content

Bootstrap repository readiness tooling - #62

Draft
codepress-dev[bot] wants to merge 1 commit into
masterfrom
codepress/bootstrap/repository-readiness/521d834e56af46ac
Draft

Bootstrap repository readiness tooling#62
codepress-dev[bot] wants to merge 1 commit into
masterfrom
codepress/bootstrap/repository-readiness/521d834e56af46ac

Conversation

@codepress-dev

@codepress-dev codepress-dev Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Summary

Set up the repository so future work can capture PR screenshots, start the frontend in a reproducible Docker container, and run a repeatable local HTTP verification contract. The generated tooling was validated against the real CRA app, so reviewers and future agents have a reliable starting point.

Technical details

The grouped change adds a standalone Node 18 Dockerfile for the web/ Create React App surface, a root .dockerignore, and a schema-versioned .codepress/start-app-server/recipe.json with input checksums and the validated port/path contract. It also adds repo-owned pr-screenshot, start-app-server, and verify-local skills. Playwright is pinned to 1.53.2 because the repository's Node 18 image cannot install current Playwright releases that require Node 20; the Yarn lockfile records the matching dependency tree. The existing .codepress/dev-server/Dockerfile.web remains untouched because it is a bind-mount-oriented Live Dev Server image, not a standalone app-server image. The recipe intentionally targets the public CRA frontend; the separate Django source is not wired into that runtime surface.

Changes

  • Add the repo-owned PR screenshot skill, Playwright config, and pinned Playwright dependency.
  • Add a standalone Docker app-server image and fast-path start recipe.
  • Add a public HTTP verify-local contract for the frontend and its static assets.

Test plan

  • Build Dockerfile with the app-server tooling, start the container on port 3000, and verify GET / returns HTTP 200 with the CRA HTML shell.
  • Run forward_app_request against /manifest.json and /favicon.ico; both should return HTTP 200 from the real container.
  • From web/, run yarn install --frozen-lockfile and the generated Playwright capture flow; confirm the home-page screenshot is non-blank and larger than 10 KB.
  • Review the app-server logs and confirm the CRA server compiled successfully without a startup error.

Open items

  • The recipe covers the public CRA frontend only; the separate Django backend under server/ needs its own runtime recipe if future work requires verifying it.
  • No staging/deploy configuration was present in the selected repositories, and verify-staging was not part of the canonical readiness selection for this grouped run.

Authors

Generated with CodePress · View the chat session

Co-authored-by: dev@codepress.dev dev@codepress.dev

Co-authored-by: dev@codepress.dev <dev@codepress.dev>
@codepress-dev codepress-dev Bot added the cp:in-progress CodePress: still being worked on label Aug 10, 2026
@codepress-dev

codepress-dev Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor Author

@codepress /judge-verification can you judge this verification?

Local Verification

Repository: quantfive/django-react-intro
PR: quantfive/django-react-intro#62
PR Head SHA: b25db6c93516a858a60569f68fac10d2a3291cf6

Environment artifact: /tmp/codepress-qa-verifier-runs/verify-env-pr-62-b25db6c-setup.json

The exact current-head environment was reused; no second environment was started. The verifier-owned container was stopped and removed after the contract completed.

Diff Trigger Inventory

Surface Location Contract item
Generated verification contracts .claude/skills/pr-screenshot/SKILL.md, .claude/skills/start-app-server/SKILL.md, .claude/skills/verify-local/SKILL.md #1#4
Durable app-server recipe/image .codepress/start-app-server/recipe.json, .dockerignore, Dockerfile #1#4
Frontend dependency/browser harness web/package.json, web/yarn.lock, web/e2e/playwright.config.js Supporting browser capture; no changed UI behavior claimed
Public CRA app shell / #1
Public static manifest /manifest.json #2
Public favicon asset /favicon.ico #3
Separate Django source server/ Not covered or claimed

The committed diff contains no changes under server/, web/src/, or web/public/. The selected recipe serves only the public CRA frontend; the Django surface was intentionally not started or verified.

Verification Contract Results

# Assertion Evidence class Result Details
1 GET / returns HTTP 200 with the CRA shell live-http ✅ PASS forward_app_request(containerId=f093fcd23bbc9d87ab9b4be464fa534473750fadbeb918c88ed8629fa2d51778, path=/, method=GET, useCookieJar=true) returned HTTP 200. The body began with the CRA HTML document and included #root, /manifest.json, and /favicon.ico references.
2 GET /manifest.json returns HTTP 200 live-http ✅ PASS The real request returned HTTP 200, Content-Type: application/json, and the Create React App manifest (short_name: React App, start_url: ./index.html).
3 GET /favicon.ico returns HTTP 200 live-http ✅ PASS The real request returned HTTP 200, Content-Type: image/x-icon, and ICO/PNG binary content.
4 Container logs are inspected for runtime failures logs ✅ PASS get_app_server_logs(containerId=f093fcd23bbc9d87ab9b4be464fa534473750fadbeb918c88ed8629fa2d51778, tail=500) showed Compiled successfully and the CRA server listening on port 3000. Only legacy Node/dependency warnings appeared; no startup error or related 5xx trace was observed.

Supporting UI Evidence

A real browser capture of / through the same container rendered the React welcome page at 1440×1000 (22,555-byte image response). This is supporting evidence only; the contract passes rely on the live HTTP responses above. No changed interaction required browser assertions.

Log Review

  • STDOUT: CRA development server compiled successfully and advertised port 3000.
  • STDERR: legacy http_parser deprecation and circular-dependency warnings from the old CRA dependency tree.
  • No contract-related error, startup failure, or 5xx trace was observed.

Container

  • ID: f093fcd23bbc9d87ab9b4be464fa534473750fadbeb918c88ed8629fa2d51778
  • Reused from: /tmp/codepress-qa-verifier-runs/verify-env-pr-62-b25db6c-setup.json
  • Stopped: yes — stopped and removed after verification.
  • Teardown: stop_app_server(containerId=f093fcd23bbc9d87ab9b4be464fa534473750fadbeb918c88ed8629fa2d51778)

Overall: ✅ PASS

@lightninglu10 lightninglu10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Software Factory exact-head QA review: the generated readiness bundle is target-scoped to django-react-intro and preserves the originating bootstrap session marker. Please retain that scope during review.

@lightninglu10 lightninglu10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Software Factory webhook QA 4716-b550: confirmed the readiness PR is scoped only to django-react-intro while the selected crypto repository remained read-only peer context.

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

Labels

cp:in-progress CodePress: still being worked on

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant