actions/checkout v4.4.0 refuses to check out fork PR code from a
pull_request_target workflow, so every submission PR from a fork now dies
at the checkout step and the validator never runs.
Rather than opt back in with allow-unsafe-pr-checkout, drop the fork
checkout entirely. The validator reads exactly one thing from the PR --
the submission markdown -- so those blobs are fetched by path from the
contents API instead. The fork's working tree never lands on the runner,
which removes the pwn-request exposure the guard exists for rather than
declaring it acceptable, and leaves nothing to re-audit when this job
grows a build or lint step later.
Also:
- Read the prize spec from base/ rather than the PR. It is repo-owned, so
the base branch's copy is authoritative; the fork's is a stale snapshot
from whenever it branched, which also made the closed/draft check read
outdated status.
- persist-credentials: false on the base checkout. Nothing here pushes.
- Bound the submitter-supplied external clone and the one full-content
scan of it with timeouts, no submodules, and no auth prompts.
The deep verifier is redeployed after an audit found the gate under-bound: it
read the balance of whichever account signed without requiring that to be the
account the witness attests to, and the marker it left on chain recorded that a
gate ran without recording what it demanded.
Updates the superseded identifiers, states the four bindings the gate now
enforces instead of the anchoring claim that did not hold, documents the
deployed 3xxx error codes, corrects the test count to 90 and separates user
cycles from proving cycles. Also removes a truncated transaction hash that no
longer resolves.
Corrects claims that no longer held, and records the work done since the original
submission.
The dead transaction: the write-up still cited 262bbe95...6babfd5e twice with
explorer links. That transaction was wiped by the testnet reset, so both links
were dead. This is the same problem raised in review, still present in the
submission document itself.
The on-chain claim: the write-up said the v3 verifier 'validated a real
Risc0-receipt-bound ECDSA signature' and presented that as the on-chain path. The
v3 gate verifies no zero-knowledge proof, and no program on the LEZ public path
could, since the sequencer re-executes rather than proves. The document now
describes the deep gate on the privacy-preserving path, where LEZ's privacy
circuit discharges a chained call with a real env::verify and the sequencer
verifies the receipt against the pinned PRIVACY_PRESERVING_CIRCUIT_ID, and where
the threshold is checked against the balance LEZ itself anchors rather than the
caller-supplied witness.
Also corrected: the transaction table (4 rows to 7), 'Eight on-chain
transactions', the superseded outside-party criterion, E2E tests described as
being in CI while pointing at ignored tests, 57 tests (now 76), 7 CLI subcommands
(now 8), and the off-chain path described as an in-memory backend with a stubbed
Qt bridge rather than the Waku transport that now exists.
Every transaction hash in the document resolves, and every link was opened.
Previous convention omitted the `dependencies:` field entirely when an
LP had no hard deps. This change makes the field mandatory on every
LP: use `dependencies: []` for standalone LPs. A missing field now
signals the author hasn't considered deps yet (lintable); `[]` signals
considered and none.
This aligns with the convention in logos-co/rfp PR #64.
- LP-0000.md (template): replace the conditional frontmatter example
with `dependencies: []` and a comment explaining the new convention.
- LP-0001..LP-0017 (excluding LP-0007 which does not exist and LP-0013
which already declares an RFP-001 hard dep): add `dependencies: []`
YAML frontmatter at the top of each file.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Aligns the L-Prize repo with logos-co/rfp PR #64, which standardised
dependency declarations as a structured `dependencies:` field in YAML
frontmatter (a list of `{ id, reason }` objects).
- LP-0013: adds frontmatter with the RFP-001 dependency; removes the
markdown `## Dependencies` section.
- LP-0001, LP-0004, LP-0006: drop the markdown `## Dependencies`
section. Their hard deps are platform features (LEZ NFT Program,
LEZ timelock, Logos Delivery, Logos Chat) with no canonical
RFP-/LP- ID, so no frontmatter entry is added — matching the
RFP-003 precedent in logos-co/rfp PR #64. The dependency
information is already captured in each file's status banner.
- LP-0000.md (template): replaces the markdown `## Dependencies`
section with a frontmatter example in an HTML comment, noting that
the field is included only when there are real hard deps with
canonical IDs and is otherwise omitted entirely (no `[]`), per the
L-Prize convention.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per maintainer feedback on PR #69, LPs without hard dependencies should
not carry an empty `## Dependencies` section. Removes the section from
LPs that previously declared `(none)` (LP-0002, LP-0003, LP-0005,
LP-0008, LP-0009, LP-0010, LP-0011, LP-0012, LP-0014, LP-0015, LP-0016,
LP-0017). LP-0001, LP-0004, LP-0006, LP-0013 retain the section because
they have real hard dependencies.
The template (LP-0000.md) still describes the section, but the body
now instructs authors to add it ONLY when there are real deps and to
omit the entire section otherwise.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Introduces a `## Dependencies` section in the LP template (LP-0000.md) and
adds the same section to every existing prize in `prizes/`. The section lists
other L-Prizes, RFPs, R&D items, or sample apps that must complete or exist
before each Lambda Prize can be announced or claimed, using canonical IDs
(LP-XXXX, RFP-XXX, ...).
This is non-breaking: only structure is added or normalized. Existing
dependency information previously expressed in status banners or prose
(LP-0001, LP-0004, LP-0006, LP-0013) is now also captured in the new
section. LPs whose related-LP cross-references are non-blocking (LP-0008,
LP-0016, LP-0017) declare `(none)` and clarify the related links in
Resources.
The goal is to give downstream tooling (e.g. flywheels.logos.co) a single
machine-readable place to discover LP dependencies.