Openworks

Research

A research project is a slug, a title, a kind, and a position in a state machine. Everything else hangs off it.

The lifecycle

Projects of kind own move through nineteen states:

ideation -> literature -> poc -> exp_plan -> design -> setup -> run
  -> analysis -> writing -> pre_submit_check
  -> submit_workshop | submit_main -> reviews -> rebuttal
  -> accepted | rejected -> takeaway -> slide -> poster

pre_submit_check replaced three separate states that were each a checklist of the same kind; its sub-items are what used to be those states.

rejected is not a dead end and does not fan back only to writing. It goes to whichever of seven earlier states the rejection actually implicates: ideation, literature, exp_plan, design, analysis, writing or takeaway. A rejection that means "the idea is wrong" and one that means "the prose is unclear" are not the same rejection.

Projects of kind review move through seven:

setup -> lit_review -> drafting -> ranking -> submitted -> rebuttal_audit -> final

Transitions are validated on the server. force: true overrides, for the case where the work really did skip a step.

Entities on a project

Memos, experiments, tables, figures, sections, tex and venues, described in Concepts. All writes are upserts: saving the same slug twice updates rather than duplicating, so an agent that retries does not litter.

Venues

A venue is a submission target. Sections and tex can be scoped to one, which is how the same work carries a four-page workshop version and a nine-page main version without either being a copy that drifts. fork_section and fork_tex make the copy explicit at the moment you decide the two should differ.

Phase inference

The phase dropdown on each project row writes through the same validated transition as advance does, so picking a phase by hand fires the same state.transitioned event and the same agent subscriptions. There is no path that changes a phase without telling the agents.

Each project surfaces related jobs and plan items by vector similarity over the summaries already in your corpus, falling back to a keyword match when nothing is embedded yet. This is why intake and research are the same deployment: the papers you read are the corpus the projects search.