Skip to content
Back to skills

Gz Obpi Brief Drift

ASecurity

Use when an OBPI brief may have drifted from the project; reconciles it and can write attested amendments.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
testinggo

Works with

  • terminal

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add tvproductions/gzkit --skill gz-obpi-brief-drift --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gz Obpi Brief Drift?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gz Obpi Brief Drift
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tvproductions-gz-obpi-brief-drift/badge)](https://www.skillsdirectory.com/skills/tvproductions-gz-obpi-brief-drift)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: gz-obpi-brief-drift
description: Use when an OBPI brief may have drifted from the project; reconciles it and can write attested amendments.
category: governance-infrastructure
lifecycle_state: active
owner: gzkit-governance
last_reviewed: 2026-10-17
metadata:
  skill-version: "0.8.1"
model: haiku
gz_command: gz obpi brief-drift
---

# gz obpi brief-drift

## Overview

`gz obpi brief-drift` runs the OBPI-0.0.37-05 reconciliation engine to measure
drift between an OBPI brief and the project tree across five dimensions —
allowlist, discovery checklist, verification verbs, REQ count, and citation
tuples (invariant CIC-2, brief↔reality coherence). Every run, `--dry-run`
included, appends a `brief_reconciled` ledger event, plus
`brief_reconcile_drift_detected` when the result gates.

What gates depends on the brief's `status:`:

- **Terminal** (list in step 1): deltas are reported, nothing gates.
- **`Draft`**: allowlisted paths missing on disk and unresolved `gz` verbs are
  reported but do not gate, because they name what the OBPI will create. A
  Discovery Checklist path still gates unless a sibling OBPI's Allowed Paths
  create it; stale citations still gate.
- **Live** (`Active`, `in_progress`): allowlist, discovery, verification and
  citation drift all gate.

The REQ count delta never gates; it is reported for information.

## When to Use

- Before Stage 2 implementation, to confirm a brief still matches project shape.
- Before OBPI completion, to confirm zero residual drift.
- Whenever a brief's allowlist or REQ set looks stale relative to the code.

## Workflow

1. Confirm the target OBPI id and that its brief file exists. **Check its
   `status:` first** — a terminal brief (`Completed`, `attested_completed`,
   `Validated`, `Superseded`, `archived`, `Promoted`, `Abandoned`, `Withdrawn`) reports deltas but never
   gates: `has_drift` is always false and the run exits 0. Its deltas read as
   *"what moved since this shipped"*, never as a repair worklist. `--apply` on
   one is refused — exit 3, nothing written, no ledger event, `--dry-run`
   included — because the amendment would rewrite a sealed record under an
   attestation no operator can honestly give (GHI #707, #1115).
2. Run `uv run gz obpi brief-drift <OBPI-ID>` to report per-dimension deltas.
   Exit 0 means clean; exit 3 means drift. On a live (non-terminal) brief only.
3. If drift is real, preview with
   `uv run gz obpi brief-drift <OBPI-ID> --apply --dry-run`. The preview
   writes nothing to the brief and lists every line `--apply` would add or
   remove (`planned_amendments` under `--json`). Show that list to the
   operator: it is the amendment they attest in step 4.
4. Apply with `uv run gz obpi brief-drift <OBPI-ID> --apply`. `--attestor`
   takes a handle, never a real name, and defaults to
   `authorship.attestor_handle` in `.gzkit.json`; `--apply` refuses without
   one. The write adds each `src/` module that the brief's REQ-covering tests
   import, that sits beside an allowlisted `src/` path, and that the brief
   neither allows nor denies — to frontmatter `allowlist:` on a structured
   brief, under `## Allowed Paths` on a legacy one — and records unresolved verbs and REQ identity drift under
   `## Tracked Defects`, never rewriting them. Allowlisted paths missing on
   disk, discovery and citation drift are not repaired.
   `--apply` re-measures the brief after writing and reports that second
   measurement, so the exit contract in step 2 binds here too: exit 3 means
   drift survived the amendment (`--apply` repairs the allowlist dimension
   only), not that the write failed.

## Validation

- The exit code already reflects the post-amendment brief — a re-run is a
  confirmation, not the measurement. Confirm the expected dimensions now
  report zero (or the residual is intentional and tracked).
- Confirm the `brief_reconciled` ledger event was emitted (and
  `brief_reconcile_drift_detected` when drift was present).

## Example

Use $gz-obpi-brief-drift to reconcile an OBPI brief against project state before
completion.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.