feat(devkit): add resumable workspace automation and UI review tooling
Verified with the coordinated workspace changes by devkit full run 2026-09-08T225814-186389-0000-3e3ed7cd (all seven phases passed). This shared UI pass does not mark the individual module reviews complete.
This commit is contained in:
Executable
+164
@@ -0,0 +1,164 @@
|
||||
# Product-wide UI review program
|
||||
|
||||
The [central Gitea epic](https://git.add-ideas.de/GovOPlaN/govoplan/issues/56)
|
||||
coordinates the review; its linked module issues are the canonical backlog,
|
||||
progress and evidence log. The [issue inventory](ui-review-issue-inventory.json)
|
||||
is a discovery/link snapshot, **not a second progress tracker**. All reviews were
|
||||
initialized pending. Implementing a shared component or moving a help icon does
|
||||
not by itself complete a module review.
|
||||
|
||||
The visual and interaction rules live in Core's
|
||||
[UI design principles](https://git.add-ideas.de/GovOPlaN/govoplan-core/src/branch/main/docs/UI_DESIGN_PRINCIPLES.md).
|
||||
This document defines how to apply and verify those principles across repositories;
|
||||
it does not fork their definitions. The usual [Gitea issue contract](GITEA_ISSUES.md)
|
||||
still applies. At the user's request, this cross-product program is coordinated in
|
||||
Meta; shared primitives and their implementation remain owned by Core.
|
||||
|
||||
## Scope and initial inventory
|
||||
|
||||
The September 2026 source/catalog baseline contains **77 review tracks**:
|
||||
|
||||
- **73 implemented scopes:** Core/shared shell and 72 manifest-backed modules.
|
||||
- **4 registered placeholders:** Appointments, Ledger, XÖV and XTA/OSCI. They have
|
||||
README-only repositories at initialization. Their separate readiness tracks
|
||||
remain pending for future interfaces; they are not counted as implemented or
|
||||
reviewed modules.
|
||||
|
||||
Meta and the public website are not business-module review scopes. Module IDs
|
||||
come from actual manifests, not repository-name guesses: for example,
|
||||
`govoplan-campaign` owns `campaigns` and `govoplan-dist-lists` owns `dist_lists`.
|
||||
The inventory is derived from `repositories.json`, trusted module manifests and
|
||||
the owning repository's source files. Changes to the catalog must be reconciled
|
||||
with the central epic rather than silently dropping a module.
|
||||
|
||||
A module with no standalone WebUI is still in scope. Review its configuration
|
||||
and administrator experience, contributed operator/public surfaces, widgets,
|
||||
documentation, permissions, errors and interactions exposed through other
|
||||
modules. A missing standalone page is not evidence of conformance. A reviewer
|
||||
may mark a particular principle not applicable only with a concrete explanation
|
||||
and source/runtime evidence. A placeholder likewise needs an explicit future-UI
|
||||
gate, not a fabricated page inventory or an automatic green review.
|
||||
|
||||
## Work order and ownership
|
||||
|
||||
Prioritize user-visible defects, usability and consistent interactions before
|
||||
broader features. Start with Core/shared-shell contracts and Campaign's complete
|
||||
workflow, then Files, Mail, Templates, Notifications, Docs/Help, Dashboard, Quick
|
||||
Access and Views. The remaining queue is ordered by observed defects, shared
|
||||
dependencies and risk. This is a starting order, not a claim that those reviews
|
||||
have started or finished; the central issue records the current focus.
|
||||
|
||||
For Campaign, use a compact, read-only campaign settings overview with explicit,
|
||||
scoped edit dialogs. Large recipient or attachment grids may use the UI-02 bulk
|
||||
editing exception: clearly entered edit mode, explicit Save and Cancel, dirty
|
||||
navigation protection, and no silent loss or accidental save. This direction
|
||||
must be implemented and verified in the Campaign review, not marked complete by
|
||||
the program bootstrap.
|
||||
|
||||
Fix a repeated problem in the owning shared primitive or semantic contract first,
|
||||
then migrate consumers and verify representative actual-module fixtures. Keep
|
||||
module business behavior in its own repository and preserve optional module
|
||||
boundaries. Do not replace concrete user evidence with a generic fixture alone.
|
||||
Parallel reviewers may own different modules, but they must coordinate shared
|
||||
Core files and browser fixtures instead of racing the same resources.
|
||||
|
||||
## Per-module review workflow
|
||||
|
||||
1. **Inventory.** Verify and extend the issue's source-derived seed: navigation,
|
||||
pages, nested routes, dialogs, labels/forms, tables/trees, admin/system/tenant/
|
||||
user settings, public/operator interfaces, widgets and optional-module
|
||||
contributions. Follow actual module entrypoints and runtime contributions;
|
||||
filename heuristics and manifest routes are a starting point, not an exhaustive
|
||||
runtime audit. Note roles, permission boundaries and installed optional modules.
|
||||
2. **Observe.** Exercise realistic narrow and wide viewports, German and English,
|
||||
keyboard navigation and focus, empty/loading/error/success states, clean/dirty
|
||||
edit modes, reload, navigation away and return, and restoration of personal
|
||||
preferences. Include realistic row counts, long labels, horizontal overflow,
|
||||
pagination and two-way column resizing with fixed columns between text fields.
|
||||
3. **Record.** Keep a findings/TODO/done ledger in the module issue. Every finding
|
||||
names the surface, reproduction, expected principle, impact, owner and linked
|
||||
implementation/evidence. A source inventory, planned fix or green generic
|
||||
test is not a completed finding. State product decisions and manual checks
|
||||
explicitly with enough context to resolve them.
|
||||
4. **Implement.** Prefer reusable shared primitives and action/page contracts.
|
||||
Keep display mode readable and editing intentional. Preserve authorization,
|
||||
server validation, save/cancel behavior and data integrity. Never send mail,
|
||||
delete records, change live configuration or trigger other irreversible effects
|
||||
merely to obtain UI evidence; use authorized fixtures or a safe test context.
|
||||
5. **Verify.** Run proportionate unit, structure and actual-module browser tests.
|
||||
Record commands, results, source revision and safe runtime evidence. Update the
|
||||
owning module's manifest-driven EN/DE documentation for behavior changes; run
|
||||
`tools/checks/check-manifest-shapes.py` and relevant cross-module checks.
|
||||
6. **Conclude honestly.** Complete the principle matrix, evidence and manual
|
||||
checks. Link unresolved follow-ups and blockers; do not close a supposedly
|
||||
complete review while required work is still pending. Closing an issue requires
|
||||
explicit reviewed scope and the applicable design-principle revision.
|
||||
|
||||
## Principle ledger and back-propagation
|
||||
|
||||
Use the stable IDs from Core in each issue. The initial revision covers UI-01
|
||||
heading/label help placement; UI-02 display-first/scoped editing; UI-03 actions;
|
||||
UI-04 table/card geometry; UI-05 loading/error/progress; UI-06 tree interaction;
|
||||
UI-07 accessibility and German; UI-08 data integrity; and UI-09 propagation of
|
||||
revised principles. Core remains the authoritative definition.
|
||||
|
||||
Each module maintains this matrix, initially entirely pending:
|
||||
|
||||
| Principle/revision | Applicable surfaces / justified N/A | Applied / remaining work | Evidence | Exception / owner / follow-up |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| UI-01 … UI-09 | Pending inventory | Pending review | Not yet recorded | None approved |
|
||||
|
||||
Whenever a principle is added or changed:
|
||||
|
||||
1. Update Core's rule with its rationale, stable ID and revision/change reference.
|
||||
2. List **all already-reviewed modules**, not just the current implementation's
|
||||
consumers. Check whether the changed rule applies to each.
|
||||
3. Record unchanged conformance with evidence, or reopen the review / create a
|
||||
linked follow-up with owner, exact affected surfaces and required checks.
|
||||
4. Update the central epic's propagation ledger. Previously reviewed modules with
|
||||
outstanding applicable work are **follow-up required**, not silently green.
|
||||
5. Resolve the propagation sweep only after every affected module has current
|
||||
evidence or an explicit, owned and justified exception. Exceptions do not
|
||||
silently change the shared rule.
|
||||
|
||||
Suggested central ledger:
|
||||
|
||||
| Principle change | Already-reviewed modules checked | Conformant evidence | Reopened / follow-up required | Exceptions / owner | Sweep state |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| Initial UI-01–UI-09 baseline | None reviewed at initialization | None | All module reviews pending | None approved | Pending |
|
||||
|
||||
## Safe inventory/bootstrap automation
|
||||
|
||||
`tools/gitea/gitea-ui-review-program.py` derives the current scopes from the
|
||||
catalog and source manifests, inventories routes and UI source entrypoints,
|
||||
then deduplicates issues by a stable hidden marker and normalized exact title.
|
||||
It includes closed issues in duplicate checks and never reopens, closes or
|
||||
overwrites existing module issues. Ambiguous or unmanaged duplicates stop the
|
||||
operation for review. Existing issue bodies, labels and review progress are
|
||||
preserved. A failed POST is not automatically retried; a subsequent run checks
|
||||
the marker again before deciding whether another create is needed.
|
||||
|
||||
Dry-run is the default. An authenticated dry-run performs only Gitea reads:
|
||||
|
||||
```sh
|
||||
.venv/bin/python tools/gitea/gitea-ui-review-program.py \
|
||||
--env-file /home/zemion/.config/gitea/gitea.env --epic 56
|
||||
```
|
||||
|
||||
Creating missing review issues requires explicit `--apply`. Initial population
|
||||
of the central epic's module-link block additionally requires
|
||||
`--initialize-links`; it is accepted only for the untouched bootstrap placeholder.
|
||||
Later runs must not rewrite checkboxes or human-maintained progress. Existing
|
||||
complete links are verified read-only. The token is loaded through the shared
|
||||
Gitea helpers and is never emitted in reports. A scoped `--ipv4` option works
|
||||
around host-specific IPv6 connectivity while retaining HTTPS certificate and
|
||||
hostname verification.
|
||||
|
||||
The tool emits a JSON result to stdout with source counts and issue links. The
|
||||
checked-in inventory is a reviewed initialization snapshot of that result;
|
||||
refreshing links does not authorize replacing live review status with the
|
||||
snapshot. Test the automation offline with:
|
||||
|
||||
```sh
|
||||
.venv/bin/python -m pytest tests/test_ui_review_program.py -q
|
||||
```
|
||||
Executable
+866
@@ -0,0 +1,866 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"snapshot_purpose": "Issue discovery links; live Gitea issues own review state and evidence.",
|
||||
"epic": {
|
||||
"repository": "govoplan",
|
||||
"number": 56,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan/issues/56"
|
||||
},
|
||||
"scope_count": 77,
|
||||
"manifest_modules": 72,
|
||||
"implemented_scopes": 73,
|
||||
"catalogued_placeholders": 4,
|
||||
"created": 77,
|
||||
"missing": 0,
|
||||
"issues": [
|
||||
{
|
||||
"scope_id": "core",
|
||||
"name": "Core / shared shell",
|
||||
"repository": "govoplan-core",
|
||||
"kind": "core",
|
||||
"ui_source_count": 111,
|
||||
"number": 301,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-core/issues/301",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "access",
|
||||
"name": "Access",
|
||||
"repository": "govoplan-access",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 18,
|
||||
"number": 23,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-access/issues/23",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "addresses",
|
||||
"name": "Addresses",
|
||||
"repository": "govoplan-addresses",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 26,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-addresses/issues/26",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "admin",
|
||||
"name": "Admin",
|
||||
"repository": "govoplan-admin",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 9,
|
||||
"number": 11,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-admin/issues/11",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "approvals",
|
||||
"name": "Approvals",
|
||||
"repository": "govoplan-approvals",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-approvals/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "assets",
|
||||
"name": "Assets",
|
||||
"repository": "govoplan-assets",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-assets/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "audit",
|
||||
"name": "Audit",
|
||||
"repository": "govoplan-audit",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-audit/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "booking",
|
||||
"name": "Booking",
|
||||
"repository": "govoplan-booking",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-booking/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "calendar",
|
||||
"name": "Calendar",
|
||||
"repository": "govoplan-calendar",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 10,
|
||||
"number": 26,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-calendar/issues/26",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "campaigns",
|
||||
"name": "Campaigns",
|
||||
"repository": "govoplan-campaign",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 60,
|
||||
"number": 103,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-campaign/issues/103",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "cases",
|
||||
"name": "Cases",
|
||||
"repository": "govoplan-cases",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 8,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-cases/issues/8",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "certificates",
|
||||
"name": "Certificates",
|
||||
"repository": "govoplan-certificates",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-certificates/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "committee",
|
||||
"name": "Committee",
|
||||
"repository": "govoplan-committee",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-committee/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "connectors",
|
||||
"name": "Connectors",
|
||||
"repository": "govoplan-connectors",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 20,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-connectors/issues/20",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "consultation",
|
||||
"name": "Consultation",
|
||||
"repository": "govoplan-consultation",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-consultation/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "contracts",
|
||||
"name": "Contracts",
|
||||
"repository": "govoplan-contracts",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-contracts/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "dashboard",
|
||||
"name": "Dashboard",
|
||||
"repository": "govoplan-dashboard",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 5,
|
||||
"number": 6,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-dashboard/issues/6",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "dataflow",
|
||||
"name": "Dataflow",
|
||||
"repository": "govoplan-dataflow",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 5,
|
||||
"number": 24,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-dataflow/issues/24",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "datasources",
|
||||
"name": "Datasources",
|
||||
"repository": "govoplan-datasources",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-datasources/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "decisions",
|
||||
"name": "Decisions",
|
||||
"repository": "govoplan-decisions",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-decisions/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "dist_lists",
|
||||
"name": "Distribution Lists",
|
||||
"repository": "govoplan-dist-lists",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-dist-lists/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "dms",
|
||||
"name": "DMS",
|
||||
"repository": "govoplan-dms",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 3,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-dms/issues/3",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "docs",
|
||||
"name": "Docs",
|
||||
"repository": "govoplan-docs",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 23,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-docs/issues/23",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "encryption",
|
||||
"name": "Encryption",
|
||||
"repository": "govoplan-encryption",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 7,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-encryption/issues/7",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "erp",
|
||||
"name": "ERP",
|
||||
"repository": "govoplan-erp",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-erp/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "evaluation",
|
||||
"name": "Evaluation",
|
||||
"repository": "govoplan-evaluation",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-evaluation/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "facilities",
|
||||
"name": "Facilities",
|
||||
"repository": "govoplan-facilities",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-facilities/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "files",
|
||||
"name": "Files",
|
||||
"repository": "govoplan-files",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 8,
|
||||
"number": 48,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-files/issues/48",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "fit_connect",
|
||||
"name": "FIT-Connect",
|
||||
"repository": "govoplan-fit-connect",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-fit-connect/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "forms",
|
||||
"name": "Forms",
|
||||
"repository": "govoplan-forms",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 7,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-forms/issues/7",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "forms_runtime",
|
||||
"name": "Forms Runtime",
|
||||
"repository": "govoplan-forms-runtime",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 6,
|
||||
"number": 7,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-forms-runtime/issues/7",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "grants",
|
||||
"name": "Grants",
|
||||
"repository": "govoplan-grants",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-grants/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "helpdesk",
|
||||
"name": "Helpdesk",
|
||||
"repository": "govoplan-helpdesk",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-helpdesk/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "identity",
|
||||
"name": "Identity",
|
||||
"repository": "govoplan-identity",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-identity/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "identity_trust",
|
||||
"name": "Identity Trust",
|
||||
"repository": "govoplan-identity-trust",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 4,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-identity-trust/issues/4",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "idm",
|
||||
"name": "IDM",
|
||||
"repository": "govoplan-idm",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 14,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/14",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "inspections",
|
||||
"name": "Inspections",
|
||||
"repository": "govoplan-inspections",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-inspections/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "learning",
|
||||
"name": "Learning",
|
||||
"repository": "govoplan-learning",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-learning/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "mail",
|
||||
"name": "Mail",
|
||||
"repository": "govoplan-mail",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 6,
|
||||
"number": 25,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-mail/issues/25",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "mandates",
|
||||
"name": "Mandates",
|
||||
"repository": "govoplan-mandates",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-mandates/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "notifications",
|
||||
"name": "Notifications",
|
||||
"repository": "govoplan-notifications",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 7,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-notifications/issues/7",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "ops",
|
||||
"name": "Ops",
|
||||
"repository": "govoplan-ops",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-ops/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "organizations",
|
||||
"name": "Organizations",
|
||||
"repository": "govoplan-organizations",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 9,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-organizations/issues/9",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "parties",
|
||||
"name": "Parties",
|
||||
"repository": "govoplan-parties",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-parties/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "payments",
|
||||
"name": "Payments",
|
||||
"repository": "govoplan-payments",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 3,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-payments/issues/3",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "permits",
|
||||
"name": "Permits",
|
||||
"repository": "govoplan-permits",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-permits/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "policy",
|
||||
"name": "Policy",
|
||||
"repository": "govoplan-policy",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 14,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-policy/issues/14",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "poll",
|
||||
"name": "Poll",
|
||||
"repository": "govoplan-poll",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-poll/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "portal",
|
||||
"name": "Portal",
|
||||
"repository": "govoplan-portal",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 4,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-portal/issues/4",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "postbox",
|
||||
"name": "Postbox",
|
||||
"repository": "govoplan-postbox",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 29,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-postbox/issues/29",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "procurement",
|
||||
"name": "Procurement",
|
||||
"repository": "govoplan-procurement",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-procurement/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "projects",
|
||||
"name": "Projects",
|
||||
"repository": "govoplan-projects",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 4,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-projects/issues/4",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "quick_access",
|
||||
"name": "Quick Access",
|
||||
"repository": "govoplan-quick-access",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 3,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-quick-access/issues/3",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "records",
|
||||
"name": "Records",
|
||||
"repository": "govoplan-records",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-records/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "reporting",
|
||||
"name": "Reporting",
|
||||
"repository": "govoplan-reporting",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 11,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-reporting/issues/11",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "resources",
|
||||
"name": "Resources",
|
||||
"repository": "govoplan-resources",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-resources/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "rest",
|
||||
"name": "REST Connector",
|
||||
"repository": "govoplan-rest",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-rest/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "risk_compliance",
|
||||
"name": "Risk Compliance",
|
||||
"repository": "govoplan-risk-compliance",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-risk-compliance/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "scheduling",
|
||||
"name": "Scheduling",
|
||||
"repository": "govoplan-scheduling",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 10,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-scheduling/issues/10",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "search",
|
||||
"name": "Search",
|
||||
"repository": "govoplan-search",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 4,
|
||||
"number": 6,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-search/issues/6",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "services",
|
||||
"name": "Services",
|
||||
"repository": "govoplan-services",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-services/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "soap",
|
||||
"name": "SOAP Connector",
|
||||
"repository": "govoplan-soap",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-soap/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "tasks",
|
||||
"name": "Tasks",
|
||||
"repository": "govoplan-tasks",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 5,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-tasks/issues/5",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "templates",
|
||||
"name": "Templates",
|
||||
"repository": "govoplan-templates",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 8,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-templates/issues/8",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "tenancy",
|
||||
"name": "Tenancy",
|
||||
"repository": "govoplan-tenancy",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 7,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-tenancy/issues/7",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "tickets",
|
||||
"name": "Tickets",
|
||||
"repository": "govoplan-tickets",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 3,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-tickets/issues/3",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "transparency",
|
||||
"name": "Transparency",
|
||||
"repository": "govoplan-transparency",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-transparency/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "views",
|
||||
"name": "Views",
|
||||
"repository": "govoplan-views",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 3,
|
||||
"number": 6,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-views/issues/6",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "voting",
|
||||
"name": "Voting",
|
||||
"repository": "govoplan-voting",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 2,
|
||||
"number": 8,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-voting/issues/8",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "wiki",
|
||||
"name": "Wiki",
|
||||
"repository": "govoplan-wiki",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 1,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-wiki/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "workflow",
|
||||
"name": "Workflow",
|
||||
"repository": "govoplan-workflow",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 6,
|
||||
"number": 17,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-workflow/issues/17",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "workflow_engine",
|
||||
"name": "Workflow Engine",
|
||||
"repository": "govoplan-workflow-engine",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 4,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-workflow-engine/issues/4",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "xrechnung",
|
||||
"name": "XRechnung",
|
||||
"repository": "govoplan-xrechnung",
|
||||
"kind": "manifest",
|
||||
"ui_source_count": 0,
|
||||
"number": 3,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-xrechnung/issues/3",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "catalog:govoplan-appointments",
|
||||
"name": "Appointments",
|
||||
"repository": "govoplan-appointments",
|
||||
"kind": "placeholder",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-appointments/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "catalog:govoplan-ledger",
|
||||
"name": "Ledger",
|
||||
"repository": "govoplan-ledger",
|
||||
"kind": "placeholder",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-ledger/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "catalog:govoplan-xoev",
|
||||
"name": "Xoev",
|
||||
"repository": "govoplan-xoev",
|
||||
"kind": "placeholder",
|
||||
"ui_source_count": 0,
|
||||
"number": 2,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-xoev/issues/2",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
},
|
||||
{
|
||||
"scope_id": "catalog:govoplan-xta-osci",
|
||||
"name": "Xta Osci",
|
||||
"repository": "govoplan-xta-osci",
|
||||
"kind": "placeholder",
|
||||
"ui_source_count": 0,
|
||||
"number": 1,
|
||||
"url": "https://git.add-ideas.de/GovOPlaN/govoplan-xta-osci/issues/1",
|
||||
"state_at_verification": "open",
|
||||
"operation": "created"
|
||||
}
|
||||
],
|
||||
"snapshot_date": "2026-09-08",
|
||||
"initial_review_status": "pending for every scope; this snapshot does not track subsequent issue progress"
|
||||
}
|
||||
Reference in New Issue
Block a user