Skip to content

Ownership Model

ThinkWork draws authority by data kind, not by feature. A Goal has files and database rows, but each fact inside the Goal still has one authoritative home.

Data kindAuthoritative homeExamplesWhy it lives there
Working and narrative contentS3 files, synced into /workspaceContext, docs, memory notes, decisions, artifacts, handoffsPlain text is readable, portable, diffable, and natural for an agent to work with.
Structured workflow stateDatabaseTask status, required flags, Goal lifecycle, review policyTransactions and constraints protect concurrent users, automations, and agents.
Access and binding stateDatabaseSpace membership, thread binding, tenant/user grantsAccess checks must be server-authoritative and current.
Status-bearing workspace filesDatabase-rendered read-only projectionGOAL.md, PROGRESS.mdThe agent needs to read status as files, but the database remains the authority.
File indexes and hydrate metadataDerived projection.hydrate_manifest.json, file listsThey are rebuildable from the source folders and database.
SecretsSecrets Manager or SSM referencesecret://... aliases, approved ARNsSecret material should not live in markdown or S3 workspace files.
  1. No fact is authoritative in both files and the database.
  2. GOAL.md and PROGRESS.md are read-only status projections.
  3. The agent changes structured status through transactional tools, not file edits.
  4. The agent changes working content by writing files, then reconcile writes those files back to S3.
  5. Derived projections can be rebuilt from their authorities.

Structured status is multi-writer state. A user can update a checklist, an automation can trigger a worker, and an agent can complete work through a tool. Those updates need transactions, constraints, and consistent reads.

Markdown is a good interface for narrative work. It is not a safe authority for “this required task is complete” or “this Goal is ready for review” when multiple writers can act at once.

Use files when the content is prose, working context, narrative output, or a source the agent should directly edit:

  • docs/customer-onboarding-intake.md
  • memory/preferences.md
  • DECISIONS.md
  • ARTIFACTS.md
  • HANDOFFS.md
  • skills/<slug>/SKILL.md

Use the database when the value is status, policy, identity, access, or a queryable workflow fact:

  • linked task status and required flags
  • Goal lifecycle and review state
  • Space membership
  • thread ownership and binding
  • runtime policy selections
  • task assignee labels and department labels

Use secret references when content needs credential material:

secret://tenant/salesforce/oauth-token

The reference can appear in configuration where approved. The secret value itself does not belong in a workspace file.

  • Edit Agent, Space, User, and narrative Thread files for working content.
  • Use task, Goal, access, and review actions for structured state.
  • Treat GOAL.md and PROGRESS.md as readable status snapshots.
  • Treat .hydrate_manifest.json and .rendered_at as runtime metadata, not authoring surfaces.
  • Keep credentials out of markdown and use the configured secret surfaces.