Skip to content

Complete Openregister retrofit — Tier 1 Bucket 2a reverse-specs #33

@WilcoLouwerse

Description

@WilcoLouwerse

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-specdevelopment) 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 capabilitiescalendar-integration, content-versioning, object-lifecycle, tenant-lifecycle, chat-ai
  • Bucket 2b cross-capability cross-refsretrofit-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-upConductionNL/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

  1. Verifieer dat PR #1364 gemerged is naar development. Zo niet, eerst dat afronden — bouwen op een unmerged retrofit branch geeft conflicts.
  2. 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
  3. 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.
  4. 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

  1. edepot-transfer (warm-up — kleinste, bouwt vertrouwen in flow)
  2. graphql-api
  3. faceting-configuration
  4. 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

  1. @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.

  2. Specter sync inconsistent voor older retrofitsretrofit-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.

  3. Bucket 3a in coverage report = 319 keyword-match artifacts — dit zijn GEEN echte broken-code findings. Negeren.

  4. 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

  • PR #1364 gemerged
  • Fresh coverage scan gedraaid
  • Tier 1 — edepot-transfer reverse-spec gemerged
  • Tier 1 — graphql-api reverse-spec gemerged
  • Tier 1 — faceting-configuration reverse-spec gemerged
  • Tier 1 — event-driven-architecture reverse-spec gemerged (split in 2 PRs)
  • Tier 2 — object-interactions triaged (pre-split + reverse-spec, OR gedocumenteerd als scanner artifact)
  • Tier 2 — approval-workflow en actions opgepakt of expliciet doorgeschoven
  • Tier 3 follow-up issue geopend op ConductionNL/openregister
  • /opsx-verify openregister runt zonder keyword-fallback
  • Specter app_specs.retrofit_extensions voor openregister bevat alle nieuwe REQ-IDs

References

Related issues

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions