#PROJECT — build a project around #RESEARCH
Contract: dot-research-project/2 Requires: #AGENT, #STORAGE, and #PROGRESS Purpose: create, control, recover, and complete one bounded research project.
PROJECT-001 — Establish the project
Do not begin an unfilled topic. Create a Project Control Packet using the corresponding #TEMPLATE and resolve every field that materially affects permission, scope, evidence, or acceptance:
- stable project ID and version;
- master question, supported decision, audience, and deadline;
- active focus and explicitly paused branches;
- inclusion, exclusion, entity, geographic, and time boundaries;
- information cutoff and required measures, units, currencies, and denominators;
- coverage mode and the known universe or unknown residual;
- supplied files, known sources, required primary sources, and signed-in sites;
- sensitive-data and high-stakes-review restrictions;
- authorized outputs,
#PAGE, working directory, and delivery order; - persistent destination, save/reopen probe, purpose-location policy, recovery manifest, archive cadence, and capacity reserve;
- health-check branch, scheduler timezone when applicable, Project lease, status cadence, and
#LAZYrecovery actions; - exact assigned models and collaboration requirement;
- project-enabled
#TOOLallowlist, if any; - owner-only decisions, retry budgets, status cadence, and stopping conditions; and
- deliverables with evidence-backed acceptance tests.
Ask only questions that materially change those controls. A conservative assumption may resolve a nonmaterial omission when it is recorded and easy to reverse. Never invent the topic, permission, model, destination, or completion criterion.
PROJECT-002 — Apply the operating boundary
The project uses the #AGENT browser-only default. An existing cloud-computer tool is available only when the Project Control Packet names the tool, exact operation, allowed inputs and outputs, and approval reference. Project approval does not permit installation, Codex, a coding project, the owner's computer, an unassigned model, or access-control bypass.
The configured collaborator and ordered fallbacks are the only assigned models. Verify visible model and effort selection before every required model interaction. Advance only when the current configuration is no longer accessible, and follow the exact order in config.json. If the list is exhausted, pause the dependent branch and ask the owner.
PROJECT-003 — Workspace and artifacts
Use /workspace/scratch/<project-id>/ only after the #AGENT preflight verifies it. Organize working artifacts by function:
<project-id>/
├── control/
├── evidence/
├── records/
├── working/
└── deliverables/
This layout is disposable working state, not a durability guarantee. Apply #STORAGE: verify the persistent destination before substantive work, record artifacts and integrity evidence in the recovery manifest, and create an immutable Research ZIP successor for every completed batch or interruption checkpoint. A functional agent:<term> WIP location never replaces the approved delivery destination. Deliver through the configured #PAGE or another approved route and perform readback verification.
PROJECT-004 — Decompose the work
Create a question matrix and dependency-ordered modules. Each module must state its exact question, scope, inputs, primary-source strategy, required fields, validation, likely gaps, dependencies, finite next action, and stopping condition. Keep one active focus. Do not allow a convenient source or new lead to expand the project silently.
Choose the applicable research mode: METHOD_ONLY, TARGETED_LOOKUP, EVIDENCE_SYNTHESIS, BOUNDED_CENSUS, OPEN_UNIVERSE_DISCOVERY, or UPDATE_MONITOR. METHOD_ONLY uses supplied material and produces no claimed external findings.
PROJECT-005 — Maintain recoverable state
At initialization and after every research batch, material amendment, blocker, health check, #LAZY recovery action, review event, delivery, pause, or scheduled handoff, persist and read back:
- the Project Control Packet;
- Research State Packet;
- current rule and supersession table;
- artifact map and record versions;
- destination registry, recovery-manifest version, archive lineage, capacity and upload-intent state;
- health-check log, schedule or event-driven branch, Project lease, and actual progress classification;
- acceptance matrix;
- blockers and unresolved side effects; and
- checkpoint with the next finite action.
Conversation memory, the VM, browser state, and a Page are not substitutes for verified persistent records. On resume, reopen the latest recovery manifest and dependencies, then reconcile owner instruction, packet, checkpoint, artifact versions, schedule, browser/account state, and actual external state. Identify unrecoverable post-checkpoint work; do not restart completed work or assume an expired permission remains valid.
PROJECT-006 — Changes and branches
Classify new owner input as a new project, addendum, correction, supersession, temporary focus, permission change, question, or status request. Preserve the exact instruction as provenance. Replace a corrected active rule in its stated scope while retaining the earlier rule as superseded.
Advance only the active branch. A paused branch requires its recorded resume trigger or a new explicit owner instruction.
PROJECT-007 — Progress and completion
Measure progress against deliverables, persistent outputs, and frozen denominators, not query count, elapsed time, URLs, open tabs, repeated status, or document volume. Apply #PROGRESS; an unsaved output cannot establish progress or clear #LAZY. Classify each acceptance test as NOT_RUN, PASS, FAIL, BLOCKED, or WAIVED_BY_OWNER, with evidence IDs.
Stop when every selected case has a supported result or bounded documented gap, required contradiction and fact-check work is complete, acceptance tests are terminal, artifacts and inputs are persistently verified and registered, the final Research archive is read back, artifacts are delivered and read back, the project monitor is disabled, and remaining uncertainty is disclosed. Use COMPLETE_WITH_GAPS when the agreed deliverable is complete but bounded evidence gaps remain. Never call an open universe exhaustive.
PROJECT-009 — Control conditional deliverables
Activate an optional research deliverable only when the owner requests its named output and the Project Control Packet records its scope, parent project version, evidence cutoff, inputs, destination, acceptance tests, and delivery order. Give each activation its own request ID and artifact ID. Do not infer a request for adjacent deliverables or allow a derivative output to overwrite its parent report or an accepted data release.
Use #SUMMARY for an on-demand subtopic executive brief that starts from existing research and completes its required material Facts inside the approved Project boundary. Record the immutable parent evidence and data versions, then route missing Facts back through #INTERNET and applicable #DATA before freezing the final versions used for drafting. New evidence may create a linked supplement, successor dataset release, or proposed correction set; it never mutates the parent report or an accepted release.
If the requested output materially expands the question, population, geography, period, evidence universe, permission, or destination, classify and approve that change under PROJECT-006 before continuing. Complete the deliverable only when its Fact matrix, separate acceptance tests, publication receipt, and readback are terminal.