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.
Files changed (94) hide show
  1. package/AGENT_INTEGRATION.md +94 -0
  2. package/INSTALL.md +159 -0
  3. package/LICENSE +22 -0
  4. package/PROTOCOL.md +140 -0
  5. package/README.md +312 -0
  6. package/bin/orp.js +38 -0
  7. package/cli/orp.py +3595 -0
  8. package/cone/CONTEXT_LOG.md +33 -0
  9. package/docs/AGENT_LOOP.md +63 -0
  10. package/docs/CHOOSING_OR_IGNORING_INSTRUMENTS.md +128 -0
  11. package/docs/CODA_ORP_CONTRACT.md +222 -0
  12. package/docs/CORE_ABILITY_REFOCUS_CHECKLIST.md +62 -0
  13. package/docs/DISCOVER.md +69 -0
  14. package/docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md +275 -0
  15. package/docs/MATHLIB_COLLABORATION_FLOW_PROMPT.md +112 -0
  16. package/docs/NPM_RELEASE_CHECKLIST.md +55 -0
  17. package/docs/ORP_V1_ATOMIC_DISCOVERY_EVOLUTION.md +186 -0
  18. package/docs/OSS_CONTRIBUTION_AGENT_LOOP.md +69 -0
  19. package/docs/PRESENTATION_BOW.md +100 -0
  20. package/docs/PROFILE_PACKS.md +227 -0
  21. package/docs/SUNFLOWER_CODA_PR_GOVERNANCE_MAPPING.md +77 -0
  22. package/docs/WHY_INSTRUMENTS.md +118 -0
  23. package/examples/README.md +21 -0
  24. package/examples/example_claim.md +33 -0
  25. package/examples/example_failed.md +24 -0
  26. package/examples/example_verification.md +36 -0
  27. package/examples/orp.erdos-problems.catalog.yml +88 -0
  28. package/examples/orp.external-pr-governance.yml +223 -0
  29. package/examples/orp.sunflower-coda.atomic.yml +144 -0
  30. package/examples/orp.sunflower-coda.live-compare.yml +181 -0
  31. package/examples/orp.sunflower-coda.pr-governance.yml +253 -0
  32. package/examples/packet.problem_scope.example.json +123 -0
  33. package/examples/reports/README.md +16 -0
  34. package/examples/reports/sunflower_live_compare_20.RUN_SUMMARY.md +37 -0
  35. package/examples/reports/sunflower_live_compare_367.RUN_SUMMARY.md +37 -0
  36. package/examples/reports/sunflower_live_compare_857.RUN_SUMMARY.md +37 -0
  37. package/llms.txt +58 -0
  38. package/modules/instruments/ADVERSARIAL/README.md +109 -0
  39. package/modules/instruments/ADVERSARIAL/TEMPLATE.md +27 -0
  40. package/modules/instruments/COMPRESSION/README.md +112 -0
  41. package/modules/instruments/COMPRESSION/TEMPLATE.md +27 -0
  42. package/modules/instruments/INSTRUMENT_TEMPLATE.md +30 -0
  43. package/modules/instruments/ORBIT/README.md +124 -0
  44. package/modules/instruments/ORBIT/TEMPLATE.md +28 -0
  45. package/modules/instruments/README.md +179 -0
  46. package/package.json +54 -0
  47. package/packs/README.md +16 -0
  48. package/packs/erdos-open-problems/README.md +287 -0
  49. package/packs/erdos-open-problems/data/README.md +43 -0
  50. package/packs/erdos-open-problems/data/erdos_open_problems.md +697 -0
  51. package/packs/erdos-open-problems/data/erdos_problems.active.json +15561 -0
  52. package/packs/erdos-open-problems/data/erdos_problems.all.json +26289 -0
  53. package/packs/erdos-open-problems/data/erdos_problems.closed.json +10760 -0
  54. package/packs/erdos-open-problems/data/erdos_problems.open.json +15561 -0
  55. package/packs/erdos-open-problems/docs/SUNFLOWER_ADAPTER_DEPENDENCIES.md +63 -0
  56. package/packs/erdos-open-problems/pack.yml +131 -0
  57. package/packs/erdos-open-problems/profiles/erdos-problems-catalog-sync.yml.tmpl +99 -0
  58. package/packs/erdos-open-problems/profiles/sunflower-live-compare.yml.tmpl +188 -0
  59. package/packs/erdos-open-problems/profiles/sunflower-mathlib-pr-governance.yml.tmpl +253 -0
  60. package/packs/erdos-open-problems/profiles/sunflower-problem857-discovery-public-repo.yml.tmpl +152 -0
  61. package/packs/erdos-open-problems/profiles/sunflower-problem857-discovery.yml.tmpl +154 -0
  62. package/packs/external-pr-governance/README.md +116 -0
  63. package/packs/external-pr-governance/adapters/formal-conjectures/README.md +35 -0
  64. package/packs/external-pr-governance/adapters/mathlib/README.md +37 -0
  65. package/packs/external-pr-governance/pack.yml +146 -0
  66. package/packs/external-pr-governance/profiles/oss-feedback-hardening.yml.tmpl +92 -0
  67. package/packs/external-pr-governance/profiles/oss-pr-governance.yml.tmpl +233 -0
  68. package/packs/issue-smashers/README.md +92 -0
  69. package/packs/issue-smashers/adapters/formal-conjectures/README.md +17 -0
  70. package/packs/issue-smashers/adapters/generic-github/README.md +16 -0
  71. package/packs/issue-smashers/adapters/mathlib/README.md +32 -0
  72. package/packs/issue-smashers/bootstrap/README.md +19 -0
  73. package/packs/issue-smashers/bootstrap/setup-issue-smashers.sh +18 -0
  74. package/packs/issue-smashers/examples/issue-smashers.workspace.yml +24 -0
  75. package/packs/issue-smashers/pack.yml +178 -0
  76. package/packs/issue-smashers/profiles/issue-smashers-feedback-hardening.yml.tmpl +102 -0
  77. package/packs/issue-smashers/profiles/issue-smashers.yml.tmpl +258 -0
  78. package/scripts/npm-postinstall-check.js +31 -0
  79. package/scripts/orp +11 -0
  80. package/scripts/orp-agent-integrate.sh +197 -0
  81. package/scripts/orp-checkpoint.sh +184 -0
  82. package/scripts/orp-erdos-problems-sync.py +580 -0
  83. package/scripts/orp-init.sh +50 -0
  84. package/scripts/orp-pack-fetch.py +155 -0
  85. package/scripts/orp-pack-install.py +2273 -0
  86. package/scripts/orp-pack-render.py +188 -0
  87. package/spec/v1/LIFECYCLE_MAPPING.md +40 -0
  88. package/spec/v1/orp.config.schema.json +385 -0
  89. package/spec/v1/packet.schema.json +552 -0
  90. package/spec/v1/profile-pack.schema.json +95 -0
  91. package/templates/CLAIM.md +33 -0
  92. package/templates/FAILED_TOPIC.md +19 -0
  93. package/templates/ISSUE_TEMPLATE.md +22 -0
  94. package/templates/VERIFICATION_RECORD.md +34 -0
