Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,19 @@ git pull --rebase && git push
- If a conflict touches a file you didn't modify, abort the rebase and ask the user.
- NEVER force-push.

### User Override
### Contributor Attribution

When you re-land or build on another person's work (a fork PR, an issue author's proposal, a co-author), credit the human contributor with a working GitHub-linked trailer so they appear in the contributors graph:

```
Co-authored-by: Name <ID+username@users.noreply.github.com>
```

- Use the numeric-id no-reply form. Get the id with `gh api users/<login> --jq .id`.
- Never use a machine or `.local` email in a co-author trailer; it links to no account and gives zero credit.
- When a squash-merge collapses a contributor's PR into an internal branch, preserve their `Co-authored-by:` line in the squash commit message.
- This applies to human contributors only. Do not add trailers or credit lines naming an AI model, assistant, vendor, or coding harness.

## User Override

If the user's instructions conflict with the rules above, ask for confirmation that they want to override the rules. Only then execute their instructions.
9 changes: 9 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# CLAUDE.md — coven-code

Read [`AGENTS.md`](AGENTS.md). It is the canonical agent-facing ruleset for this
repo: code quality bar, commands, CI gates, issue/PR-comment conventions, git
workflow, and contributor attribution.

The Rust-scoped rules in `src-rust/.claude/CLAUDE.md` extend these; when the two
disagree, the rule closer to the code wins. There is no separate Claude-only
workflow at the repo root — follow `AGENTS.md`.
10 changes: 7 additions & 3 deletions docs/headless-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,9 @@ The adapter is the **producer**; the runtime is the **consumer**. The brief is
},
"workspace": {
"root": "/tmp/task-abc123"
}
},
"review_context": null,
"audit_instruction": null
}
```

Expand All @@ -106,6 +108,8 @@ The adapter is the **producer**; the runtime is the **consumer**. The brief is
| `familiar.model` | string \| null | BYOM model id; `null`/absent means runtime default. |
| `familiar.skills` | string[] | Skill ids to load for the session. MAY be empty. |
| `workspace.root` | string | Absolute path to the pre-cloned, isolated workspace. The runtime operates **inside** this directory and MUST NOT write outside it. |
| `review_context` | object \| null | Optional structured review context. `kind: "pull_request"` puts the runtime in PR review mode and carries changed-file metadata. |
| `audit_instruction` | string \| null | Optional adapter-authored review instruction appended to the review prompt. |

### 2.2 Task kinds

Expand Down Expand Up @@ -183,9 +187,9 @@ the intended code. It is required on every result. Non-review tasks MUST set
| `evidence_status` | string enum | `not_applicable`, `complete`, `partial`, or `missing`. PR review modes MUST NOT use `not_applicable`. |
| `reviewed_files` | string[] | Workspace-relative files supplied to or inspected by the runtime. PR review modes MUST include at least one file unless `evidence_status` is `missing`. |
| `supporting_files` | string[] | Workspace-relative files beyond the changed-file list that the runtime can prove were inspected for context. Empty means no broader-codebase inspection was proven, not that none was needed. |
| `findings` | array | Structured findings. Empty is allowed only when `no_findings_reason` is a non-empty string. |
| `findings` | array | Structured findings. Empty is allowed. For complete no-finding reviews, `no_findings_reason` SHOULD explain the clean outcome. |
| `tests_run` | array | Commands run while reviewing, with `passed`, `failed`, `not_run`, or `unknown` status. |
| `no_findings_reason` | string \| null | Required when `mode` is a review mode and `findings` is empty. |
| `no_findings_reason` | string \| null | File-backed explanation for a clean review. MAY be `null` for degraded/partial output when `evidence_status` and `limitations` explain why a substantive clean-review conclusion was not possible. |
| `limitations` | string[] | Evidence gaps, skipped checks, or other caveats. |

Each finding carries `severity`, `file`, optional `line`, `title`, `body`, and
Expand Down
Loading