Skip to content

fix(ci): repair published mirror workflow revision - #85

Merged
hyperpolymath merged 2 commits into
mainfrom
codex/postmerge-mirror-20260907
Sep 8, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
codex/postmerge-mirror-20260907

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

The post-merge mirror run could not start because its reusable workflow reference was a malformed revision. Pin the caller to the existing shared mirror workflow at standards commit fad242d35291de1898242d6737ba02b74a59a2f2.

The caller retains its existing permissions, inherited secrets, main-only push trigger and per-forge enablement variables. Validation: actionlint, the canonical actions-lock verification wrapper and git diff --check pass. The referenced workflow was retrieved and inspected. No mirror enablement variables are configured in this repository; a successful skipped run would establish workflow resolution, not successful synchronization to another forge.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) September 7, 2026 09:07
@coderabbitai

coderabbitai Bot commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 3304d1fc-dbd1-4bb0-accb-98379b811ffa

📥 Commits

Reviewing files that changed from the base of the PR and between 5f7232f and dc5ef71.

📒 Files selected for processing (1)
  • .github/workflows/mirror.yml

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: rust-ci / Cargo audit (security)
  • GitHub Check: rust-ci / llvm-cov line coverage
  • GitHub Check: Burrower proof safety
🔇 Additional comments (1)
.github/workflows/mirror.yml (1)

13-13: LGTM!


📝 Summary

Summary by CodeRabbit

  • Chores
    • Updated the automated mirroring workflow to use a specific, fixed version for improved consistency and reliability.

Walkthrough

The mirror job now pins mirror-reusable.yml to commit fad242d35291de1898242d6737ba02b74a59a2f2.

Changes

Mirror workflow

Layer / File(s) Summary
Pin reusable mirror workflow
.github/workflows/mirror.yml
The mirror job uses the new reusable workflow commit SHA.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to bbb9a

The mirror workflow now uses the updated pinned shared workflow revision, with its existing trigger, permissions, secrets, and enablement behavior retained. No current merge-readiness risk is identified.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description explains the workflow revision, retained settings, validation, and expected skipped-run behaviour. However, it does not follow the repository template because it omits the required Sum… Rewrite the description using the repository template. Add the required sections, list the workflow change, record the applicable checklist results, describe the validation commands and outcomes, and state whether screenshots or terminal ou…
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies a CI fix to repair the published mirror workflow revision. It accurately summarises the main change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description explains the workflow revision, retained settings, validation, and expected skipped-run behaviour. However, it does not follow the repository template because it omits the required Summary, Changes, RSR Quality Checklist, Testing, and Screenshots sections.

Resolution

