Bring D-POAF® governance to your Jira project in 15 minutes. A single Python script + ~10 minutes of UI configuration.
D-POAF® (Decentralized Proof-Oriented AI Framework) is a free, open-source framework for traceable governance of AI-enabled software delivery. This kit configures a Jira Software project to track Waves, Prompt Actions, Proof Records, and Dynamic Laws — with full outcome-to-intent traceability.
DPOAF_Jira_Install_Kit_v1.0/
├── README.md (this file — read first)
├── LICENSE.txt (CC BY 4.0)
├── install_dpoaf_jira.py (THE all-in-one installer)
├── config/
│ └── labels_taxonomy.json (D-POAF label taxonomy)
└── docs/
├── manual_setup_guide.md (alternative if you don't run scripts)
├── custom_fields_setup.md (admin upgrade path)
├── jql_cookbook.md (15 JQL queries)
├── dashboard_setup.md (dashboard config)
├── workflow_setup_guide.md (board columns macro-phases)
├── github_integration_setup.md (GitHub for Jira)
└── traceability_jql_filters.md (outcome -> intent chain)
A single Python script (install_dpoaf_jira.py) does 90% of the setup. The remaining 10% requires UI configuration (Atlassian API limitations).
DPOAF (or any other) — create manually first (see Step 1)The Jira REST API requires the project to exist first.
D-POAF® GovernanceDPOAFIn a terminal (PowerShell on Windows, Terminal on macOS/Linux):
# Set credentials
$env:JIRA_URL = "https://yoursite.atlassian.net"
$env:JIRA_EMAIL = "your.email@example.com"
$env:JIRA_TOKEN = "ATATT3xFfGF0..."
$env:JIRA_PROJECT_KEY = "DPOAF"
# Run the installer
python install_dpoaf_jira.py
The script will:
Output at the end will list any remaining manual steps.
These cannot be automated — Atlassian API doesn’t expose them.
The default Jira board has 3 columns (À faire / En cours / Terminé). Replace them with the 4 D-POAF macro-phases.
https://yoursite.atlassian.net/jira/software/projects/DPOAF/board1. Instruct & Scope (rename “À faire” or add)2. Shape & Align (add)3. Execute & Evolve (rename “En cours” or add)4. Learn & Adapt (add)Done (keep as final)Move tickets to their correct column:
3. Execute & Evolve (Sub-Phase = 4)2. Shape & Align (Sub-Phase = 3)3. Execute & Evolve4. Learn & Adapt4. Learn & AdaptDrag-and-drop in the board view, or click each ticket and change its status.
Filters created by the API are not automatically starred. Star them to make them appear in the sidebar.
https://yoursite.atlassian.net/jira/filtersD-POAF in the search box at the topThe 9 D-POAF filters:
The script tries to start the sprint, but the API can be capricious. If the script reports auto-start failed:
https://yoursite.atlassian.net/jira/software/projects/DPOAF/backlogD-POAF Sprint 1 - YYYY-MM-DDOnce started, the board shows the sprint tickets in their correct columns.
The dashboard exists and has 4 colored gadgets, but each needs a filter selection.
https://yoursite.atlassian.net/jira/dashboards/<id>| Gadget position | Color | Filter to select |
|---|---|---|
| Top-left | 🔵 Blue | D-POAF - Active Waves |
| Top-right | 🔴 Red | D-POAF - DL-006 Compliance Violations |
| Bottom-left | 🟣 Purple | D-POAF - PromptRegister (all PAs) |
| Bottom-right | 🟢 Green | D-POAF - Reusable Prompt Library |
For each gadget:
Then click the star (⭐) at the top of the dashboard to add it to your favorites.
This is the killer feature of D-POAF. Here’s how to walk from any outcome back to business intent.
Scenario: You found a commit [AI:claude-sonnet-4-5:PA-001] and want to know why this code exists.
Method 1 — Native Jira navigation (3 clicks, 15 seconds)
PA-001 → click the matching PA resultThat’s it. The chain is walked.
Method 2 — Universal Outcome Search filter (5 seconds to edit JQL)
Use this when you have a less specific outcome (commit hash, keyword, etc.).
REPLACE_WITH_OUTCOME with your outcome:
PA-001 (PA-ID)abc123de (commit hash)sentiment classifier (keyword)claude-sonnet-4-5 (model name)WAVE-EXAMPLE-001 (Wave-ID)The text ~ JQL operator searches across summary, description, comments — everything text-based — at once.
Method 3 — Full chain for one Wave (edit Wave key in JQL)
When you know which Wave you want, this filter shows the complete chain in one view: Wave Epic + all PAs + all Proofs.
DPOAF-1) with your target Wave key (e.g., DPOAF-25)| D-POAF concept | Jira mapping | Detail |
|---|---|---|
| Wave | Epic | Container, lives across sprints |
| Prompt Action | Task | Linked to a Wave Epic via “Epic Link” |
| Proof Record | Task (child of Epic) | Wave closure with PoD/PoV/PoR |
| Dynamic Law | Task with label “dynamic-law” | Reference, not active work |
| Sub-Phase 1-7 | Label phase-X |
Granular phase tracking |
| Macro-Phase 1-4 | Label macro-X + Board column |
Visual via board columns |
| Traceability Thread | Description (rich text) + labels | Model + Config + Context |
| Quality Rating 1-5 | Label quality-X |
DL-007 compliance |
The kit uses ~40 labels organized in 9 categories. See config/labels_taxonomy.json for the full list.
Key compliance labels (filterable via JQL):
d-poaf — global filter (every D-POAF issue)wave / prompt-action / proof-record / dynamic-law — issue categorymacro-1 / macro-2 / macro-3 / macro-4 — lifecycle macro-phasephase-1 to phase-7 — granular sub-phasequality-1 to quality-5 — PA quality ratingreusable-prompt — added to Reusable Librarytraceability-thread-complete — DL-006 compliantpod-approved / pod-partial / pod-not-met — PoD statuspov-approved / pov-partial / pov-not-met — PoV statuspor-approved / por-na — PoR statusSee docs/jql_cookbook.md for the full cookbook. Top 5:
Active Waves in Execute & Evolve:
project = DPOAF AND issuetype = Epic AND labels = "wave" AND labels = "macro-3" AND status != Done
DL-006 Compliance Violations:
project = DPOAF AND labels = "prompt-action" AND labels != "traceability-thread-complete"
Reusable Prompt Library:
project = DPOAF AND labels = "prompt-action" AND labels = "reusable-prompt"
Stale Waves (14+ days inactive):
project = DPOAF AND issuetype = Epic AND labels = "wave" AND status != Done AND updated <= -14d
Full chain for a specific Wave:
project = DPOAF AND (key = "DPOAF-1" OR parent = "DPOAF-1") ORDER BY issuetype DESC
The default install uses labels (no admin needed). For richer typed data, upgrade to custom fields:
See docs/custom_fields_setup.md for the full procedure (requires Jira admin permission).
Connect Jira to your GitHub repo so each PA shows its linked commits/branches/PRs:
DPOAF-7: <message> [AI:claude:PA-001]See docs/github_integration_setup.md for the full setup.
| Error | Cause | Fix |
|---|---|---|
HTTP 401 Unauthorized |
Wrong email or API token | Regenerate token at id.atlassian.com |
HTTP 403 Forbidden |
Not project admin | Ask Jira admin to grant permission |
HTTP 404 Project not found |
Wrong project key | Verify project key (case-sensitive) |
HTTP 410 Gone on /search |
API deprecated | Update to script v2.0 (uses /search/jql) |
| Dashboard gadget filter not bound | API limitation | Configure manually (see Step D) |
| Sprint not started | API edge case | Start manually (see Step C) |
| Filters not in sidebar | Not starred | Star them (see Step B) |
D-POAF® is available across multiple platforms:
DPOAF_Confluence_Install_Kit)Recommended combo: Confluence (docs) + Jira (execution) + GitHub (code) — full traceability stack.
Licensed under CC BY 4.0 — free to use, modify, and distribute with attribution.
D-POAF® is a registered trademark of Inovionix.
© 2025–2026 Azzeddine IHSINE & Sara IHSINE — d-poaf.org
v2.0 — May 2026 (FINAL)
install_dpoaf_jira.py) replaces the 5 previous scriptsPrevious versions:
Made by Sara IHSINE & Azzeddine IHSINE / Inovionix.