leo: contributor identity handling fixes for contribute skill
4 changes:
- Step 0: persistent contributor.yml (local, gitignored) captures identity once
- Branch naming: contrib/{github}/{slug} instead of {agent}/contrib-{user}
- Source archive: separate author (who wrote it) from contributor (who submitted it)
- Extraction attribution: document the split between contributor and processed_by
Pentagon-Agent: Leo <76FB9BCA-CC16-4479-B3E5-25A3769B3D7E>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d1fa42bfc5
commit
e30660e61a
2 changed files with 37 additions and 9 deletions
|
|
@ -19,6 +19,28 @@ Teleo Codex is a living knowledge base maintained by AI agents and human contrib
|
|||
2. Extracting claims to `domains/{domain}/`
|
||||
3. Opening a PR for review by Leo (evaluator) and the domain agent
|
||||
|
||||
## Step 0: Identify Contributor
|
||||
|
||||
Check if `.claude/contributor.yml` exists in the repo root. If it does, read it and use the stored identity for all attribution fields.
|
||||
|
||||
If it does not exist, ask the user:
|
||||
- **Name** — how they want to be credited (e.g., "Alex")
|
||||
- **GitHub handle** — their GitHub username (e.g., "alexhandle")
|
||||
- **Primary domain** — which domain they're most interested in
|
||||
|
||||
Create `.claude/contributor.yml`:
|
||||
```yaml
|
||||
name: "Alex"
|
||||
github: "alexhandle"
|
||||
email: "alex@contributors.livingip.ghost"
|
||||
domains: [ai-alignment]
|
||||
created: 2026-03-07
|
||||
```
|
||||
|
||||
The ghost email is generated as `{github}@contributors.livingip.ghost`. This file is gitignored — it stays local to the contributor's machine and is never committed. Each contributor's clone has their own identity.
|
||||
|
||||
On subsequent runs, read this file silently and use it. Do not ask the user to re-enter their identity.
|
||||
|
||||
## Step 1: Orient
|
||||
|
||||
Read these files to understand the system:
|
||||
|
|
@ -51,10 +73,10 @@ Ask the user what they're contributing:
|
|||
```bash
|
||||
git checkout main
|
||||
git pull origin main
|
||||
git checkout -b {domain-agent}/contrib-{user}-{brief-slug}
|
||||
git checkout -b contrib/{github-handle}/{brief-slug}
|
||||
```
|
||||
|
||||
Use the domain agent's name as the branch prefix (e.g., `theseus/contrib-alex-alignment-report`). This signals whose territory the claims enter.
|
||||
Use `contrib/` as the branch prefix with the contributor's GitHub handle (e.g., `contrib/alex/alignment-report`). This clearly marks the PR as a human contribution. The target domain is signaled by the claim file locations, not the branch name — keeping branch naming consistent across all contributors regardless of which domain they're contributing to.
|
||||
|
||||
## Step 4: Archive the Source
|
||||
|
||||
|
|
@ -75,10 +97,13 @@ domain: {domain}
|
|||
format: essay | paper | report | thread | newsletter | whitepaper | news
|
||||
status: unprocessed
|
||||
tags: [tag1, tag2, tag3]
|
||||
contributor: "{user's name}"
|
||||
contributor: "{name from contributor.yml}"
|
||||
contributor_github: "{github from contributor.yml}"
|
||||
---
|
||||
```
|
||||
|
||||
**Attribution distinction:** The `author` field is who wrote the original source (e.g., a researcher, journalist). The `contributor` field is who brought it to the knowledge base (the Teleo contributor). These are often different people. If the contributor IS the author (e.g., submitting their own analysis), set both to the same name.
|
||||
|
||||
After the frontmatter, include the FULL content of the source. More content = better extraction.
|
||||
|
||||
## Step 5: Scan Existing Knowledge
|
||||
|
|
@ -153,7 +178,7 @@ Topics:
|
|||
After extraction, update the source file:
|
||||
```yaml
|
||||
status: processed
|
||||
processed_by: "{contributor name}"
|
||||
processed_by: "{name from contributor.yml}"
|
||||
processed_date: YYYY-MM-DD
|
||||
claims_extracted:
|
||||
- "claim title 1"
|
||||
|
|
@ -162,20 +187,22 @@ enrichments:
|
|||
- "existing claim that was enriched"
|
||||
```
|
||||
|
||||
**Note:** If a contributor only submits the source (Mode A in Step 2) and leaves extraction to agents, set `status: unprocessed` and leave `processed_by` empty. The domain agent will update these fields when it extracts. The contributor gets `contributor:` credit on the source; the agent gets `processed_by:` credit for extraction. Both show up in the provenance chain.
|
||||
|
||||
## Step 8: Commit
|
||||
|
||||
```bash
|
||||
git add domains/{domain}/*.md inbox/archive/*.md
|
||||
git commit -m "{agent}/contrib-{user}: add N claims about {topic}
|
||||
git commit -m "contrib/{github}: add N claims about {topic}
|
||||
|
||||
- What: [brief description of claims added]
|
||||
- Why: [source material, why these matter]
|
||||
- Connections: [what existing claims these relate to]
|
||||
|
||||
Contributor: {user's name}"
|
||||
Contributor: {name} <{email from contributor.yml}>"
|
||||
```
|
||||
|
||||
The `Contributor:` trailer is required for human contributions — it ensures attribution.
|
||||
The `Contributor:` trailer is required for human contributions — it ensures attribution. The format mirrors `Pentagon-Agent:` trailers but uses a different prefix to distinguish human contributors from collective agents.
|
||||
|
||||
## Step 9: Push and Open PR
|
||||
|
||||
|
|
@ -183,7 +210,7 @@ The `Contributor:` trailer is required for human contributions — it ensures at
|
|||
git push -u origin {branch-name}
|
||||
|
||||
gh pr create \
|
||||
--title "{agent}/contrib-{user}: {brief description}" \
|
||||
--title "contrib/{github}: {brief description}" \
|
||||
--body "## Source
|
||||
{source title and link}
|
||||
|
||||
|
|
@ -194,7 +221,7 @@ gh pr create \
|
|||
{1-2 sentences on value add}
|
||||
|
||||
## Contributor
|
||||
{user's name}
|
||||
{name} (@{github})
|
||||
|
||||
## Cross-Domain Flags
|
||||
{any connections to other domains the reviewers should check}"
|
||||
|
|
|
|||
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
.DS_Store
|
||||
*.DS_Store
|
||||
ops/sessions/
|
||||
.claude/contributor.yml
|
||||
|
|
|
|||
Loading…
Reference in a new issue