diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 83cb694..e36cc9e 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,5 +1,5 @@ name: Bug report -description: Report reproducible incorrect behavior in ecosystem policy or tooling +description: Report reproducible incorrect behavior in Specs contracts or payload handling title: "[Bug]: " labels: - "type: bug" @@ -10,7 +10,10 @@ body: - type: markdown attributes: value: | - Search existing issues first. Do not disclose suspected vulnerabilities here. + Read the [contribution guide](https://github.com/ml4t/specs/blob/main/CONTRIBUTING.md) + and [shared policy](https://github.com/ml4t/ecosystem/blob/main/CONTRIBUTING.md). + Search existing issues first and report one problem per issue. Do not disclose suspected + vulnerabilities here; use private security reporting from the issue chooser. - type: dropdown id: library attributes: @@ -78,3 +81,17 @@ body: description: State the observable conditions that demonstrate the issue is resolved. validations: required: true + - type: textarea + id: ai_assistance + attributes: + label: AI assistance + description: State whether AI tools helped prepare this report and which parts. Write "None" if unused. + validations: + required: true + - type: checkboxes + id: accountability + attributes: + label: Contributor accountability + options: + - label: I reviewed this report and can explain its reproduction, requested behavior, or evidence. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 23e4f2d..70454e2 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,6 +3,6 @@ contact_links: - name: Security vulnerability url: https://github.com/ml4t/specs/security/advisories/new about: Report suspected vulnerabilities privately. - - name: Usage questions - url: https://github.com/orgs/ml4t/discussions - about: Ask questions that do not describe a defect or requested change. + - name: Usage documentation + url: https://www.ml4trading.io/docs/specs/ + about: Read contract documentation before opening an issue. diff --git a/.github/ISSUE_TEMPLATE/documentation.yml b/.github/ISSUE_TEMPLATE/documentation.yml index d060f5a..23b6857 100644 --- a/.github/ISSUE_TEMPLATE/documentation.yml +++ b/.github/ISSUE_TEMPLATE/documentation.yml @@ -7,6 +7,12 @@ labels: - "status: needs-triage" - "compatibility: none" body: + - type: markdown + attributes: + value: | + Read the [contribution guide](https://github.com/ml4t/specs/blob/main/CONTRIBUTING.md) + and [shared policy](https://github.com/ml4t/ecosystem/blob/main/CONTRIBUTING.md). + Search existing issues first. Describe one documentation problem or coherent change. - type: dropdown id: library attributes: @@ -53,3 +59,17 @@ body: label: Acceptance criteria validations: required: true + - type: textarea + id: ai_assistance + attributes: + label: AI assistance + description: State whether AI tools helped prepare this report and which parts. Write "None" if unused. + validations: + required: true + - type: checkboxes + id: accountability + attributes: + label: Contributor accountability + options: + - label: I reviewed this report and can explain its reproduction, requested behavior, or evidence. + required: true diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml index ca17225..40d3d32 100644 --- a/.github/ISSUE_TEMPLATE/feature.yml +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -7,6 +7,14 @@ labels: - "status: needs-triage" - "compatibility: affected" body: + - type: markdown + attributes: + value: | + Read the [contribution guide](https://github.com/ml4t/specs/blob/main/CONTRIBUTING.md) + and [shared policy](https://github.com/ml4t/ecosystem/blob/main/CONTRIBUTING.md). + Search existing issues first. Request one coherent change and discuss intended behavior + before opening a PR. Identify contract versioning, serialized fixtures, migration guidance, + and affected producer/consumer libraries when compatibility changes. - type: dropdown id: library attributes: @@ -64,3 +72,17 @@ body: label: Acceptance criteria validations: required: true + - type: textarea + id: ai_assistance + attributes: + label: AI assistance + description: State whether AI tools helped prepare this report and which parts. Write "None" if unused. + validations: + required: true + - type: checkboxes + id: accountability + attributes: + label: Contributor accountability + options: + - label: I reviewed this report and can explain its reproduction, requested behavior, or evidence. + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 0d92431..465c36e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -2,6 +2,11 @@ Closes # +Follow the [shared contribution policy](https://github.com/ml4t/ecosystem/blob/main/CONTRIBUTING.md) +and [Specs guide](https://github.com/ml4t/specs/blob/main/CONTRIBUTING.md). +Keep one problem or coherent change in this PR. Automated dependency updates and administrative +metadata changes do not require a separate issue. + ## Outcome Describe the user-visible or standards outcome. @@ -11,9 +16,21 @@ Describe the user-visible or standards outcome. - [ ] No public compatibility impact - [ ] Compatibility impact is documented in the owning issue and migration guidance +For incompatible contract changes, identify the new version, migration guidance, serialized +fixtures, and affected producer/consumer libraries. Agree on intentional changes to definitions +or defaults in the owning issue; correct verified defects even when outputs change. + ## Verification -- [ ] Tests reproduce the prior failure or verify the requested behavior +For a bug fix, record a regression through the affected public API or real workflow: + +- Base revision, command, and failing result: +- PR revision, same command, and passing result: + +For other changes, report the relevant commands and outcomes. Documentation changes do not need +artificial regression tests. Explain checks that do not apply. + +- [ ] Verification covers the affected contract or workflow - [ ] Ruff lint and format checks pass - [ ] `ty` passes - [ ] Test suite passes @@ -21,6 +38,12 @@ Describe the user-visible or standards outcome. - [ ] Strict MkDocs build passes when documentation is affected - [ ] Ecosystem qualification passes +## AI assistance + +State whether AI tools helped with code or prose, and identify those parts. Write "None" if unused. + +- [ ] I reviewed and tested this submission and can explain its implementation and evidence + ## Documentation and release State the documentation, release notes, and patch-release work required after merge. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..525bd72 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,25 @@ +# Contributing to ML4T Specs + +Follow the [shared ML4T contribution policy](https://github.com/ml4t/ecosystem/blob/main/CONTRIBUTING.md). +Search existing issues and describe one problem or coherent change per issue and focused pull +request. Link the owning issue; automated dependency updates and administrative metadata changes +retain the shared exception. Disclose AI assistance for code and prose, review the submission, +and be prepared to explain its implementation and evidence. + +For defects, provide a minimal public-API reproduction with package and environment details. +Record the same regression command failing on the base revision and passing on the correction. +Correct verified numerical defects; agree on intentional changes to definitions or defaults in +the owning issue. Documentation changes use relevant documentation checks rather than artificial +regression tests. Report suspected vulnerabilities through +[private security reporting](https://github.com/ml4t/specs/security/advisories/new). + +## Preserve contract compatibility + +Specs owns runtime-neutral values exchanged between libraries. Field names, enum values, +validation behavior, and serialized payloads are public compatibility surfaces. Preserve compatible +payloads. An incompatible change needs a new contract version, migration guidance, and fixtures +that define the transition. Describe affected producer and consumer libraries in the owning issue; +Backtest and Live retain responsibility for their runtime behavior. + +Read the [contract guide](docs/contracts.md) and use the documented development and quality +commands in [AGENTS.md](AGENTS.md#quality-commands). Include the commands and outcomes in your PR. diff --git a/README.md b/README.md index e50305c..e7be0b1 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,9 @@ This package is intentionally small. It is a support layer, not a full end-user ## Development +Read the [contribution guide](CONTRIBUTING.md) for issue scope, verification evidence, and contract +compatibility requirements. + ```bash git clone https://github.com/ml4t/specs.git cd ml4t-specs