Skip to content

chore(challenges): strip relearn/prism/design, keep bounty+proof - #224

Open
echobt wants to merge 6 commits into
mainfrom
cursor/strip-dead-challenges-2678
Open

chore(challenges): strip relearn/prism/design, keep bounty+proof#224
echobt wants to merge 6 commits into
mainfrom
cursor/strip-dead-challenges-2678

Conversation

@echobt

@echobt echobt commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Repo now matches the live tip: only bounty (2000 bps) and proof (8000 bps). Off challenges are deleted as products so operators and miners cannot treat leftover code as live work.

Removed challenge ids: relearn, relearn-image, relearn-agent, relearn-mm, design, prism.

Kept: gateway, validator, trustroot, weights, ctx core, bounty, proof. Leftover prism-* crates stay as the Lium harvest stack Proof still uses (harvest-pod, prism-lium*, prism-store*, prism-recipe, …). Applied SQL migrations are untouched. Frozen specs (docs/DESIGN_CHALLENGE.md, docs/PRISM.md) and xtask design-check stay. Historical miner stubs remain under docs/external-miner/relearn*.md so old links do not 404.

Not done (intentionally): no invented proof-eval digests or pin secrets. Proof and Bounty fail-closed paths are unchanged. deploy/pins/{staging,prod}.json drop dead design-challenge / prism-challenge entries only; bounty/proof image pins will land when images.yml next records CI digests.

Docs: InferenceOffer / proxy_model wording is the RLM judge agent baked into the eval image that evaluates miner submissions, not a miner training proxy.

Deleted surfaces

  • Bins: relearn-challenge, relearn-t2i-challenge, relearn-agent-challenge, relearn-mm-challenge, design-challenge, design-egress-proxy, prism-challenge, challenge-review; ctx off / relearn|image|agent subcommands
  • Crates: all relearn-*, design product crates, prism challenge-only crates (prism-challenge*, prism-emit, prism-pipeline, prism-intake, …), site-prism, review-docker, challenge-agentic*, challenge-ast, submission-gating
  • Compose / CI: relearn/mm profiles and services, prism-pod image jobs, dead env examples
  • Operator docs/runbooks and miner examples for those products
  • Live ops: weights-smoke / prod-burn-seal.sh cover both paid challenges (D24) before sealing, pinned to one chain tip/epoch so a block between posts cannot 409

Greptile

Every PR is reviewed by Greptile before merge. Config: .greptile/.

  • Greptile P1 (split epoch on burn-seal) fixed: --print-meta + shared --epoch/--block-b
  • If the bot was silent, I commented @greptile-apps review (file-count bypass)

Test plan

  • GitHub CI fmt · clippy · test · deny · xtask on e1a9849b (includes compose matrix)
  • Local cargo test --workspace / cargo deny check / xtask gates
  • cargo clippy -p weights-smoke --all-targets -- -D warnings after the shared-epoch pin
  • CI on HEAD 089cf9cc

Risk

No emission or trust-root row changes. No BASE_* rename. No invented digests. Droplets that still run stale relearn/design/prism containers get force-removed on next master remote-deploy. Prod base-burn-seal.timer will post bounty+proof NoScore on one pinned epoch after this lands.

Naming

I did not rename BASE_* environment variables, deployed host paths
(/opt/base, /run/base, …), GHCR baseintelligence/base package names, or
base-*-v1 cryptographic domain tags, unless this PR’s purpose is a coordinated
cutover documented in docs/NAMING.md.

Open in Web Open in Cursor 

cursoragent and others added 2 commits September 4, 2026 18:59
Remove product code for off challenges so the tree matches the live
tip. Keep gateway, validator, trustroot, weights, ctx core, bounty,
and proof. Leftover prism-* crates stay as the Lium harvest stack
Proof still uses. Frozen specs and historical miner stubs remain.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
Keep historical relearn* miner pages greptile/xtask-valid (gateway host
+ 'no emission' on one line) and use map_or in viewer CSP tests.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
@echobt
echobt marked this pull request as ready for review September 4, 2026 19:03
@cursor

cursor Bot commented Sep 4, 2026

Copy link
Copy Markdown

@greptile-apps review

Large cleanup (dead challenge products only). Please review despite the file-count limit. Live surface is bounty + proof; leftover prism-* crates that remain are the Lium harvest stack Proof still uses, not the retired Prism challenge.

Point miner docs and issue templates at bounty+proof. Default proof_git
matches the live pin. Trim deny license allows that only existed for
deleted design-sanitize/challenge-ast crates.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
@greptile-apps

greptile-apps Bot commented Sep 4, 2026

Copy link
Copy Markdown

Greptile Summary

The emergency production burn sealer now covers both paid challenges, but the two emissions can still select different chain epochs. When the chain advances between the bounty and proof calls, the proof-triggered seal is rejected because the corresponding bounty leaves were submitted for the earlier epoch.

Confidence Score: 4/5

Not safe to merge until the burn-seal workflow pins both challenge emissions to one shared epoch and block.

