feat(canon): add contribution-convention v0.1, contrib/ templates, and first UPR artifact

- canon/standards/contribution-convention_v0.1.md: master spec for BR/FR/EP/UPR
  artifact types, directory layout, frontmatter schema, ID schemes (EP-DOMAIN-NNN
  for extension points), status lifecycle, and relationship to State Hub
- canon/standards/contrib-templates/: four template files (br, fr, ep, upr)
- contrib/upstream-prs/2026-02-26--observablehq--framework--toc-sidebar-inject.md:
  first real UPR artifact — proposes injectTocTop() to Observable Framework

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 17:28:13 +01:00
parent b949a11f20
commit 0d978b1417
6 changed files with 452 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
---
id: br-YYYY-MM-DD--org--repo--slug
type: br
target_org: <github-org-or-owner>
target_repo: <repository-name>
title: "Short description of the bug"
status: draft
domain: custodian # change to your domain
related_workstream: null
state_hub_contribution_id: null
created: "YYYY-MM-DD"
updated: "YYYY-MM-DD"
upstream_version: "X.Y.Z"
upstream_issue_url: null
---
# Bug: <short description>
## Environment
- **Upstream project**: `<target_org>/<target_repo>` v`<upstream_version>`
- **Our usage context**: _which component or module triggered this_
## Reproduction Steps
1.
2.
3.
## Expected Behaviour
_What should happen._
## Actual Behaviour
_What actually happens. Include error messages or stack traces._
## Workaround
_Any workaround currently in use, or "None"._
## Notes
_Any additional context, links to related issues, or observations._

View File

@@ -0,0 +1,50 @@
---
id: EP-DOMAIN-NNN
type: ep
ep_id: EP-DOMAIN-NNN
target_org: <github-org-or-owner>
target_repo: <repository-name>
title: "Short description of the extension point"
status: draft
domain: custodian # change to your domain
related_workstream: null
state_hub_contribution_id: null
created: "YYYY-MM-DD"
updated: "YYYY-MM-DD"
location: "src/file.ts:42"
upstream_issue_url: null
---
# Extension Point Proposal: EP-DOMAIN-NNN
## Summary
_One-paragraph description of the extension point: where in the upstream codebase
it would live, what it would enable, and who would benefit._
## Location
**File**: `<path/in/upstream/repo>`
**Line**: _approximate location where the hook/callback would be inserted_
## Proposed Interface
```typescript
// or Python, Rust, etc. — match the upstream project's language
interface ExtensionPoint {
// …
}
```
## Rationale
_Why this extension point is valuable. What use cases does it unlock?
Why should upstream accept it rather than keeping it local?_
## Implementation Sketch
_Brief notes on how upstream might implement this, if relevant._
## Notes
_References to related upstream issues, PRs, or discussions._

View File

@@ -0,0 +1,40 @@
---
id: fr-YYYY-MM-DD--org--repo--slug
type: fr
target_org: <github-org-or-owner>
target_repo: <repository-name>
title: "Short description of the requested feature"
status: draft
domain: custodian # change to your domain
related_workstream: null
state_hub_contribution_id: null
created: "YYYY-MM-DD"
updated: "YYYY-MM-DD"
upstream_issue_url: null
---
# Feature Request: <short description>
## Motivation
_Why we need this feature. What problem does it solve? What becomes possible?_
## Proposed Interface / API
```
# Sketch of the proposed interface, function signature, or configuration option.
```
## Example Usage
```
# How we would use this feature in our codebase once available.
```
## Alternatives
_What we currently do instead (workaround, local implementation, etc.)._
## Notes
_Any additional context, links to related discussions, or upstream roadmap references._

View File

@@ -0,0 +1,62 @@
---
id: upr-YYYY-MM-DD--org--repo--slug
type: upr
target_org: <github-org-or-owner>
target_repo: <repository-name>
title: "Short description of the upstream PR"
status: draft
domain: custodian # change to your domain
related_workstream: null
state_hub_contribution_id: null
created: "YYYY-MM-DD"
updated: "YYYY-MM-DD"
local_component_path: "relative/path/in/this/repo/component.js"
target_upstream_file: "path/in/upstream/repo/component.js"
upstream_pr_url: null
---
# Upstream PR: <short description>
## Summary
_What this PR adds or fixes in the upstream project._
## Motivation
_Why we want this upstream rather than keeping it as a local fork.
What maintenance burden does upstreaming remove?_
## Local Component
**Path in this repo**: `<local_component_path>`
**Origin story**: _How/when this component was created locally._
## Target Upstream Location
**Repo**: `<target_org>/<target_repo>`
**File**: `<target_upstream_file>`
## Draft PR Body
```markdown
## Summary
_Fill in the PR summary for the upstream project here._
## Motivation
_Explain why the upstream project would benefit._
## Changes
-
## Testing
- [ ] Tests added
- [ ] Existing tests pass
```
## Notes
_Any upstream discussion, review feedback, or open questions._