@@ -0,0 +1,33 @@
1
+ # Context Log (process-only; not evidence)
2
+
3
+ > This file is **not evidence**. It is a running, lightweight trace of “what’s going on” to support handoff, compaction, and
4
+ > coordination.
5
+ >
6
+ > Keep entries neutral: hypotheses, decisions, links, next hooks. Avoid “proving” anything here.
7
+
8
+ ---
9
+
10
+ ## How to use
11
+
12
+ - Add an entry at major transitions:
13
+ - after context compaction/summarization
14
+ - before `git commit` / `git push` (optional but recommended for agentic workflows)
15
+ - before publishing a **Verified/Exact** claim
16
+ - at handoff (“here’s the state; here’s next”)
17
+ - Prefer links to canonical artifacts (code/data/logs) rather than reproducing content here.
18
+
19
+ ---
20
+
21
+ ## Entry template
22
+
23
+ ### Checkpoint — YYYY-MM-DDTHH:MM:SSZ
24
+ - Note:
25
+ - Repo state:
26
+ - Branch:
27
+ - Head:
28
+ - Git status: staged=?, unstaged=?, untracked=?
29
+ - ORP snippet sync:
30
+ - Agent instruction files checked:
31
+ - Result: PASS / FAIL / (skipped)
32
+ - Canonical artifacts touched (paths only):
33
+ - Next hook:
@@ -0,0 +1,63 @@
1
+ # ORP Agent Loop
2
+
3
+ Use this loop when an AI agent is the primary operator of an ORP-enabled repo.
4
+
5
+ ## 1. Discover
6
+
7
+ - Read `llms.txt`.
8
+ - Run `orp about --json`.
9
+ - If packs matter, run `orp pack list --json`.
10
+ - Read `PROTOCOL.md` before making claims.
11
+ - If the task is external OSS contribution workflow or PR governance, read
12
+ `docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md` before selecting work.
13
+ - For the more detailed external-contribution operator rhythm, then read
14
+ `docs/OSS_CONTRIBUTION_AGENT_LOOP.md`.
15
+
16
+ ## 2. Select Work
17
+
18
+ - Identify the target profile and canonical artifact paths.
19
+ - If a pack-backed workflow needs setup, run:
20
+ - `orp pack install --pack-id <pack-id> --json`
21
+ - or `orp pack fetch --source <git-url> --pack-id <pack-id> --install-target . --json`
22
+ - If the workflow depends on public Erdos data, sync it first:
23
+ - `orp erdos sync --problem-id <id> --out-problem-dir <dir> --json`
24
+
25
+ ## 3. Run
26
+
27
+ - Execute the target workflow:
28
+ - `orp gate run --profile <profile> --json`
29
+ - Treat the resulting `run_id` as the handle for follow-on steps.
30
+
31
+ ## 4. Emit Process Metadata
32
+
33
+ - Write the packet:
34
+ - `orp packet emit --profile <profile> --run-id <run_id> --json`
35
+ - Packets are process metadata only. They are not evidence.
36
+
37
+ ## 5. Render Human Review Output
38
+
39
+ - Write the one-page digest:
40
+ - `orp report summary --run-id <run_id> --json`
41
+ - Share the generated `RUN_SUMMARY.md` with humans when a fast review artifact is useful.
42
+ - Read `RUN.json.epistemic_status` and packet `evidence_status` before making any claim about what counts as evidence versus starter scaffolding.
43
+
44
+ ## 6. Checkpoint
45
+
46
+ - Before handoff, compaction, `git commit`, or `git push`, write a checkpoint:
47
+ - `scripts/orp-checkpoint.sh --sync --agent-file /path/to/agent/instructions.md "checkpoint note"`
48
+
49
+ ## 7. Respect the Boundary
50
+
51
+ - ORP docs, packets, and summaries are process artifacts.
52
+ - Evidence must remain in canonical artifact paths such as code, data, proofs, logs, and papers.
53
+ - If verification fails, downgrade the claim immediately and preserve the failed path.
54
+
55
+ ## Minimal Public Example
56
+
57
+ ```sh
58
+ orp about --json
59
+ orp pack install --pack-id erdos-open-problems --include catalog --json
60
+ orp --config orp.erdos-catalog-sync.yml gate run --profile erdos_catalog_sync_active --json
61
+ orp --config orp.erdos-catalog-sync.yml packet emit --profile erdos_catalog_sync_active --json
62
+ orp --config orp.erdos-catalog-sync.yml report summary --json
63
+ ```
@@ -0,0 +1,128 @@
1
+ # Choosing (or Ignoring) Instruments
2
+
3
+ > *Instruments are available, not required.*
4
+
5
+ This document explains **when to use an instrument**, **when not to**, and shows a small example of both paths. The goal is clarity without pressure.
6
+
7
+ ---
8
+
9
+ ## The Short Rule
10
+
11
+ You do **not** need an instrument to use ORP.
12
+
13
+ ORP functions fully with:
14
+ - clear claims
15
+ - explicit verification hooks
16
+ - honest downgrade or failure recording
17
+
18
+ Instruments are optional tools for **upstream framing**, nothing more.
19
+
20
+ ---
21
+
22
+ ## When an Instrument Helps
23
+
24
+ Consider using an instrument if:
25
+
26
+ - the problem feels large, vague, or multidimensional
27
+ - you are unsure what to measure first
28
+ - competing intuitions are pulling in different directions
29
+ - you want to generate *predictions* before making claims
30
+
31
+ An instrument helps you choose *where to stand* before you speak.
32
+
33
+ ---
34
+
35
+ ## When to Ignore Instruments
36
+
37
+ It is often better to skip instruments when:
38
+
39
+ - the claim is narrow and well-defined
40
+ - the verification method is obvious
41
+ - you are extending known work incrementally
42
+ - speed matters more than framing
43
+
44
+ Skipping instruments is not a shortcut.
45
+ It is a valid choice.
46
+
47
+ ---
48
+
49
+ ## How to Choose an Instrument (If You Do)
50
+
51
+ Ask one simple question:
52
+
53
+ > *What kind of uncertainty am I facing?*
54
+
55
+ Then choose accordingly:
56
+
57
+ - **Orbit Lens** → uncertainty about *stability, balance, or persistence*
58
+ - **Compression Lens** → uncertainty about *what really matters*
59
+ - **Adversarial Lens** → uncertainty about *hidden failure modes*
60
+
61
+ You may use more than one — or none.
62
+
63
+ ---
64
+
65
+ ## Tiny Example A: Using an Instrument
66
+
67
+ **Context:** Studying a large combinatorial family suspected to be extremal.
68
+
69
+ Before making a claim, you apply the **Orbit Lens**:
70
+ - forces: structure vs entropy
71
+ - distance knob: density of the family
72
+ - invariant: collision count under projection
73
+
74
+ **Result:**
75
+ You predict that beyond a certain density, collisions must explode.
76
+
77
+ **Then:**
78
+ You write a claim in ORP:
79
+ > *Claim:* Any family exceeding density X contains a forbidden configuration.
80
+ >
81
+ > *Instrument used:* Orbit Lens (density regime)
82
+ >
83
+ > *Verification:* SAT search + counting argument
84
+
85
+ Verification proceeds normally.
86
+ The instrument does not affect acceptance.
87
+
88
+ ---
89
+
90
+ ## Tiny Example B: Ignoring Instruments
91
+
92
+ **Context:** Checking whether a specific bound holds for n ≤ 10.
93
+
94
+ You already know:
95
+ - what to compute
96
+ - how to verify it
97
+
98
+ You write a claim directly:
99
+ > *Claim:* Bound Y holds for all n ≤ 10.
100
+ >
101
+ > *Verification:* Exhaustive computation
102
+
103
+ No instrument is referenced.
104
+ This is fully valid ORP usage.
105
+
106
+ ---
107
+
108
+ ## Important Boundary
109
+
110
+ Instruments:
111
+ - influence *what questions are asked*
112
+ - never influence *whether a claim is accepted*
113
+
114
+ Verification is blind to framing.
115
+
116
+ ---
117
+
118
+ ## Final Reassurance
119
+
120
+ If you:
121
+ - never use an instrument, ORP still works
122
+ - use one instrument, ORP still works
123
+ - invent a new instrument, ORP still works
124
+
125
+ Instruments are an invitation, not an obligation.
126
+
127
+ *Use them when they help. Ignore them when they don’t.*
128
+
@@ -0,0 +1,222 @@
1
+ # Coda to ORP Contract
2
+
3
+ This document defines the boundary between:
4
+
5
+ - `codacli.com` / `coda-cli`
6
+ - `ORP`
7
+
8
+ The goal is to let both systems work together without turning ORP into an app
9
+ backend or turning Coda into a second protocol runtime.
10
+
11
+ ## Repository Split
12
+
13
+ Recommended shape:
14
+
15
+ - `orp` repo
16
+ - protocol/runtime
17
+ - discovery execution
18
+ - collaboration execution
19
+ - packets, run records, summaries
20
+ - portable local-first CLI
21
+ - `coda-cli` repo
22
+ - operator-facing wrapper
23
+ - active profile selection
24
+ - auth/session handling
25
+ - Coda export retrieval
26
+ - convenience commands layered over ORP
27
+ - `codacli.com`
28
+ - authenticated web product
29
+ - user database
30
+ - idea cards
31
+ - feature scaffolds
32
+ - notes/detail sections
33
+ - export surface for agents and `coda-cli`
34
+
35
+ ## Ownership Boundary
36
+
37
+ Coda owns:
38
+
39
+ - user identity
40
+ - database records
41
+ - idea cards
42
+ - categories
43
+ - feature scaffolds
44
+ - note/detail sections
45
+ - active context selection
46
+ - export APIs / export files
47
+
48
+ ORP owns:
49
+
50
+ - portable discovery profile format
51
+ - GitHub discovery scans
52
+ - collaboration workflows
53
+ - gate execution
54
+ - packets
55
+ - run summaries
56
+ - process artifacts
57
+
58
+ In short:
59
+
60
+ - Coda answers: "What does this user care about right now?"
61
+ - ORP answers: "How do we discover, structure, and execute the work?"
62
+
63
+ ## MVP Rule
64
+
65
+ The MVP should be read-only from Coda into ORP.
66
+
67
+ That means:
68
+
69
+ - Coda exports context
70
+ - ORP consumes derived context
71
+ - ORP produces scan/run artifacts
72
+ - Coda may read those artifacts later
73
+ - ORP does not write back into Coda yet
74
+
75
+ This keeps the first integration simple and auditable.
76
+
77
+ ## Canonical Coda Export
78
+
79
+ Coda should expose a canonical export that reflects the app's richer data
80
+ model.
81
+
82
+ Example shape:
83
+
84
+ ```json
85
+ {
86
+ "schema_version": "1.0.0",
87
+ "user": {
88
+ "id": "user_123",
89
+ "handle": "cody"
90
+ },
91
+ "active_context": {
92
+ "idea_id": "idea_problem857",
93
+ "title": "Sunflower formalization work",
94
+ "categories": ["math", "lean", "formalization"]
95
+ },
96
+ "ideas": [
97
+ {
98
+ "id": "idea_problem857",
99
+ "title": "Sunflower formalization work",
100
+ "summary": "Look for repos and issues aligned with Problem 857 work.",
101
+ "tags": ["sunflower", "lean", "proof"],
102
+ "feature_scaffold": {
103
+ "areas": ["balance", "container", "docs"],
104
+ "notes": ["Prefer public repos first."]
105
+ }
106
+ }
107
+ ]
108
+ }
109
+ ```
110
+
111
+ ORP should not depend directly on the full Coda export schema.
112
+
113
+ ## Derived ORP Inputs
114
+
115
+ `coda-cli` should derive smaller ORP-native inputs from the richer Coda export.
116
+
117
+ The first derived input is an ORP discovery profile.
118
+
119
+ Example:
120
+
121
+ ```json
122
+ {
123
+ "schema_version": "1.0.0",
124
+ "profile_id": "idea_problem857",
125
+ "notes": [
126
+ "Derived from Coda active context."
127
+ ],
128
+ "discover": {
129
+ "github": {
130
+ "owner": {
131
+ "login": "SproutSeeds",
132
+ "type": "org"
133
+ },
134
+ "signals": {
135
+ "keywords": ["sunflower", "formalization", "proof"],
136
+ "repo_topics": ["lean", "math"],
137
+ "languages": ["Lean"],
138
+ "areas": ["balance", "container", "docs"],
139
+ "people": []
140
+ },
141
+ "filters": {
142
+ "include_repos": [],
143
+ "exclude_repos": [],
144
+ "issue_states": ["open"],
145
+ "labels_any": [],
146
+ "exclude_labels": [],
147
+ "updated_within_days": 180
148
+ },
149
+ "ranking": {
150
+ "repo_sample_size": 30,
151
+ "max_repos": 12,
152
+ "max_issues": 24,
153
+ "max_people": 12,
154
+ "issues_per_repo": 30
155
+ }
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ Other future derived inputs may include:
162
+
163
+ - collaboration bootstrap hints
164
+ - target repo selection
165
+ - issue lane selection
166
+ - preferred adapters
167
+
168
+ ## ORP Outputs Coda May Read
169
+
170
+ For the first integration, Coda should treat ORP outputs as read-only runtime
171
+ artifacts.
172
+
173
+ Useful outputs:
174
+
175
+ - `orp/discovery/github/<scan_id>/SCAN.json`
176
+ - `orp/discovery/github/<scan_id>/SCAN_SUMMARY.md`
177
+ - `orp/artifacts/<run_id>/RUN.json`
178
+ - `orp/artifacts/<run_id>/RUN_SUMMARY.md`
179
+ - `orp/packets/<packet_id>.json`
180
+
181
+ These let Coda display:
182
+
183
+ - recommended repos/issues/people
184
+ - latest collaboration run results
185
+ - packetized process context
186
+
187
+ ## CLI Relationship
188
+
189
+ `coda-cli` should be a thin wrapper over ORP, not a second workflow engine.
190
+
191
+ Good examples:
192
+
193
+ - `coda profile export`
194
+ - `coda profile use <idea-id>`
195
+ - `coda discover`
196
+ - `coda collaborate init`
197
+
198
+ Under the hood, those should call ORP's JSON surfaces such as:
199
+
200
+ - `orp discover profile init --json`
201
+ - `orp discover github scan --json`
202
+ - `orp collaborate init --json`
203
+ - `orp collaborate run --json`
204
+
205
+ ## Non-Goals For ORP
206
+
207
+ ORP should not own:
208
+
209
+ - authenticated user databases
210
+ - profile sharing semantics
211
+ - team/private visibility policy
212
+ - app-level note editing
213
+ - direct mutation of Coda records
214
+
215
+ Those belong in Coda.
216
+
217
+ ## Practical Rule
218
+
219
+ When in doubt:
220
+
221
+ - if it is portable execution or protocol data, keep it in ORP
222
+ - if it is user/app context or authenticated product state, keep it in Coda
@@ -0,0 +1,62 @@
1
+ # ORP Core Ability Refocus Checklist
2
+
3
+ This checklist tracks the shift from a pack-first public story to an
4
+ ability-first ORP CLI.
5
+
6
+ ## Product Shape
7
+
8
+ - [x] Discovery is presented as a built-in ORP ability.
9
+ - [x] Bare `orp` opens a home screen instead of only failing on missing
10
+ subcommands.
11
+ - [x] Collaboration is presented as a built-in ORP ability.
12
+ - [x] `erdos` remains a domain-specific ORP ability.
13
+ - [x] Packs remain available for advanced/internal use.
14
+ - [ ] The released npm package includes the new collaboration-first surface.
15
+
16
+ ## Default User Story
17
+
18
+ - [x] `orp discover profile init` scaffolds a portable discovery profile.
19
+ - [x] `orp discover github scan` ranks repo, issue, and people opportunities
20
+ inside a GitHub owner space.
21
+ - [x] `orp collaborate init` is the fastest collaboration setup path.
22
+ - [x] `orp collaborate workflows` exposes built-in collaboration workflows.
23
+ - [x] `orp collaborate gates --workflow <id>` shows the gate chain before a run.
24
+ - [x] `orp collaborate run --workflow <id>` runs the built-in collaboration
25
+ workflow.
26
+ - [x] README points users at `orp collaborate ...` first.
27
+ - [x] INSTALL points users at `orp collaborate ...` first.
28
+ - [ ] Add a collaboration-specific summary/example doc if real users still need
29
+ more onboarding.
30
+
31
+ ## Advanced / Internal Story
32
+
33
+ - [x] `pack` is still available.
34
+ - [x] Home screen labels packs as advanced bundles.
35
+ - [x] Pack docs remain available for ORP maintainers and advanced users.
36
+ - [ ] Decide later whether `external-pr-governance` and `issue-smashers` stay
37
+ as visible internal names or become more hidden implementation details.
38
+
39
+ ## Machine-Readable Discovery
40
+
41
+ - [x] `orp home --json` exists.
42
+ - [x] `orp about --json` exists.
43
+ - [x] `orp about --json` exposes commands.
44
+ - [x] `orp about --json` exposes abilities.
45
+ - [x] `orp discover ... --json` exists.
46
+ - [x] `orp collaborate workflows --json` exists.
47
+ - [x] `orp collaborate gates --json` exists.
48
+ - [ ] Add a machine-readable examples surface if agents still need more direct
49
+ task discovery.
50
+
51
+ ## Domain Shape
52
+
53
+ - [x] Collaboration is part of ORP core UX.
54
+ - [x] Erdos stays separate.
55
+ - [ ] Decide whether `erdos` should gain a matching `workflows` / `run`
56
+ surface for symmetry with `collaborate`.
57
+
58
+ ## Release Checklist
59
+
60
+ - [ ] Commit the collaboration-first refocus.
61
+ - [ ] Release the next npm version.
62
+ - [ ] Validate the collaboration-first story from a clean published install.
@@ -0,0 +1,69 @@
1
+ # ORP Discover
2
+
3
+ `orp discover` is ORP's built-in discovery ability for finding promising work
4
+ inside a GitHub owner space.
5
+
6
+ The first concrete surface is a GitHub profile scanner:
7
+
8
+ - scaffold a discovery profile
9
+ - define keywords, languages, topics, areas, and people signals
10
+ - scan a GitHub user or organization
11
+ - rank repositories, issues, and active people
12
+ - hand off the strongest match into `orp collaborate`
13
+
14
+ Today ORP scans public GitHub owner space by default. If richer access policy
15
+ or profile governance exists later, that belongs in Coda rather than in ORP.
16
+
17
+ ## Commands
18
+
19
+ Scaffold a profile:
20
+
21
+ ```bash
22
+ orp discover profile init --owner SproutSeeds --owner-type org --json
23
+ ```
24
+
25
+ Run a scan:
26
+
27
+ ```bash
28
+ orp discover github scan --profile orp.profile.default.json --json
29
+ ```
30
+
31
+ ## Profile Model
32
+
33
+ Discovery profiles are portable JSON files owned by ORP.
34
+
35
+ Current profile fields let you shape:
36
+
37
+ - GitHub owner scope
38
+ - keywords
39
+ - repo topics
40
+ - languages
41
+ - area terms
42
+ - people signals
43
+ - repo and issue filters
44
+ - ranking limits
45
+
46
+ ## Artifacts
47
+
48
+ GitHub scans write:
49
+
50
+ - `orp/discovery/github/<scan_id>/SCAN.json`
51
+ - `orp/discovery/github/<scan_id>/SCAN_SUMMARY.md`
52
+
53
+ These are process-only recommendation artifacts, not evidence.
54
+
55
+ ## Coda Relationship
56
+
57
+ ORP should own the portable discovery profile format and the scanning
58
+ artifacts.
59
+
60
+ If `coda-cli` exists later, the clean role for Coda is:
61
+
62
+ - manage active profiles
63
+ - switch between operator contexts
64
+ - wrap ORP commands for a smoother operator UX
65
+
66
+ That keeps ORP as the protocol/runtime while letting Coda become a higher-level
67
+ profile manager if it earns its place.
68
+
69
+ For the fuller boundary, see `docs/CODA_ORP_CONTRACT.md`.