# Ppdb Wp Signoff

> Use when a Sobrus workpackage is proposed as complete, when preparing a comité de pilotage review, or when asked whether WP0–WP5 is ready to close.

- Skill: `ahinleew-aivju833/ppdb-wp-signoff` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ahinleew-aivju833/ppdb-wp-signoff`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahinleew-aivju833/ppdb-wp-signoff/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ahinleew-aivju833 (https://skillmd.com/u/ahinleew-aivju833)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ahinleew-aivju833/ppdb-wp-signoff

---


# Signing off a PPDB workpackage

## Overview

A workpackage is complete when its **deliverables exist** and its **tracker rows
agree**. Those are two different sources, and they disagree more often than not —
the dashboard holds cached values, not live formulas.

**REQUIRED:** the `using-ppdb-mcp` skill covers connection and tool selection.

## Steps

1. **Get the full picture in one call.**
   ```
   ppdb_get_workpackage(wp="WP2")
   ```
   Returns the objective, sub-tasks, deliverables table, its tracker rows, and the
   dashboard rollup together — this is the only view that joins them.

2. **Check every deliverable has an artefact.** The `livrables` table lists what the
   WP owes with its échéance. A deliverable with no artefact blocks sign-off
   regardless of task status.

3. **Reconcile the two counts.** Compare the WP's tracker rows against
   `ppdb_get_project_status`. If the dashboard says 3 terminées and the rows show 2,
   **trust the rows** — the dashboard is a stored value, not a formula.

4. **Block on open critical actions.**
   ```
   ppdb_list_tracker_actions(wp="WP2", priorite="Critique")
   ```
   Any 🔴 Critique not `✅ Terminé` blocks sign-off.

5. **Confirm the approver.** Sign-off authority is in the RACI, not the tracker:
   ```
   ppdb_get_raci(activite="<the WP's main activity>")
   ```
   The **A** is who approves. **R** did the work — they are not the same person, and
   R cannot sign off their own work.

## Reading the tracker correctly

Rows whose action starts with `→` are **phase deliverables, not tasks**
(`is_livrable` in json output). A WP whose ordinary tasks are done but whose
`→ LIVRABLE` row is still open is not complete.

Status vocabulary is fixed: `⬜ À faire`, `🔵 En cours`, `✅ Terminé`, `⛔ Bloqué`,
`⏸ En pause`. Anything else means someone typed over the dropdown.

## Common mistakes

**Trusting the dashboard alone.** It is a cached number. Reconcile against rows.

**Counting `→ LIVRABLE` rows as tasks.** They are gates.

**Ignoring a `⛔ Bloqué` row because its task looks minor.** Blocked is blocked;
report it and name the blocker from the `notes` column.

**Letting R sign off.** Check the RACI for the A.

**Declaring a WP done because its échéance passed.** Dates are targets, not evidence.

## Red flags

- About to report completion without having called `ppdb_get_workpackage`
- Dashboard and tracker rows disagree and you picked the flattering number
- An open 🔴 Critique action you decided was "not really blocking"
- No named approver from the RACI in your conclusion