Rewrite the description using the repository template. Add the required sections, list the workflow change, record the applicable checklist results, describe the validation commands and outcomes, and state whether screenshots or terminal output are applicable.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the mirror trail
One pinned commit marks the rail
The workflow hops with care
A steady SHA waits there
No loose steps wander in the air

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit b037578 into main Sep 8, 2026
50 checks passed
@hyperpolymath
hyperpolymath deleted the codex/postmerge-mirror-20260907 branch September 8, 2026 07:14
hyperpolymath added a commit that referenced this pull request Oct 5, 2026
…plate shape (#102)

## Summary

First-run start point for proof-burrower: restore its identity, consume
echidna's shared prove-result contract, and move part of the way toward
the rsr-template-repo shape.

### Integration: `echidna.prove.result/1`

- `burrower attempt` runs `echidna prove ... --output json` when the
installed echidna lists `--output` in `prove --help`. It parses the
single stdout object and requires it to be byte-identical to its RFC
8785 canonical form, which also rejects duplicate keys and integers
beyond ±(2^53−1). Canonicalisation uses the published
`serde_json_canonicalizer` crate: the estate crate
`hyperpolymath/ijson-jcs` is private, so the earlier git dependency
could not be fetched by CI on this public repo (that was the cause of
the red Rust checks).
- A `verified` result produces `Succeeded { receipt: Some(ProofReceipt)
}`, and the receipt (prover, axioms, confidence, echidna version) is
written to the ledger's `extra.receipt`.
- Burrower falls back to the legacy text markers in two cases only:
  - the flag is missing from `prove --help`;
  - clap rejects `--output` (exit 2, `unexpected argument '--output'`).

A legacy success carries no receipt, and the ledger labels it "a
warrant, not a receipt".
- Malformed or non-canonical output counts as a contract violation and
fails the attempt. Burrower never re-reads it as text.
- Tests use fake echidna binaries to cover every status, a planted
non-canonical mutant, a binary that prints legacy text after advertising
the flag, a legacy binary, and a binary that advertises the flag and
then rejects it.
- The full contract and the mapping table are in
`docs/ECHIDNA-INTEGRATION.adoc`.
- **Horizon:** the live e2e test (`Burrower proof safety`) uses the
echidna build pinned in `proof-safety.yml`. That build predates the
flag, so CI exercises the **legacy** path live and the contract path
only through the fakes. The contract path is implemented and
unit-tested; it has not been tested against a real echidna.
- echidna corpus overlap: the recommendation is in
`docs/ECHIDNA-INTEGRATION.adoc#corpus-overlap`. Burrower keeps its own
indexer as the zero-dependency fallback and later gains an optional
`echidna corpus near` backend, once echidna defines a JSON contract for
it. That backend is not implemented here.

### Identity and template shape

- `affinescript/` (616 files) is removed. A search of Cargo members, the
Justfile, workflows, `crates/`, `src/`, `scripts/` and `tools/` found no
reference to it. It also held the last `.machine_readable/6a2/` in the
tree.
- README (previously "= PseudoScript") and ARCHITECTURE (the untouched
template) are rewritten. Root status and governance docs move under
`docs/` and `docs/status/`, and the files that referenced them are
updated.
- Adds `proof-burrower_chora.deed`. It passes `deed_lint` and the
deed-ecosystem validator.
- `mise.toml` no longer lists banned tools and now has a lockfile.
`dependabot.yml` and `settings.yml` are KYAML; `settings.yml` sets
squash-only merges and turns the wiki on.
- Fixes the Well-Known workflow, which failed on every scheduled run on
main because it never looked in `www/.well-known/`.
- Adds the wiki source in `docs/wikis/` and `scripts/sync-wiki.sh`.

### ID minting

`crates/burrower-core/src/ids.rs` is the only minting module (owner
policy 2026-10-05):

- `new_record_id()`: UUIDv7 from the `uuid` crate API. Used for ledger
record `id` through `ledger::new_id`, a thin alias. Callers:
`attempt::run_playbook`, `oracle::record_to_ledger`,
`ledger::record_reading`.
- `content_id(value)`: UUIDv8 per RFC 9562 Appendix B.2. It takes
SHA-256 over the JCS bytes, keeps the first 16 bytes and sets version 8
and variant `10`. `goal_content_id(text)` fills the new optional ledger
`goal_id`, and `ProofReceipt::from_result` fills the new optional
`result_id`.
- `goal_hash` is unchanged, because the wasm ABI (16-byte buffer) and
existing ledgers depend on it. Corpus entries carry no id yet.
- Tests cover three things: the same JCS content gives the same v8 id;
the version and variant bits are correct, with the rest equal to the
hash prefix; and v7 ids sort in minting order over 1000 mints.
- v7 is gated off `wasm32-unknown-unknown`, which has no clock or
entropy.
- Documented in `docs/ECHIDNA-INTEGRATION.adoc` § Identifiers.

### Stale local branches (folded or left)

- `chore/dependabot-pr-caps-2026-09-08`: the github-actions cap is
folded in. The other caps applied to ecosystems that no longer exist.
- `codex/live-proof-stack-20260907`, `codex/postmerge-mirror-20260907`:
already landed as #83 and #85.
- `fix/token-permissions-id-20260911`, `chore/bump-standards-pins`,
local `main` (+2): older pinning and ruleset attempts that main has
superseded (#99 actions.lock). Left untouched.

### Not done in this PR (reduced increment, §5b)

- Root-shape conformance is partial. These remain at the root:
`0-AI-MANIFEST.a2ml` (still read by rhodibot),
`Containerfile`/`container/`, `.gitlab-ci.yml`/`.pre-commit-config.yaml`
(moving them needs a GitLab project setting), `contractile.just`,
`coordination.k9`, `setup.sh`, `stapeln.toml`, `selur-compose.toml`,
`.guix-channel`, `agents/`, `audits/`, `tools/`, `.bot_directives/`.
Still missing: a generated `CLAUDE.md`, `launcher.sh`, `build/`, `ci/`.
No root-shape gate runs on this repo yet.
- The STATE/META/ECOSYSTEM descriptiles stay alongside the deed because
`openssf-compliance.yml`, the contractiles and `validate-template.sh`
still read them.
- No Creusot, SNIF or Zig-adapter work: there are no NIFs or Zig I/O
here, and Creusot has no estate convention yet.

## Test plan

- [x] `cargo fmt --all -- --check`, `cargo clippy --all-targets --locked
-- -D warnings`, `cargo test --locked --workspace` (all green locally;
25 repeated runs of the lib suite with no flakes)
- [x] `gh actions-lock --no-fix` clean
- [x] `kyaml-format.sh --check` on the edited YAML
- [x] `docstring-scan.sh --staged --check` (100%)
- [x] `deed_lint.py` OK; deed-ecosystem `validate-a2ml.sh`: 0 errors (8
pre-existing SPDX warnings)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant