Feature #3249
open[oms-major-bug] web: Implement OMS screens per attached design reference
0%
Description
Overview¶
Feature for the web side.
Requirement¶
"Implement the attached requirement"
Attached file (read it directly for the real content): /tmp/dev-hub-spec-XsfEF27Z3dGLANp6b-requirement.md
Additional requirement update: TEST-ONLY verification of driver.py fix — this line will be visible in the requirement text, harmless
Additional requirement update: Design reference attached.
Attached file (read it directly for the real content): /tmp/dev-hub-spec-wnwKXeXb3ihejykmF-OMS_Screens__standalone___1_.html
Explicit Constraints¶
- No new visual language is to be introduced. The feature SHALL reuse the existing OMS design system, typography, colour tokens and component library. screens/UI, existing components
- No parallel auth path is to be created. The feature SHALL reuse the existing authentication and session mechanisms. authentication/scope
- No changes SHALL be made to the OMS order lifecycle, order data model, or any existing module behaviour. existing behavior/scope
- Database schema changes SHALL be additive only, delivered as reversible migrations. database schema
- Passwords SHALL never be logged, echoed in an API response, stored in plaintext, or transmitted over a non-TLS channel. security/passwords
- The header profile icon SHALL NOT displace or overlap existing header controls at any supported viewport width. screens/UI
- All new endpoints SHALL conform to the existing OMS API standard and error envelope (REF-06). API endpoints
- The icon SHALL NOT be rendered on the login page or on any other unauthenticated page. screens/UI
- The dropdown SHALL contain exactly three actionable options, in this order: (1) My Profile, (2) Reset Password, (3) Logout. No additional options SHALL be present in this release. screens/UI, dropdown menu
- A user identifier SHALL NEVER be accepted from the request body or path for these self-service operations. API endpoints/backend
- Plain HTTP SHALL be refused. All endpoints SHALL be served over TLS 1.2 or higher. API security
- No endpoint SHALL return a password, password hash, or one-time code in any response body, header or log entry. API security/logging
- Error messages SHALL NOT disclose whether a given email address or mobile number belongs to another account beyond the generic conflict message. API security/error handling
- New Password SHALL NOT be identical to the Current Password. password logic
- New Password SHALL NOT match any of the user's previous [PLACEHOLDER - default 3] passwords. password logic
- The plaintext password SHALL NOT be logged or returned in any response. security/logging
- Session termination SHALL be performed server-side. Clearing client-side storage alone SHALL NOT be considered sufficient. logout/backend
- No feature, field, menu option, screen or capability beyond those specified SHALL be added. Where an addition appears desirable, raise it as a change request; do not implement it. scope
- The dropdown SHALL contain exactly three options. Settings, Help, Notifications, Theme and similar additions are explicitly excluded. screens/UI, scope
- All user-facing copy SHALL be taken verbatim from Sections 5.4 and 11. Do not paraphrase. content/copy
- Where a requirement carries a [PLACEHOLDER], implementation of that requirement SHALL NOT begin until the placeholder is resolved. Do not substitute an assumed value silently. scope/implementation process
- Existing OMS components, utilities, styles and API conventions SHALL be reused. Do not introduce parallel implementations of functionality that already exists. existing components/scope
- No new third-party UI dependency introduced without written approval. screens/UI, dependencies
- Where a requirement is found to be ambiguous, contradictory or technically infeasible, halt and raise the question. Do not resolve it by assumption. implementation process
- Administrative management of other users' profiles is out of scope. scope
- Role and permission management is out of scope. scope
- Profile photograph or avatar image upload is out of scope. Initials-based icon is sufficient for this release. scope/screens/UI
- Forgotten-password recovery from the login page is out of scope. scope
- Multi-factor authentication enrolment and management is out of scope. scope
- Active session listing and remote sign-out is out of scope. scope
- Account deactivation or deletion by the user is out of scope. scope
- Language and theme preferences are out of scope. scope
- Editing of Username, User ID or Role is out of scope. These are administrator-controlled per BR-02. scope/screens/UI
- Database migrations SHALL be additive and reversible, with a tested rollback path. database schema/migrations
Acceptance Criteria¶
(none extracted — spec-extract has not run for this session)
Test Cases¶
(Test case checklist not available — test-gen has not run for this session; see spec-extract/test-gen in v2-graph/graph.yaml.)
Implementation Details¶
(populated once implementation completes — see the run's completion note on this ticket for the real commit list and MR link)
Verification¶
(populated once verification completes — see the run's completion note on this ticket for UI/live-verification evidence)
Orchestration slug: oms-major-bug (side: web)
BA Updated by Bot AI about 2 months ago
- Status changed from New to In Progress
BA Updated by Bot AI about 2 months ago · Edited
Phase Timeline¶
| # | Process | Start (IST) | End (IST) | Duration | Input | Output | Cache Create | Cache Read | Tokens | Cost | Model |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Requirement scope detection (re-dispatched ×2; first attempt 31-08-2026 16:56:13) | 31-08-2026 17:06:38 | 31-08-2026 17:07:08 | 29s | 6,725 | 2,125 | -- | -- | 149,627 | $0.2506 | claude-sonnet-5 |
| 2 | Extract explicit constraints | 31-08-2026 17:07:08 | 31-08-2026 17:10:52 | 4m | 21 | 9,688 | -- | -- | 808,634 | $0.8064 | claude-sonnet-5 |
| 3 | Probe environment | 31-08-2026 17:10:52 | 31-08-2026 17:11:10 | 18s | not available | not available | not available | not available | not available | not available | API Script |
| 4 | Execution environment — discover runners | 31-08-2026 17:11:11 | 31-08-2026 17:14:50 | 4m | 7,023 | 12,606 | -- | -- | 1,564,537 | $1.3007 | claude-sonnet-5 |
| 5 | Execution environment — confirm | 31-08-2026 17:14:51 | 31-08-2026 17:15:26 | 35s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 6 | Task Granularity | 31-08-2026 17:15:30 | 31-08-2026 17:15:56 | 25s | 6,725 | 1,892 | -- | -- | 148,801 | $0.2135 | claude-sonnet-5 |
| 7 | Task Granularity — human gate | 31-08-2026 17:15:56 | 31-08-2026 17:16:07 | 10s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 8 | Do screen inventory + field checklist? — human gate | 31-08-2026 17:16:11 | 31-08-2026 17:16:20 | 9s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 9 | Start Confirmation | 31-08-2026 17:16:24 | 31-08-2026 17:18:06 | 2m | 6,647 | 7,738 | -- | -- | 89,110 | $0.3165 | claude-opus-5 |
| 10 | Start Confirmation — human gate | 31-08-2026 17:18:06 | 31-08-2026 17:18:20 | 14s | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| 11 | Determine web connection | 31-08-2026 17:18:24 | 31-08-2026 17:18:25 | 1s | not available | not available | not available | not available | not available | not available | Script |
| 12 | Extract ticket-spec / acceptance criteria | 31-08-2026 17:18:25 | 31-08-2026 17:19:02 | 36s | 6,725 | 2,960 | -- | -- | 151,535 | $0.2356 | claude-sonnet-5 |
| 13 | Generate test-spec scenarios and assertions | 31-08-2026 17:19:02 | 31-08-2026 17:19:20 | 18s | 6,721 | 1,151 | -- | -- | 50,074 | $0.1328 | claude-sonnet-5 |
| 14 | Create/Reuse Web Redmine Ticket | 31-08-2026 17:19:21 | 31-08-2026 17:19:23 | 2s | not available | not available | not available | not available | not available | not available | API Script |
| 15 | Cross-link tickets | 31-08-2026 17:19:23 | 31-08-2026 17:19:23 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 16 | Initialise timing note | 31-08-2026 17:19:23 | 31-08-2026 17:19:24 | 0s | not available | not available | not available | not available | not available | not available | API Script |
| 17 | Analyze → Implementation Plan | 31-08-2026 17:19:24 | 31-08-2026 17:36:23 | 17m | 3,190 | 43,414 | -- | -- | 2,032,119 | $2.3592 | claude-opus-5 |
| 18 | Design | 31-08-2026 17:36:24 | 31-08-2026 17:39:23 | 3m | 2,726 | 13,695 | -- | -- | 909,759 | $0.9284 | claude-sonnet-5 |
| 19 | Schema Review | 31-08-2026 17:39:24 | 31-08-2026 17:49:02 | 10m | 2,803 | 27,655 | -- | -- | 1,954,637 | $1.5041 | claude-opus-5 |
| 20 | Create Branch | 31-08-2026 17:49:02 | 31-08-2026 17:49:05 | 2s | not available | not available | not available | not available | not available | not available | API Script |
| 21 | GAP — unattributed | 31-08-2026 17:49:05 | 31-08-2026 18:06:22 | 17m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 22 | Data Layer (re-dispatched ×2; first attempt 31-08-2026 17:49:06) | 31-08-2026 18:06:22 | 31-08-2026 18:24:23 | 18m | 3,167 | 11,021 | -- | -- | 3,719,027 | $1.8266 | claude-sonnet-5 |
| 23 | GAP — unattributed | 31-08-2026 18:24:23 | 31-08-2026 18:40:02 | 16m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 24 | UI Implementation (re-dispatched ×4; first attempt 31-08-2026 18:24:24) | 31-08-2026 18:40:02 | 31-08-2026 19:02:52 | 23m | 4,166 | 54,983 | -- | -- | 11,531,530 | $5.2904 | claude-sonnet-5 |
| 25 | GAP — unattributed | 31-08-2026 19:02:52 | 31-08-2026 19:40:05 | 37m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 26 | 1. Unit Tests (re-dispatched ×2; first attempt 31-08-2026 19:02:52) | 31-08-2026 19:40:05 | 31-08-2026 20:20:32 | 40m | 9,801 | 51,424 | -- | -- | 18,386,794 | $7.5578 | claude-sonnet-5 |
| 27 | 2. TypeScript | 31-08-2026 20:20:33 | 31-08-2026 20:21:07 | 33s | 2,583 | 526 | -- | -- | 199,375 | $0.2268 | claude-sonnet-5 |
| 28 | 3. Lint | 31-08-2026 20:21:07 | 31-08-2026 20:21:13 | 6s | not available | not available | not available | not available | not available | not available | Script |
| 29 | GAP — unattributed | 31-08-2026 20:21:13 | 31-08-2026 20:39:28 | 18m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 30 | 4. Dead Code (re-dispatched ×2; first attempt 31-08-2026 20:21:14) | 31-08-2026 20:39:28 | 31-08-2026 20:45:11 | 6m | 2,938 | 22,553 | -- | -- | 1,466,008 | $1.1302 | claude-opus-5 |
| 31 | GAP — unattributed | 31-08-2026 20:45:11 | 31-08-2026 22:34:09 | 1h 49m | n/a | n/a | n/a | n/a | n/a — wait time, not compute | n/a — wait time, not compute | n/a |
| 32 | 5. Code & Style Quality Audit (re-dispatched ×9; first attempt 31-08-2026 20:45:12) | 31-08-2026 22:34:09 | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| 33 | Human intervention (escape hatch) | -- | 31-08-2026 18:06:16 | -- | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
| — | ORCHESTRATOR TOTAL (rows 5–33) | — | — | 1m | 0 | 0 | 0 | 0 | 0 | $0.0000 | — |
| — | SHARED TOTAL (rows 1–32) | — | — | 2h 9m | 71,961 | 263,431 | 0 | 0 | 43,161,567 | $24.0797 | — |
| — | GRAND TOTAL (wall clock) | 31-08-2026 17:06:38 | 31-08-2026 22:34:09 | 5h 28m | 71,961 | 263,431 | 0 | 0 | 43,161,567 | $24.0797 | — |
ORCHESTRATOR TOTAL: 1m, 0 tokens, $0.0000 (rows 5–33)
SHARED TOTAL: 2h 9m, 43,161,567 tokens, $24.0797, 7 row(s) with no token data (rows 1–32)
Total Run Time: 5h 28m (wall clock, 31-08-2026 17:06:38 → 31-08-2026 22:34:09 IST — not a sum of the per-side totals above, since sides overlap)
Active time: 2h 10m | Waiting (session limits, approvals, dead sessions): 3h 17m — 5 gap(s) still unattributed; label them with driver.py gap <slug> --from <ISO> --to <ISO> --reason '<why>'
Total Tokens Consumed: 43,161,567 (plus 7 row(s) whose usage was never captured — run execution_tracker.py enrich-audit to backfill. This is a floor, not the total.)
Token breakdown: input 71,961 · output 263,431 · cache-create 0 · cache-read 0 (0% of the total). Cache-read is context a node re-sends to itself across its own tool-use turns, billed at roughly a tenth of fresh input — a large Tokens number that is mostly cache-read is a long tool loop, not a large workload.
Total Cost: $24.0797 (plus 7 row(s) whose usage was never captured — run execution_tracker.py enrich-audit to backfill. This is a floor, not the total.)