open-research-protocol 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_INTEGRATION.md +94 -0
- package/INSTALL.md +159 -0
- package/LICENSE +22 -0
- package/PROTOCOL.md +140 -0
- package/README.md +312 -0
- package/bin/orp.js +38 -0
- package/cli/orp.py +3595 -0
- package/cone/CONTEXT_LOG.md +33 -0
- package/docs/AGENT_LOOP.md +63 -0
- package/docs/CHOOSING_OR_IGNORING_INSTRUMENTS.md +128 -0
- package/docs/CODA_ORP_CONTRACT.md +222 -0
- package/docs/CORE_ABILITY_REFOCUS_CHECKLIST.md +62 -0
- package/docs/DISCOVER.md +69 -0
- package/docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md +275 -0
- package/docs/MATHLIB_COLLABORATION_FLOW_PROMPT.md +112 -0
- package/docs/NPM_RELEASE_CHECKLIST.md +55 -0
- package/docs/ORP_V1_ATOMIC_DISCOVERY_EVOLUTION.md +186 -0
- package/docs/OSS_CONTRIBUTION_AGENT_LOOP.md +69 -0
- package/docs/PRESENTATION_BOW.md +100 -0
- package/docs/PROFILE_PACKS.md +227 -0
- package/docs/SUNFLOWER_CODA_PR_GOVERNANCE_MAPPING.md +77 -0
- package/docs/WHY_INSTRUMENTS.md +118 -0
- package/examples/README.md +21 -0
- package/examples/example_claim.md +33 -0
- package/examples/example_failed.md +24 -0
- package/examples/example_verification.md +36 -0
- package/examples/orp.erdos-problems.catalog.yml +88 -0
- package/examples/orp.external-pr-governance.yml +223 -0
- package/examples/orp.sunflower-coda.atomic.yml +144 -0
- package/examples/orp.sunflower-coda.live-compare.yml +181 -0
- package/examples/orp.sunflower-coda.pr-governance.yml +253 -0
- package/examples/packet.problem_scope.example.json +123 -0
- package/examples/reports/README.md +16 -0
- package/examples/reports/sunflower_live_compare_20.RUN_SUMMARY.md +37 -0
- package/examples/reports/sunflower_live_compare_367.RUN_SUMMARY.md +37 -0
- package/examples/reports/sunflower_live_compare_857.RUN_SUMMARY.md +37 -0
- package/llms.txt +58 -0
- package/modules/instruments/ADVERSARIAL/README.md +109 -0
- package/modules/instruments/ADVERSARIAL/TEMPLATE.md +27 -0
- package/modules/instruments/COMPRESSION/README.md +112 -0
- package/modules/instruments/COMPRESSION/TEMPLATE.md +27 -0
- package/modules/instruments/INSTRUMENT_TEMPLATE.md +30 -0
- package/modules/instruments/ORBIT/README.md +124 -0
- package/modules/instruments/ORBIT/TEMPLATE.md +28 -0
- package/modules/instruments/README.md +179 -0
- package/package.json +54 -0
- package/packs/README.md +16 -0
- package/packs/erdos-open-problems/README.md +287 -0
- package/packs/erdos-open-problems/data/README.md +43 -0
- package/packs/erdos-open-problems/data/erdos_open_problems.md +697 -0
- package/packs/erdos-open-problems/data/erdos_problems.active.json +15561 -0
- package/packs/erdos-open-problems/data/erdos_problems.all.json +26289 -0
- package/packs/erdos-open-problems/data/erdos_problems.closed.json +10760 -0
- package/packs/erdos-open-problems/data/erdos_problems.open.json +15561 -0
- package/packs/erdos-open-problems/docs/SUNFLOWER_ADAPTER_DEPENDENCIES.md +63 -0
- package/packs/erdos-open-problems/pack.yml +131 -0
- package/packs/erdos-open-problems/profiles/erdos-problems-catalog-sync.yml.tmpl +99 -0
- package/packs/erdos-open-problems/profiles/sunflower-live-compare.yml.tmpl +188 -0
- package/packs/erdos-open-problems/profiles/sunflower-mathlib-pr-governance.yml.tmpl +253 -0
- package/packs/erdos-open-problems/profiles/sunflower-problem857-discovery-public-repo.yml.tmpl +152 -0
- package/packs/erdos-open-problems/profiles/sunflower-problem857-discovery.yml.tmpl +154 -0
- package/packs/external-pr-governance/README.md +116 -0
- package/packs/external-pr-governance/adapters/formal-conjectures/README.md +35 -0
- package/packs/external-pr-governance/adapters/mathlib/README.md +37 -0
- package/packs/external-pr-governance/pack.yml +146 -0
- package/packs/external-pr-governance/profiles/oss-feedback-hardening.yml.tmpl +92 -0
- package/packs/external-pr-governance/profiles/oss-pr-governance.yml.tmpl +233 -0
- package/packs/issue-smashers/README.md +92 -0
- package/packs/issue-smashers/adapters/formal-conjectures/README.md +17 -0
- package/packs/issue-smashers/adapters/generic-github/README.md +16 -0
- package/packs/issue-smashers/adapters/mathlib/README.md +32 -0
- package/packs/issue-smashers/bootstrap/README.md +19 -0
- package/packs/issue-smashers/bootstrap/setup-issue-smashers.sh +18 -0
- package/packs/issue-smashers/examples/issue-smashers.workspace.yml +24 -0
- package/packs/issue-smashers/pack.yml +178 -0
- package/packs/issue-smashers/profiles/issue-smashers-feedback-hardening.yml.tmpl +102 -0
- package/packs/issue-smashers/profiles/issue-smashers.yml.tmpl +258 -0
- package/scripts/npm-postinstall-check.js +31 -0
- package/scripts/orp +11 -0
- package/scripts/orp-agent-integrate.sh +197 -0
- package/scripts/orp-checkpoint.sh +184 -0
- package/scripts/orp-erdos-problems-sync.py +580 -0
- package/scripts/orp-init.sh +50 -0
- package/scripts/orp-pack-fetch.py +155 -0
- package/scripts/orp-pack-install.py +2273 -0
- package/scripts/orp-pack-render.py +188 -0
- package/spec/v1/LIFECYCLE_MAPPING.md +40 -0
- package/spec/v1/orp.config.schema.json +385 -0
- package/spec/v1/packet.schema.json +552 -0
- package/spec/v1/profile-pack.schema.json +95 -0
- package/templates/CLAIM.md +33 -0
- package/templates/FAILED_TOPIC.md +19 -0
- package/templates/ISSUE_TEMPLATE.md +22 -0
- package/templates/VERIFICATION_RECORD.md +34 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# formal-conjectures Adapter Notes
|
|
2
|
+
|
|
3
|
+
This is the first non-mathlib adapter target for the generic `external-pr-governance` pack.
|
|
4
|
+
|
|
5
|
+
## Current source of truth
|
|
6
|
+
|
|
7
|
+
- `docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md`
|
|
8
|
+
- In the live `sunflower-coda` host repo, the watch-board artifacts for:
|
|
9
|
+
- `analysis/OSS_ISSUE_WATCHLIST.json`
|
|
10
|
+
- `analysis/OSS_ISSUE_WATCH_STATUS.md`
|
|
11
|
+
|
|
12
|
+
Recent live examples in the watch board:
|
|
13
|
+
|
|
14
|
+
- `google-deepmind/formal-conjectures` PR `#2770`
|
|
15
|
+
- `google-deepmind/formal-conjectures` PR `#2771`
|
|
16
|
+
|
|
17
|
+
## Expected adapter responsibilities
|
|
18
|
+
|
|
19
|
+
- watch and review tracking
|
|
20
|
+
- local Lean build/typecheck before PR update
|
|
21
|
+
- issue/PR linkage correctness (`Closes #...` when appropriate)
|
|
22
|
+
- concise portable PR body/comment hygiene
|
|
23
|
+
- draft CI watch if draft mode is used
|
|
24
|
+
- ready-for-review decision gate
|
|
25
|
+
- maintainer-feedback hardening
|
|
26
|
+
|
|
27
|
+
## What is not standardized yet
|
|
28
|
+
|
|
29
|
+
Compared with mathlib, this adapter still needs:
|
|
30
|
+
|
|
31
|
+
- a dedicated local-first gate script,
|
|
32
|
+
- a dedicated ready-to-draft freeze gate,
|
|
33
|
+
- a dedicated PR-body preflight gate.
|
|
34
|
+
|
|
35
|
+
That is the main standardization gap this pack is meant to close.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Mathlib Adapter Notes
|
|
2
|
+
|
|
3
|
+
This adapter should be treated as the current reference implementation for the generic
|
|
4
|
+
`external-pr-governance` pack.
|
|
5
|
+
|
|
6
|
+
## Current source of truth
|
|
7
|
+
|
|
8
|
+
- `docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md`
|
|
9
|
+
- `docs/SUNFLOWER_CODA_PR_GOVERNANCE_MAPPING.md`
|
|
10
|
+
- `packs/erdos-open-problems/profiles/sunflower-mathlib-pr-governance.yml.tmpl`
|
|
11
|
+
- In the live `sunflower-coda` host repo, the matching docs/scripts for:
|
|
12
|
+
- `MATHLIB_SUBMISSION_CHECKLIST.md`
|
|
13
|
+
- `mathlib-issue-local-gate.sh`
|
|
14
|
+
- `mathlib-ready-to-draft-gate.sh`
|
|
15
|
+
- `mathlib-pr-body-preflight.py`
|
|
16
|
+
|
|
17
|
+
## Adapter responsibilities
|
|
18
|
+
|
|
19
|
+
- issue viability decision
|
|
20
|
+
- overlap precheck
|
|
21
|
+
- local issue gate
|
|
22
|
+
- tighten/fine-tooth gate
|
|
23
|
+
- ready-to-draft freeze
|
|
24
|
+
- PR body preflight
|
|
25
|
+
- draft CI watch
|
|
26
|
+
- ready-for-review promotion
|
|
27
|
+
- maintainer-feedback hardening
|
|
28
|
+
|
|
29
|
+
## Near-term recommendation
|
|
30
|
+
|
|
31
|
+
Do not replace the existing `sunflower-mathlib-pr-governance` template yet.
|
|
32
|
+
|
|
33
|
+
Instead:
|
|
34
|
+
|
|
35
|
+
1. use it as the strong adapter,
|
|
36
|
+
2. keep `external-pr-governance` as the generic contract layer,
|
|
37
|
+
3. converge later if the generic pack becomes expressive enough.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
schema_version: "1.0.0"
|
|
2
|
+
pack_id: external-pr-governance
|
|
3
|
+
name: External PR Governance Pack
|
|
4
|
+
version: "0.1.0"
|
|
5
|
+
description: >
|
|
6
|
+
Generic ORP profile templates for local-first external OSS contribution
|
|
7
|
+
workflows, including viability, coordination, local readiness, draft
|
|
8
|
+
lifecycle, and maintainer-feedback hardening.
|
|
9
|
+
orp_version_min: "0.1.0"
|
|
10
|
+
|
|
11
|
+
variables:
|
|
12
|
+
TARGET_REPO_ROOT:
|
|
13
|
+
description: Absolute path to the working repo that owns the contribution workflow.
|
|
14
|
+
required: true
|
|
15
|
+
TARGET_GITHUB_REPO:
|
|
16
|
+
description: GitHub repo receiving the contribution, for example leanprover-community/mathlib4.
|
|
17
|
+
required: false
|
|
18
|
+
default: "owner/repo"
|
|
19
|
+
TARGET_GITHUB_AUTHOR:
|
|
20
|
+
description: GitHub login used for coordination and overlap checks.
|
|
21
|
+
required: false
|
|
22
|
+
default: "your-login"
|
|
23
|
+
ORP_TIMEOUT_SEC:
|
|
24
|
+
description: Default gate timeout in seconds.
|
|
25
|
+
required: false
|
|
26
|
+
default: "1200"
|
|
27
|
+
DEFAULT_PR_BODY_FILE:
|
|
28
|
+
description: Default PR body file path relative to TARGET_REPO_ROOT.
|
|
29
|
+
required: false
|
|
30
|
+
default: "analysis/PR_DRAFT_BODY.md"
|
|
31
|
+
WATCH_SELECT_COMMAND:
|
|
32
|
+
description: Command that selects a contribution target and records why it is worth pursuing.
|
|
33
|
+
required: false
|
|
34
|
+
default: "printf 'configure WATCH_SELECT_COMMAND\\n' >&2; exit 2"
|
|
35
|
+
WATCH_SELECT_PASS_TOKEN:
|
|
36
|
+
description: Stdout token indicating the watch/select gate passed.
|
|
37
|
+
required: false
|
|
38
|
+
default: "selection=PASS"
|
|
39
|
+
VIABILITY_COMMAND:
|
|
40
|
+
description: Command that decides whether starting work is etiquette-safe.
|
|
41
|
+
required: false
|
|
42
|
+
default: "printf 'configure VIABILITY_COMMAND\\n' >&2; exit 2"
|
|
43
|
+
VIABILITY_PASS_TOKEN:
|
|
44
|
+
description: Stdout token indicating the viability gate passed.
|
|
45
|
+
required: false
|
|
46
|
+
default: "decision=PASS"
|
|
47
|
+
OVERLAP_COMMAND:
|
|
48
|
+
description: Command that checks external overlap or confirms coordination is clear.
|
|
49
|
+
required: false
|
|
50
|
+
default: "printf 'configure OVERLAP_COMMAND\\n' >&2; exit 2"
|
|
51
|
+
OVERLAP_PASS_TOKEN:
|
|
52
|
+
description: Stdout token indicating the overlap gate passed.
|
|
53
|
+
required: false
|
|
54
|
+
default: "overlap=PASS"
|
|
55
|
+
LOCAL_GATE_COMMAND:
|
|
56
|
+
description: Command that performs the local-first verification gate.
|
|
57
|
+
required: false
|
|
58
|
+
default: "printf 'configure LOCAL_GATE_COMMAND\\n' >&2; exit 2"
|
|
59
|
+
LOCAL_GATE_PASS_TOKEN:
|
|
60
|
+
description: Stdout token indicating the local gate passed.
|
|
61
|
+
required: false
|
|
62
|
+
default: "gate=PASS"
|
|
63
|
+
READY_TO_DRAFT_COMMAND:
|
|
64
|
+
description: Command that freezes the branch as ready to open or update a draft PR on the same HEAD.
|
|
65
|
+
required: false
|
|
66
|
+
default: "printf 'configure READY_TO_DRAFT_COMMAND\\n' >&2; exit 2"
|
|
67
|
+
READY_TO_DRAFT_PASS_TOKEN:
|
|
68
|
+
description: Stdout token indicating the ready-to-draft gate passed.
|
|
69
|
+
required: false
|
|
70
|
+
default: "ready_to_draft=PASS"
|
|
71
|
+
PR_BODY_PREFLIGHT_COMMAND:
|
|
72
|
+
description: Command that validates portable public PR text.
|
|
73
|
+
required: false
|
|
74
|
+
default: "printf 'configure PR_BODY_PREFLIGHT_COMMAND\\n' >&2; exit 2"
|
|
75
|
+
PR_BODY_PASS_TOKEN:
|
|
76
|
+
description: Stdout token indicating PR body preflight passed.
|
|
77
|
+
required: false
|
|
78
|
+
default: "gate=PASS"
|
|
79
|
+
DRAFT_PR_TRANSITION_COMMAND:
|
|
80
|
+
description: Command that opens or updates the draft PR and refuses if ready markers no longer match the current HEAD.
|
|
81
|
+
required: false
|
|
82
|
+
default: "printf 'configure DRAFT_PR_TRANSITION_COMMAND\\n' >&2; exit 2"
|
|
83
|
+
DRAFT_PR_TRANSITION_PASS_TOKEN:
|
|
84
|
+
description: Stdout token indicating the draft PR open/update transition passed.
|
|
85
|
+
required: false
|
|
86
|
+
default: "draft_pr=PASS"
|
|
87
|
+
DRAFT_CI_COMMAND:
|
|
88
|
+
description: Command that checks draft CI or draft lifecycle readiness.
|
|
89
|
+
required: false
|
|
90
|
+
default: "printf 'configure DRAFT_CI_COMMAND\\n' >&2; exit 2"
|
|
91
|
+
DRAFT_CI_PASS_TOKEN:
|
|
92
|
+
description: Stdout token indicating draft CI is green or otherwise acceptable.
|
|
93
|
+
required: false
|
|
94
|
+
default: "draft_ci=PASS"
|
|
95
|
+
READY_FOR_REVIEW_COMMAND:
|
|
96
|
+
description: Command that decides whether the PR can be promoted from draft to ready.
|
|
97
|
+
required: false
|
|
98
|
+
default: "printf 'configure READY_FOR_REVIEW_COMMAND\\n' >&2; exit 2"
|
|
99
|
+
READY_FOR_REVIEW_PASS_TOKEN:
|
|
100
|
+
description: Stdout token indicating ready-for-review conditions are satisfied.
|
|
101
|
+
required: false
|
|
102
|
+
default: "ready_for_review=PASS"
|
|
103
|
+
FEEDBACK_RECORD_COMMAND:
|
|
104
|
+
description: Command that records what maintainer feedback slipped and why.
|
|
105
|
+
required: false
|
|
106
|
+
default: "printf 'configure FEEDBACK_RECORD_COMMAND\\n' >&2; exit 2"
|
|
107
|
+
FEEDBACK_RECORD_PASS_TOKEN:
|
|
108
|
+
description: Stdout token indicating maintainer-feedback recording passed.
|
|
109
|
+
required: false
|
|
110
|
+
default: "feedback_recorded=PASS"
|
|
111
|
+
GUARD_VALIDATION_COMMAND:
|
|
112
|
+
description: Command that validates the new or updated guard with PASS and FAIL coverage.
|
|
113
|
+
required: false
|
|
114
|
+
default: "printf 'configure GUARD_VALIDATION_COMMAND\\n' >&2; exit 2"
|
|
115
|
+
GUARD_VALIDATION_PASS_TOKEN:
|
|
116
|
+
description: Stdout token indicating guard validation passed.
|
|
117
|
+
required: false
|
|
118
|
+
default: "guard_validation=PASS"
|
|
119
|
+
DOC_SYNC_COMMAND:
|
|
120
|
+
description: Command that confirms docs, templates, and agent instructions were updated with the guard.
|
|
121
|
+
required: false
|
|
122
|
+
default: "printf 'configure DOC_SYNC_COMMAND\\n' >&2; exit 2"
|
|
123
|
+
DOC_SYNC_PASS_TOKEN:
|
|
124
|
+
description: Stdout token indicating governance docs were synced.
|
|
125
|
+
required: false
|
|
126
|
+
default: "docs_sync=PASS"
|
|
127
|
+
|
|
128
|
+
templates:
|
|
129
|
+
oss_pr_governance:
|
|
130
|
+
path: profiles/oss-pr-governance.yml.tmpl
|
|
131
|
+
description: Generic external contribution governance profiles (watch/select, pre-open, local-readiness, draft transition, draft lifecycle, full flow).
|
|
132
|
+
output_hint: orp.external-pr-governance.yml
|
|
133
|
+
default_profiles:
|
|
134
|
+
- external_watch_select
|
|
135
|
+
- external_pre_open
|
|
136
|
+
- external_local_readiness
|
|
137
|
+
- external_draft_transition
|
|
138
|
+
- external_draft_lifecycle
|
|
139
|
+
- external_full_flow
|
|
140
|
+
|
|
141
|
+
oss_feedback_hardening:
|
|
142
|
+
path: profiles/oss-feedback-hardening.yml.tmpl
|
|
143
|
+
description: Generic maintainer-feedback hardening profile.
|
|
144
|
+
output_hint: orp.external-pr-feedback-hardening.yml
|
|
145
|
+
default_profiles:
|
|
146
|
+
- external_feedback_hardening
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
version: "1"
|
|
2
|
+
|
|
3
|
+
project:
|
|
4
|
+
name: external-pr-feedback-hardening
|
|
5
|
+
repo_root: .
|
|
6
|
+
canonical_paths:
|
|
7
|
+
target_repo_root: {{TARGET_REPO_ROOT}}
|
|
8
|
+
|
|
9
|
+
runtime:
|
|
10
|
+
shell: /bin/bash
|
|
11
|
+
default_timeout_sec: {{ORP_TIMEOUT_SEC}}
|
|
12
|
+
artifacts_root: orp/artifacts
|
|
13
|
+
|
|
14
|
+
packet:
|
|
15
|
+
default_kind: verification
|
|
16
|
+
output_dir: orp/packets
|
|
17
|
+
write_markdown: true
|
|
18
|
+
deterministic_mode: true
|
|
19
|
+
|
|
20
|
+
lifecycle:
|
|
21
|
+
claim_status_map:
|
|
22
|
+
Draft: draft
|
|
23
|
+
In review: ready
|
|
24
|
+
Verified: reviewed
|
|
25
|
+
Blocked: blocked
|
|
26
|
+
Retracted: retracted
|
|
27
|
+
atom_status_map:
|
|
28
|
+
todo: draft
|
|
29
|
+
in_progress: ready
|
|
30
|
+
blocked: blocked
|
|
31
|
+
done: reviewed
|
|
32
|
+
claim_level_values:
|
|
33
|
+
- Exact
|
|
34
|
+
- Verified
|
|
35
|
+
- Heuristic
|
|
36
|
+
- Conjecture
|
|
37
|
+
|
|
38
|
+
gates:
|
|
39
|
+
- id: feedback_record
|
|
40
|
+
description: Record what slipped, why it slipped, and the intended prevention path.
|
|
41
|
+
phase: verification
|
|
42
|
+
command: >
|
|
43
|
+
{{FEEDBACK_RECORD_COMMAND}}
|
|
44
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
45
|
+
pass:
|
|
46
|
+
exit_codes: [0]
|
|
47
|
+
stdout_must_contain:
|
|
48
|
+
- {{FEEDBACK_RECORD_PASS_TOKEN}}
|
|
49
|
+
evidence:
|
|
50
|
+
include_stdout: true
|
|
51
|
+
include_stderr: true
|
|
52
|
+
on_fail: mark_blocked
|
|
53
|
+
|
|
54
|
+
- id: guard_validation
|
|
55
|
+
description: Validate new or updated guards with explicit PASS and FAIL coverage.
|
|
56
|
+
phase: verification
|
|
57
|
+
command: >
|
|
58
|
+
{{GUARD_VALIDATION_COMMAND}}
|
|
59
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
60
|
+
pass:
|
|
61
|
+
exit_codes: [0]
|
|
62
|
+
stdout_must_contain:
|
|
63
|
+
- {{GUARD_VALIDATION_PASS_TOKEN}}
|
|
64
|
+
evidence:
|
|
65
|
+
include_stdout: true
|
|
66
|
+
include_stderr: true
|
|
67
|
+
on_fail: stop
|
|
68
|
+
|
|
69
|
+
- id: docs_sync
|
|
70
|
+
description: Confirm docs, templates, and agent instructions were updated in the same pass.
|
|
71
|
+
phase: verification
|
|
72
|
+
command: >
|
|
73
|
+
{{DOC_SYNC_COMMAND}}
|
|
74
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
75
|
+
pass:
|
|
76
|
+
exit_codes: [0]
|
|
77
|
+
stdout_must_contain:
|
|
78
|
+
- {{DOC_SYNC_PASS_TOKEN}}
|
|
79
|
+
evidence:
|
|
80
|
+
include_stdout: true
|
|
81
|
+
include_stderr: true
|
|
82
|
+
on_fail: mark_blocked
|
|
83
|
+
|
|
84
|
+
profiles:
|
|
85
|
+
external_feedback_hardening:
|
|
86
|
+
description: Convert maintainer feedback into a validated guard plus synchronized docs.
|
|
87
|
+
mode: collaboration
|
|
88
|
+
packet_kind: verification
|
|
89
|
+
gate_ids:
|
|
90
|
+
- feedback_record
|
|
91
|
+
- guard_validation
|
|
92
|
+
- docs_sync
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
version: "1"
|
|
2
|
+
|
|
3
|
+
project:
|
|
4
|
+
name: external-pr-governance
|
|
5
|
+
repo_root: .
|
|
6
|
+
canonical_paths:
|
|
7
|
+
target_repo_root: {{TARGET_REPO_ROOT}}
|
|
8
|
+
default_pr_body_file: {{TARGET_REPO_ROOT}}/{{DEFAULT_PR_BODY_FILE}}
|
|
9
|
+
|
|
10
|
+
runtime:
|
|
11
|
+
shell: /bin/bash
|
|
12
|
+
default_timeout_sec: {{ORP_TIMEOUT_SEC}}
|
|
13
|
+
artifacts_root: orp/artifacts
|
|
14
|
+
|
|
15
|
+
packet:
|
|
16
|
+
default_kind: pr
|
|
17
|
+
output_dir: orp/packets
|
|
18
|
+
write_markdown: true
|
|
19
|
+
deterministic_mode: true
|
|
20
|
+
|
|
21
|
+
lifecycle:
|
|
22
|
+
claim_status_map:
|
|
23
|
+
Draft: draft
|
|
24
|
+
In review: ready
|
|
25
|
+
Verified: reviewed
|
|
26
|
+
Blocked: blocked
|
|
27
|
+
Retracted: retracted
|
|
28
|
+
atom_status_map:
|
|
29
|
+
todo: draft
|
|
30
|
+
in_progress: ready
|
|
31
|
+
blocked: blocked
|
|
32
|
+
done: reviewed
|
|
33
|
+
claim_level_values:
|
|
34
|
+
- Exact
|
|
35
|
+
- Verified
|
|
36
|
+
- Heuristic
|
|
37
|
+
- Conjecture
|
|
38
|
+
|
|
39
|
+
gates:
|
|
40
|
+
- id: watch_select
|
|
41
|
+
description: Select a target issue or contribution lane and record why it is worth pursuing.
|
|
42
|
+
phase: scope_lock
|
|
43
|
+
command: >
|
|
44
|
+
{{WATCH_SELECT_COMMAND}}
|
|
45
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
46
|
+
pass:
|
|
47
|
+
exit_codes: [0]
|
|
48
|
+
stdout_must_contain:
|
|
49
|
+
- {{WATCH_SELECT_PASS_TOKEN}}
|
|
50
|
+
evidence:
|
|
51
|
+
include_stdout: true
|
|
52
|
+
include_stderr: true
|
|
53
|
+
on_fail: mark_blocked
|
|
54
|
+
|
|
55
|
+
- id: viability_gate
|
|
56
|
+
description: Decide whether work is viable and etiquette-safe to start.
|
|
57
|
+
phase: scope_lock
|
|
58
|
+
command: >
|
|
59
|
+
{{VIABILITY_COMMAND}}
|
|
60
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
61
|
+
pass:
|
|
62
|
+
exit_codes: [0]
|
|
63
|
+
stdout_must_contain:
|
|
64
|
+
- {{VIABILITY_PASS_TOKEN}}
|
|
65
|
+
evidence:
|
|
66
|
+
include_stdout: true
|
|
67
|
+
include_stderr: true
|
|
68
|
+
on_fail: mark_blocked
|
|
69
|
+
|
|
70
|
+
- id: overlap_gate
|
|
71
|
+
description: Decide whether overlap is clear or coordination is already complete.
|
|
72
|
+
phase: scope_lock
|
|
73
|
+
command: >
|
|
74
|
+
{{OVERLAP_COMMAND}}
|
|
75
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
76
|
+
pass:
|
|
77
|
+
exit_codes: [0]
|
|
78
|
+
stdout_must_contain:
|
|
79
|
+
- {{OVERLAP_PASS_TOKEN}}
|
|
80
|
+
evidence:
|
|
81
|
+
include_stdout: true
|
|
82
|
+
include_stderr: true
|
|
83
|
+
on_fail: mark_blocked
|
|
84
|
+
|
|
85
|
+
- id: local_gate
|
|
86
|
+
description: Run the repo-local verification gate before any public PR update.
|
|
87
|
+
phase: verification
|
|
88
|
+
command: >
|
|
89
|
+
{{LOCAL_GATE_COMMAND}}
|
|
90
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
91
|
+
timeout_sec: {{ORP_TIMEOUT_SEC}}
|
|
92
|
+
pass:
|
|
93
|
+
exit_codes: [0]
|
|
94
|
+
stdout_must_contain:
|
|
95
|
+
- {{LOCAL_GATE_PASS_TOKEN}}
|
|
96
|
+
evidence:
|
|
97
|
+
include_stdout: true
|
|
98
|
+
include_stderr: true
|
|
99
|
+
on_fail: stop
|
|
100
|
+
|
|
101
|
+
- id: ready_to_draft
|
|
102
|
+
description: Freeze the branch or change-set as ready to open or update a draft PR.
|
|
103
|
+
phase: verification
|
|
104
|
+
command: >
|
|
105
|
+
{{READY_TO_DRAFT_COMMAND}}
|
|
106
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
107
|
+
pass:
|
|
108
|
+
exit_codes: [0]
|
|
109
|
+
stdout_must_contain:
|
|
110
|
+
- {{READY_TO_DRAFT_PASS_TOKEN}}
|
|
111
|
+
evidence:
|
|
112
|
+
include_stdout: true
|
|
113
|
+
include_stderr: true
|
|
114
|
+
on_fail: stop
|
|
115
|
+
|
|
116
|
+
- id: pr_body_preflight
|
|
117
|
+
description: Enforce portable, reviewer-friendly public PR text.
|
|
118
|
+
phase: verification
|
|
119
|
+
command: >
|
|
120
|
+
{{PR_BODY_PREFLIGHT_COMMAND}}
|
|
121
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
122
|
+
pass:
|
|
123
|
+
exit_codes: [0]
|
|
124
|
+
stdout_must_contain:
|
|
125
|
+
- {{PR_BODY_PASS_TOKEN}}
|
|
126
|
+
evidence:
|
|
127
|
+
include_stdout: true
|
|
128
|
+
include_stderr: true
|
|
129
|
+
paths:
|
|
130
|
+
- {{TARGET_REPO_ROOT}}/{{DEFAULT_PR_BODY_FILE}}
|
|
131
|
+
on_fail: mark_blocked
|
|
132
|
+
|
|
133
|
+
- id: draft_pr_transition
|
|
134
|
+
description: Open or update the draft PR only after the same-HEAD ready marker is satisfied.
|
|
135
|
+
phase: verification
|
|
136
|
+
command: >
|
|
137
|
+
{{DRAFT_PR_TRANSITION_COMMAND}}
|
|
138
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
139
|
+
pass:
|
|
140
|
+
exit_codes: [0]
|
|
141
|
+
stdout_must_contain:
|
|
142
|
+
- {{DRAFT_PR_TRANSITION_PASS_TOKEN}}
|
|
143
|
+
evidence:
|
|
144
|
+
include_stdout: true
|
|
145
|
+
include_stderr: true
|
|
146
|
+
paths:
|
|
147
|
+
- {{TARGET_REPO_ROOT}}/{{DEFAULT_PR_BODY_FILE}}
|
|
148
|
+
on_fail: stop
|
|
149
|
+
|
|
150
|
+
- id: draft_ci
|
|
151
|
+
description: Confirm draft CI is green or otherwise approved for promotion.
|
|
152
|
+
phase: verification
|
|
153
|
+
command: >
|
|
154
|
+
{{DRAFT_CI_COMMAND}}
|
|
155
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
156
|
+
pass:
|
|
157
|
+
exit_codes: [0]
|
|
158
|
+
stdout_must_contain:
|
|
159
|
+
- {{DRAFT_CI_PASS_TOKEN}}
|
|
160
|
+
evidence:
|
|
161
|
+
include_stdout: true
|
|
162
|
+
include_stderr: true
|
|
163
|
+
on_fail: mark_blocked
|
|
164
|
+
|
|
165
|
+
- id: ready_for_review
|
|
166
|
+
description: Confirm the PR can be promoted from draft to ready-for-review.
|
|
167
|
+
phase: verification
|
|
168
|
+
command: >
|
|
169
|
+
{{READY_FOR_REVIEW_COMMAND}}
|
|
170
|
+
working_dir: {{TARGET_REPO_ROOT}}
|
|
171
|
+
pass:
|
|
172
|
+
exit_codes: [0]
|
|
173
|
+
stdout_must_contain:
|
|
174
|
+
- {{READY_FOR_REVIEW_PASS_TOKEN}}
|
|
175
|
+
evidence:
|
|
176
|
+
include_stdout: true
|
|
177
|
+
include_stderr: true
|
|
178
|
+
on_fail: mark_blocked
|
|
179
|
+
|
|
180
|
+
profiles:
|
|
181
|
+
external_watch_select:
|
|
182
|
+
description: Watch/select stage for choosing a candidate contribution target before pre-open checks.
|
|
183
|
+
mode: collaboration
|
|
184
|
+
packet_kind: pr
|
|
185
|
+
gate_ids:
|
|
186
|
+
- watch_select
|
|
187
|
+
|
|
188
|
+
external_pre_open:
|
|
189
|
+
description: Viability and overlap checks after a target is selected and before implementation or draft creation.
|
|
190
|
+
mode: collaboration
|
|
191
|
+
packet_kind: pr
|
|
192
|
+
gate_ids:
|
|
193
|
+
- viability_gate
|
|
194
|
+
- overlap_gate
|
|
195
|
+
|
|
196
|
+
external_local_readiness:
|
|
197
|
+
description: Local verification, freeze, and PR-body hygiene before draft open/update.
|
|
198
|
+
mode: collaboration
|
|
199
|
+
packet_kind: pr
|
|
200
|
+
gate_ids:
|
|
201
|
+
- local_gate
|
|
202
|
+
- ready_to_draft
|
|
203
|
+
- pr_body_preflight
|
|
204
|
+
|
|
205
|
+
external_draft_transition:
|
|
206
|
+
description: Open or update the draft PR once the same-HEAD readiness chain has passed.
|
|
207
|
+
mode: collaboration
|
|
208
|
+
packet_kind: pr
|
|
209
|
+
gate_ids:
|
|
210
|
+
- draft_pr_transition
|
|
211
|
+
|
|
212
|
+
external_draft_lifecycle:
|
|
213
|
+
description: Draft CI and ready-for-review checks after a draft PR exists.
|
|
214
|
+
mode: collaboration
|
|
215
|
+
packet_kind: pr
|
|
216
|
+
gate_ids:
|
|
217
|
+
- draft_ci
|
|
218
|
+
- ready_for_review
|
|
219
|
+
|
|
220
|
+
external_full_flow:
|
|
221
|
+
description: End-to-end lifecycle from watch/select through draft promotion readiness.
|
|
222
|
+
mode: collaboration
|
|
223
|
+
packet_kind: pr
|
|
224
|
+
gate_ids:
|
|
225
|
+
- watch_select
|
|
226
|
+
- viability_gate
|
|
227
|
+
- overlap_gate
|
|
228
|
+
- local_gate
|
|
229
|
+
- ready_to_draft
|
|
230
|
+
- pr_body_preflight
|
|
231
|
+
- draft_pr_transition
|
|
232
|
+
- draft_ci
|
|
233
|
+
- ready_for_review
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Issue Smashers Pack
|
|
2
|
+
|
|
3
|
+
Opinionated ORP pack for running disciplined external contribution work from a
|
|
4
|
+
shared `issue-smashers/` workspace.
|
|
5
|
+
|
|
6
|
+
This pack is meant to sit one layer above the generic
|
|
7
|
+
`external-pr-governance` pack:
|
|
8
|
+
|
|
9
|
+
- `external-pr-governance` keeps the portable lifecycle contract
|
|
10
|
+
- `issue-smashers` adds a workspace convention, operator-facing docs, and a
|
|
11
|
+
reusable scaffold for multi-repo issue work
|
|
12
|
+
|
|
13
|
+
## What this pack installs
|
|
14
|
+
|
|
15
|
+
`orp pack install --pack-id issue-smashers` renders:
|
|
16
|
+
|
|
17
|
+
- `orp.issue-smashers.yml`
|
|
18
|
+
- `orp.issue-smashers-feedback-hardening.yml`
|
|
19
|
+
- `orp.issue-smashers.pack-install-report.md`
|
|
20
|
+
|
|
21
|
+
and bootstraps a workspace skeleton under:
|
|
22
|
+
|
|
23
|
+
- `issue-smashers/README.md`
|
|
24
|
+
- `issue-smashers/WORKSPACE_RULES.md`
|
|
25
|
+
- `issue-smashers/setup-issue-smashers.sh`
|
|
26
|
+
- `issue-smashers/analysis/PR_DRAFT_BODY.md`
|
|
27
|
+
- `issue-smashers/analysis/ISSUE_SMASHERS_WATCHLIST.json`
|
|
28
|
+
- `issue-smashers/analysis/ISSUE_SMASHERS_STATUS.md`
|
|
29
|
+
- `issue-smashers/repos/`
|
|
30
|
+
- `issue-smashers/worktrees/`
|
|
31
|
+
- `issue-smashers/scratch/`
|
|
32
|
+
- `issue-smashers/archive/`
|
|
33
|
+
|
|
34
|
+
The pack is intentionally install-and-adapt:
|
|
35
|
+
|
|
36
|
+
- workspace structure is real
|
|
37
|
+
- profile templates are real
|
|
38
|
+
- command hooks still require adapter-specific commands before governance runs
|
|
39
|
+
become meaningful
|
|
40
|
+
|
|
41
|
+
## Workspace model
|
|
42
|
+
|
|
43
|
+
The `issue-smashers/` directory is a plain workspace, not a replacement for
|
|
44
|
+
ORP core and not a monorepo that should own cloned target repos in Git
|
|
45
|
+
history.
|
|
46
|
+
|
|
47
|
+
Recommended usage:
|
|
48
|
+
|
|
49
|
+
- keep ORP installed globally or available as a separate source repo
|
|
50
|
+
- install this pack into a parent directory
|
|
51
|
+
- let `issue-smashers/repos/` hold base clones
|
|
52
|
+
- let `issue-smashers/worktrees/` hold one active lane per issue
|
|
53
|
+
- treat `scratch/` as disposable and `archive/` as optional
|
|
54
|
+
|
|
55
|
+
## Install through ORP
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
orp pack install --pack-id issue-smashers
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
That gives you the rendered configs plus the workspace scaffold.
|
|
62
|
+
|
|
63
|
+
For a clean test flow, replace the placeholder commands with simple pass
|
|
64
|
+
commands and run:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
orp --config orp.issue-smashers.yml \
|
|
68
|
+
gate run --profile issue_smashers_full_flow
|
|
69
|
+
|
|
70
|
+
orp --config orp.issue-smashers.yml \
|
|
71
|
+
packet emit --profile issue_smashers_full_flow
|
|
72
|
+
|
|
73
|
+
orp --config orp.issue-smashers-feedback-hardening.yml \
|
|
74
|
+
gate run --profile issue_smashers_feedback_hardening
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Included adapters
|
|
78
|
+
|
|
79
|
+
- `adapters/mathlib/`
|
|
80
|
+
- maps the pack to the highest-rigor current workflow
|
|
81
|
+
- `adapters/formal-conjectures/`
|
|
82
|
+
- sketches the next non-mathlib target
|
|
83
|
+
- `adapters/generic-github/`
|
|
84
|
+
- keeps the workspace useful even before repo-specific adapters exist
|
|
85
|
+
|
|
86
|
+
## Design rule
|
|
87
|
+
|
|
88
|
+
Use this pack when you want the operator ergonomics and directory shape of
|
|
89
|
+
Issue Smashers.
|
|
90
|
+
|
|
91
|
+
Use `external-pr-governance` when you only want the generic lifecycle without a
|
|
92
|
+
workspace convention.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Formal Conjectures Adapter Notes
|
|
2
|
+
|
|
3
|
+
Use this adapter when the issue-smashers lane targets
|
|
4
|
+
`google-deepmind/formal-conjectures` or a similar formalization-heavy external
|
|
5
|
+
repo.
|
|
6
|
+
|
|
7
|
+
This adapter is intentionally lighter than the mathlib reference today. It
|
|
8
|
+
should grow into:
|
|
9
|
+
|
|
10
|
+
- issue watch and candidate selection
|
|
11
|
+
- viability rules around collaborator activity and active PR overlap
|
|
12
|
+
- local test/build gates for the target repo
|
|
13
|
+
- clean PR-body and disclosure conventions
|
|
14
|
+
- feedback hardening when maintainers reveal a missed check
|
|
15
|
+
|
|
16
|
+
Until the adapter is fully specified, treat the rendered Issue Smashers config as
|
|
17
|
+
install-and-adapt and replace placeholder commands with repo-specific commands.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Generic GitHub Adapter Notes
|
|
2
|
+
|
|
3
|
+
Use this adapter when you want the Issue Smashers workspace shape before a
|
|
4
|
+
repo-specific adapter exists.
|
|
5
|
+
|
|
6
|
+
The minimum viable setup is:
|
|
7
|
+
|
|
8
|
+
- choose a target repo and issue lane
|
|
9
|
+
- record it in the watchlist and status board
|
|
10
|
+
- replace each placeholder command with a real repo-specific command or a test
|
|
11
|
+
stub
|
|
12
|
+
- keep the PR body under the workspace analysis directory
|
|
13
|
+
|
|
14
|
+
This adapter is intentionally simple. It keeps the pack useful for new repos
|
|
15
|
+
without pretending generic GitHub etiquette is the same as a mature
|
|
16
|
+
repo-specific workflow.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Mathlib Adapter Notes
|
|
2
|
+
|
|
3
|
+
Use this adapter when the issue-smashers lane targets
|
|
4
|
+
`leanprover-community/mathlib4`.
|
|
5
|
+
|
|
6
|
+
Source-of-truth behavior currently lives in the stronger reference workflow
|
|
7
|
+
developed from `sunflower-coda`:
|
|
8
|
+
|
|
9
|
+
- issue watch and triage
|
|
10
|
+
- viability and etiquette gate
|
|
11
|
+
- overlap precheck
|
|
12
|
+
- local gate
|
|
13
|
+
- ready-to-draft same-head freeze
|
|
14
|
+
- PR-body preflight
|
|
15
|
+
- draft PR transition
|
|
16
|
+
- draft CI and ready-for-review checks
|
|
17
|
+
- feedback hardening
|
|
18
|
+
|
|
19
|
+
Recommended mapping for rendered command variables:
|
|
20
|
+
|
|
21
|
+
- `WATCH_SELECT_COMMAND` -> watchlist or issue selection script
|
|
22
|
+
- `VIABILITY_COMMAND` -> mathlib issue viability gate
|
|
23
|
+
- `OVERLAP_COMMAND` -> mathlib overlap precheck
|
|
24
|
+
- `LOCAL_GATE_COMMAND` -> mathlib local gate
|
|
25
|
+
- `READY_TO_DRAFT_COMMAND` -> mathlib ready-to-draft gate
|
|
26
|
+
- `PR_BODY_PREFLIGHT_COMMAND` -> mathlib PR body preflight
|
|
27
|
+
- `DRAFT_PR_TRANSITION_COMMAND` -> mathlib draft PR open/update script
|
|
28
|
+
- `DRAFT_CI_COMMAND` -> draft CI watcher
|
|
29
|
+
- `READY_FOR_REVIEW_COMMAND` -> ready-for-review gate
|
|
30
|
+
|
|
31
|
+
Use this adapter when you want Issue Smashers ergonomics but mathlib-grade
|
|
32
|
+
discipline.
|