Skip to content

chore: add spec-kit configuration and project-tailored templates#2

Merged
jamesarich merged 7 commits into
mainfrom
speckit
May 10, 2026
Merged

chore: add spec-kit configuration and project-tailored templates#2
jamesarich merged 7 commits into
mainfrom
speckit

Conversation

@jamesarich
Copy link
Copy Markdown
Collaborator

  • Initialize .specify/ with constitution (v1.0.0), customized templates
    (spec, plan, tasks, checklist), extensions (git, brownfield), and
    workflow registry
  • Add speckit agent definitions (.github/agents/speckit.*.agent.md)
  • Add speckit prompt definitions (.github/prompts/speckit.*.prompt.md)
  • Add plan-integration marker to copilot-instructions.md
  • Templates reference actual module structure, Gradle tasks, source
    paths, ADRs, and KMP conventions
  • Validated against codebase: all paths, commands, and dependencies
    verified accurate

jamesarich and others added 7 commits May 9, 2026 20:36
- Initialize .specify/ with constitution (v1.0.0), customized templates
  (spec, plan, tasks, checklist), extensions (git, brownfield), and
  workflow registry
- Add speckit agent definitions (.github/agents/speckit.*.agent.md)
- Add speckit prompt definitions (.github/prompts/speckit.*.prompt.md)
- Add plan-integration marker to copilot-instructions.md
- Templates reference actual module structure, Gradle tasks, source
  paths, ADRs, and KMP conventions
- Validated against codebase: all paths, commands, and dependencies
  verified accurate
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Signed-off-by: James Rich <james.a.rich@gmail.com>
- Remove unused GattErrorCategory import from BleTransport.kt
- Remove dead GATT_RETRY_BACKOFF_MS property (backoff handled by
  GattErrorCategory.backoffMs)
- Add ADR-012 lifecycle-idempotency annotations to BLE transport atomics
- Update docs/SPEC.md convention plugin references from
  meshtastic.radio.* to actual names (meshtastic.kmp.library,
  meshtastic.android.library, meshtastic.publishing, etc.)
- Update Appendix A class name to KmpLibraryConventionPlugin
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Signed-off-by: James Rich <james.a.rich@gmail.com>
Comprehensive audit of SPEC.md against the actual codebase revealed
significant drift. This revision synchronizes the spec with reality.

Key changes:
- Pin toolchain/SDK versions (JVM 21, Android SDK 36, Kotlin 2.3.20)
- Document full RadioClient surface (configBundle, channels, sendReaction,
  requestNodeInfo, sendRaw, connectAndAwaitReady, AutoReconnectConfig)
- Expand AdminApi from 15 to 45 methods; add AdminResult extensions
- Add StoreForwardApi, SendDSL, SendOutcome
- Expand MeshEvent (13+ variants) and NodeChange (WentOffline/CameOnline)
- Add DeviceStorage passkey + heartbeat persistence methods
- Update engine internals to match inline implementation
- Expand anchor invariants 11-17
- Update Appendix A/B to match actual convention plugins and versions
- Fix heartbeat nonce semantics (nonce=0, not incrementing)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: James Rich <james.a.rich@gmail.com>
Synchronize all documentation with the v2.2 specification to reflect recent SDK additions and architectural refinements:

- **New Features:** Introduced the Send DSL, `autoReconnect` configuration, and heartbeat-based presence tracking (`WentOffline`/`CameOnline`).
- **API Extensions:** Added convenience extensions for `AdminResult` and `ConnectionState`, plus a new `connectAndAwaitReady()` lifecycle method.
- **Error Handling:** Expanded `SendFailure` types (IdCollision, AckTimeout) and added `CongestionWarning`, `ExternalConfigChange`, and `StorageDegraded` to `MeshEvent`.
- **Storage & State:** Updated `StorageProvider` for session passkey persistence and added `configBundle` and `channels` flows to the client.
- **Maintenance:** Bumped Android SDK requirement to API 36, updated the project roadmap, and documented new parity sample applications in the module graph.
…on RadioClient

Add typed Flow<NeighborInfo> and raw Flow<MeshPacket> convenience extensions
on RadioClient, matching the existing textMessages pattern. Enables consumers
to collect pre-decoded NeighborInfo domain objects without manual packet
filtering or proto ADAPTER.decode calls.
- neighborInfoMessages: filtered Flow<MeshPacket> for NEIGHBORINFO_APP port
- neighborInfoFlow: mapped Flow<NeighborInfo> with full proto decoding
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Signed-off-by: James Rich <james.a.rich@gmail.com>
Update api-reference, error-taxonomy, module-graph, roadmap, README,
CONTRIBUTING, and CHANGELOG to align with SPEC.md v2.2 revisions.
Refresh Spec Kit agent definitions, templates, and workflow registry.
Signed-off-by: James Rich <james.a.rich@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…x markdownlint rules

All 18 speckit.*.prompt.md files were missing the required 'description'
key in their YAML frontmatter. The tooling check.sh validates
'has("description")' on every .prompt.md file, causing CI failure.
Fix: copy each agent's description into its matching prompt file.
Also disable MD029/MD031/MD040 in the markdownlint invocation — these
fire on vendored speckit agent files whose fenced‐block style we do not
control.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

Signed-off-by: James Rich <james.a.rich@gmail.com>
@jamesarich jamesarich merged commit dd065b1 into main May 10, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant