Skip to content

docs: add CONTRIBUTING.md#1

Merged
Antawari merged 1 commit into
mainfrom
antawari/bon-330-contributing
Apr 16, 2026
Merged

docs: add CONTRIBUTING.md#1
Antawari merged 1 commit into
mainfrom
antawari/bon-330-contributing

Conversation

@Antawari
Copy link
Copy Markdown
Contributor

Summary

Adds CONTRIBUTING.md covering development environment setup, the three-layer role glossary, testing conventions, and the pull request process. Closes Wave 1 of the v0.1 plan.

  • Dev setup: Python 3.12 venv, editable install with [dev] extras, pytest, ruff check, ruff format --check.
  • Role glossary: pulled verbatim from src/bonfire/naming.py (generic / professional / gamified). Documents the convention that code uses the generic names; professional and gamified names are display concerns.
  • How to add a new role: enum + display map + test + glossary, all in one PR.
  • Testing conventions: pytest with asyncio_mode = "auto", tests/unit/ vs tests/integration/, @pytest.mark.live skip-by-default.
  • PR process: branch naming, imperative-mood commits, no internal tracker refs, CI gates, test plan expectation.
  • Pre-release notice linking to docs/release-policy.md.

Test plan

  • pytest tests/ — 16 passed
  • ruff check src/ tests/ — clean
  • ruff format --check src/ tests/ — clean
  • Role glossary table matches src/bonfire/naming.py byte-for-byte across all 8 roles
  • CI green on push

Covers development environment (Python 3.12 venv, editable install,
pytest, ruff), the three-layer role glossary pulled verbatim from
src/bonfire/naming.py, and the pull request process (branch naming,
commit style, CI gates, PR description expectations).

Closes Wave 1 of the v0.1 plan.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
@Antawari Antawari merged commit 2f3df90 into main Apr 16, 2026
1 check passed
@Antawari Antawari deleted the antawari/bon-330-contributing branch April 16, 2026 17:02
Antawari added a commit that referenced this pull request Apr 17, 2026
Fixes ISSUE #1 from the retrospective review of PR #2 (tracked in
issue #3). The scaffolded runner did `git clone https://` of the
private fixture repo inside the container — anonymous HTTPS fails,
and stuffing a token into the container to work around that grows
the secret surface.

New flow: the host clones via SSH into .e2e-runs/<run-id>/target
(host SSH keys handle auth) and bind-mounts the directory into the
container at /workspace/target. The box reaches only
api.anthropic.com; GitHub is unreachable from inside.

Changes
- tests/e2e/scripts/e2e-box.sh: host clone + fixture bind-mount
- tests/e2e/scripts/e2e-runner.sh: in-container clone replaced by
  mount sanity check
- docs/release-gates.md: §Flow step 2 rewritten; offline-box
  security property documented

Closes issue #3 checkbox #1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Antawari added a commit that referenced this pull request Apr 17, 2026
)

Fixes ISSUE #1 from the retrospective review of PR #2 (tracked in
issue #3). The scaffolded runner did `git clone https://` of the
private fixture repo inside the container — anonymous HTTPS fails,
and stuffing a token into the container to work around that grows
the secret surface.

New flow: the host clones via SSH into .e2e-runs/<run-id>/target
(host SSH keys handle auth) and bind-mounts the directory into the
container at /workspace/target. The box reaches only
api.anthropic.com; GitHub is unreachable from inside.

Changes
- tests/e2e/scripts/e2e-box.sh: host clone + fixture bind-mount
- tests/e2e/scripts/e2e-runner.sh: in-container clone replaced by
  mount sanity check
- docs/release-gates.md: §Flow step 2 rewritten; offline-box
  security property documented

Closes issue #3 checkbox #1.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Antawari added a commit that referenced this pull request Apr 17, 2026
… family) (#5)

* release-gates: scaffold v0.1 gate protocol + E2E box + verdict schema (#2)

Stands up the release-gate discipline for v0.1.

- docs/release-gates.md — tiers (infra / integration / E2E / release),
  reviewer cadence (Wizard + code-reviewer), E2E box spec, fixture
  contract, cost logging (Fork C), API key handling, re-publish
  checklist, rollback, release train lifecycle.
- tests/e2e/schemas/verdict.schema.json — Draft-07 schema for the
  release-gate verdict artifact. The schema IS the contract; tighten
  the bar by adding assertions here.
- tests/e2e/Dockerfile — ubuntu:24.04 + python3.12 + node20 +
  @anthropic-ai/claude-code. Local execution only.
- tests/e2e/scripts/e2e-box.sh — host-side driver.
- tests/e2e/scripts/e2e-runner.sh — container-side runner (scaffold;
  completed by BON-359 once the fixture lands).
- docs/release-gate-tickets.md — Linear drafts for BON-356 epic and
  its six children (to be filed when Linear OAuth is live).

Context: repo flipped private at session start. Fixture repo created
at BonfireAI/bonfire-e2e-fixture (private). v0.1 integration branch
live at origin. E2E runs LOCAL ONLY — never in CI.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* e2e: host-clone fixture, bind-mount into box (no creds in container) (#4)

Fixes ISSUE #1 from the retrospective review of PR #2 (tracked in
issue #3). The scaffolded runner did `git clone https://` of the
private fixture repo inside the container — anonymous HTTPS fails,
and stuffing a token into the container to work around that grows
the secret surface.

New flow: the host clones via SSH into .e2e-runs/<run-id>/target
(host SSH keys handle auth) and bind-mounts the directory into the
container at /workspace/target. The box reaches only
api.anthropic.com; GitHub is unreachable from inside.

Changes
- tests/e2e/scripts/e2e-box.sh: host clone + fixture bind-mount
- tests/e2e/scripts/e2e-runner.sh: in-container clone replaced by
  mount sanity check
- docs/release-gates.md: §Flow step 2 rewritten; offline-box
  security property documented

Closes issue #3 checkbox #1.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(release-gate-tickets): replace drafts with Linear links (BON-421 family)

The file was a staging ground while Linear OAuth was fragile during S054.
All 9 tickets are now filed in Linear under epic BON-421:

- BON-422 (v0.1 branch + protection) — Done
- BON-423 (release-gates.md + verdict schema) — Done
- BON-424 E2E box runnable completion — Backlog
- BON-425 fixture target repo populate — Backlog (blocks 424)
- BON-426 per-wave gate checklist template — Backlog
- BON-427 audit open branches — Backlog
- BON-428 canonical branch-name assertion — Backlog (PR #2 retro)
- BON-429 Pin the gate — Backlog (PR #2 retro)

Renumbering note: drafts were BON-356–364 when written; Operation Seal
(private lane, S055) consumed BON-361 + BON-362 overnight, so the
public tickets landed at BON-421–429. Linear auto-numbers monotonically
across the team.

File stays until epic BON-421 closes at v0.1.0 publish. Then delete.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant