26 KiB
Specification: Issue #159 Research Remediation and pace-plan Delivery
Status
- Author: OpenCode
- Version: 1.0.0
- Status: Approved
- Reviewed by: OpenCode plus independent issue/spec and safety/source review agents
- Gate verdict: Approved
Problem Statement
The research performed for issue #159 damaged reusable research-methodology templates, overstated what retained sources support, published those claims to GitHub without explicit authorization, and stopped short of specifying all repository and operational safeguards needed for the requested pace-plan skill. The work must be repaired without losing valid evidence, and issue #159 must then be implemented as a concise, source-grounded Agent Skills skill.
Success Criteria
- The reusable
research-methodologyassets are byte-for-byte equivalent to their state atHEADbefore the issue #159 investigation. - Every retained factual claim has a directly inspected source, exact citation, access date, and calibrated confidence; no synthesis claim exceeds its evidence.
- No repository artifact attributes testing cadence, HSEEP, after-action procedures, or quantitative metrics to CISA's four-page PACE publication unless an exact supporting passage is cited.
- The external GitHub comment remains unchanged until the user explicitly confirms the target, scope, and rollback path.
- A new
pace-planskill satisfies issue #159, repository format rules, all required eval cases, and the state-modification safety gate. - All repository skill and eval validators pass, and generated catalog checks report no stale tracked artifacts.
Scope
In Scope
- Restore the two overwritten
research-methodology/assets/templates. - Preserve valid issue #159 research in a destination that does not alter another skill's reusable assets.
- Re-evaluate every source and remove, reclassify, or independently source unsupported claims.
- Define and, after explicit approval, correct the existing GitHub issue comment.
- Create the complete top-level
pace-planskill requested by issue #159. - Add required human documentation, focused references, four operational templates, and at least five output-quality eval cases.
- Validate skill format, local references, eval schema, and generated catalog freshness.
- Remove superseded issue-specific scratch artifacts only after all retained evidence has been migrated.
Out of Scope (Explicit)
- Inventing local frequencies, channels, talkgroups, contact details, call signs, infrastructure, permissions, or activation authority.
- Giving medical, law-enforcement, firefighting, public-warning, or other public-safety operational instructions.
- Defining radio programming, frequency allocation, channel plans, deployment plans, or vendor-specific procedures.
- Building a CLI, validator script, generator, web application, or external service for PACE plans.
- Activating, transmitting on, testing, or changing a real communications system.
- Deleting or editing the GitHub comment without a separate explicit approval.
- Committing, pushing, or opening a pull request unless separately requested.
Source Authority Contract
Factual claims used by the implementation must be classified as follows:
| Class | Meaning | Permitted wording |
|---|---|---|
| Primary-direct | The retained primary source was directly inspected and contains the cited passage | State as fact with exact citation |
| Secondary-direct | A retained secondary source was directly inspected | Attribute explicitly to that source |
| Indirect | Only a citation, quotation, or summary in another source was inspected | State as indirect or omit |
| Synthesis | Derived by comparing retained evidence or applying repository conventions | Label as a design decision or recommendation |
| Unsupported | No inspected source supports the claim | Remove |
The CISA publication at https://www.cisa.gov/sites/default/files/2024-10/2024_NCSWICPTE_Leveraging_PACE_Plan_Emergency_Comms_Ecosystems.pdf supports redundancy, distinguishable paths, explicit triggers, collaborative planning, regular training, and exercises. It must not be cited as prescribing daily/monthly/quarterly cadence, HSEEP, hot washes, AAR/IP workflows, corrective-action matrices, setup-time metrics, or success-rate metrics unless another directly inspected source independently supports those details.
User Stories
US-001: Restore Reusable Research Assets
Priority: P0 Description: As a maintainer, I want issue-specific research removed from reusable templates so future investigations start from intact assets.
Acceptance Criteria:
- [AC-001.1] Given the current worktree, when remediation is complete, then
research-methodology/assets/research-brief.mdis byte-for-byte equal toHEAD:research-methodology/assets/research-brief.md. - [AC-001.2] Given the current worktree, when remediation is complete, then
research-methodology/assets/research-log.mdis byte-for-byte equal toHEAD:research-methodology/assets/research-log.md. - [AC-001.3] Given valid issue #159 evidence in the overwritten files or scratch dossier, when the templates are restored, then retained evidence has first been migrated to its final issue-specific or
pace-plandestination. - [AC-001.4] Given unrelated worktree changes, when restoration occurs, then no file outside the issue #159 change set is modified or reverted.
Edge Cases:
- The reusable templates contain concurrent user edits beyond the issue-specific replacement: stop and ask before restoring.
- A claim exists only in an overwritten template: migrate and classify it before restoration.
HEADchanges during implementation: compare against the implementation session's starting commit and report the commit ID.- The scratch dossier contains duplicate claims: preserve one evidence record and note deduplication.
US-002: Rebuild the Evidence Record
Priority: P0 Description: As a future skill maintainer, I want a traceable evidence base so every operational instruction can be audited and updated.
Acceptance Criteria:
- [AC-002.1] Given each retained source, when the evidence base is complete, then it records title, author or issuing body, exact URL, publication date when known, access date, source-authority class, and availability status.
- [AC-002.2] Given each material claim, when it appears in the evidence base, then it has an exact quotation or bounded paraphrase and a page, section, or line locator.
- [AC-002.3] Given Ryan (2013) or NIFOG material that was not directly inspected, when retained, then it is classified
Indirectand is not presented as independently verified. - [AC-002.4] Given a numerical source score, when it is retained, then the scoring rubric and per-dimension values are recorded; otherwise the numerical score is removed.
- [AC-002.5] Given rejected, inaccessible, superseded, or redundant sources, when research closes, then each has an explicit exclusion reason.
- [AC-002.6] Given the claim that no overlapping public skill exists, when retained, then the searched catalogs, queries, date, and limitations are recorded; otherwise the claim is narrowed to the inspected repository.
Edge Cases:
- A primary URL is dead but an official archive exists: cite the archive and record the original URL separately.
- A secondary source quotes an inaccessible primary source: retain only as indirect evidence.
- Two government documents disagree: preserve both and state the unresolved contradiction.
- A source is live but cannot be text-extracted: record the limitation and do not infer unseen content.
- A source changes after access: preserve publication/version metadata sufficient to identify the inspected edition.
US-003: Correct the Research Synthesis
Priority: P0 Description: As an issue reader, I want recommendations that distinguish sourced PACE doctrine from repository-specific skill design decisions.
Acceptance Criteria:
- [AC-003.1] Given the corrected synthesis, when it describes canonical PACE behavior, then it covers mission or function, communication parties, P/A/C/E order, distinguishable dependencies, transition triggers, sender and receiver feasibility, training, and exercises only to the extent supported by inspected sources.
- [AC-003.2] Given cadence, HSEEP, AAR, improvement planning, metrics, or troubleshooting sequences, when no directly inspected source supports a detail, then it is removed or explicitly labeled as an unsourced proposal requiring validation.
- [AC-003.3] Given lifecycle phase names, when used anywhere, then one vocabulary is used consistently:
PLAN,COORDINATE,OPERATE,TROUBLESHOOT,EXERCISE,IMPROVE. - [AC-003.4] Given statements such as "definitive," "standardized," "most common," "most dangerous," or "guarantees," when retained, then the evidence base explicitly supports that comparative claim; otherwise neutral wording replaces it.
- [AC-003.5] Given the corrected synthesis, when confidence is reported, then confidence is calibrated per finding rather than asserted globally from source count.
Edge Cases:
- A recommendation is operationally sensible but unsourced: label it
Design decision, not doctrine. - A source supports exercises but no cadence: require a plan-local cadence without prescribing one.
- A source uses military authority language: translate only the planning concept, not military command assumptions.
- PACE cannot provide four feasible methods: preserve the gap explicitly instead of inventing a tier.
US-004: Correct the Published GitHub Record Safely
Priority: P0 Description: As the repository owner, I want the inaccurate issue comment corrected without another unauthorized external mutation.
Acceptance Criteria:
- [AC-004.1] Given issue comment
5086185139, when no explicit approval has been received, then no GitHub mutation occurs. - [AC-004.2] Before any mutation, the user is shown the exact target, proposed scope, original-body backup location, proposed replacement or follow-up text, and rollback command or API operation.
- [AC-004.3] Given explicit approval, when the correction is applied, then unsupported CISA cadence/HSEEP/metrics claims and the
false-redudancytypo are corrected. - [AC-004.4] Given explicit approval, when the correction is applied, then links point only to durable artifacts that exist in the final repository state or to stable external sources.
- [AC-004.5] After mutation, the issue is fetched again and the returned comment body is compared with the approved text.
- [AC-004.6] If verification fails, the original saved body is restored and the failure is reported.
Edge Cases:
- The comment was edited by another actor after this specification: stop and request a new decision.
- GitHub rejects editing but permits replies: ask whether to post a correction reply; do not choose automatically.
- The user prefers deletion: require an explicit destructive directive before deleting.
- Durable artifact URLs are unavailable until a branch or PR exists: omit them rather than linking to local paths.
US-005: Implement the pace-plan Skill
Priority: P0 Description: As a group supporting emergency communications, I want an agent skill that helps us plan, coordinate, operate, troubleshoot, exercise, and improve an authorized PACE plan without inventing local facts or authority.
Acceptance Criteria:
- [AC-005.1] A top-level
pace-plan/SKILL.mdexists with valid frontmatter;nameequalspace-plan; the description starts imperatively and states positive and negative trigger boundaries. - [AC-005.2]
SKILL.mdstays below 500 lines and 5,000 tokens and conditionally routes detail to focused one-level references and templates. - [AC-005.3] The skill distinguishes emergency communications path resilience from generic project incident messaging, radio programming, frequency/channel planning, and unauthorized real-world activation.
- [AC-005.4] Before the first real external mutation, transmission, activation, or live-system test, the skill requires:
Confirm the target, scope, and rollback path before acting. Read-only discovery may proceed without confirmation. - [AC-005.5] Every P/A/C/E path captures purpose, operational use, owner, participants, decision or activation authority, prerequisites, interoperability constraints, dependencies, contact/check-in/escalation/fallback procedure, activation trigger, abandonment criteria, verification evidence, bounded test, failure modes, troubleshooting, recovery or handoff, review cadence, findings, corrective actions, and change record.
- [AC-005.6] Unknown local facts remain explicitly
UNKNOWNwith an owner and validation action; no plausible replacement is generated. - [AC-005.7] The skill never invents frequencies, channels, talkgroups, contacts, regulatory permission, medical/public-safety instructions, or authority to transmit or activate.
- [AC-005.8] The skill requires deference to authorized operating procedures, applicable regulation, and incident leadership.
- [AC-005.9] The skill's completion gate requires owner approval, defined triggers and check-ins, exercises to the available extent, and recorded unresolved gaps with owners and follow-up actions.
- [AC-005.10] The skill uses
PACEconsistently as Primary, Alternate, Contingency, and Emergency.
Edge Cases:
- Only two feasible communication paths exist: document missing C/E tiers as owned gaps.
- Two paths use different applications over one network: flag the shared dependency for human review.
- Sender and receiver capabilities differ: do not mark the path viable until both ends are validated.
- No authorized activator is identified: planning may continue, but execution remains blocked.
- A user asks the agent to transmit or activate without authority evidence: refuse the mutation and identify the required decision-maker.
- An exercise cannot safely test the Emergency path: record the limitation and use the most representative authorized bounded test.
- The scenario involves immediate danger: defer to emergency services and authorized incident procedures rather than improvising instructions.
US-006: Provide the Required Operational Artifacts
Priority: P0 Description: As a plan owner, I want reusable artifacts that make the plan operable and auditable rather than merely descriptive.
Acceptance Criteria:
- [AC-006.1]
pace-plan/templates/pace-plan-worksheet.mdcovers every field in AC-005.5 and includes dependency-independence checks. - [AC-006.2]
pace-plan/templates/communications-check-in-card.mdcontains plan-local contact/check-in/escalation/fallback fields without example operational identifiers that could be mistaken for real values. - [AC-006.3]
pace-plan/templates/exercise-and-after-action-review.mdcontains authorization, safety bounds, objectives, injects, expected evidence, observations, findings, corrective actions, owners, due dates, validation action, and next review. - [AC-006.4]
pace-plan/templates/troubleshooting-decision-log.mdrecords observed symptom, current tier, checks performed, evidence, decision authority, transition decision, recovery or handoff, and follow-up. - [AC-006.5] Templates represent missing facts as
UNKNOWN,OWNER, andVALIDATION ACTIONfields rather than illustrative local details. - [AC-006.6] Conditional references cover plan design, coordination and authorized operation, troubleshooting, and exercise/improvement governance without duplicating the templates.
Edge Cases:
- A template field does not apply: require
N/Aplus rationale rather than leaving it ambiguous. - A template contains sensitive contact information: instruct users to store and distribute it according to local policy.
- Corrective action has no owner or due date: keep it open and fail completion.
- Exercise observations conflict: preserve both observations and assign a validation action.
US-007: Add Representative Output-Quality Evals
Priority: P0 Description: As a maintainer, I want executable contract cases that detect unsafe assumptions and lifecycle regressions.
Acceptance Criteria:
- [AC-007.1]
pace-plan/evals/evals.jsonuses schema version 1, namespace-plan, and contains at least five cases with stable kebab-case IDs, realistic prompts, expected outcomes, and observableassertions. - [AC-007.2] The manifest includes
incomplete-plan-discovery, which asserts explicit unknowns, owners, validation actions, and no invented local details. - [AC-007.3] The manifest includes
failed-primary-path-drill, which asserts authority checks, observable transition criteria, and bounded exercise behavior. - [AC-007.4] The manifest includes
coordination-handoff, which asserts named ownership, sender/receiver alignment, and escalation or handoff evidence. - [AC-007.5] The manifest includes
troubleshooting-scenario, which asserts evidence-led checks, shared-dependency detection, and no unsupported technical commands. - [AC-007.6] The manifest includes
after-action-improvement-cycle, which asserts findings, corrective actions, owners, validation actions, unresolved gaps, and next review. - [AC-007.7] At least one case asserts refusal or blocking when a user requests unauthorized transmission or activation.
- [AC-007.8] Trigger-only probes are not placed in
evals/evals.json; separately documented probes include at least three should-trigger and two should-not-trigger near misses.
Edge Cases:
- A case tests only keyword presence: replace it with observable behavioral assertions.
- Two eval IDs collide or an ID is renamed after evidence is recorded: fail validation.
- A prompt includes real-looking operational details: use unmistakable placeholders.
- A boundary prompt combines incident messaging and emergency path planning: expected output must route only the PACE portion to this skill.
US-008: Validate and Clean the Final Change Set
Priority: P0 Description: As a maintainer, I want reproducible evidence that the repaired work and new skill satisfy repository contracts without collateral changes.
Acceptance Criteria:
- [AC-008.1]
ruby scripts/validate-skills.rbexits 0. - [AC-008.2]
python3 scripts/validate-evals.py pace-plan/evals/evals.jsonor the repository-supported focused equivalent exits 0; if only whole-repository validation is supported, that command exits 0. - [AC-008.3]
python3 scripts/test-eval-validation.pyexits 0 in the documented development environment. - [AC-008.4]
ruby scripts/gen-claude-marketplace.rb,ruby scripts/gen-codex-plugin.rb, andruby scripts/gen-llms-txt.rbcheck modes exit 0; if stale, generated artifacts are regenerated with documented--writecommands and rechecked. - [AC-008.5] The final diff contains only restored templates, the complete
pace-planskill, required generated catalog updates, and an issue-specific evidence destination if retained. - [AC-008.6] Superseded
pace-planning/scratch files are removed only after a preservation check confirms no unique retained evidence will be lost. - [AC-008.7] Final verification reports each AC as PASS, FAIL, or BLOCKED with command output or direct file evidence.
Edge Cases:
- A validator is unavailable: report BLOCKED and perform named manual checks without claiming validator success.
- Whole-repository validation fails on an unrelated pre-existing defect: isolate and report it; do not modify unrelated files.
- Generated artifacts include concurrent changes: inspect and preserve them rather than regenerating blindly.
- The worktree changes during validation: re-run status and diff before declaring completion.
Non-Functional Requirements
| ID | Requirement | Threshold | Verification Method |
|---|---|---|---|
| NFR-001 | Source fidelity | 100% of retained factual claims have a source class and locator | Evidence-ledger audit |
| NFR-002 | Unsupported attribution | 0 unsupported claims attributed to CISA or another source | Search claims and compare to source passages |
| NFR-003 | Unknown preservation | 100% of missing operational facts remain explicit unknowns with owner and validation action | Template and eval inspection |
| NFR-004 | Authority safety | 100% of live mutation/activation paths encounter the confirmation gate first | SKILL review plus unsafe-request eval |
| NFR-005 | Progressive disclosure | SKILL.md under 500 lines and 5,000 tokens; references one level deep |
Line/token count and link validation |
| NFR-006 | Eval coverage | At least 5 required scenarios plus 1 unauthorized-action assertion | Eval manifest inspection and validation |
| NFR-007 | Repository integrity | 0 unrelated files modified or reverted | Starting/final git status and diff comparison |
| NFR-008 | Portability | No vendor, harness, radio service, or jurisdiction required for core use | Content review |
Data Contracts & Interfaces
PACE Path Record
Each Primary, Alternate, Contingency, and Emergency entry must expose this semantic contract, whether represented as Markdown fields or a table:
tier: primary | alternate | contingency | emergency
purpose: string | UNKNOWN
operational_use: string | UNKNOWN
owner: string | UNKNOWN
participants: [string] | UNKNOWN
decision_authority: string | UNKNOWN
activation_authority: string | UNKNOWN
prerequisites: [string]
interoperability_constraints: [string]
dependencies: [string]
shared_dependency_findings: [string]
contact_procedure: string | UNKNOWN
check_in_procedure: string | UNKNOWN
escalation_procedure: string | UNKNOWN
fallback_procedure: string | UNKNOWN
activation_trigger: string | UNKNOWN
abandonment_criteria: string | UNKNOWN
verification_method: string | UNKNOWN
expected_evidence: string | UNKNOWN
bounded_test: string | UNKNOWN
known_failure_modes: [string]
troubleshooting_sequence: [string]
recovery_or_handoff: string | UNKNOWN
last_reviewed: date | UNKNOWN
exercise_findings: [string]
corrective_actions: [string]
change_record: [string]
unknown_owner: string | null
validation_action: string | null
External Mutation Approval Record
target: "https://github.com/magnus919/agent-skills/issues/159#issuecomment-5086185139"
scope: "Correct factual attributions, typo, and invalid artifact links only"
rollback:
original_body_backup: string
restore_operation: string
approved_by: string
approved_at: datetime
approved_text_hash: string
No GitHub mutation may occur unless every field is populated and approval is explicit in the conversation.
Dependency and Delivery Order
US-001 Restore templates --+
+--> US-002 Rebuild evidence --> US-003 Correct synthesis
Scratch dossier -----------+ |
+--> US-005 Implement skill
Explicit user approval --> US-004 Correct GitHub record | |
+--> US-006 Artifacts
+--> US-007 Evals
+--> US-008 Validate and clean
Rules:
- Do not author normative skill instructions from the current synthesis before US-002 and US-003 pass.
- US-004 can proceed only after explicit approval and can otherwise remain BLOCKED without blocking local skill implementation.
- Do not remove scratch evidence until US-002 preservation and US-008 cleanup checks pass.
- Do not claim issue #159 complete until US-005 through US-008 pass and US-004 is either completed or explicitly waived by the user.
Review-Finding Traceability
| Review finding | Remediation requirements |
|---|---|
| Canonical templates overwritten | US-001, AC-008.5 |
| Unsupported CISA claims | Source Authority Contract, US-002, US-003, NFR-001, NFR-002 |
| Unverified evidence marked verified | AC-002.1 through AC-002.6, AC-003.5 |
| Unauthorized GitHub mutation | US-004, External Mutation Approval Record |
| Missing state-modification safeguard | AC-005.4, NFR-004, AC-007.7 |
| Completion condition underspecified | AC-005.9, AC-006.3, AC-007.6 |
| Fragmented/false durable preservation | AC-001.3, US-002, AC-008.6 |
| Scope drift and inconsistent lifecycle | Out of Scope, AC-003.3, AC-005.2, US-006 |
| Original issue not implemented | US-005 through US-008 |
Assumptions & Open Questions
| # | Assumption / Question | Impact if Wrong | Resolution |
|---|---|---|---|
| 1 | The user wants a full remediation and delivery spec, not immediate implementation | Work may exceed the intended scope | Resolved: the user subsequently authorized implementation through the neckbeard workflow |
| 2 | pace-planning/ contains only artifacts created during the flawed research pass |
Cleanup could delete someone else's work | Resolved: provenance was verified, unique direct evidence was migrated, and the scratch tree was removed |
| 3 | A tracked issue-specific evidence file is desirable inside the final pace-plan skill |
A public skill may carry unnecessary research process detail | Resolved: references/evidence-base.md was retained because it materially bounds normative source claims |
| 4 | The existing GitHub comment should be corrected rather than silently deleted | The owner may prefer deletion or a follow-up correction | Resolved: the owner approved the exact reversible edit, which was published and refetched for verification |
| 5 | CISA's publication date and footer date differ (2024 URL/publication, As of 2023 footer) |
Citation metadata could be misleading | Record both publication listing and document footer metadata |
| 6 | No executable script is needed for the skill | A future concrete need may emerge | Resolved for v1: keep scripts out of scope until a demonstrated repetitive computation requires one |
Gate 1 Review Checklist
- Every acceptance criterion has a binary PASS/FAIL test.
- Every review finding maps to at least one acceptance criterion.
- External mutation remains separately approval-gated.
- Source doctrine and design synthesis are explicitly distinguished.
- Original issue requirements are represented without adding vendor-specific behavior.
- Required README, references, templates, evals, and validation commands are covered.
- Edge cases include missing tiers, shared dependencies, mismatched endpoints, absent authority, unsafe activation, inaccessible sources, and concurrent worktree changes.
Revision History
| Version | Date | Author | Change |
|---|---|---|---|
| 0.1.0 | 2026-07-26 | OpenCode | Initial remediation and delivery specification |
| 1.0.0 | 2026-07-26 | OpenCode | Approved after implementation, independent review, and repository-boundary verification |