Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# Default reviewer for all changes. Routes review requests; see REVIEW.md for the rubric.
# Default reviewer for all changes. Routes review requests to the owner workflow.
* @matedev01
13 changes: 5 additions & 8 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
> ⛔ **Target the `test` branch, not `main`.** PRs into `main` from anywhere but `test` are auto-rejected — see [CONTRIBUTING → Branches](../CONTRIBUTING.md#branches).
> ⛔ **Target the `test` branch, not `main`.** PRs into `main` from anywhere but `test` are auto-rejected.

> **Check your contribution route before opening this PR.** Contributor PRs may directly change
> only `agent/**` or `agent.py`, with optional companion `tests/**`. A tests-only PR or any change
> to another path—including a mixed agent/non-agent PR—requires an open linked issue carrying
> `benchmark-change-approved` before the PR is opened. See
> [CONTRIBUTING → Agent submissions and protected project changes](../CONTRIBUTING.md#agent-submissions-and-protected-project-changes).
> **Protected change route.** Changes outside `agent/**`, `agent.py`, and companion tests require
> an open linked issue carrying `benchmark-change-approved` before review.

## Summary

Expand All @@ -13,7 +10,7 @@
## Related issue

<!-- e.g. Fixes #123 -->
<!-- For any protected or mixed-surface contributor PR, the OPEN issue above must already carry benchmark-change-approved. -->
<!-- For any protected or mixed-surface change, the open issue above must already carry benchmark-change-approved. -->

## Type of change

Expand Down Expand Up @@ -41,5 +38,5 @@
- [ ] `VANGUARSTEW_OFFLINE=1 python -m pytest -q` passes
- [ ] Added/updated tests for the change
- [ ] Updated docs (README / ROADMAP / CHANGELOG) if needed
- [ ] My changed-file set is an agent submission, or the linked open issue was approved before this PR
- [ ] My changed-file set is in the component surface, or the linked open issue was approved before this PR
- [ ] No secrets, tokens, or private data included
4 changes: 2 additions & 2 deletions .github/workflows/agent-benchmark-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ name: Agent benchmark smoke
#
# The real score-delta that decides a perf:* band is a maintainer-bot-run LIVE benchmark
# comparison against BOTH the public curated set and a private, undisclosed repo set
# (scripts/score_pr_delta.py + combine_dual_target(), see REVIEW.md § Contribution value
# (scripts/score_pr_delta.py + combine_dual_target(), see benchmark policy
# labels). That step needs a funded model key and a curated hidden set, so it is not run
# unattended on every push.

Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:
f"- Composite deltas: `{json.dumps(report.get('composite_deltas'))}`\n\n"
"This does not determine a perf:* label. That requires a maintainer-bot-run "
"live benchmark comparison against both the public and private repo targets "
"— see REVIEW.md."
"— see the benchmark policy."
)
open("/tmp/comment.md", "w").write(body)
PY
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-limit.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: PR limit

# Enforce the per-contributor open-PR limit by auto-closing the excess. Runs when a PR is
# Enforce the per-author open-PR limit by auto-closing the excess. Runs when a PR is
# opened/reopened (closes it if it puts the author over the limit) and on a periodic sweep
# (closes any lingering excess). The maintainer is exempt. Uses pull_request_target so it has a
# write token for fork PRs; it never checks out PR code, so there is no code-execution risk.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr-target-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ jobs:
PR_NUMBER: ${{ github.event.number }}
run: |
gh pr close "$PR_NUMBER" \
--comment "Closing: this PR targets \`main\` directly. Contributors must open PRs against the \`test\` branch per [CONTRIBUTING.md](https://github.com/gittensor-vanguard/vanguarstew/blob/main/CONTRIBUTING.md#branches). Please open a new PR against \`test\`. Thanks!"
echo "::notice::Closed PR #$PR_NUMBER — contributors must target test, not main"
--comment "Closing: this PR targets \`main\` directly. Please open a new PR against \`test\`. Thanks!"
echo "::notice::Closed PR #$PR_NUMBER — changes must target test, not main"
96 changes: 44 additions & 52 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,44 @@
# vanguarstew — project constitution

Durable project-wide rules. Every agent, contributor, and CI check operates under these.
Edit this file when policy changes; code, tests, and CI follow.

## Agent contract (M0)

- The system shall expose `solve(repo_path, request, ...)` as the single entrypoint.
- The system shall accept `api_base`, `api_key`, and `model` as managed-inference parameters.
- WHEN `VANGUARSTEW_OFFLINE=1` THE system SHALL use a deterministic offline stub.
- Agent files are declared in `vanguarstew_agent_files.json` — only those files are scored.

## Benchmark integrity (M1–M3)

- IF the LLM emits a non-string field where a string is expected THEN the scoring pipeline SHALL coerce and log a warning, not crash.
- IF a repo contributes zero tasks to a multi-repo composite THEN the system SHALL exclude it from aggregation.
- The system SHALL NOT let a forward-looking signal leak through the freeze boundary.
- Held-out repos SHALL be scored in a separate generalization pass, not in the tuned pass.

## Code quality

- The system shall reject PRs that lower test coverage below 75%.
- WHEN code changes under `agent/` or `benchmark/` THEN the PR SHALL include or update tests under `tests/`.
- `ruff check .` and `VANGUARSTEW_OFFLINE=1 python -m pytest -q` SHALL pass before merge.

## Contributors

- WHILE a contributor has >2 open PRs THEN CI SHALL block new PRs from that author.
- WHEN a contributor opens a PR against `main` THEN CI SHALL auto-close with a test-branch redirect.
- A contributor PR confined to `agent/**` or `agent.py` MAY include companion `tests/**` changes
and SHALL enter the agent benchmark and Polaris TEE verification route without guardrail
preapproval.
- Every contributor PR with any changed path outside that agent submission surface, including
`.github/**`, SHALL require a linked open issue carrying `benchmark-change-approved`; CI SHALL
auto-close it otherwise. Adding an agent file SHALL NOT exempt a mixed-surface PR.
- PRs SHALL reference at least one issue (e.g. `Fixes #N`).
- Commits SHALL NOT carry AI co-authorship or attribution markers.
- Contributors SHALL target the `test` branch. The maintainer promotes `test` → `main`.
- WHEN a closed PR is reopened by an actor other than `matedev01` or `vanguarstew` THEN CI
SHALL re-close it; contributors SHALL ask a maintainer to reopen a corrected PR.
- IF Git metadata claims the contributor PR author's account name for a commit role but GitHub
attributes that author or committer role to a different account, THEN CI SHALL close the PR on
each PR update and after every CI completion.

## Scoring (gittensor SN74)

- `perf:*` labels, earned only from a measured benchmark delta, SHALL be the sole source of
multiplier tiers for `agent/` PRs. Every other surface SHALL carry the flat
`mult:contribution`. An unlabeled merged PR earns zero (`default_label_multiplier` is `0.0`).
- The subnet's `master_repositories.json` entry for this repo SHALL be the authority for every
multiplier value; the docs mirror it and lose to it on any disagreement.
- The 3-axis rubric (repo, maintainer, legibility) SHALL feed into emission weight.
# OpenVang project constitution

Durable project-wide rules for the OpenVang agent factory and the Vanguarstew
maintainer-intelligence component. Code, tests, and automation must follow
these rules.

## Component contract

- The maintainer component shall expose `solve(repo_path, request, ...)` as its
stable entrypoint.
- Managed inference parameters are supplied by the controller; agent code shall
not discover or substitute credentials.
- `VANGUARSTEW_OFFLINE=1` shall select the deterministic offline stub.
- Benchmark and live persistent memory shall remain time-safe, controller-owned,
and read-only from the maintainer component.

## Benchmark and execution integrity

- Forward-looking signal shall not cross a benchmark freeze boundary.
- Held-out repositories shall be evaluated separately from tuned repositories.
- Public artifacts and TEE evidence shall contain only receipt-safe commitments,
never raw private memory, review material, credentials, or private sources.
- Polaris integration shall be described as execution integrity, not workload
confidentiality.

## Factory authority

- Every factory worker shall declare one role contract from `openvang/factory.py`.
- No role may automatically access a wallet, submit an on-chain transaction,
change emissions, vote in governance, mutate GitHub, or publish.
- Owner-level effects require a separate external approval and signing boundary;
a factory `ActionIntent` is non-executable by design.
- Role-private memory, including private maintainer-review material, shall never
cross role boundaries or enter public, benchmark, or TEE artifacts.
- Security QA is defensive and isolated; it may propose containment but may not
perform an offensive or production mutation.

## Quality gates

- Changes under `agent/`, `benchmark/`, `openvang/`, or `vanguarstew_runtime/`
shall include matching tests.
- `ruff check .` and the relevant offline test suite shall pass before release.
- Runtime defaults shall remain dry-run, loopback-only, private, and without a
GitHub write path.
6 changes: 0 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ All notable changes to this project are documented here. The format is based on
## [Unreleased]

### Added
- CI contribution policy now auto-closes unapproved contributor PRs that touch the benchmark,
operational scripts, documentation, blog posts, or Markdown files. Maintainer-authored changes
and changes linked to a pre-approved open issue remain allowed (#2099).
- Repo-set tooling: **freeze-window value validation** (`min_history >= 1`, non-empty
`after`/`before`) and `scripts/validate_repo_set.py` CLI to check a repo-set JSON before
replay (#325).
Expand Down Expand Up @@ -234,9 +231,6 @@ All notable changes to this project are documented here. The format is based on
- M2: the pairwise judge now evaluates the **decision process** — the agent's inferred
maintainer philosophy and reasoning are passed to the judge and weighed alongside
trajectory/direction match, so when two plans point the same way the sounder reasoning wins.
- Trustable contribution pipeline: a published review/scoring rubric (`REVIEW.md`), a
PR-integrity check (issue reference, no AI-attribution, non-trivial diff, tests-with-code,
per-author PR limit), `CODEOWNERS` review routing, and a CI coverage floor.

## [0.1.0] - 2026-07-02

Expand Down
142 changes: 0 additions & 142 deletions CONTRIBUTING.md

This file was deleted.

Loading
Loading