Skip to content

feat: Attested Signatures + UCAN Principal Clarification - #18

Merged
Peeja merged 5 commits into
mainfrom
petra/feat/attested-signatures
Jun 19, 2026
Merged

feat: Attested Signatures + UCAN Principal Clarification#18
Peeja merged 5 commits into
mainfrom
petra/feat/attested-signatures

Conversation

@Peeja

@Peeja Peeja commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

@Peeja
Peeja requested review from alanshaw and frrist as code owners June 7, 2026 01:48
@Peeja
Peeja force-pushed the petra/feat/attested-signatures branch from 9ef8a23 to 0eb1720 Compare June 17, 2026 21:38
Peeja and others added 3 commits June 19, 2026 11:19
Call libforge's reusable go-workspace-test workflow so PRs that share a branch
name with sibling repos are tested against those siblings' branches. When no
sibling has a matching branch, the job is skipped and the normal go-test.yml
remains the signal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* `multikey` and `absentee` go up a level to the root.
* `verification.NewIssuer()` is gone; we can use `multikey.NewIssuer()`
  in every case we have.
* The verifier factory types move `validator`. They're not inherent to
  *validation*, they're just used to configure the validator.
@Peeja
Peeja force-pushed the petra/feat/attested-signatures branch from 5af7875 to 761083d Compare June 19, 2026 15:33
@Peeja
Peeja force-pushed the petra/feat/attested-signatures branch from 761083d to d824485 Compare June 19, 2026 15:35
@Peeja
Peeja merged commit 5afd85f into main Jun 19, 2026
8 checks passed
@Peeja
Peeja deleted the petra/feat/attested-signatures branch June 19, 2026 16:05
bajtos added a commit that referenced this pull request Jul 1, 2026
PR #18 (attested signatures) changed ProvideIdentity to return the
concrete identity.Identity struct and switched consumers such as
manager.NewPieceAccepter to depend on ucan.Issuer. The fx graph no
longer provided ucan.Issuer or ucan.Signer, so the node failed to start:

    missing type: ucan.Issuer (did you mean to Provide it?)

identity.Identity embeds multikey.Issuer, which satisfies both
ucan.Issuer and ucan.Signer. Expose all three shapes via fx.Annotate so
every consumer resolves.

Add an fx.ValidateApp test asserting the identity module provides
identity.Identity, ucan.Issuer and ucan.Signer.

Signed-off-by: Miroslav Bajtoš <oss@bajtos.net>
Assisted-by: Claude:claude-opus-4-8
bajtos added a commit that referenced this pull request Jul 1, 2026
**test: Validate full-server fx dependency graph**

Extract the full-server module composition into app.FullServerModule so
the running `piri serve full` command and the tests share one source of
truth for the dependency graph.

Add TestFullServerModule_ValidateApp, which runs fx.ValidateApp across
each branch of store.StorageModule (in-memory, filesystem, S3). fx
validates the graph in dry-run mode without invoking any constructors,
so no Lotus/eth endpoints are dialed.

The new tests fail - the fix follows in the next commit.

**fix: Provide ucan.Issuer and ucan.Signer from identity module**

PR #18 (attested signatures) changed ProvideIdentity to return the
concrete identity.Identity struct and switched consumers such as
manager.NewPieceAccepter to depend on ucan.Issuer. The fx graph no
longer provided ucan.Issuer or ucan.Signer, so the node failed to start:

```
missing type: ucan.Issuer (did you mean to Provide it?)
```

identity.Identity embeds multikey.Issuer, which satisfies both
ucan.Issuer and ucan.Signer. Expose all three shapes via fx.Annotate so
every consumer resolves.

Add an fx.ValidateApp test asserting the identity module provides
identity.Identity, ucan.Issuer and ucan.Signer.

**docs: Add AGENTS.md with CLAUDE.md symlink**

Document that `pkg/fx/app/full_test.go` must be kept in sync whenever
config options change the fx dependency graph, so the validation test
keeps covering every graph shape.

