pureinn.docs
Phase Cross-phaseAgent mode: synthesisv1.6.0

pm-audit

Workspace health check - scans Pureinn artifacts against framework conventions, fixes drift, surfaces strategic contradictions

/pm-audit▊

When to use

  • After pm-reconcile or pm-reverse-extract, as a verification pass
  • When a workspace was built with an older Pureinn version
  • Before continuing work after a long break, to confirm internal consistency
  • After a strategic pivot, to check whether the strategy layer still agrees with itself

What it produces

  1. Audit Report (audit/audit_report.md) - findings by severity (P0-P3), scored
  2. Mechanical fixes applied in place - with a diff summary
  3. AskUserQuestion round - for every judgment call that cannot be auto-fixed

How to invoke

/pm-audit                  # whole workspace (Tier 1 + Tier 2)
/pm-audit domain           # domain/entities.md + domain-model.md only (Tier 1)
/pm-audit rules            # business_rules.md + decision_models.md only (Tier 1)
/pm-audit features         # feature_list.md + features/cards/ only (Tier 1)
/pm-audit open-questions   # domain/open_questions.md only (Tier 1) - ID hygiene, no duplication elsewhere
/pm-audit strategy         # strategic layer only (Tier 2 - read-only)
/pm-audit [artifact-name]  # any specific artifact named by the user
/pm-audit --agent          # autonomous full-workspace audit

Two tiers

Tier 1 - Form (mechanical): Naming, IDs, cross-references, lifecycle validity, schema conformance, metadata completeness, framework-version drift. Tier 1 findings are auto-fixed in place. No judgment calls - pure structural integrity.

Checks include:

  • BR-ID and TBL-ID format compliance

  • Feature Card frontmatter completeness and lifecycle state validity

  • Feature Set naming convention (FS-NN format)

  • Cross-reference resolution (does every BR-ID reference in a Feature Card resolve in business_rules.md?)

  • Framework version drift (artifacts missing fields introduced in newer Pureinn versions)

  • Edge Case Coverage - a card at 2_Spec_Done or later without the table (pre-5.62.0) is reported and routed to /pm-feature-design [FEAT-ID] --edge-cases, active cards first; the audit never writes the missing ACs itself. For cards that have the table: exactly the 6 canonical rows, no empty/TBD cell from 3_Ready_to_Build on, no N/A without a feature-specific reason, and every AC-ID / OQ-ID in it resolves (a dangling one is P0, same as a BR-ID)

  • Open questions hygiene - open items have exactly one home, domain/open_questions.md (Live Register 5). Flags an "Open Questions" section reappearing in PRD/Roadmap/Feature Cards/reconcile reports, duplicated open-item text, or an OQ-/DIV-/BLK- ID that doesn't resolve to a register entry.

  • Prototype hygiene - report-and-route, never auto-fixed. Runs on a whole-workspace run and on /pm-audit features; skipped when there is no prototypes/ folder. Four checks, each routed to /pm-prototype:

    • a prototype folder whose meta.md says Decision: open, reported with its purpose and its age from the Created date (no date - no age, never estimated) - P2
    • a PRT- ID in a production register (feature_list.md, a Feature Card id / file name / dependency, business rules, decision models, entities). It must never be there; the only legitimate places are a card's promoted_from: value and the prototype reference path - P1
    • a Feature Card whose promoted_from: names a PRT- ID or prototype folder that does not exist - P1
    • a workbench prototype (Purpose: workbench) with a built feature that has no phase while others have one - P2. A workbench where no built feature has a phase yet is still diverging and is only noted

    The audit never closes a prototype decision, never turns a PRT- ID into an invented FEAT-ID, never deletes a promoted_from: line and never assigns a phase - those decisions belong to /pm-prototype.

Tier 2 - Substance (strategic - read-only): Does the strategic layer agree with itself and with the research it was built on? PRD target customer vs. personas, value proposition vs. validated pains, roadmap phases vs. feature phases, pricing vs. willingness to pay signal.

Tier 2 is read-only. It surfaces each contradiction as [CONFLICT] and routes the fix to the authoring skill (pm-prd, pm-product-roadmap, pm-business-model, ...) in delta mode. The skill never edits strategic content - that is a business decision.

Area argumentTiers run
(none - default)Both
domain, rules, featuresTier 1 only
strategyTier 2 only

Severity levels

LevelMeaningAction
P0Blocker - artifact cannot be used safelyAuto-fix where possible; flag where not
P1Structural error - convention violatedAuto-fix
P2Drift - valid but inconsistent with current standardAuto-fix with diff
P3Warning - low impact, judgment callAskUserQuestion

SkillWhat it readsWhat it does
pm-reconcileCodebase vs. legacy docsReconciled rebuild
pm-reverse-extractCodebaseFeature inventory
pm-auditPureinn artifacts vs. Pureinn conventionsDrift / error fix

pm-reconcile and pm-reverse-extract hand off to pm-audit as their verification step. pm-audit does not read the codebase or legacy documents.


Dependencies

Required:

  • A Pureinn workspace exists: pureinn-workspace/[project-slug]/ with at least state.json and some artifacts

If no workspace is found: tell the user to run /pureinn (greenfield) or /pm-reverse-extract / /pm-reconcile (existing product) first.

Related skills: pm-reconcile, pm-reverse-extract, pm-feature-card, pm-features-list, pm-stripe, pm-open-questions, pm-prototype