DLLPickle Gap Register¶
This directory tracks open maintenance traps, automation gaps, and unresolved architecture follow-ups that should remain visible to maintainers and agentic workstreams.
Use this register for durable repo-local gap state. Use docs/superpowers/specs/ and docs/superpowers/plans/ for larger point-in-time designs and task-by-task implementation plans.
Rules for maintainers and agents¶
- Treat each
GAP-*.mdfile as the source of truth for that gap’s current status. - Do not mark a gap
resolvedunless all acceptance criteria in the gap file are checked or explicitly superseded. - When resolving a gap, update:
- the gap file,
- this index,
- related tests,
- related source, policy, or workflow files,
- related documentation,
docs/Architecture.mdwhen architecture, invariants, validation gates, source-of-truth mappings, or known gaps changed.- If a gap becomes obsolete because of a different design, mark it
superseded, explain why, and link the superseding PR, issue, or document. - If a gap cannot be completed safely, mark it
blocked, explain the blocker, and leave the remaining acceptance criteria unchecked. - Keep this index synchronized with each gap file’s frontmatter.
Status values¶
| Status | Meaning |
|---|---|
open |
Known gap with no active implementation PR. |
in-progress |
Implementation is underway in a linked PR or branch. |
blocked |
Work cannot proceed without an external decision, credential, environment, or dependency. |
resolved |
Acceptance criteria are complete and the resolving PR is linked. |
superseded |
A later design or decision made the gap obsolete. |
wont-fix |
The gap is accepted intentionally, with rationale documented. |
Gap index¶
| ID | Status | Area | Title | File |
|---|---|---|---|---|
| GAP-001 | resolved | dependency-policy | Add dependency policy realization guard | GAP-001 |
| GAP-002 | resolved | dependency-policy | Track Az.Resources as a monitored collision source | GAP-002 |
| GAP-003 | open | runtime-probes | Add representative EXO and Teams probe commands | GAP-003 |
| GAP-004 | open | host-context | Model VS Code and PowerShellEditorServices host behavior | GAP-004 |
| GAP-005 | resolved | known-conflicts | Strengthen OData conflict expectation management | GAP-005 |
| GAP-006 | resolved | release-process | Document manual release dispatch process trap | GAP-006 |
| GAP-007 | open | branch-protection | Audit required status-check ruleset configuration | GAP-007 |
| GAP-008 | open | module-manifest | Guard manifest export drift | GAP-008 |
| GAP-009 | open | build-output | Make merged root-module script order deterministic | GAP-009 |
| GAP-010 | resolved | review-process | Define unresolved review-thread maintenance workflow | GAP-010 |
| GAP-011 | resolved | documentation | Guard docs and implementation drift for gap closures | GAP-011 |
Agent workflow¶
- Start with the requested
GAP-*.mdfile. - Read every file listed in
related_docs. - Search the repository for the gap ID before editing.
- Make the smallest safe implementation that satisfies the acceptance criteria.
- Add or update tests before marking a gap resolved when an automated guard is practical.
- Update related documentation before finalizing the PR.
- Update this index and the gap file frontmatter in the same PR that resolves, blocks, supersedes, or intentionally accepts the gap.
Automated guard¶
tests/Unit/GapRegister.Tests.ps1 structurally validates this register on every unit-test run. It fails the build when:
- a
GAP-*.mdfile declares astatusoutside the allowed values above, - a
GAP-*.mdfile is missing from the gap index table, - a gap file’s frontmatter status does not match its index row, or
- a gap index row File-column link basename does not match its actual
GAP-*.mdfilename, or - a
resolvedgap is missingresolution_prorresolved_on.
The guard is deterministic and local-only; it does not call the GitHub API. Whether the related_docs of a resolved gap were actually updated remains a review-only check, because that cannot be verified structurally without false positives.