Symlink CLAUDE.md to AGENTS.md so both agent toolchains read the same
guidelines.
frrist added a commit that referenced this pull request Jul 16, 2026
Completes the Curio PDP integration by collapsing Piri onto a single
harmonydb (Postgres) surface and adopting Curio's implementations instead
of Piri's parallel ones. Validated end-to-end on smelt (Postgres + S3):
init registers the provider, creates a proof set and confirms it on-chain,
then `serve` comes up healthy.

Database (remove GORM)
- Remove gorm.io/* and glebarez/sqlite; delete the gorm models and gormdb
  packages and the dual-DB model. PDPService now holds a single *harmonydb.DB.
- Migrate the piece/commP resolver and piece intake (allocate/commp/park/
  upload) from gorm to harmonydb raw SQL. Drop the sqlite-backed gorm unit
  tests (the code is now Postgres-only; coverage moves to integration).

Registration (Curio contract.FSRegister)
- Replace RegisterProvider's hand-built tx + pdp_provider_registrations
  tracking with contract.FSRegister; confirm by polling on-chain status.
- Drop the Storacha approval onboarding step and the approval gate.

Payments (Curio tasks/pay)
- Adopt the autonomous SettleTask + SettleWatcher; remove the on-demand
  admin payment API/CLI and rail_settlement_waits/withdrawal_waits.

- Remove the legacy RepairProofSet endpoint.

Runtime enablement
- Provision the owner key into eth_keys(role='pdp') and a pdp_services row on
  startup (Curio signs from eth_keys, and pdp_data_set_creates.service FKs to
  pdp_services).
- Add the filecoin_payment_transactions table, omitted from the PDP closure
  schema (its name doesn't match the pdp_*/harmony_* keep-set).
- Provide the node identity as ucan.Issuer for the aggregation PieceAccepter
  (regressed in #18).
- Default the build to the `2k` tag so Curio resolves contract addresses from
  CURIO_DEVNET_* (devnet/smelt); add PIRI_INIT_LOG_LEVEL to surface init logs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
frrist added a commit that referenced this pull request Jul 22, 2026
Completes the Curio PDP integration by collapsing Piri onto a single
harmonydb (Postgres) surface and adopting Curio's implementations instead
of Piri's parallel ones. Validated end-to-end on smelt (Postgres + S3):
init registers the provider, creates a proof set and confirms it on-chain,
then `serve` comes up healthy.

Database (remove GORM)
- Remove gorm.io/* and glebarez/sqlite; delete the gorm models and gormdb
  packages and the dual-DB model. PDPService now holds a single *harmonydb.DB.
- Migrate the piece/commP resolver and piece intake (allocate/commp/park/
  upload) from gorm to harmonydb raw SQL. Drop the sqlite-backed gorm unit
  tests (the code is now Postgres-only; coverage moves to integration).

Registration (Curio contract.FSRegister)
- Replace RegisterProvider's hand-built tx + pdp_provider_registrations
  tracking with contract.FSRegister; confirm by polling on-chain status.
- Drop the Storacha approval onboarding step and the approval gate.

Payments (Curio tasks/pay)
- Adopt the autonomous SettleTask + SettleWatcher; remove the on-demand
  admin payment API/CLI and rail_settlement_waits/withdrawal_waits.

- Remove the legacy RepairProofSet endpoint.

Runtime enablement
- Provision the owner key into eth_keys(role='pdp') and a pdp_services row on
  startup (Curio signs from eth_keys, and pdp_data_set_creates.service FKs to
  pdp_services).
- Add the filecoin_payment_transactions table, omitted from the PDP closure
  schema (its name doesn't match the pdp_*/harmony_* keep-set).
- Provide the node identity as ucan.Issuer for the aggregation PieceAccepter
  (regressed in #18).
- Default the build to the `2k` tag so Curio resolves contract addresses from
  CURIO_DEVNET_* (devnet/smelt); add PIRI_INIT_LOG_LEVEL to surface init logs.

Co-Authored-By: Claude Opus 4.8 (1M context) <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.

2 participants