Skip to main content

dopeTask - deterministic task-packet lifecycle + gates

Project description

dopeTask is a deterministic task-packet execution kernel that plans one path or refuses with evidence.

Guarantees

  • Artifact-first: if it did not write an artifact, it did not happen.
  • Refusal-first: invalid or unsafe inputs produce a structured refusal with a stable exit code.
  • Deterministic: identical packet + declared inputs + dopeTask version yields identical outputs.
  • Single-path: no hidden retries, no fallback runners, no background execution.

Kernel Manifesto

dopeTask is strict by design:

  • one packet, one scoped objective
  • one path, or explicit refusal with evidence
  • one artifact trail that can be verified end to end

The goal is operational trust, not convenience theater.

Anti-Features

dopeTask intentionally does not provide:

  • hidden retries
  • silent fallbacks to alternate runners
  • undocumented file writes
  • background mutation outside declared packet scope

Kernel FAQ

Why does dopeTask refuse so often?
Because refusal protects determinism and keeps artifacts trustworthy.

Why require proof bundles?
Because claims without command output are not verifiable.

Why avoid background behavior?
Because state changes must remain explicit, local, and auditable.

Determinism Stress Test

Re-run the same packet under the same inputs and version.
If outputs differ, treat it as a bug and capture evidence before retrying.

Install

InstallationRelease GuidelinesContributingSecurity Policy


🦾 What is dopeTask?

Imagine a task runner that doesn't trust the internet, doesn't trust your system clock, and definitely doesn't trust random file mutations. That's dopeTask.

dopeTask is a rigorous system for managing the lifecycle of "Task Packets"—self-contained units of work. It is built for environments where "it works on my machine" is considered an admission of guilt.

🌟 Why You'll Love It (Or Fear It)

  • 🔮 Deterministic Time Travel: We mock time. Literal time. Your builds will produce the exact same artifacts today, tomorrow, and in 2050.
  • 🛡️ The Great Allowlist: Files don't just "change." They apply for a visa. Our AllowlistDiff system catches unauthorized mutations before they even think about becoming a commit.
  • 🔌 Offline by Design: dopeTask assumes the internet is down. If your build needs npm install to run, go back to square one.
  • 🧬 Audit Trails: Every run produces a forensic verification trail. Who ran it? When? with what inputs? It's all in the JSON.

🔄 The Lifecycle

dopeTask treats code changes as a manufacturing pipeline.

graph LR
    A[Spec Mine] -->|Compile| B(Task Queue)
    B -->|Run| C{Task Packet}
    C -->|Execute| D[Run Workspace]
    D -->|Collect| E[Evidence]
    E -->|Verify| F{Compliance Gate}
    F -->|Pass| G[Promotion Token]
    F -->|Fail| H[Quarantine]
    G -->|Commit| I[Git History]

    style A fill:#f9f,stroke:#333,stroke-width:2px
    style C fill:#bbf,stroke:#333,stroke-width:4px
    style G fill:#9f9,stroke:#333,stroke-width:2px
    style H fill:#f99,stroke:#333,stroke-width:2px
  1. Compile: Task definitions are mined from your specs and compiled into immutable packets.
  2. Run: A packet is executed in an isolated workspace.
  3. Gate: The output is scanned. Did it touch a file it wasn't supposed to? REJECTED.
  4. Promote: Only if the gate passes do you get a PROMOTION.json token.
  5. Commit: You cannot commit without a token. (We check.)

Deterministic Task Execution

dopeTask uses isolated git worktrees and commit plans to ensure:

  • linear main history
  • one packet = one commit stack
  • deterministic rebases and fast-forward merges
  • zero accidental commits on main

See docs/WORKTREES_COMMIT_SEQUENCING.md for details. If a packet includes a COMMIT PLAN, execute it with dopetask commit-sequence; manual commits can break determinism guarantees. See docs/TASK_PACKET_FORMAT.md.


🚀 Quick Start

Get up and running faster than you can say "idempotency."

1. Installation

You can install dopeTask via pip, uv, or our unified installer script.

Using uv (Recommended):

uv tool install dopetask
dopetask --version

Using pip:

pip install dopetask

Using the Unified Installer (for Repo Wiring):

The installer script sets up a pinned environment and repository integration:

# Latest stable version
curl -fsSL https://raw.githubusercontent.com/hu3mann/dopeTask/main/scripts/install.sh | bash

Need manual installation or wheel support? Check the Detailed Installation Guide.

2. The "Hello World" Loop

Let's run a loop. A loop creates tasks, runs them, checks them, and promotes them.

dopetask --help

See docs/01_INSTALL.md for developer workflows and testing.

60-second example

dopetask route init --repo-root .
cat > PACKET.md <<'EOF'
# Packet
ROUTER_HINTS:
  risk: low
EOF
dopetask route plan --repo-root . --packet PACKET.md
ls -1 out/dopetask_route/

Expected outputs:

  • out/dopetask_route/ROUTE_PLAN.json
  • out/dopetask_route/ROUTE_PLAN.md
  • out/dopetask_route/HANDOFF.md (for handoff flows)

Docs

  • Overview: docs/00_OVERVIEW.md
  • Install: docs/01_INSTALL.md
  • Quickstart: docs/02_QUICKSTART.md
  • Architecture: docs/10_ARCHITECTURE.md
  • Public contract: docs/11_PUBLIC_CONTRACT.md
  • Router: docs/12_ROUTER.md
  • Task packet format: docs/13_TASK_PACKET_FORMAT.md
  • Project doctor: docs/14_PROJECT_DOCTOR.md
  • Worktrees and commit sequencing (maintainers): docs/20_WORKTREES_COMMIT_SEQUENCING.md
  • Case bundles (maintainers): docs/21_CASE_BUNDLES.md
  • Release (maintainers): docs/90_RELEASE.md

Kernel vs ecosystem

dopeTask (kernel) validates packets, plans deterministically, executes one path (or emits a manual handoff), and writes canonical artifacts.

Everything else (scheduling, orchestration, memory, UX) belongs in the ecosystem above the kernel.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dopetask-0.2.0.tar.gz (246.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dopetask-0.2.0-py3-none-any.whl (233.7 kB view details)

Uploaded Python 3

File details

Details for the file dopetask-0.2.0.tar.gz.

File metadata

  • Download URL: dopetask-0.2.0.tar.gz
  • Upload date:
  • Size: 246.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dopetask-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3d4628d060570361714218d12953d83096a8bcb2c606959f1c0e752a4d07dd8d
MD5 4400396815582d8df9bb82c16461d062
BLAKE2b-256 f492a599eb3b8ecfb78dbd4b891421d0fc89a3c20e195308387ebbf85a651ef3

See more details on using hashes here.

File details

Details for the file dopetask-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dopetask-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 233.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dopetask-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2dd03a7a1017c2193e875f485566767e96d1bcb7db08c9b6cf9045fc139d8489
MD5 e46f1659421a063fa0baab9e80fc6345
BLAKE2b-256 f8e7b6c012566409d48d9a6cb9f634e4343e07d378282768d0700202b76a3d81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page