specs-actors Master Tracking

Final update on Sept. 11, 2020. No further changes will be made.

This document tracks:

  • Open items that need attention from specs-actors devs: [Open Items]
  • Current schedule and objectives [Schedule]
  • Ongoing initiatives to understand and document specs-actors behavior: [Documentation]
  • Ongoing initiative to come up with scenario tests: [Scenario Testing]
  • Items that have been addressed and no longer require attention from specs-actors devs: [Addressed]

Contents

Open Items (Needs Action)

This section lists any open issues we're tracking. Issues are sorted into sub-sections following specs-actors priority label conventions (P1 / P2 / P3).

  • Issues that have not been given a label are listed under Uncategorized
  • Issues that have an associated open PR are listed under Items with open PRs
    • Once PRs have been merged, they're removed from this section and tracked in Addressed
  • Discussion-based issues are tracked in Discussions
  • Proposals for scenario tests are tracked in Scenario Testing

For all sub-sections, issues are appended in order of ascending issue number.

Uncategorized

These issues have not been categorized.

P1

Required for network launch

Empty!

P2

Beneficial for network launch

P3

Not urgent or important

Discussions

  • Miner: NewDeadlineInfo may calculate negative Challenge and FaultCutoff epochs during first ~70 epochs

Items with open PRs

Items are added in order of ascending PR number.

Have not reviewed the following PRs

Empty!


Changes requested for the following PRs

  • [specs-actors/#1129] prevent faults from double subtracting cc upgrade power
    • Miner: Declaring a replaced CC sector faulty can result in a sector existing in an expiration queue twice

I've reviewed these PRs, and they look ready to merge!

Scenario Testing

Scenario tests are being tracked in this document: https://hackmd.io/@-HV50kYcRqOjl_7du8m1AA/rk9_hCMfv

Currently, there are unimplemented tests:

  • Miner Alice adds and proves a CC sector

Other tests

During review, I came up with a few final tests that should be implemented (some may already exist). Here they are, somewhat categorized:

Unproven sectors

  • Declare an Unproven sector faulty, then recover it
  • Terminate an unproven sector

Expirations / Fault max age

  • Declare a fault for a sector with on-time expiry < fault max age, then attempt to extend its expiration
  • Declare a recovering sector (with rescheduled expiry < fault max age) faulty
  • Miss a PoSt for a sector with on-time expiry < fault max age
  • Submit a PoSt that "skips" a sector with on-time expiry < fault max age
  • Terminate a faulty sector with on-time expiry < fault max age
  • Submit a PoSt for a sector expiring in CurrEpoch, then extend its expiry in the same epoch
    • The same as above, but "extend" its expiry to the same epoch (ExtendSectorExpiration allows 0-epoch extensions)
  • Expiries are processed by handleProvingDeadline, so they may exist un-processed for up to 1 day after their on-time expiration before being picked up by cron. Tests for these sectors:
    • Declare it faulty
    • Submit a PoSt for it
    • Terminate it
    • Extend its expiry

Misc

  • Declare a recovering sector faulty
  • "Skip" a sector during PoSt, but terminate it before cron picks it up

Schedule

This section outlines the current schedule and objectives for the assessment phase.

Phase 1 (pre-testnet)

Date Primary Objective(s) Secondary Objective(s)
July 6 - 10 Work on actor documentation
July 13 - 17 Finish specs for all actors - Keep specs up-to-date with master
- Rough draft high-level documentation. Focus on roles/permissions/responsibilities.
July 20 - 24 In-depth review of the more complicated actors (market, power, miner) - Compile findings / recommendations. Help prioritize fixes/improvements.
- Continue maintaining/improving documentation
July 27 - 31 Diligence Hiatus - Daniel/Alex are out of office. - N/A

Phase 2 (pre-mainnet)

Date Primary Objective(s) Secondary Objective(s)
Aug 3 - 7 1. Catch up on last week's progress.
2. Plan and prepare for rest of Phase 2
- Review commits made since July 24
- Update specs where applicable
- Begin thinking about final report deliverable
- Further work on Miner docs
Aug 10 - 14 1. Assess state of testing
2. In-depth review: Miner/Power/Market
Continue work on docs/specs
Aug 17 - 21 In-depth review: Miner/Power/Market Continue work on docs/specs
Aug 24 - 28 In-depth review: Miner/Power/Market Continue work on docs/specs
Aug 31 - Sept 4 In-depth review: Miner/Power/Market Continue work on docs/specs
Sept 7 - Sept 11 Complete final report; deliver by EOD Sept 11 N/A

Limitations

I'm going to use this section to keep track of things I don't think I will have time to review in as much detail as I'd prefer.

This section will only speak to things that are technically within scope (as defined here).

  • Unit tests
    • Efficacy of current unit tests (do tests actually test the things they purport to)
    • Coverage of current unit tests
  • Miner
    • Deadline assignment
    • Epoch quantization
    • CompactPartitions

Documentation

Up-to-date with commit: c9027ee

Singletons

Actor Status Link
Init Complete https://hackmd.io/G3eaXOcWSxKLQkhvoQZYFg
Reward WIP https://hackmd.io/VMNxxYtGTw6V_jYr-WzE_g
Cron Complete https://hackmd.io/NbFUvwUnTaOa9e0dtcouiA
StoragePower Complete https://hackmd.io/BYSfLi9qTfCBj_gb6mLFSA
StorageMarket Complete https://hackmd.io/v3GZbV9GTt2AIO2li44Tzw
VerifiedRegistry Complete https://hackmd.io/pO-gQ5jPTEKHXlZAzXC2YQ

Instanced

Actor Status Link
Account Complete https://hackmd.io/puigQDo1TFCEPmFrWnGdfQ
Multisig Complete https://hackmd.io/uemzVhqjSde1bNv91rtl3g
PaymentChannel Complete https://hackmd.io/kKambNsDT8aoeruLlsh0BA
Miner WIP https://hackmd.io/As6TBI7HRqmDyFRgaWROFg

Addressed (No Action Required)

These items have been taken care of. No further action is needed.

Addressed via PR

Issue closed

  • Verifreg.UseBytes: newVcCap is permanently lost if it's smaller than MinVerifiedDealSize
  • Power.OnConsensusFault: Assert pledgeAmount is non-negative
  • Miner.ReportConsensusFault: possible incorrect constraints on faultAge
  • Miner control functions should abort on no-op
  • Miner control functions should abort for empty params
  • Miner: Remove references to variable seal proof types
  • Miner: bubble up error in processEarlyTerminations
  • Miner: Remove state.Transaction where not needed
  • Miner: Correct for potential overflow when iterating over multiaddresses
Select a repo