diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 130d72b1..18a27bf4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,10 +1,14 @@ # Contributing to epac -Thanks for your interest in helping improve epac. We welcome clear bug reports, thoughtful suggestions, and well-scoped pull requests. +Thanks for your interest in helping improve epac. This repository is open source so you can inspect how the product works and use your own coding agent to help shape feature proposals. + +epac's community contribution path is product-first. We are not currently using community source-code pull requests as the main way to add product features. Instead, we want each substantial contribution to become a well-formed spec that maintainers can review and, if accepted, route into the [Riddim Software](https://riddimsoftware.com/) Factory. + +The public intake service and tracker are not live yet. Until they are, use this guide to prepare a proposal before opening a GitHub issue or contacting the maintainers. ## How to report an issue -Before opening a pull request, start by filing an issue with: +For a bug report, open an issue with: - a short, descriptive title - what you expected to happen @@ -25,27 +29,70 @@ Attach the validated `SPEC.md` contents or rendered issue body to the issue. If this is a question or clarification request, reach out via email at [sunny@riddimsoftware.com](mailto:sunny@riddimsoftware.com). -## How to propose a change +## How to propose a feature + +Start by cloning the repo and opening it in your preferred coding agent. Ask the agent to read this file, `README.md`, `CLAUDE.md` or `AGENTS.md`, and the relevant product or architecture docs before drafting a proposal. + +Your agent may edit the checkout locally to explore an idea or draft evidence for the spec. Those edits are scratch work. They are not the expected contribution artifact, and you do not need to run the app locally to contribute. + +The expected artifact is one top-level spec. Depending on scope, that spec may describe: + +- one issue for a narrow feature or bug fix +- one project with several child issues +- one initiative with multiple projects + +Do not split one discussion into unrelated proposals. If your idea contains several independent outcomes, ask your agent to identify the single top-level shape or recommend splitting the discussion. + +## Factory readiness checklist + +A proposal is ready for maintainer review when it includes: + +- **Use case** — who the feature is for, what they are trying to do, and what success looks like. +- **User value** — why this matters for epac users now. +- **Official data source** — the government or open-data source, owner, URL, format, update cadence, and required fields. +- **Data provenance** — how any app-visible claim traces back to the source. +- **App behavior** — what the user will see, do, receive, or configure in epac. +- **Acceptance criteria** — testable criteria, preferably written as `Given / When / Then`. +- **Out of scope** — related work that is intentionally not included. +- **Implementation surface** — likely affected areas such as `ios/`, `backend/`, `website/`, `data/`, `shared/`, or release metadata. +- **Verification plan** — commands, manual checks, screenshots, or a clear reason verification was not run. +- **Risks and edge cases** — privacy, stale data, missing data, civic neutrality, App Store review, or release concerns. + +If the official data source is unclear, submit a source-discovery proposal instead of a product feature. A good source-discovery proposal explains the user need, candidate sources, and what must be proven before the feature can be built. + +## Data source policy + +epac is a civic app. Product features must be grounded in authoritative public sources. + +- Prefer official government or open-data sources. +- Do not propose new Riddim-owned runtime backend dependencies for the app. +- Do not invent, summarize, or rewrite civic facts with generated text. +- Treat postal code, location, and notification data as sensitive. Explain why the data is needed and how the app can minimize retention or avoid server-side collection. +- If data is unavailable, stale, licensed restrictively, or not machine-readable, state that clearly in the proposal. + +Examples of appropriate source categories include House of Commons open data, Elections Canada electoral geography, Statistics Canada public datasets, and other official Canadian public records. + +## What about local edits? + +Local edits are optional scratch work. They can help your agent answer questions like: + +- Is this feasible in the current architecture? +- Which module would be affected? +- What source data shape does the app need? -1. Open an issue to discuss the change (especially for behavior changes or new features). -2. Link related issues and docs. -3. Keep the change focused and include rationale plus trade-offs. -4. Ask for feedback if you are unsure of scope. +Please do not open product-feature PRs with those local edits unless a maintainer explicitly asks for one. Maintainers own final implementation, review, release, and App Store submission. -## Branching and pull requests +## Pull requests -- Create a branch from `main`. -- Keep PRs small and scoped to one purpose. -- Include a clear title and summary of what changed and why. -- PRs may receive automated first-pass review; humans review and merge. -- Reference the issue(s) you are addressing and include test evidence in the PR description. +Small non-product fixes may still be appropriate as pull requests, such as documentation corrections, typo fixes, broken links, or test-only reproductions requested by a maintainer. -## Local development expectations +For any PR a maintainer asks you to open: -- iOS work: Xcode and the project toolchain required by `ios/README.md`/`README.md`. -- Backend work: Ruby/Go/Python tooling for your service plus any repository-specific dependencies (for example, `go test`, `swiftlint --strict`, or database/local pipeline prerequisites). -- Add/update tests where practical and run the relevant checks before opening a PR. -- Keep file and API changes small and easy to review. +- create a branch from `main` +- keep the PR small and scoped to one purpose +- include a clear title and summary of what changed and why +- reference the issue or proposal you are addressing +- include test evidence in the PR description ## Community behavior diff --git a/README.md b/README.md index 4cc8f86a..c64c978e 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,52 @@ # epac -**Canada's Parliament, in your pocket — an iPhone app for tracking MPs, bills, votes, debates, expenses, and lobbying activity from official Canadian government sources.** +epac is built through agent-assisted specs. -
-
-
-
-
-
-
-
-