summaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-12-20 23:27:22 -0800
committerBryan Newbold <bnewbold@robocracy.org>2018-12-20 23:27:22 -0800
commitb96964bd867c17619cfaf62da517852ac35cdb1c (patch)
tree33a0fdabe2dbf5d19d8df9a7fe223dcf02dbdcff /TODO
parent42933fd13c11dce9dbfe6dd44132a633786e0796 (diff)
downloadfatcat-b96964bd867c17619cfaf62da517852ac35cdb1c.tar.gz
fatcat-b96964bd867c17619cfaf62da517852ac35cdb1c.zip
update TODO
Diffstat (limited to 'TODO')
-rw-r--r--TODO122
1 files changed, 34 insertions, 88 deletions
diff --git a/TODO b/TODO
index 28c83ee9..e1a2417d 100644
--- a/TODO
+++ b/TODO
@@ -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