Latest Results
docs(pads): upgrade PADS.md to v2 living-document + tier-0 guard
## Summary
Upgrades Solar's PADS.md from the v1 flat frontmatter (PR #1) to the v2
mutability-tiered living document, and adds the supporting directory
(`pads/`, `.pads/tier0.sha256`, `scripts/pads/`, `.github/workflows/
pads-tier0-guard.yml`) that pads.dev consumes to run a week-long
orchestrated program against this fork.
## Rationale
The v1 spec covered mission, tracks, and starter tasks well but had no
anti-drift guardrails, no oracle tiering, no archetype size discipline,
and no living-document edit protocol. A week-long autonomous run on v1
would converge on the failure modes documented in the 2025-2026 research
(Alignment Tipping Process, context rot, reward-hacking, self-
modification). v2 layers the following on top while preserving every
v1 commitment (owned baseline discipline, solc relationship, review
culture, anti-shallow-progress rules):
- Tier-0 constitution (project, hard_constraints, scope_of_autonomy,
edit_rules) that is human-only and SHA-hashed in CI. 15 bright-line
hard constraints catch the canonical reward hacks (testdata/ edits,
rebless without source change, cargo uibless shortcuts, self-extension
of budgets, forcing CI green by disabling tests).
- Tier-1 strategy (oracles with tier=prerequisite|gate|advisory, corpora
with pinned commits, 10 tracks with (priority, status) 2D uncertainty,
15 archetypes with blast_radius and slice_size, run_policy with a
planner cascade and keep-alive stream, anti_rabbit_hole with 10 named
refuse archetypes and step-back triggers).
- Tier-3 append-only logs (pads/lessons.jsonl, pads/rejected-ideas.md,
the ## Change History section) enforced by a pre-commit + CI guard.
- 12 Solar-specific skills (cargo-build, cargo-nextest, cargo-uitest,
cargo-uibless, solc-diff, erwin-fuzz, codspeed-check, gh-pr-draft,
conventional-commit, tools-tester-solc-mode, revm-deploy,
alloy-abi-decode) with canonical invocations and test cases.
- 6 rejected ideas with Revisit-if clauses (no salsa retrofit, no direct
Venom adoption, no full equality saturation in the Yul optimizer, no
self-hosting before codegen, no submodule reblessing, no snapshot edits
without source change).
The Tier-0 guard (`scripts/pads/tier0-guard.py`) recomputes the SHA-256
of the canonical-JSON form of `tier0.{project,hard_constraints,
scope_of_autonomy,edit_rules}` and fails CI on any change unless the PR
carries a `human-approved` label. Canonicalization matches the
TypeScript implementation bit-for-bit.
## Oracle evidence
- `python3 scripts/pads/tier0-guard.py` — OK
(fa49e416a54a0d147dba7f116e22cf7b7f6eef996bf204cf7a9acb2a7c126280)
- `python3 scripts/pads/append-only-guard.py` — OK
(verified that migrating v1→v2 passes because v1 had no Change History;
verified a synthetic destructive edit is rejected with exit 1)
- PADS.md parses cleanly through the pads-hack v2 Zod schema
(`PadsMdSchemaV2`): 10 tracks, 12 oracles, 4 corpora, 15 archetypes,
15 hard constraints, 10 refuse_on_name archetypes, 3-stage planner
cascade, opt-in autonomy default.
- `python3 -c 'import yaml; …'` — YAML parses, no duplicate keys.
## Before/After
Schema migration:
| field | v1 | v2 |
|-------|----|----|
| version | "1" flat frontmatter | tier0/Tier-1/Tier-2/Tier-3 stratification |
| hard_constraints | (none) | 15 bright lines |
| scope_of_autonomy | (none) | blast radius + must_pause_for_approval + shutdown timer |
| oracles | verification.commands[] | 12 tiered oracles (prerequisite/gate/advisory) |
| corpora | (implicit in constraints) | 4 pinned corpora |
| tracks | 9 tracks, priority-only | 10 tracks, (priority × status) 2D |
| archetypes | (none) | 15 with blast_radius + slice_size |
| run_policy | (none) | planner cascade + keep-alive stream + shutdown timer |
| anti_rabbit_hole | (none) | 10 refuse-on-name archetypes + step-back triggers |
| revision_protocol | (none) | 5 trigger classes + critic-agent review |
| memory stratification | (none) | 4-level (L1=PADS.md L2=rules+skills L3=lessons L4=NOW) |
| lessons pipeline | (none) | admission gate + 3x-recurrence promotion |
No code in `crates/**` is touched. All existing v1 substance (solc
relationship, review culture, anti-shallow-progress rules, owned-baseline
discipline, starter task shape) is preserved in the markdown body.
## Risk
- Merge conflicts on a future upstream rebase of PADS.md: low — this is
fork-owned content; `paradigmxyz/solar` does not carry a PADS.md.
- The Tier-0 guard fires on any accidental whitespace change to Tier-0.
That is the intended behavior; a CODEOWNER can regenerate the hash
with `python3 scripts/pads/tier0-guard.py --write` and commit the new
value with a human-approved label.
- The guard workflow uses `actions/setup-python@v5` + `pyyaml`. Both are
vendored into the Python 3.12 baseline; no repo-level dep added.
## Follow-ups
- None blocking for this PR. The orchestrator-side implementation
(keep-alive worker loop, critic-agent invocation on Tier-1 PRs,
cron-enforced shutdown timer) lives on the pads.dev side; this PR
only delivers the content this fork needs to be orchestrated against.
- Once merged, the first live run should target typeck (priority 1 in
run_policy.priority_order) and testing-infra (priority 3). codegen-mir
stays `status: draft` until the bytecode-equivalence harness (#704)
lands as a scaffold PR, per the plan's phased rollout.
---
This PR was prepared with pads.dev tooling. A human owns every decision.arjunblj:pads/v2-living-spec Latest Branches
0%
arjunblj:pads/v2-living-spec 0%
dependabot/uv/benches/analyze/pillow-12.2.0 0%
© 2026 CodSpeed Technology