diff options
| author | Bryan Newbold <bnewbold@robocracy.org> | 2018-12-20 23:27:22 -0800 | 
|---|---|---|
| committer | Bryan Newbold <bnewbold@robocracy.org> | 2018-12-20 23:27:22 -0800 | 
| commit | b96964bd867c17619cfaf62da517852ac35cdb1c (patch) | |
| tree | 33a0fdabe2dbf5d19d8df9a7fe223dcf02dbdcff | |
| parent | 42933fd13c11dce9dbfe6dd44132a633786e0796 (diff) | |
| download | fatcat-b96964bd867c17619cfaf62da517852ac35cdb1c.tar.gz fatcat-b96964bd867c17619cfaf62da517852ac35cdb1c.zip | |
update TODO
| -rw-r--r-- | TODO | 122 | 
1 files changed, 34 insertions, 88 deletions
| @@ -1,89 +1,42 @@  ## Next Up -PLAN: -x update openapi schema with all the below -x python tests (that fail) -x rust stubs (to compile) -- rust tests -    => get and delete edits -    => redirect an entity (via PUT) -    => un-delete an entity (via PUT) -- implement until rust tests pass -- implement until python tests pass - -- nomination form/thing for long-tail fatcat targets -- check on LOCKSS -- ask adam for nagios/ansible setup -- arxiv.org mirror - - -DOCUMENT/TEST EDGE CASES: -- PUT updating entities in an editgroup: overwrite edit, or require previous -  edit to be deleted first? -- prev_revision flag: must always be set as a sanity check for edits? what -  about when previous state was deleted? -- when a redirect has the redirect target deleted, what happens? decision: -  "state" shouldn't change without an update to the entity, though revision_id -  and redirect_id *can* change -- "redirect to redirect" condition. decision: leaf should have redirect_id set -  to end of chain... but need to worry about the delete/undelete states in that -  case -- edit to redirect A to B is started. B is updated and/or redirected and/or -  deleted. then A edit is merged. ensure that editgroup accept process handles -  this correctly -- auto-accpet behavior when there were other edits in same group already (or -  should we just disallow that?) -- "current editgroup" behavior, which should probably just disallow -- use of "state" in entities as a flag for redirects and direct revision -  updates -- reverting to current version isn't allowed -- get of "wip" entities; make sure to check status? hrmpf. -- consider dropping CORE identifier - -NOTE: maybe in the future we can make it easier on ourselves by just saying -    that if an entity has redirects to it, it can't be deleted or redirected - -x TODO: don't allow redirect to "wip" rows -    => needs test (python) -- TODO: fix returned error messages; should return type (shortname), and then -    actual message/description -- TODO: maybe better success return message? -- allow 'expand' in lookups (particularly for releases/files) -    => needs test (python or rust) -- idea: allow users to generate their own editgroup UUIDs, to reduce a round -  trips and "hanging" editgroups (created but never edited) -- API: deletion of empty, un-accepted editgroups -- TODO: elastic inserter should handle deletions and redirects; if state isn't +- all errors should result in transaction rollback +- test: re-deleting a deleted entity should be 4xx, not 5xx +- test: can't delete an accepted edit +- test: redirect to a WIP row +- test: revert to current version (should be disallowed) +- test: hide/expand in lookups +- test: python get revision endpoint, whether accepted or now +- test: GET redirects endpoint +- test: additional edits, editgroup already accepted +- test: prev_rev in various cases +- test: release pointing to a collection that has been deleted/redirected (etc) +- many webface tests: +    => entity redirects, wip, deletions +    => sub-entity redirects, wip, deletions +- test: new release points to new container; then container deleted from +    editgroup and editgroup accepted +    => also web UI +- handle wip, deleted, redirects in web UI +- remove the concept of "active editgroup" +- elastic inserter should handle deletions and redirects; if state isn't    active, delete the document      => and an end-to-end test of this behavior. hoo-boy. +- release_year (in addition to date) -- test/read: fetching deleted and redirected entities via API and web interface -- large refactor: make many endpoints entity-agnostic (passing entity-type as a param) - -- redirecting and reverting endpoints -    => in PUT, path for handling redirect_ident or revision -    => this means can't have any required fields for any entities in API schema -- insertion of entity edit rows should be postgres upserts based on ident and editgroup -    => need UNIQ constraint? -- python test: re-deleting a deleted entity should be 4xx, not 5xx -- python test: can't delete an accepted edit - -x API endpoints (GET, DELETE) for entity edits -    => to allow removing individual edit from editgroup -x API endpoints (GET) for entity revisions -x API endpoints to find entities that redirect to an ident -- what to do with redirect-to-redirect, or deletion of redirect? -    => for redirect-to-redirect, point to new redirect -    => for deletion of redirect, keep redirect, but remove revision -x API endpoints additional lookup params - -- enforce "no editing if editgroup accepted" behavior -- require and enforce "previous_rev" required in updates -- redirect rev_id needs to be updated when primary changes -- redirect/delete/update/lifecycle tests and completeness -- basic webface creation, editing, merging, editgroup approval +## Ideas +- fast path to skip recursive redirect checks for bulk inserts +- when getting "wip" entities, require a parameter ("allow_wip"), else get a +  404 +- consider dropping CORE identifier +- fix returned error messages; should return type (shortname), and then actual +  message/description +- maybe better 'success' return message? eg, "success: true" flag +- idea: allow users to generate their own editgroup UUIDs, to reduce a round +  trips and "hanging" editgroups (created but never edited) +- API: allow deletion of empty, un-accepted editgroups  - refactor API schema for some entity-generic methos (eg, history, edit    operations) to take entity type as a URL path param. greatly reduce macro    foolery and method count/complexity, and ease creation of new entities @@ -95,13 +48,10 @@ x API endpoints additional lookup params  - refactors and correctness in rust/TODO  - importers have editor accounts and include editgroup metadata -- enforce single-ident-edit-per-editgroup -    => entity_edit: entity_ident/entity_editgroup should be UNIQ index -    => UPDATE/REPLACE edits?  - crossref importer sets release_type as "stub" when appropriate -- re-implement old python tests  - real authentication and authorization  - metrics, jwt, config, sentry +- importers:  don't insert wayback links with short timestamps  ## Metadata Import @@ -126,13 +76,9 @@ new importers:  ## Entity/Edit Lifecycle -- redirects and merges (API, webface, etc) -- test: release pointing to a collection that has been deleted/redirected -  => UI crash? +- redirects and merges (webface, etc)  - commenting and accepting editgroups  - editgroup state machine? -- enforce "single ident edit per editgroup" -    => how to "edit an edit"? clobber existing?  ## Guide / Book / Style | 
