Afronden van de Retrofit voor de Openregister app — alle high-value Bucket 2a clusters reverse-spec'en, object-interactions triagen, en Tier 3 backlog inventariseren.
Follow-up from #27.
Context — wat is al gedaan
De Openregister retrofit is substantieel klaar. PR ConductionNL/openregister#1364 (feature/reverse-spec → development) levert ~1,532 @spec lines over 249 files, met:
- Bucket 1 annotations — twee passes (2026-04-23 en 2026-04-30, ~169 methods in laatste pass)
- 5 reverse-spec capabilities —
calendar-integration, content-versioning, object-lifecycle, tenant-lifecycle, chat-ai
- Bucket 2b cross-capability cross-refs —
retrofit-b2b-crossrefs-2026-04-28 (33 tasks across 15 capabilities)
- Bucket 3b triage — 5 unimplemented REQs marked
status: deferred in content-versioning, environment-otap, mock-registers
- Bucket 4 follow-up — ConductionNL/openregister#1370 (ADR cleanup pass)
Wat nog open staat is het reverse-spec'en van de grote Bucket 2a clusters die de scanner van 2026-04-30 nog vond.
Pre-flight — voordat je begint
- Verifieer dat PR #1364 gemerged is naar
development. Zo niet, eerst dat afronden — bouwen op een unmerged retrofit branch geeft conflicts.
- Pull latest
development in ~/nextcloud-docker-dev/workspace/server/apps-extra/openregister/:
cd ~/nextcloud-docker-dev/workspace/server/apps-extra/openregister
git checkout development && git pull
- Re-run
/opsx-coverage-scan openregister — produceert een verse openspec/coverage-report.md. De vorige scan (2026-04-30) draaide vóór de cross-cap cross-refs gemerged waren, dus de fresh scan reclassificeert de Bucket 2b namespace-word clusters als "annotated" en toont de ECHTE remaining surface.
- Lees de Mistakes-to-Avoid in
hydra/.claude/skills/opsx-archive/learnings.md — kent de bekende @spec path-divergence issue zodat je daar geen tijd aan verspilt.
Tier 1 — work to complete (4–5 PRs, ~3 hours)
Grote clusters met echte spec gaps. Bias naar --extend per playbook.
| Cluster |
~Methods |
Action |
Notes |
edepot-transfer |
~37 |
--extend edepot-transfer |
Eén run, kleinste — start hier |
graphql-api |
~47 |
--extend graphql-api |
Eén run, 3–5 REQs |
faceting-configuration |
~48 |
--extend faceting-configuration |
Eén run |
event-driven-architecture |
~97 |
--extend event-driven-architecture |
Splits in 2 runs (5-REQ cap per run) |
Volgorde
edepot-transfer (warm-up — kleinste, bouwt vertrouwen in flow)
graphql-api
faceting-configuration
event-driven-architecture (laatste, split into 2 PRs)
Per cluster — exact stappen
cd ~/nextcloud-docker-dev/workspace/server/apps-extra/openregister
git checkout development && git pull
git status # MUST be clean — skill weigert dirty trees
Dan de skill aanroepen:
/opsx-reverse-spec openregister --extend <capability>
De skill doet alles automatisch:
- Maakt
retrofit-{capability}-{YYYY-MM-DD} ghost change
- Drafts REQs op basis van observed behavior (niet aspirational)
- Annotates de cluster's methods inline met
@spec tags
- Roept
python3 concurrentie-analyse/scripts/sync_spec_content.py openregister aan voor Specter sync
- Archiveert de ghost change (merge spec delta in main spec)
- Opent PR met
retrofit + reverse-spec labels
Na elke merge
# Verify Specter sync
python3 ~/concurrentie-analyse/scripts/sync_spec_content.py openregister
# Check exit 0 + non-zero row count
Als sync fails met missing-column error: eerst python3 ~/concurrentie-analyse/scripts/migrate_app_specs_retrofit.py runnen (idempotent).
Tier 2 — judgment call (1–2 PRs, ~1 hour)
| Cluster |
~Methods |
Note |
object-interactions |
~252 |
⚠️ Eerst handmatige read. De grootte suggereert scanner over-clustering. Lees de file list, beslis of het één capability is, meerdere, of pure scanner noise. Niet /opsx-reverse-spec runnen tot pre-split is gedaan. Er is een grote kans dat dit "cluster" gewoon files zijn met "Object" in de namespace — die zouden via --extend object-lifecycle of --extend event-driven-architecture moeten worden geannoteerd, niet als nieuwe capability. |
approval-workflow |
~6 |
Eigen capability OF fold into event-driven-architecture — read het cluster en beslis |
actions |
~5 |
Per scan notes: nieuw action system dat hooks vervangt. Waarschijnlijk --extend event-driven-architecture of nieuw --cluster actions. |
Tier 3 — defer (open één follow-up issue)
13+ kleine clusters (2–7 methods each): search-trail, solr-search, gdpr-processing, tmlo-export, oas-generation, scheduled-workflows, workflow-import, file-extraction, dashboard, endpoints, configuration + 9 van de 11 Bucket 2b clusters (names-cache, tables-sync, mappings, views, etc. — mostly infrastructure).
Maak één issue aan: openregister: retrofit Tier 3 follow-up — opportunistic spec coverage met deze hele lijst. Sweep ze niet — opportunistisch oppakken wanneer iemand de gerelateerde code aanraakt.
Exceptions die wél een echte spec waard zijn (still optional maar higher value):
security-auth (Bucket 2b) — scan notes flaggen "human pre-split required" omdat het waarschijnlijk rbac-scopes + endpoint-auth sub-specs covert
user-management (Bucket 2b) — kan overlap hebben met tenant-lifecycle; pre-split required
Known gotchas — bespaar jezelf de zoektijd
-
@spec path convention divergence — annotations schrijven @spec openspec/changes/retrofit-{name}/tasks.md maar /opsx-archive verplaatst het naar openspec/changes/archive/retrofit-{name}/ (of openspec/archive/retrofit-{name}/ voor oudere manual-archive runs). Letterlijke paths resolven niet op disk. Dit is een bekende issue (logged in hydra/.claude/skills/opsx-archive/learnings.md). NIET in deze issue proberen te fixen — dat is een aparte skill-improvement effort.
-
Specter sync inconsistent voor older retrofits — retrofit-b2b-crossrefs, retrofit-calendar-integration, etc. zijn manueel gearchiveerd voordat /opsx-archive correct werkte. Verifieer app_specs.retrofit en app_specs.retrofit_extensions voor openregister bevatten de expected entries. Zo niet: re-run sync_spec_content.py openregister na elke merge.
-
Bucket 3a in coverage report = 319 keyword-match artifacts — dit zijn GEEN echte broken-code findings. Negeren.
-
Geen background agents voor bulk werk — per opsx-reverse-spec/learnings.md: parallel subagents voor 70+ files lopen vaak vast. Sequentieel doen.
Definition of done
References
Related issues
Afronden van de Retrofit voor de Openregister app — alle high-value Bucket 2a clusters reverse-spec'en,
object-interactionstriagen, en Tier 3 backlog inventariseren.Follow-up from #27.
Context — wat is al gedaan
De Openregister retrofit is substantieel klaar. PR ConductionNL/openregister#1364 (
feature/reverse-spec→development) levert ~1,532@speclines over 249 files, met:calendar-integration,content-versioning,object-lifecycle,tenant-lifecycle,chat-airetrofit-b2b-crossrefs-2026-04-28(33 tasks across 15 capabilities)status: deferredincontent-versioning,environment-otap,mock-registersWat nog open staat is het reverse-spec'en van de grote Bucket 2a clusters die de scanner van 2026-04-30 nog vond.
Pre-flight — voordat je begint
development. Zo niet, eerst dat afronden — bouwen op een unmerged retrofit branch geeft conflicts.developmentin~/nextcloud-docker-dev/workspace/server/apps-extra/openregister/:/opsx-coverage-scan openregister— produceert een verseopenspec/coverage-report.md. De vorige scan (2026-04-30) draaide vóór de cross-cap cross-refs gemerged waren, dus de fresh scan reclassificeert de Bucket 2b namespace-word clusters als "annotated" en toont de ECHTE remaining surface.hydra/.claude/skills/opsx-archive/learnings.md— kent de bekende@specpath-divergence issue zodat je daar geen tijd aan verspilt.Tier 1 — work to complete (4–5 PRs, ~3 hours)
Grote clusters met echte spec gaps. Bias naar
--extendper playbook.edepot-transfer--extend edepot-transfergraphql-api--extend graphql-apifaceting-configuration--extend faceting-configurationevent-driven-architecture--extend event-driven-architectureVolgorde
edepot-transfer(warm-up — kleinste, bouwt vertrouwen in flow)graphql-apifaceting-configurationevent-driven-architecture(laatste, split into 2 PRs)Per cluster — exact stappen
Dan de skill aanroepen:
De skill doet alles automatisch:
retrofit-{capability}-{YYYY-MM-DD}ghost change@spectagspython3 concurrentie-analyse/scripts/sync_spec_content.py openregisteraan voor Specter syncretrofit+reverse-speclabelsNa elke merge
Als sync fails met missing-column error: eerst
python3 ~/concurrentie-analyse/scripts/migrate_app_specs_retrofit.pyrunnen (idempotent).Tier 2 — judgment call (1–2 PRs, ~1 hour)
object-interactions/opsx-reverse-specrunnen tot pre-split is gedaan. Er is een grote kans dat dit "cluster" gewoon files zijn met "Object" in de namespace — die zouden via--extend object-lifecycleof--extend event-driven-architecturemoeten worden geannoteerd, niet als nieuwe capability.approval-workflowevent-driven-architecture— read het cluster en beslisactions--extend event-driven-architectureof nieuw--cluster actions.Tier 3 — defer (open één follow-up issue)
13+ kleine clusters (2–7 methods each):
search-trail,solr-search,gdpr-processing,tmlo-export,oas-generation,scheduled-workflows,workflow-import,file-extraction,dashboard,endpoints,configuration+ 9 van de 11 Bucket 2b clusters (names-cache,tables-sync,mappings,views, etc. — mostly infrastructure).Maak één issue aan:
openregister: retrofit Tier 3 follow-up — opportunistic spec coveragemet deze hele lijst. Sweep ze niet — opportunistisch oppakken wanneer iemand de gerelateerde code aanraakt.Exceptions die wél een echte spec waard zijn (still optional maar higher value):
security-auth(Bucket 2b) — scan notes flaggen "human pre-split required" omdat het waarschijnlijkrbac-scopes+endpoint-authsub-specs covertuser-management(Bucket 2b) — kan overlap hebben mettenant-lifecycle; pre-split requiredKnown gotchas — bespaar jezelf de zoektijd
@specpath convention divergence — annotations schrijven@spec openspec/changes/retrofit-{name}/tasks.mdmaar/opsx-archiveverplaatst het naaropenspec/changes/archive/retrofit-{name}/(ofopenspec/archive/retrofit-{name}/voor oudere manual-archive runs). Letterlijke paths resolven niet op disk. Dit is een bekende issue (logged inhydra/.claude/skills/opsx-archive/learnings.md). NIET in deze issue proberen te fixen — dat is een aparte skill-improvement effort.Specter sync inconsistent voor older retrofits —
retrofit-b2b-crossrefs,retrofit-calendar-integration, etc. zijn manueel gearchiveerd voordat/opsx-archivecorrect werkte. Verifieerapp_specs.retrofitenapp_specs.retrofit_extensionsvoor openregister bevatten de expected entries. Zo niet: re-runsync_spec_content.py openregisterna elke merge.Bucket 3a in coverage report = 319 keyword-match artifacts — dit zijn GEEN echte broken-code findings. Negeren.
Geen background agents voor bulk werk — per
opsx-reverse-spec/learnings.md: parallel subagents voor 70+ files lopen vaak vast. Sequentieel doen.Definition of done
edepot-transferreverse-spec gemergedgraphql-apireverse-spec gemergedfaceting-configurationreverse-spec gemergedevent-driven-architecturereverse-spec gemerged (split in 2 PRs)object-interactionstriaged (pre-split + reverse-spec, OR gedocumenteerd als scanner artifact)approval-workflowenactionsopgepakt of expliciet doorgeschovenConductionNL/openregister/opsx-verify openregisterrunt zonder keyword-fallbackapp_specs.retrofit_extensionsvoor openregister bevat alle nieuwe REQ-IDsReferences
/opsx-coverage-scanskill: https://github.com/ConductionNL/hydra/blob/main/.claude/skills/opsx-coverage-scan/SKILL.md/opsx-reverse-specskill: https://github.com/ConductionNL/hydra/blob/main/.claude/skills/opsx-reverse-spec/SKILL.md/opsx-archivelearnings (path divergence gotcha):hydra/.claude/skills/opsx-archive/learnings.mdopenregister/openspec/coverage-report.md(regenerate before starting)Related issues