7d3476f946
Prestige loop
- prestigeGain + canPrestige now read state.layers[primary].amount instead
of .best. The threshold is "do you currently hold N LoC", not "have you
ever held N LoC", and the gain reflects what's actually being traded.
- resetLayer wipes best and total too. Each prestige is a fresh slate;
nothing rides through to bias the next run's gain calculation.
- PrestigeButton tooltip: "current/threshold" line and explanatory copy
now reference current upstream amount.
CI
- Tiered gating via job-level `if:`. Non-main branch pushes run only the
pre-build set (lint, secrets-scan, vuln-scan, sast). Pull requests AND
main pushes additionally run test + build-images + image-scan. Main
pushes alone run the Harbor push + cosign + per-package git tags.
- `needs:` cascades skipped upstream jobs to dependents, so we don't
duplicate the condition on every downstream job.
Both package versions bumped to 0.1.6; patch notes entry added.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>