docs: contributor experience — priorities, paths, templates, receipts, first issues - #111
Merged
Merged
Conversation
…, first issues Three outside contributors showed up in one day (kvnloo, TheAngryPit, webdevtodayjason) and found a CONTRIBUTING that covered setup and lint but not what we want, where a change starts, or what a PR has to carry. This makes the next thirty obvious. Markdown and YAML only; no Python changes. CONTRIBUTING.md, rewritten around the existing facts (every one kept — setup, the ruff pin, the #93 baseline, the module table now including talk_check and talk_diagnostics, the adversarial-review paragraph, the SHA-pinned-actions and BLE001/RUF100 rules): - ranked priorities for THIS repo: live-lane bug fixes > provider/host compatibility > security hardening (auth store, token routing, redaction) > cross-platform > new providers behind the contract > new surfaces > docs - a common-paths table — provider, surface, talk tool, fix, docs — naming the files each touches and ships with (talk_realtime.py contract, talk_core_provider.py lane, talk_config/talk_cli/talk_doctor wiring, pyproject py-modules; the DuplexAudio method set a surface implements; the _HANDLERS + READ_ONLY/MUTATING classification a tool needs) - why `uv run --extra dev`, node for the two dashboard JS tests, and how to run a branch live (`hermes plugins install --force --ref <sha>`) - branch names and Conventional-Commit scopes derived from the last 200 commits, the PR description contract, the merge bar, a first-response-within-24h review promise, and how credit works .github/PULL_REQUEST_TEMPLATE.md carries the same contract: what/why, how to test, platforms, a `check --json` receipt when a lane is touched, `Fixes #N`, a checklist that repeats the merge bar. Issue forms: feature_request.yml (problem first, proposal second, which surfaces and providers), provider_compatibility_report.yml (PASS/PARTIAL/ FAIL, provider, model, credential lane, versions, which events were observed — SessionReady / SpeechStarted / FunctionCall round-trip / barge-in — the `check --json` report, the wire error verbatim; no audio, transcripts, or secrets), bug_report.yml gains the core-contract lane and the check/doctor/diagnostics commands as surfaces plus a pointer to the provider form, config.yml links private security reporting and Discussions first. docs/PROVIDER-RECEIPT.md: the two-minute procedure (`check --json`, then one short call with a five-row tick list), the table the form mirrors, and how maintainers act on each verdict — the unticked event names the adapter function; the wire error becomes the regression fixture. Ported idea from bielcarpi/hermes-live-voice's compatibility receipt (MIT) — idea only, no text. README: Contributing shortened to the pointer plus the promise, a Contributors line crediting @kvnloo (#81 merged, #107 in review), @TheAngryPit (#80 in review), @webdevtodayjason (second-consumer feedback on upstream hermes-agent#81404, the contract our lanes register on). CHANGELOG [Unreleased] → Added. Repo settings alongside (not in this diff): labels provider, surface, security, docs created; good first issue + help wanted on #93, help wanted on #90 and #51; Discussions were already enabled. — SmokeDev
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Three outside contributors arrived in one day (@kvnloo, @TheAngryPit, @webdevtodayjason) and met a
CONTRIBUTING.mdthat covered setup and lint but not what we want first, where each kind of change starts, or what a PR has to carry to land. This PR makes the next thirty obvious. Markdown and YAML only — no Python changes.CONTRIBUTING.mdrewrite (every existing fact kept — setup, the ruff pin, the test: host-summary and capabilities tests fail on any box where hermes-agent is importable #93 baseline, the module table, the adversarial-review paragraph, the SHA-pinned-actions and BLE001/RUF100 rules):talk_realtime.pycontract →talk_core_provider.pylane →talk_config/talk_cli/talk_doctorwiring →pyprojectpy-modules; theDuplexAudiomethod set a surface implements; the_HANDLERSentry plusREAD_ONLY_TALK_TOOLS/MUTATING_TALK_TOOLSclassification a tool needs)uv run --extra dev,nodefor the two dashboard JS tests,hermes talk checkas the live proof, and how to run a branch live (hermes plugins install --force --ref <sha> <you>/hermes-talk).github/PULL_REQUEST_TEMPLATE.mdcarrying the same contract (what/why, how to test, platforms, acheck --jsonreceipt when a lane is touched,Fixes #N, a checklist that repeats the merge bar).feature_request.yml(problem first, proposal second, which surfaces and providers); newprovider_compatibility_report.yml(PASS / PARTIAL / FAIL, provider, model, credential lane, versions, which ofSessionReady/SpeechStarted/FunctionCallround-trip / barge-in were observed, thecheck --jsonreport, the wire error verbatim — no audio, transcripts, or secrets);bug_report.ymlgains the core-contract lane and the check/doctor/diagnostics commands as places a bug can happen, plus a pointer to the provider form;config.ymllinks private security reporting and Discussions first.docs/PROVIDER-RECEIPT.md: the two-minute procedure (check --json, then one short call with a five-row tick list), the table the form mirrors, and how maintainers act on each verdict — the unticked event names the adapter function; the wire error becomes the regression fixture. Ported idea from bielcarpi/hermes-live-voice's compatibility receipt (MIT) — idea only, no text.[Unreleased]→ Added.Repo settings done alongside (not in this diff): labels
provider,surface,security,docscreated;good first issue+help wantedon #93;help wantedon #90 and #51. Discussions were already enabled.How to test
Also verified: the four issue forms parse as YAML and every field has the shape GitHub's issue-form schema requires (unique ids, options on every dropdown/checkbox); the suite is untouched and stays green in a project-local venv on this box (
uv run --extra dev pytest -q→ 1561 passed, 40 skipped, 5 xfailed;ruff check .clean on the pinned 0.16.5).Platforms
Live receipt
Not applicable — no provider lane, credential path, or delegation path is touched.
Checklist
pytest -qandruff check .pass locally on the pinned ruffdocs: …)CHANGELOG.md[Unreleased]entry added— SmokeDev