This repository was archived by the owner on May 29, 2026. It is now read-only.
docs(openspec): populate example-change + 7 EXAMPLE capability specs#22
Closed
rubenvdlinde wants to merge 1 commit into
Closed
docs(openspec): populate example-change + 7 EXAMPLE capability specs#22rubenvdlinde wants to merge 1 commit into
rubenvdlinde wants to merge 1 commit into
Conversation
Fills in the previously-missing openspec/changes/example-change/ directory that the template's @SPEC docblock tags point at, plus the openspec/specs/ capabilities those tasks implement. All files carry example: true frontmatter and an "EXAMPLE" banner so derived apps can spot the demonstration content instantly. Capabilities added (openspec/specs/): - dashboard-page (DashboardController — SPA entry + catch-all) - settings-management (SettingsController + SettingsService) - deep-linking (DeepLinkRegistrationListener) - item-management (ItemController + ItemService — ADR-005 demo) - configuration-initialization (Repair/InitializeSettings — repair step) - admin-ui (AdminSettings + SettingsSection) - observability (MetricsController + HealthController — ADR-006) Change scaffold (openspec/changes/example-change/): - proposal.md why the example-change exists; lifecycle guidance - tasks.md 9 tasks matching the @SPEC task-N tags in lib/ - design.md design rationale incl. known task-5 scope overlap No lib/*.php files are touched. The existing @SPEC openspec/changes/example-change/tasks.md#task-N annotations now resolve correctly against this content.
3 tasks
Contributor
Author
|
Superseded by #61. The example-change + 7 capability specs this PR adds are reapplied on current |
rubenvdlinde
added a commit
that referenced
this pull request
May 25, 2026
… populate example openspec (#61) Consolidates the unique, still-unmerged work from the stale PRs #19, #20 and #22 (their branches predated the manifest-renderer refactor and could not be merged without reverting it), reapplied freshly on current development: Headers / SPDX / @SPEC (was #19): - Fix the propagated `dev@conductio.nl` -> `info@conduction.nl` typo across all 10 template PHP files (root-cause fix; the typo had spread fleet-wide via scaffolds). - Bump @copyright 2024 -> 2026 and add SPDX-FileCopyrightText / SPDX-License-Identifier inside the main docblock (after @license), matching the canonical format already used by lib/Mcp/ExampleToolProvider.php. - Add the file-level @SPEC example to Application.php (ADR-003) so scaffolds show builders the convention. Observability + REUSE (was #20): - Add HealthController + MetricsController. appinfo/routes.php already declared metrics#index and health#index, but the classes were missing, so /api/health and /api/metrics returned 500. HealthController is public (@publicpage) and verifies OpenRegister; MetricsController is admin-only Prometheus text with {app}_info and {app}_health_status gauges (ADR-006). - Add REUSE.toml for non-PHP source files. Example OpenSpec (was #22): - Populate openspec/changes/example-change/ + 7 openspec/specs/ capabilities that the @SPEC docblock tags point at, so the tags no longer resolve to dead links. Adapted task-5 / item-management / design.md to the current layout: the removed ItemController/ItemService demo is replaced by ActionAuthService (ADR-023, merged in #21) as the per-object-auth illustration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fills in the previously-missing⚠️ EXAMPLE SPEC" banner so derived apps can spot the demonstration content instantly.
openspec/changes/example-change/directory that the template's@specdocblock tags point at, plus the 7openspec/specs/capabilities those tasks implement. All files carryexample: truefrontmatter and a prominent "Why
The template's
lib/**/*.phpalready demonstrates the@specannotation convention with 9 tasks referenced across 10 files — butopenspec/changes/example-change/didn't exist, so every tag resolved to a dead link. Running theopenspec-*skills against a fresh clone hit immediate inconsistency. This PR makes the template internally consistent without changing any code.Produced as the second half of a test pass on Wilco's
opsx-reverse-specskill — the first half was #176 (mydash legacy-widget-bridge run). Both runs surfaced learnings that will land in a sibling PR tofeature/skill-improvementafter this one settles.Capabilities added (
openspec/specs/)dashboard-pageDashboardController.phpsettings-managementSettingsController.php+SettingsService.phpdeep-linkingDeepLinkRegistrationListener.phpitem-managementItemController.php+ItemService.phpconfiguration-initializationRepair/InitializeSettings.phpadmin-uiSettings/AdminSettings.php+Sections/SettingsSection.phpobservabilityMetricsController.php+HealthController.phpEach spec has 1–4 REQs with GIVEN/WHEN/THEN scenarios and explicit ADR references (003, 004, 005, 006, 011). Voice matches mydash / openregister conventions ("The system MUST...").
Change scaffold (
openspec/changes/example-change/)proposal.md— why this change exists, lifecycle guidance for apps cloning the templatetasks.md— 9 tasks matching the@spec task-Ntags inlib/design.md— design rationale including the known task-5 scope overlap (Item-auth + repair step share a task number; noted, not silently fixed)What this PR does NOT do
lib/**/*.phpfiles are touched. All existing@spec openspec/changes/example-change/tasks.md#task-Nannotations are left as-is; they now resolve correctly.openspec/specs/and remove the tasks, but the task file is what the code's@spectags point at. Keeping the change in-progress (spirituallyexample) is what keeps the template internally consistent.openspec/architecture/and are out of scope here.specs/delta inside the change directory. End-state specs live directly inopenspec/specs/; duplicating as a delta would add maintenance cost without improving the demonstration.Review focus
example: true+ banner markup communicate "don't copy this as your real spec"? If not, I'm open to stronger markers (a filename suffix, a dedicated CI rule, etc).Test plan
lib/for@spec example-change— all 15 references should match a task intasks.md.Related
opsx-reverse-speclearnings from the mydash run (sibling to this)opsx-coverage-scanlearnings (same)