The reproduced production orchestration succeeds when both calls observe the same tip, but fails when the tip advances between them: bounty writes leaves for one epoch, proof derives and seals the next epoch, and the gateway returns HTTP 409 because the paid bounty leaf set is absent from that sealed epoch.

Files Needing Attention: deploy/scripts/prod-burn-seal.sh

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex produced a finding-comment-proof for a posted P1 finding and prepared the executable advancing-tip D24 reproduction harness along with the exact command used for behavior captures.
  • T-Rex observed a stable-tip control run that completed successfully, based on the stable-tip control seals log.
  • T-Rex ran the advancing-tip scenario and confirmed that advancing tip causes D24 rejection, as captured in the D24 rejection log.
  • T-Rex documented the general-contract-validation-proof, noting environmental limitations and that the harness and command scripts enable deterministic runs by substituting only tip reads and gateway outcomes while executing the prod-burn-seal orchestration.

View all artifacts

T-Rex Ran code and verified through T-Rex

Comments Outside Diff (1)

  1. General comment

    P1 Sequential burn smoke calls can seal an epoch without bounty leaves

    • Bug
      • The bounty --skip-seal invocation and proof invocation each independently obtain the current tip and derive the default smoke epoch. If the tip changes between them, proof seals a distinct epoch containing proof leaves only. Since bounty has a nonzero emission share, the seal rejects with D24 incomplete participant set.
    • Cause
      • weights-smoke derives its default epoch from the call-local chain tip (8_000_000 + tip % 1_000_000), while prod-burn-seal.sh:56 invokes it twice without pinning a shared --epoch and --block-b.
    • Fix
      • Resolve one tip/block and derived epoch once in prod-burn-seal.sh, then pass the same explicit --epoch and --block-b to both bounty and proof invocations.

    T-Rex Ran code and verified through T-Rex

Reviews (2): Last reviewed commit: "fix(ops): retarget burn-seal and e2e run..." | Re-trigger Greptile

weights-smoke defaults to bounty_sk. Prod burn-seal posts NoScore
leaves for both paid challenges before sealing. Operator runbooks and
checklists no longer tell anyone to register prism/design or load
relearn pins.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
@cursor

cursor Bot commented Sep 4, 2026

Copy link
Copy Markdown

@greptile-apps review

HEAD is now 9efaa697 (ops follow-up after your last pass on b3675798). Please re-review: weights-smoke / prod-burn-seal.sh now cover both paid challenges (bounty then proof) so D24 still holds. Live surface remains bounty + proof only.

Those subcommands were removed with the off challenges. Miner docs must
not claim a local stack still speaks them.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
Comment thread deploy/scripts/prod-burn-seal.sh Outdated
if out="$("${BIN}" --gateway "${GATEWAY}" --burn --netuid "${NETUID}" \
--chain-endpoint "${CHAIN}" --challenge-id prism --challenge-sk "${SK}" 2>&1)"; then
echo "$(date -Is) seal start gateway=${GATEWAY} netuid=${NETUID} challenges=bounty,proof"
if out="$( { smoke bounty "${BOUNTY_SK}" --skip-seal && smoke proof "${PROOF_SK}"; } 2>&1 )"; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Pin One Shared Epoch

The bounty --skip-seal call and the proof call each derive their default epoch from a separate chain-tip read. If a block arrives between those calls, bounty submits its required leaves for the earlier epoch while proof seals the newer epoch without bounty leaves. Because bounty has a paid emission share, the gateway rejects that incomplete seal with HTTP 409, leaving the emergency burn bundle stale. Resolve the epoch and block once, then pass the same --epoch and --block-b to both calls.

Knowledge Base Used:

Artifacts

Executable advancing-tip D24 reproduction harness

  • The authored narrow shell harness executes the production burn-seal script with deterministic tip and seal substitutes, showing the race condition.

Exact command used for behavior captures

  • The authored command script records stable and advancing-tip harness executions into their paired output files.

Stable-tip control seals successfully

  • With two sequential tip reads both equal to 100, the production orchestration completes a seal at common epoch 8000100.

Advancing tip causes D24 rejection

  • With sequential tips 100 then 101, bounty posts epoch 8000100, proof derives 8000101, and the proof-triggered seal receives D24 HTTP 409 for missing bounty leaves.

Gateway incomplete-seal integration test

  • The executed gateway integration test verifies that an incomplete participant set returns HTTP 409, confirming the seal rejection behavior.

View artifacts

T-Rex Ran code and verified through T-Rex

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed: weights-smoke --print-meta reads tip once, and burn-seal now passes the same --epoch / --block-b to both the bounty --skip-seal post and the proof seal. A block between those calls can no longer split D24.

Read chain tip once via weights-smoke --print-meta and pass the same
--epoch/--block-b to both leaf posts so a block between calls cannot
split D24 and 409 the emergency seal.

Co-authored-by: Mathis <echobt@users.noreply.github.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.

2 participants