Repository navigation
Backlog
Updated 2026-10-15 (Asia/Tokyo). This register separates current work from historical evidence. Implementation and verification are separate states; an older “Verified” entry does not prove the current deployment or every external dependency.
Current runtime: v1.113.46 (release commit d66ae3e, image ghcr.io/awijesundara/serviceops-server@sha256:943801fa…10fd, SLSA provenance verified), MicroK8s Helm revision 198, migration 20261014_0127, deployed 2026-10-15 after a restore-tested backup (serviceops-backup-pre-1-113-46-202610150547). Revision 197 (an attempt to deploy v1.113.45) failed safely in its migration hook because the database was already at 0127; v1.113.46 contains both lines of work.
| ID | Priority | Status | Work / acceptance |
|---|---|---|---|
| B-463 | P1 | Verified: v1.113.46 deployed, Helm 198 | Investigate with AI only for the incident's assignee and assigned team; waiting approvals link to their record; every manager portal count opens the matching filtered list or task queue; sign-out keeps Cloudflare Access from signing straight back in; floating menus close on an outside click or Escape; links use the brand colour; static asset URLs carry a content fingerprint so deploys reach browsers; fixed a 500 on /approvals for non-administrators; Helm test reaches the static edge port. Released with full QA: 1,885 unit tests, 100 end-to-end, browser and accessibility suites, PostgreSQL real-time tests, fuzz on SQLite and PostgreSQL (0 failing routes), tenant sweep (4,110 requests, no leaks). |
| B-462 | P1 | Verified: v1.113.46 deployed, Helm 198 | Finish the whole-application authorization review: only article authors, managers and administrators may archive knowledge; an active change without an approval chain cannot advance. Complete regression, localization, privilege-replay, PostgreSQL fuzz, browser/accessibility, restore and live rollout checks. Evidence. |
| B-416 | P1 | Verified: v1.113.13 deployed, Helm 167 | Preserve supplier/owner/CI selections outside picker limits; filter contracts before the display limit; retry notices when no recipient exists. |
| B-417 | P2 | Verified: v1.113.13 deployed, Helm 167 | CCB/executive assigned-user lists and searchable Add user dropdowns; per-user removal; validated same-page returns; open group retention and visible save confirmation. |
| B-418 | P2 | Complete | Consolidate this register and implementation plan, retain historical evidence, remove verified disposable artifacts, and record the administration UI convention. |
| B-461 | P1 | Verified: v1.113.46 deployed, Helm 198 | Requesters withdraw a request or a single requested item while it is open, with a reason: the running approval chain is cancelled (votes become No Longer Required), open SCTASKs close as Skipped, SLAs stop, the REQ settles to Cancelled, history and audit are recorded, and pending approvers, assignees and the requester are notified (request.withdrawn, editable wording). Only the person it was raised by or for, or an administrator, can withdraw. |
| B-460 | P1 | Verified: v1.113.46 deployed, Helm 198 | Configurable approval policies, replacing every fixed approval route: Administration → Approval policies defines ordered stages per tenant for catalog requests, changes and other enterprise records (approver source, decision rule, condition, fallback, duplicate skipping), shown in plain language. Catalog items choose a policy. The defaults reproduce the previous change and enterprise routes; the catalog default now asks the item's own fulfilment team after the line manager, instead of always the Service Desk (fixes a Unix-routed item going to "Fulfillment authorization"). Migration 20261014_0127. |
| B-459 | P3 | Planned | Jira Plans (Advanced Roadmaps): cross-project plans, hierarchy above epic, team capacity, scenarios, dependencies report. Plan |
| B-458 | P2 | Planned | Development integration and smart commits, Jira and CSV import, webhooks, REST API parity, project templates, trash, AI (summaries, natural language to JQL, epic breakdown), iOS work items. Plan |
| B-457 | P2 | Planned | Automation rules: triggers, conditions, actions, branches, smart values, templates, audit log. Plan |
| B-456 | P2 | Planned | Dashboards and gadgets. Plan |
| B-455 | P1 | Planned | Permission schemes, custom project roles, issue security levels, notification schemes. Plan |
| B-454 | P1 | Planned | Workflow engine (transitions, conditions, validators, post functions), custom issue types, custom fields, screens, field configurations, schemes. Plan |
| B-453 | P2 | Planned | Timeline: bars, dependencies, drag scheduling, release and sprint markers. Plan |
| B-452 | P1 | Planned | Jira reports: burndown, burnup, sprint, velocity, cumulative flow, control chart, epic, version, release burndown, issue reports. Plan |
| B-451 | P1 | Planned | Scrum and Kanban boards (several per project, filter-based), backlog, sprints including parallel sprints, estimation. Plan |
| B-450 | P1 | Planned | JQL (operators, history operators, functions, ORDER BY, autocomplete), issue navigator, saved/shared/favourite filters, subscriptions, CSV export. Plan |
| B-449 | P1 | Implemented and tested on branch (not yet released) | Work item completeness as in Jira: resolutions, components (lead, default assignee), versions (fix/affects, release with move, unrelease, archive, merge, delete, release notes), time tracking (Jira durations, original/remaining/spent, work logs), votes, stars, flag, environment, reporter changes, comment visibility by role, comment edit/delete/reactions, tenant link types, clone (subtasks, links, attachments), move (new key, old key redirects), convert, bulk change, Markdown, Your work, global create, share, print, keyboard shortcuts, organisation settings, mutable/templated notification events, REST additions. Migration 20261014_0126. Evidence: 22 phase 2 tests plus all project tests (90 with policy checks); browser test of Markdown preview, log work, shortcut help, bulk change, people picker; axe WCAG 2.1 AA with no violations on every project page (1440/390 px, light/dark); full suite 1,839 passed; browser smoke 100 passed; stability fuzz 0 failing routes on SQLite and PostgreSQL (131 pages, 199 forms); cross-tenant sweep clean; project pages 50–145 ms at 500 users and 20,000 work items on PostgreSQL. Plan
|
| B-443 | P1 | Implemented and tested on branch (not yet released) | Project management phase 1: projects (private/open, archive), members and roles, per-project statuses with WIP limits, work items (epic, story, task, bug, subtask) with assignees, watchers, labels, dates, points, estimates, comments with mentions, history, attachments and links to work items and to incidents/changes/problems (which list them back); overview, board (drag, swimlanes, quick add), list (filters, grouping, sorting, inline status), My work items; global search, navigation, notifications, live change notices, REST API (projects:read/projects:write). Migration 20261014_0125. Evidence: 33 project tests (rules, routes, authorization, private projects, other tenant, escaping, attachments, live-update grants, API with idempotency); browser test of drag, quick add, people picker and inline status; axe WCAG 2.1 AA with no violations on every project page at 1440/390 px, light and dark; full suite 1,818 passed; browser smoke 100 passed; stability fuzz 0 failing routes on SQLite and PostgreSQL (116 pages, 170 forms); cross-tenant sweep clean. At 500 users and 20,000 work items (10,000 in one project) on PostgreSQL every project page measured 30–110 ms. Plan
|
| B-442 | P2 | Committed (branch, not yet released) | Engineering follow-ups. Search: trigram indexes on comments, ticket numbers and CI descriptions (migration 20261013_0123) and the ticket match split into a UNION, so each part uses its indexes; ticket search query 86–310 ms → 1–2 ms on 20,000 tickets / 40,000 comments. Asset tags unique per tenant (contract migration 20261013_0124, verified on PostgreSQL and SQLite). SCIM user list paging (startIndex/count, at most 200). Live work lists: task board, open work, my tasks and ticket lists show "Tickets in this list have changed" for other people's changes (bare signal, agents only). Removed the unused verify_mfa_code. Tests for each; browser check of the list banner. QA: full suite 1,794 passed, browser smoke 100 passed, stability fuzz 0 failing routes on SQLite and PostgreSQL, cross-tenant sweep clean. The QA caught the asset migration re-creating its index on a fresh SQLite schema (fixed). |
| B-441 | P2 | Released 1.113.40 | RT reference on changes (optional; RT_CHANGE_LINK_ENABLED on the RT connection page, off by default). A new change takes an RT ticket number and Fetch from RT fills title, description (RT text, requestors, custom fields, link) and the owning team mapped from the RT queue; change managers can link an existing change. Each RT ticket links to one change; the change shows the RT link and gets a work note; RT is only read. Tests: fake RT preview, disabled state, requester refused, link and duplicate refusal; browser check of fetch and unknown-ticket message. |
| B-440 | P2 | Released 1.113.40 | Task board: dropping a card into an empty lane moves it at once (no "No matching work" until refresh), counts update in both lanes, the drop target highlights, failures undo the move with a message. Approval chains: the record column shows the number and title as a link, the chain name opens the record, and the history toggle is a labelled "N earlier versions" button. Browser QA 15/15. |
| B-439 | P1 | Released 1.113.40 | Live communication. (1) Notification checks send an ETag and get 304 when nothing changed; one tab per browser checks, the rest share its result; 25 s active, 60 s idle or hidden, 2 min backstop with a stream. (2) Server-sent events at /events/stream from a new events service fed by PostgreSQL LISTEN/NOTIFY, sent at commit (never for a rollback): new notifications arrive instantly and an open ticket shows "updated by someone else". Auth through /events/auth with the browser session, re-checked every 5 min; per-user and per-pod limits. Routed through the web pod's nginx edge; LIVE_EVENTS_ENABLED keeps other deployments on timed checks. (3) The outbox worker wakes on a signal instead of waiting 10 s; optional browser desktop notifications (Web Push, RFC 8291/8292, own VAPID key, browser push services only, keys encrypted at rest). Migration 20261013_0122. Tests: RFC 8291 test vector, PostgreSQL commit/rollback signals, events service end to end (only the user's own notifications), worker wake; production check: own notification delivered in under 0.1 s, another user's not delivered, anonymous 401. |
| B-438 | P2 | Deployed as candidate e0015c3, Helm 186 | UI: the rack location under Configuration item is a pin with "View location" (full position as tooltip); Assigned to shows a small profile picture beside the dropdown instead of repeating the name as a link; linked names look like ordinary text; public profile About and Organization panels align and the manager row no longer breaks; My tasks lists only teams the user belongs to or manages (administrators saw every team). Tests: rack link markup and browser/axe check, work tasks per team (fails on the previous code); full suite 1,766 passed. |
| B-437 | P2 | Released 1.113.39; running in candidate e0015c3 | Code review of B-433–B-436: TOTP step claimed with a conditional UPDATE so two simultaneous sign-ins with one code cannot both pass; the replay guard resets when MFA is enabled or disabled; the length check validates only values being written, so SQLite and IPFS-mode rows with legacy long values stay editable. Each fix has a test that fails on the previous code. |
| B-436 | P1 | Verified: v1.113.37/38 deployed, Helm 185; sizing decision open | 500-user evaluation on an isolated copy (20,000 tickets, every run 500 users). Today's footprint collapses (1 pod: 95% failures). Fixed the dashboard counting every ticket in Python (915 → 77 ms) and psycopg running its pure-Python fallback (C driver compiled against Debian libpq; 122 → 53 ms CPU per page). Result: 500 users at normal pace need 4 web pods × 1 CPU and PostgreSQL 2 CPU (steady state p50 94 ms, p95 1.3 s, 0.02% errors); busy all-day use needs about 7–8 web cores and 2–3 PostgreSQL cores, more than this cluster has. Open: scaling production beyond one replica (user decision), poll interval, request-scoped permission caching, search index. Performance. |
| B-435 | P1 | Verified: v1.113.36 deployed, Helm 184 | Stability: malformed input answers 4xx, never 500. A sweep of every page, form, POST route (admin, agent, requester, manager) and API endpoint on SQLite and PostgreSQL found 10 crashing handlers (unchecked int()/date parsing, including adding a problem or RITM task without a team), an audit() crash on blank targets, duplicate asset tags hitting the unique constraint, NUL characters and overlong text failing in PostgreSQL, and malformed AI/NetBox/Snipe-IT counts. All fixed (request_values.py, input_limits.py); improvement owners are now limited to active agents in the same tenant. 16 regression tests fail on the previous code and pass now; full suite 1,759 passed; the rerun sweep finds 0 failures. tools/stability_fuzz.py repeats it. Production error log had been cleared on 2026-10-03 and has recorded no errors since; cumulative counters show 1,524 historic 500s, mostly before that date. Open: asset tags are unique across tenants, not per tenant (needs a migration). |
| B-434 | P1 | Verified: v1.113.35 deployed, Helm 183 | Whole-application review (2026-10-12). Clean: lint, bandit, pip-audit, XSS/SQL sinks, anonymous route crawl (11 of 279 routes public, all by design), and a cross-tenant sweep of every ID-based web and API route (3,670 requests, no leaks). Fixed: wrong MFA codes never locked an account (now counted toward LOGIN_MAX_ATTEMPTS, web and mobile; a correct password no longer resets the count); TOTP codes could be replayed within 90 s (migration 20261012_0121, single-use steps); unknown usernames answered faster (equal-time Argon2id check); signed-in and API responses lacked Cache-Control (no-store default); OpenAPI lacked 22 /api/v1 routes (added, with a completeness test); workers lacked PUBLIC_BASE_URL. PostgreSQL 17 downgrade/roll-forward rehearsal with 20,098 records preserved data; full suite 1,742+ passed. Docs: configuration reference (all environment variables and 131 settings), SCIM/comments/mobile API reference, migrations 0119–0121, Statement of Applicability re-assessed, metrics list. Open: API_TOKEN_PEPPER unset (needs planned token re-issue), METRICS_TOKEN empty, key-rotation procedure, SCIM list unpaged, completed one-off Jobs accumulate. |
| B-433 | P2 | Verified: v1.113.34 deployed, Helm 182 | Code review of B-413 follow-up (v1.113.11): the CI owning team field appeared beside every CI picker in a form row, so change and problem pages showed it twice and the CMDB relationship form gained an unrelated field. It is now opt-in (incident and new-ticket pickers); other pickers keep the one-line hint. Picking a different, unsaved CI on an incident hides the saved CI's rack location bar. Pin icon is one macro; the Affected CIs relationship select has an accessible name (axe select-name). Tests: test_ticket_rack_location.py (server checks plus a real-browser test at 1440 and 390 px with axe WCAG 2.1 AA, 0 violations); full suite 1,886 passed, 0 failed. |
| B-432 | P1 | Verified: v1.113.33 deployed, Helm 181 | Task board decided card permissions with ~3 queries per card (981 queries for a 300-card board). Batched into three queries with identical rules (equivalence and query-budget tests). PostgreSQL, 5,000 tickets: 1,091 → 111 ms median. 300-user k6 mix on two cores: 41 → 49 req/s, p95 22 → 16 s. |
| B-431 | P2 | Verified: v1.113.33 deployed, Helm 181 | Public profiles: every user name, picture and @mention links to /people/<id> (same tenant, signed in). Owners choose public/private per field; mobile phone and employee ID private by default; private pictures served only to owner/admins. Migration 20261011_0120 (PostgreSQL upgrade/rollback verified). Light/dark/mobile visual check. |
| B-430 | P1 | Verified code fixes: v1.113.32/33 deployed, Helm 181; two-replica footprint not applied (one-replica rule); 1,000-user gate open under B-423 | Fix mobile approval starvation; signed pagination for approvals/knowledge/CMDB/notifications; preserve Helm proxy trust false; two web replicas, dedicated web resources, load-tolerant probes and protected static offload. Review remediation. |
| B-429 | P1 | Verified: v1.113.31 deployed, Helm 180; live Cloudflare Access, real OpenLDAP and Chat pipeline checks | Code review fixes: Google Chat /escalate supersedes change approvals and accepts only teams; enterprise updates validate priority, risk and a same-tenant assignee (400, no partial state change); LDAP username matching never adopts an administrator account; backup codes are shape-checked before Argon2; migration 20261011_0119 enforces unique tenant-wide approval-group links (PostgreSQL 17 upgrade, dedupe, rollback and re-upgrade verified); Cloudflare Access keys refetch on rotation (at most once a minute); change detail times labelled UTC. 10 negative regressions. |
| B-428 | P2 | Verified: v1.113.30 deployed, Helm 179; Safari acceptance pending | Preview themes immediately without persisting until Save; reset and discard behavior; Ocean/Indigo/Sandstone/Graphite/Midnight; shared surfaces, focus and mobile layout. Review. |
| B-427 | P1 | Verified: v1.113.29 deployed, Helm 178 | Complete AI change drafts carry dates, full plans, eligible team and supplied CI evidence to the review form. Profile timezone is respected; incomplete drafts are flagged. 1,700 local tests and desktop/mobile review-and-submit checks passed. Live Gemini selected the correct CI/team and complete fields; the real review form retained them, without ticket creation. |
| B-426 | P2 | Verified: v1.113.29 deployed, Helm 178 | Persist authenticated iOS origin on comments and activity; display alongside AI-assisted badges. Additive migration 20261011_0118 preserves existing rows. |
| B-425 | P2 | Verified: v1.113.29 deployed, Helm 178 | Attachment deletion requires a reason; append-only ticket history retains it and linked comments show a deleted notice. Web and comments API retain filename/status; no schema change. Permissions, rollback, escaping and desktop/mobile browser checks covered. |
| B-424 | P1 | Verified backend: v1.113.29 deployed, Helm 178 | Ticket API and iOS expose authorized Web UI information, CI/rack links and expandable detail sections. 31 backend regressions, simulator build and legacy/rich decoder checks passed. INC0010559 verified through the public API. Physical-device/VoiceOver acceptance remains pending. Guide. |
| B-419 | P2 | Implemented; backend acceptance and iOS build passed | Grouped mobile workspace; asset location/rack/hardware/ownership/lifecycle details; ServiceOps connection information. 25 backend tests passed. Visual/device acceptance remains pending. |
| B-420 | P2 | Implemented; backend, build and component rendering verified | Front/rear server rack view, real U capacity, selected asset highlight, permission-scoped devices and placement warnings. 26 backend tests passed; Helm 171 healthy. Physical-device acceptance pending. |
| B-421 | P2 | Verified: governed v1.113.25; retained in v1.113.29, Helm 178 | Professional web theme cards: Classic Light, Executive Navy, Slate, Forest, Dark and Match system. Per-account persistence, keyboard selection, responsive layout and text contrast verified. | | B-422 | P1 | Verified: v1.113.24 deployed, Helm 173 | Task board builds only shown cards (120 → 19 ms at 10,000 tickets); task board, analytics, manager portal and user admin no longer bind unbounded id lists (PostgreSQL 65,535-parameter limit); malformed impact/urgency/assignee return 400 instead of 500; MFA backup codes Argon2id; CodeQL findings resolved (0 open). | | B-423 | P1 | Superseded by B-436 (sizing measured; scaling decision open) | Production load test saturated at ~450 concurrent users during sign-in (1 web pod, 1 CPU, 8 slots) and became unready for ~2 minutes. Probe isolation is now deployed (B-430) and the dominant CPU defect fixed (B-432). Remaining gap is raw CPU: ~25 req/s per core after B-432, while the k6 script's 3–8 s think time makes 1,000 VUs ≈ 400 req/s (≈16 cores). Decide between more web CPU and a realistic think time before re-running. Results · Remediation. |
These statuses are carried from the last recorded register entry. They require fresh evidence before promotion to Verified. Historical dependency or publication requests are not authorization for this delivery.
| ID | Priority | Recorded status | Scope |
|---|---|---|---|
| B-001 | P0 | Implemented | Remove demo mode/personas/sample seeding/default passwords; fresh-install and cleanup tests pass. History. |
| B-004 | P0 | In progress | Tenant-specific chained HMAC evidence, correlation, database mutation denial, verification-gated signed export and adversarial tests are implemented History. |
| B-005 | P0 | In progress | Central object policies and adversarial coverage protect ticket, request, approval-chain, attachment, enterprise/problem, analytics and search surfaces, plus a validated fail-closed Git-backed field-projection registry History. |
| B-006 | P0 | Implemented | File-mounted bootstrap secrets, bootstrap-password exclusion from workers, split Kubernetes bootstrap/runtime Secrets, retirement tooling, credential rotation History. |
| B-007 | P0 | In progress | Digest-pinned images, full-SHA-pinned CI actions, Trivy blocking, CycloneDX SBOM, keyless Cosign signing, SLSA/SBOM attestations, Sigstore admission enforcement History. |
| B-008 | P0 | Open | Run penetration test and remediate critical/high findings. History. |
| B-009 | P0 | In progress | SHA-256 recovery-set manifests, archive traversal protection, isolated logical restore, non-destructive pg_basebackup + continuous-WAL rehearsal History. |
| B-010 | P0 | In progress | Guarded candidate-image rehearsal, pre-upgrade recovery set, migration gate, Kubernetes retains five revisions with maxUnavailable: 0 History. |
| B-200 | P0 | In progress | Decompose BP-001 into atomic requirements and governed release epics (ADR-010–019). History. |
| B-202 | P0 | In progress | Default tenant creation, 15 tenant-owned roots backfilled, tenant-aware query conventions History. |
| B-203 | P0 | In progress | First stable bounded interface serviceops_core.security History. |
| B-204 | P0 | In progress | REST v1 tenant/user-bound clients, scopes, cursor pagination, idempotent writes, OpenAPI, live docs at /api/v1/docs History. |
| B-206 | P0 | Implemented | Git-backed impact/urgency matrix, documented priority overrides, business schedules, SLA lifecycle evidence, breach escalation. History. |
| B-207 | P0 | Implemented | Git-backed workflow packages, immutable versions, state-entry jobs, retries/dead-letter. History. |
| B-208 | P0 | Implemented | Durable wait cursors, per-workflow rate limits, manual/API/SLA triggers, idempotency, dead-job replay. History. |
| B-209 | P0 | Implemented | Reusable subflows, tenant-aware recurring schedules, SKIP LOCKED scheduler claims. History. |
| B-210 | P0 | Implemented | Credential auth-version invalidation, mounted bootstrap-secret loading, split Kubernetes Secrets. History. |
| B-211 | P0 | Implemented | Local-auth login lockout with audited events. History. |
| B-230 | P0 | Implemented | Migration rehearsal script derives head/prior revision dynamically instead of hardcoding. History. |
| B-231 | P0 | Implemented |
tenant_context_id() fails closed instead of defaulting to tenant 1 History. |
| B-239 | P0 | Implemented |
.dockerignore now excludes backups/, .installer-state/, etc History. |
| B-242 | P0 | Implemented | Authlib CVE-2026-27962 fix. History. |
| B-244 | P0 | Implemented | Dependency audit sweep (Flask/Authlib/requests/Werkzeug/pytest), secure-cookie default fix for compose.external-db.yaml/.env.example, digest-pinning support in build-dist.sh. History. |
| B-323 | P0 | Implemented | ServiceOps 1.67.0 browser-quality and search-performance release History. |
| B-326 | P0 | Implemented | ServiceOps 1.69.0 and iOS 1.2.0 biometric and passkey authentication History. |
| B-327 | P0 | Implemented | ServiceOps 1.70.0 / iOS 1.3.0 mobile workspace expansion History. |
| B-335 | P0 | Implemented (login-only milestone) | Direct follow-up to B-331/B-334: user pushed back hard after seeing the side-by-side IPFS demo stack still ran a db (Postgres) container -- "why do we have a db for ipfs version History. |
| B-350 | P0 | Implemented | Kubernetes database-loss prevention and truthful settings cleanup History. |
| B-364 | P0 | Open | Cluster API authorization is AlwaysAllow (RBAC not enforced) -- decision needed. Found 2026-09-20 during a cross-project security review: on the production MicroK8s cluster a service account that does not exist is allowed… History. |
| B-022 | P1 | Implemented | Ticket lists/forms/activity/attachments/checklists; pagination/saved-filter/malware-scanning gaps remain. History. |
| B-024 | P1 | Implemented | Post-install branding/settings/logo. History. |
| B-030 | P1 | Implemented | Named team managers, explicit CCB approver authority and approval chains. History. |
| B-031 | P1 | Implemented | Core INC/PRB/PTASK/CHG/CTASK/REQ/RITM/SCTASK lifecycle and relationship network, known errors, major-incident extension. History. |
| B-032 | P1 | Implemented | Primary/affected CI and impacted-service task relationships, CI-aware conflict detection, /cmdb manual CI+relationship CRUD, PUT /api/v1/cmdb/configuration-items (cmdb:write), tools/cmdb_sync_agent.sh History. |
| B-033 | P1 | Implemented | Multi-RITM requests, multiple independently assigned SCTASKs, sequential/parallel task control, closure roll-up, approvals and SLAs. History. |
| B-050 | P1 | Implemented | Docker bundled/external PostgreSQL deployment; restore/rolling-upgrade proof pending completion. History. |
| B-051 | P1 | Implemented | Helm HA scaffolding; real multi-zone cluster validation pending. History. |
| B-052 | P1 | Open | Add supported object storage for attachments, antivirus scanning, encryption and retention. History. |
| B-061 | P1 | Implemented | LDAP/Keycloak/local admin plus AD-group-to-team login sync; representative external validation pending. History. |
| B-062 | P1 | Open | Add MFA policy integration, SCIM lifecycle, session inventory/revocation and emergency access controls. History. |
| B-070 | P1 | Open | Metrics, structured logs, traces, alerting, SLO dashboards, capacity model and runbooks. History. |
| B-071 | P1 | Open | Load/soak/failover tests with published targets. History. |
| B-080 | P1 | Open | Accessibility audit to WCAG 2.2 AA. History. |
| B-090 | P1 | Open | Data classification, retention, legal hold, privacy export/deletion and regional controls. History. |
| B-130 | P1 | In progress | Durable outbox, worker coordination, bounded retry, SMTP/webhooks/Teams, encrypted secrets, delivery evidence, monitoring ingestion History. |
| B-205 | P1 | Implemented | Installable PWA manifest, privacy-safe shell-only service worker. History. |
| B-220 | P1 | Implemented |
/work/tasks unified CTASK/PTASK/EVTASK/SCTASK queue; /manager/portal. History. |
| B-221 | P1 | Implemented | Dashboard "Assigned to me"/SLA breach/Incidents tiles, admin-toggleable History. |
| B-222 | P1 | Implemented | Notifications carry target links. History. |
| B-223 | P1 | Implemented | Team-to-team reassignment for incidents/changes, restarting change approval. History. |
| B-224 | P1 | Implemented | Type-ahead lookups for CIs and cross-record references. History. |
| B-232 | P1 | Implemented | Reapproval notification deduplication. History. |
| B-233 | P1 | Implemented | Secure session cookie defaults with explicit insecure-cookie escape hatch. History. |
| B-234 | P1 | Implemented | Open-redirect guard on UserPreference.start_page. History. |
| B-235 | P1 | Implemented | Content-Security-Policy header History. |
| B-236 | P1 | Implemented | Webhook DNS-rebinding/redirect-SSRF re-validation per hop History. |
| B-237 | P1 | Implemented | Gunicorn timeout/worker-recycling configuration History. |
| B-238 | P1 | Implemented | Version-string alignment across installer/Compose/Helm/env examples. History. |
| B-241 | P1 | Implemented |
tools/load_test_fixture.py excluded from the production image History. |
| B-249 | P1 | In progress | Notification read-state, profile AD-sync display, required-field-asterisk consistency, change-plan-edit state guard. History. |
| B-253 | P1 | Implemented | Whole-app audit plus CMDB depth/hardening pass, driven by a request to make the CMDB "well detailed" and fix cross-cutting code-quality/performance/stability/security issues found along the way History. |
| B-352 | P1 | Implemented | Professional outbound communication: provider-neutral SMTP plus Google Workspace relay, app-password and OAuth 2.0 modes; guided Google Chat, Telegram bot, Slack, Microsoft Teams, Discord, signed webhook and audit-only SIEM con… History. |
| B-354 | P1 | Implemented, hosted pipeline pending | Cloudflare Access single sign-on: when CLOUDFLARE_ACCESS_TEAM_DOMAIN/CLOUDFLARE_ACCESS_AUD are configured, /login verifies the edge-forwarded Cf-Access-Jwt-Assertion JWT (RS256 signature against Access's own JWKS via `j… History. |
| B-402 | P1 | Implemented | Install-wide platform settings under multiple tenants History. |
| B-403 | P1 | Implemented | Reviewable repair for incident categories reset to "General" by the empty category picker (5f86c1c until 1.104.11, see B-397): tools/repair_reset_categories.py, dry run by default, --apply to commit History. |
| B-404 | P1 | Implemented | AI privacy hardening after the product owner asked whether other people could read their data through AI chat using the owner's Gemini key (they cannot: evidence is retrieved server-side under the asker's identity, and conversa… History. |
| B-405 | P1 | Implemented | NetBox import reported "Completed" without importing anything (product owner report, 2026-09-28) History. |
| B-100 | P2 | Implemented | Administrator post-deployment settings; extend to workflows/numbering/states/notifications/policy versioning. History. |
| B-120 | P2 | Open | Guided tours and contextual help with versioned content and role targeting. History. |
| B-121 | P2 | Open | Configurable workspace/page builder. History. |
| B-225 | P2 | Open | Git history predates 2026-07-27; not recoverable further back. History. |
| B-240 | P2 | Implemented | Removed dead dark-mode CSS (ADR-012 light-only). History. |
| B-243 | P2 | Implemented | RPM packaging alternative to git clone. History. |
| B-264 | P2 | Implemented | Login page never rendered an uploaded company logo — login.html always rendered hardcoded initials ({{ company_name[:2] / upper }}) even though has_company_logo/company_logo() were already wired up and used correctly by t… History. |
| B-266 | P2 | Implemented | Three requests from live use History. |
| B-269 | P2 | Implemented | Documentation catch-up for B-265/B-266/B-267/B-268, which shipped real features and fixes without their corresponding manual/API-reference updates at the time History. |
| B-270 | P2 | Implemented | Per explicit user direction, amended CLAUDE.md's "Documentation control" section (in both this repo and ServiceOps, which keep identical copies) to carve out docs/API_REFERENCE.md as the one deliberate exception to "this … History. |
| B-271 | P2 | Implemented | Agentless CMDB discovery, requested by the user in GLPI/FusionInventory terms ("automatically detect all the connected resources, switches, hardware.. History. |
| B-263 | P3 | Implemented | Sidebar navigation used a native OS scrollbar (thick, gray, non-transparent) whenever the item list overflowed vertically, and lacked an explicit overflow-x rule, so a second horizontal scrollbar could also appear — visually … History. |
| B-331 | P3 | Implemented (experimental) | User requested an optional, install-time-selectable database-less deployment mode using IPFS instead of PostgreSQL, with "better user authentication and recovery" and the explicit constraint that it ship in the same codebase, n… History. |
Retained for traceability. Current acceptance is recorded in the implementation plan; do not use old release numbers or test counts as live state.
| ID | Priority | Recorded status | Scope |
|---|---|---|---|
| B-415 | P1 | Historical verified | B-415 in-cluster webhook receivers (2026-10-09): WEBHOOK_INTERNAL_HOSTS (chart proxy.webhookInternalHosts) lets administrator-configured webhooks reach listed in-cluster hosts over http:// and private addresses (loopback an… Evidence. |
| B-414 | P1 | Historical verified | B-414 serial-number CI lookup and approver groups (2026-10-09): CI pickers and the browse dialog match serial numbers (exact serial first, wildcards escaped) Evidence. |
| B-413 | P1 | Historical verified | B-413 rack location on tickets (2026-10-09): Tickets whose configuration item has a rack placement show "Rack B4-12 · Tokyo DC1 · U22, front" under Configuration item, the rack and U position on each Affected CIs row, and the C… Evidence. |
| B-411 | P2 | Historical verified | Documentation refresh (2026-10-08, v1.113.4): recaptured all 28 manual screenshots and the README images from a fresh demo instance, regenerated the platform manual PDF, and noted the per-user theme, ticket attachment drag-and-… Evidence. |
| B-410 | P1 | Historical verified | Security review corrections (2026-10-03, v1.110.1) Evidence. |
| B-409 | P1 | Historical verified | Governed release and footprint corrections (v1.110.0, 2026-10-03) Evidence. |
| B-408 | P2 | Historical verified | AI-drafted ticket notes shown with structure and an "In collaboration with AI" tag (v1.110.0) Evidence. |
| B-407 | P2 | Historical verified | CMDB rack equipment images and conservative identification (v1.110.0): NetBox → exact bundled model → original local front/rear type illustrations for 13 categories plus unknown equipment; role/class/model/name evidence is visible Evidence. |
| B-406 | P1 | Historical verified | SCIM project-review corrections (2026-10-02): pathless add/replace deactivation now applies attributes and immediately revokes sessions; duplicate email updates return 409 uniqueness with transactional rollback, including datab… Evidence. |
| B-401 | P2 | Historical verified |
app.py decomposition (CLAUDE.md review priority 13): all 226 routes moved out of create_app() into ten modules under serviceops_core/web/ (platform, auth, api, workspace, tickets, service_requests, cmdb, knowledge, client… Evidence. |
| B-400 | P2 | Historical verified | Embedded read-only MCP server at POST /api/v1/mcp (serviceops_core/mcp.py, mcp_tools.py), shipped in the application image/chart/RPMs rather than as a separate service Evidence. |
| B-399 | P1 | Historical verified | ITIL categorisation alignment per docs/ITIL_V5_CATEGORISATION.md (product owner's ITIL Version 5 guidance; aligned with, not certified) Evidence. |
| B-398 | P1 | Historical verified | Second whole-app review pass (security, authorization, performance, correctness, packaging) Evidence. |
| B-397 | P1 | Historical verified | Re-check of CLAUDE.md's "Current review priorities" list against current source, requested as a general "review the project and fix any issues" pass Evidence. |
| B-396 | P2 | Historical verified | Correction to B-394/B-395's version numbers: both entries describe a real local build/deploy (each is explicit that it bypassed hosted CI, commit, push, tag, and publication), but "1.104.2"/"1.104.3" were only ever local versio… Evidence. |
| B-395 | P2 | Historical verified | Redesigned the dedicated expanded AI chat page to match the supplied two-column reference: a persistent white assistant rail with new conversation, memory, and recent history controls; a large blue-to-lilac conversation canvas;… Evidence. |
| B-394 | P2 | Historical verified | Reworked the ServiceOps AI chat into the requested compact floating messenger layout while retaining ServiceOps identity and all existing security and access controls Evidence. |
| B-393 | P2 | Historical verified | Chat widget UI feedback from live-testing (JapanNext deployment, now working after adding the missing AI worker pod -- that fix was operator-side, not a code change: the standalone Kubernetes manifests there never included a `p… Evidence. |
| B-392 | P1 | Historical verified | Two issues from live-testing with several Gemini connections and a new outbound proxy configured Evidence. |
| B-391 | P2 | Historical verified | Two fixes from live-testing the AI chat Evidence. |
| B-390 | P1 | Historical verified | Make outbound-network policy consistent across ServiceOps Evidence. |
| B-389 | P2 | Historical verified | Fresh whole-application audit requested 2026-09-24 against deployed 1.101.6 Evidence. |
| B-388 | P2 | Historical verified | Follow-up review of B-387 plus a repo-status fix, both requested in the same "review the whole project, Codex isn't doing anything" pass Evidence. |
| B-387 | P0 | Historical verified | Expand authorized AI evidence without weakening privacy Evidence. |
| B-386 | P0 | Historical verified | Fixed a real hallucination the user hit live: chat repeatedly told them a ticket-comment action was "prepared for review" when none existed -- no button appeared, approving did nothing Evidence. |
| B-377 | P1 | Historical verified | Administrator chat actions (Codex agent implementation, reviewed and finished 2026-09-22): extends the existing human-approved AIAction framework (previously one action: turn an investigation into a ticket comment) to ticket st… Evidence. |
| B-376 | P1 | Historical verified | Assistant should work with the whole product; chat and admin UI clean-up (user report with screenshots and transcript, 2026-09-21, prompt follow-up 2026-09-22) Evidence. |
| B-375 | P1 | Historical verified | Get the most out of provider free tiers automatically (user request 2026-09-21, with the Google AI Studio rate-limit table) Evidence. |
| B-374 | P1 | Historical verified | Assistant usefulness, authority and memory (user transcript review, 2026-09-21) Evidence. |
| B-373 | P1 | Historical verified | Admin AI page and search fixes (user report, 2026-09-21, screenshot of the Gemini edit dialog) Evidence. |
| B-372 | P1 | Historical verified | Adding a Gemini key failed (user report, 2026-09-21) Evidence. |
| B-371 | P2 | Historical verified | CI maintenance (2026-09-21): the supply-chain workflow and its sibling workflows still pinned action versions from early September Evidence. |
| B-370 | P2 | Historical verified | Whole-AI-code review pass (2026-09-21) after 1.97.0 was deployed and verified live (Helm revision 92, migration 0098, digest equals the governed image) Evidence. |
| B-369 | P1 | Historical verified | Multiple AI services with privacy-aware routing (user request 2026-09-21) Evidence. |
| B-368 | P1 | Historical verified | Model-aware request budgets, signed discovery, and a governance gap (2026-09-20) Evidence. |
| B-367 | P1 | Historical verified | Universal AI connection (user request 2026-09-20, after connecting a llama.cpp-on-Radeon Mac by hand and hitting "This endpoint has not been allowlisted by the deployment operator" with no hint what to do or which model to … Evidence. |
| B-366 | P1 | Historical verified | AI 2.0: live streaming answers, visible reasoning, and a role-scoped chat assistant (user request 2026-09-20) Evidence. |
| B-365 | P1 | Historical verified | Self-hosted AI on CPU exceeds ServiceOps' provider time limit Evidence. |
| B-363 | P1 | Historical verified | Cross-project security review (2026-09-20) Evidence. |
| B-361 | P1 | Historical verified | User reported being unable to deploy ServiceOps to Kubernetes through a Sonatype Nexus registry proxy and asked to make signature verification optional to unblock it; investigation found the real cause wasn't verification at al… Evidence. |
| B-360 | P1 | Historical verified | Self-runnable slice of B-080's WCAG 2.2 AA audit: axe-core (already wired into tests/test_e2e_smoke.py) catches static DOM issues but not real keyboard operability, focus order/visibility, reduced-motion behavior, or exact-32… Evidence. |
| B-359 | P0 | Historical verified | Three account-deactivation/lockout bypasses found during a whole-project security audit (2026-09-13), all fixed with regression tests Evidence. |
| B-358 | P0 | Historical verified | Production integrity gap found during a whole-project review (2026-09-12/13): MicroK8s namespace operations is currently running a build tagged 1.87.11 that is not the governed release of that version Evidence. |
| B-357 | P0 | Historical verified | Restructured the two primary operator/user documents -- docs/OPERATIONS_MANUAL.md (the source for the public docs/ServiceOps_Complete_Platform_Manual.pdf) and docs/DEPLOYMENT.md -- after the user reported both as "too muc… Evidence. |
| B-356 | P0 | Historical verified | UI-polish and defect-fix arc spanning v1.87.7 through v1.87.10, each independently released and deployed to MicroK8s namespace operations this cycle Evidence. |
| B-355 | P0 | Historical verified | Deep review-and-fix pass (commit 28785d1) plus its governed release and MicroK8s deployment Evidence. |
| B-353 | P0 | Historical verified | Fixed the root cause of "no notifications arrive on any configured channel (e.g Evidence. |
| B-351 | P0 | Historical verified | Kubernetes delivery maturity: configurable zero-unavailable rolling updates and drain timing; optional Argo Rollouts canary analysis; Argo CD GitOps example with self-heal and safe no-prune policy; strict feature kill switches;… Evidence. |
| B-349 | P0 | Historical verified | External synchronization outage prevention Evidence. |
| B-348 | P0 | Historical verified | Proactive post-release anomaly audit Evidence. |
| B-347 | P0 | Historical verified | Screenshot-driven Kubernetes delivery hardening Evidence. |
| B-346 | P0 | Historical verified | Screenshot-driven LDAP relationship extension Evidence. |
| B-345 | P0 | Historical verified | Administrator-controlled directory completeness, signed audit security context, and expanded NetBox contract compatibility Evidence. |
| B-344 | P2 | Historical verified | App-wide fade/reveal animation and scroll-affordance fix, backfilled here per this repo's own documentation-control rule after being implemented as an ad-hoc UI request not tied to an existing tracked item Evidence. |
| B-343 | P1 | Historical verified | RunOps/FlowOps integration gap: GET /api/v1/tickets/{number}/ctasks (added v1.84.0, undocumented here until now) let a companion app read a change's task list but never write it back, so completing a CTASK's underlying work i… Evidence. |
| B-342 | P0 | Historical verified | Catalog approval policy correction prompted by a real report that approval-required requests did not reach the requester's line manager when that manager had only been provisioned from AD/LDAP and had never logged in, with inte… Evidence. |
| B-341 | P0 | Historical verified | Reviewed and production-hardened the recent offline tooling branch, then published it through the automatic governed pipeline Evidence. |
| B-340 | P0 | Historical verified | Made the full governed release lifecycle automatic for every accepted ServiceOps change Evidence. |
| B-339 | P0 | Historical verified | ServiceOps 1.78.4 professional installation and fully automated governed-release improvement Evidence. |
| B-338 | P0 | Historical verified | Replaced the B-335 login-only IPFS milestone with a complete IPFS-authoritative application mode Evidence. |
| B-337 | P0 | Historical verified | Direct follow-up to B-336: user reported that after signing into IPFS mode at localhost:8081/ipfs-home, navigating to localhost:8081/ (without signing out) gave "An unexpected error occurred." Reproduced live and read t… Evidence. |
| B-336 | P0 | Historical verified | Direct follow-up to B-335: user reported "localhost:8081 give me Internal Server Error" immediately after that milestone shipped Evidence. |
| B-334 | P0 | Historical verified | Direct follow-up to B-331: user asked to deploy the IPFS/database-less mode on a separate port (8081) specifically so both modes could be tested side by side against the main Postgres-mode deployment Evidence. |
| B-333 | P1 | Historical verified | Completed the previously disclosed but unreviewed mobile ticket-attachment surface in ServiceOps 1.71.2 and aligned it to the current iOS viewer contract Evidence. |
| B-332 | P2 | Historical verified | User reported the iOS app's users (built at XCode_Development/ServiceOps) never appeared in System Health -> Active users, despite actively using the app Evidence. |
| B-330 | P2 | Historical verified | Canonical three-asset ServiceOps identity release for ServiceOps 1.70.3 and iOS 1.3.2 (build 8) Evidence. |
| B-329 | P2 | Historical verified | Shared application-icon release: the user-approved blue/cyan network-cube artwork is prepared as an opaque, padded 1024 px master on deep navy and applied consistently to ServiceOps 1.70.2 and iOS 1.3.1 (build 7) Evidence. |
| B-328 | P1 | Historical verified | ServiceOps 1.70.1 mobile discoverability, documentation, and release-evidence update Evidence. |
| B-325 | P0 | Historical verified | ServiceOps 1.68.1 and iOS 1.1.1 sensitive-file hygiene review Evidence. |
| B-324 | P0 | Historical verified | ServiceOps 1.68.0 native mobile user authentication Evidence. |
| B-322 | P2 | Historical verified | Four more live-reported organization complaints, fixed together: (1) "automation rules and scheduled automation rules goes to the same page Evidence. |
| B-321 | P2 | Historical verified | Direct follow-up to B-320: user reported live, after actually using the newly-split settings pages, that "some are not visible with the whole screen, it just compacts ugly," and asked for every page to be re-visited and con… Evidence. |
| B-320 | P2 | Historical verified | Direct follow-up to B-319: user rejected the real, correctly-working tab-switching from B-319 outright -- "still not good.. Evidence. |
| B-319 | P2 | Historical verified | Direct follow-up to B-318: user said Platform settings and Service delivery & governance still felt like "all of them are together and unable to track different categories," and pointed out duplicate links "here and there."… Evidence. |
| B-318 | P2 | Historical verified | User asked for small, deeply-nested admin components to be searchable (their own example: "LDAP directory sync," a sub-section 200+ lines into the Service delivery & governance mega-page with no menu entry anywhere), and for th… Evidence. |
| B-317 | P1 | Historical verified | User asked to review the whole app for the same class of bug found in B-316 (a control that appears to do something but has zero real effect, with no warning) -- said plainly they'd "started losing trust" after catching bug… Evidence. |
| B-316 | P2 | Historical verified | User reported that granting agent/manager the administer, security_administer, and platform_administer actions on /admin/roles had no effect -- they still couldn't see the admin panel, and asked whether this was expected Evidence. |
| B-315 | P0 | Historical verified | User reported live, mid-session, that a role permission change in /admin/users "seems not working." Reproduced against a real fixture account on the live deployment before touching any code: an account holding only agent (v… Evidence. |
| B-313 | P3 | Historical verified | User asked to update all screenshots and documents, reporting they were "out of sync now" following B-312's login fix Evidence. |
| B-312 | P2 | Historical verified | User reported (with a screenshot of Google's own account-creation UX as the target model) that AD/LDAP sign-in only accepted a bare username -- typing "username@companyname.com" (UPN) or "CORP\username" (down-level logon name),… Evidence. |
| B-311 | P3 | Historical verified | User asked to review ServiceOps "every inch" for real bugs, and separately check whether progress reports/docs are up to date Evidence. |
| B-310 | P3 | Historical verified | User asked for a review of every backlog item to confirm "Verified"/"Implemented" claims still hold against current source, not just the prose Evidence. |
| B-309 | P2 | Historical verified | User asked that Client Management get "a dedicated email address that will automatically fetch the email so that we can give a better service," with a dedicated admin configuration page, explicitly requesting research into how … Evidence. |
| B-308 | P2 | Historical verified | Phases 2-7 (the remainder) of the Client Management build-out started in B-307, delivered in one continuous pass per explicit user instruction ("complete phase 2 to 7 continuously"), each phase still independently built/tes… Evidence. |
| B-307 | P2 | Historical verified | Phase 1 of a larger, user-requested Client Management build-out toward Zendesk-style agent workflow (saved Views, Macros, per-org SLA policies, Triggers) plus deep admin configuration (custom fields, per-org access control, bra… Evidence. |
| B-306 | P2 | Historical verified | Two small reported issues, fixed together Evidence. |
| B-305 | P0 | Historical verified | User hit a real, reproducible bug from live use: set a change freeze window, tried to schedule a Change inside it (correctly rejected), then -- without reloading the page -- edited the date outside the freeze and resubmitted fr… Evidence. |
| B-304 | P1 | Historical verified | User asked for a self-review of the whole project against CLAUDE.md's "Current review priorities" and to fix items #4, #5, #9, #13, #15 plus whatever else the review turned up, shipping only after deep verification Evidence. |
| B-303 | P1 | Historical verified | Immediate live-use follow-up to B-302's roles/health/client-management batch, reported with a screenshot: clicking a device inside the CI edit page's compact "Rack & network placement" preview opened what looked like the en… Evidence. |
| B-302 | P2 | Historical verified | Five reported issues from live use, all fixed in one batch Evidence. |
| B-301 | P3 | Historical verified | User flagged the B-300 "Rack placement" panel on the CI detail page as "so ugly" and asked the same page also show switch-to-server network connections Evidence. |
| B-300 | P3 | Historical verified | Immediate follow-up to B-299: user asked that "each host should be clickable in cmdb, and when you click if it has some rack information, it should show." Root-caused: templates/cmdb.html's CI list rendered every name as … Evidence. |
| B-299 | P2 | Historical verified | User asked for a GLPI-style physical rack visualization for CMDB servers (shared a real GLPI/Verdanadesk screenshot: front/back elevation, a power-unit/PDU sidebar, space/weight/power stats), with rack and position data "added … Evidence. |
| B-298 | P3 | Historical verified | User flagged the forgot-password page as "very ugly" and asked for a UI review, alongside a much larger request for a GLPI/NetBox-style rack visualization (see follow-up entry once scoped/built separately) Evidence. |
| B-297 | P1 | Historical verified | User reported B-296's favorites/recently-viewed fix "doesn't work properly" and asked for real UI testing, not just claims Evidence. |
| B-296 | P2 | Historical verified | Two small UX fixes requested together Evidence. |
| B-295 | P2 | Historical verified | User had made LDAP fixes on a separate office machine checkout (dmiltraining85) they couldn't push from directly, and shared screenshots of the diff/commit ("LDAP optimized") asking that it be replicated here so it could be p… Evidence. |
| B-294 | P1 | Historical verified | User asked to extend ServiceOps beyond internal ITIL tickets with a Zendesk-style external client/customer support tool, as its own switchable section gated to the "sysops team" -- referencing a screenshot of Zendesk's agent ti… Evidence. |
| B-293 | P1 | Historical verified | ServiceOps 1.46.0 replaces the flat, category-caption sidebar with a compact GLPI-inspired persistent accordion Evidence. |
| B-292 | P2 | Historical verified | Three related requests in one message: (1) the CMDB topology map (/cmdb/topology) was "a mess.. Evidence. |
| B-291 | P2 | Historical verified | Follow-up to B-290: user asked "make that as same as glpi" for the CI class permission grid Evidence. |
| B-290 | P2 | Historical verified | Immediate follow-up to B-288: user reported "where is that access matrix? i am unable to find the link" -- /cmdb/permissions was built, gated, and fully functional, but never actually linked from any page Evidence. |
| B-289 | P1 | Historical verified | User shared a screenshot of a real production CMDB search ("bacula") showing the same hostname appearing twice -- once ci_class=Device/SNMP-discovered with a real IP, once ci_class=Server/no IP, presumably manually imported… Evidence. |
| B-288 | P2 | Historical verified | User shared 10 screenshots of GLPI (a different ITSM tool used at their employer): a per-asset-type permission matrix (separate Read/Update/Create/Delete checkboxes per role per asset type -- Computers, Network devices, Printer… Evidence. |
| B-287 | P2 | Historical verified | User sent screenshots from a real scan of an Arista switch: the CI edit page's "Impact analysis" said "Nothing depends on this CI.. Evidence. |
| B-286 | P2 | Historical verified | User asked whether app.py (13,382 lines, every model/route/helper for the whole app in one file) is a stability risk and how to make the app more maintainable, then explicitly asked to start a planned multi-session blueprint … Evidence. |
| B-285 | P1 | Historical verified | Two-part user request: (1) "font is different in 'Configuration item/s' compare to other field.. Evidence. |
| B-284 | P2 | Historical verified | User screenshot from the redeployed change-creation form: with several CIs picked in B-283's merged "Configuration item/s" field, the browse (⌕) button rendered as a tall floating vertical strip beside the wrapped chip stac… Evidence. |
| B-283 | P2 | Historical verified | Immediate follow-up to B-282: user clarified the ask was not just "let me tick several at once" but "remove Additional configuration items and that feature must be in 'Configuration item/s'" — i.e Evidence. |
| B-282 | P2 | Historical verified | User complaint: "the way we add additional CIs.. Evidence. |
| B-281 | P0 | Historical verified | Discovery review search correctness patch prepared for ServiceOps 1.39.2 Evidence. |
| B-280 | P0 | Historical verified | Discovery review UI repair prepared for ServiceOps 1.39.1 Evidence. |
| B-279 | P0 | Historical verified | ServiceOps 1.39.0 operational-resilience release Evidence. |
| B-278 | P0 | Historical verified | Local login recovery after the port-80 redeployment exposed a pre-existing encryption-key mismatch: the database's three audit-integrity key records (two retired, one active) had been encrypted by a lost prior `SETTINGS_ENCRYPT… Evidence. |
| B-277 | P0 | Historical verified | ServiceOps 1.38.2 whole-project remediation Evidence. |
| B-276 | P2 | Historical verified | User viewed the new /api/v1/docs reference page (added in B-275's cycle) and reported it stuck on "Loading…" forever Evidence. |
| B-275 | P1 | Historical verified | User reported three things together against real hardware: only 6 of 17 known hosts found and "just the IP, need this too to be smart"; a request that after a scan the admin can add selected/add all/skip rather than devices lan… Evidence. |
| B-274 | P2 | Historical verified | User reported "there are many devices in my network Evidence. |
| B-273 | P2 | Historical verified | User reported a real subnet discovery "Run now" appeared to hang forever in the browser (screenshot: the test target, 192.168.68.0/24, stuck on "Never" with the button still showing "Run now" and no feedback) Evidence. |
| B-272 | P2 | Historical verified | Closed B-271's standing "no live SNMP hardware" risk Evidence. |
| B-268 | P1 | Historical verified | User reported B-267's fix hadn't resolved the underlying problem — clicking anywhere in the "Granted roles" field on the user-edit form (its heading, the info-tip, whitespace between checkboxes) always toggled "requester" s… Evidence. |
| B-267 | P1 | Historical verified | User-reported bug in the admin user-edit form: clicking the "Calendar integration" dropdown toggled the unrelated "Active" switch instead Evidence. |
| B-265 | P2 | Historical verified | Follow-up UX/observability request after live use of B-264/B-263 and the earlier logging/System Health pass: (1) sign-out was a bare "↗" icon button with no visible text, only an aria-label, reported as hard to find; … Evidence. |
| B-262 | P1 | Historical verified | LDAP directory synchronization: serviceops_core/ldap_sync.py::sync_directory populates already-LDAP-provisioned users' profile fields (title/department/division/employee_id/employee_type), manager reporting chain (`User.manag… Evidence. |
| B-260 | P2 | Historical verified | Follow-up asked to "make this tool perfect" against the manual-generation tooling landed in B-259, closing the specific gaps that pass's own "not done this pass" note flagged plus the pagination usability gap of a 36-page P… Evidence. |
| B-259 | P2 | Historical verified | The PDF manual was reported as "too short.. Evidence. |
| B-258 | P1 | Historical verified | ISO 27001 Annex A-style technical audit plus ITIL governance fidelity check, commissioned to find real gaps before any external certification effort (certification itself requires an accredited auditor and a documented ISMS — r… Evidence. |
| B-257 | P2 | Historical verified | Sidebar collapse/scroll felt "jumpy" — user reported clicking the left-nav hamburger caused a shake and the menu snapping back to where it started, describing it like a page refresh Evidence. |
| B-256 | P2 | Historical verified | Four more reported gaps from live use of B-255 Evidence. |
| B-255 | P2 | Historical verified | Org chart visibility fix, manager-portal performance drill-down, and export controls Evidence. |
| B-254 | P1 | Historical verified | Four reported defects from live use of B-253's CMDB/demo-data pass Evidence. |
| B-252 | P1 | Historical verified | Dedicated operational_task_detail page/route for CTASK/PTASK, replacing the inline-table interface. Evidence. |
| B-251 | P1 | Historical verified | CTASK backfill migration for pre-existing changes; Change Tasks tab redesigned as a table with per-row inline update. Evidence. |
| B-250 | P0 | Historical verified |
conflict_status column widened (VARCHAR(40)→VARCHAR(500)) after a real truncation-triggered 500; ticket-create validation now redisplays the form instead of a generic error page. Evidence. |
| B-248 | P1 | Historical verified | Identity and administration workspace (searchable user list, admin-only role/active/department control, preferences). Evidence. |
| B-247 | P1 | Historical verified | Governed record/list interaction model extended to Change/Problem/enterprise/REQ. Evidence. |
| B-246 | P0 | Historical verified | PWA service-worker cache-versioning fix (visual delivery bug). Evidence. |
| B-245 | P1 | Historical verified | ServiceNow-inspired incident record workspace (dense two-column form, Event history). Evidence. |
| B-201 | P0 | Historical verified | Foundation CSRF/session/cookie/deployment release. Evidence. |
| B-102 | P2 | Historical verified | Explicit isolated test-fixture loader (tools/load_test_fixture.py) Evidence. |
| B-101 | P2 | Historical verified | Consolidate lifecycle operations behind ./serviceops. Evidence. |
| B-042 | P0 | Historical verified | All active IT fulfillment-team members/managers read every INC/CHG; mutation stays owning-team/admin only. Evidence. |
| B-041 | P1 | Historical verified | Catalog item admin CRUD with governed fields; inactive items fail closed. Evidence. |
| B-040 | P0 | Historical verified | Object-level authorization across ticket/enterprise lists, direct IDs, dashboards, boards, analytics, searches, attachments, approvals, CI links, REQ/SCTASK creation. Evidence. |
| B-039 | P0 | Historical verified | Scope REQ/RITM visibility to requested-by/for, fulfillment teams, SCTASK teams, named approvers, admins. Evidence. |
| B-038 | P1 | Historical verified | Administrator-managed catalog-item fulfillment routing; Laptop/Software default to Windows Evidence. |
| B-037 | P1 | Historical verified | Governed related-record network (parent/child INC, INC↔PRB/CHG links, PRB knowledge, RITM↔CHG, PTASK/CTASK). Evidence. |
| B-036 | P0 | Historical verified | Append-only in-record task history; material CHG plan changes supersede prior approvals and notify. Evidence. |
| B-035 | P0 | Historical verified | Explicit owning teams for incidents/requests/changes; only active owning-team members/managers/admins mutate operational fields. Evidence. |
| B-034 | P0 | Historical verified | Central server-side lifecycle guards prevent approval bypass through any surface. Evidence. |
| B-023 | P1 | Historical verified | Visual task board and state movement. Evidence. |
| B-021 | P1 | Historical verified | Unified navigation, search, history, favorites and light-only preferences. Evidence. |
| B-003 | P0 | Historical verified | Central CSRF enforcement protects every unsafe browser request; rendered forms and JavaScript actions carry session-bound tokens, authentication rotates tokens, and tests prove missing-token rejection and authenticated acceptance. Evidence. |
| B-002 | P0 | Historical verified | Production uses an Alembic migration gate with safe fresh-schema creation, existing-schema adoption, version verification, dedicated Kubernetes migration Job and tenant backfill Evidence. |