diff --git a/.github/skills/module-phase-tracker/SKILL.md b/.github/skills/module-phase-tracker/SKILL.md new file mode 100644 index 0000000000..f80b2d8573 --- /dev/null +++ b/.github/skills/module-phase-tracker/SKILL.md @@ -0,0 +1,911 @@ +--- +name: module-phase-tracker +description: "Update the Feature and Process Status table in feature_and_process_status.rst. Use when: checking module status, updating feature status tracker, refreshing work product status, deriving completion status from eclipse-score GitHub repos for Baselibs, Communication, Logging, Orchestrator, Persistency, Time, Config Management, Lifecycle, Security/Crypto." +argument-hint: "optional: module name or 'all'" +--- + +# Feature and Process Status + +Derives and updates the completion status table in +`process/standards/feature_and_process_status.rst` by querying the live eclipse-score GitHub repositories. + +## When to Use + +- Refresh the tracker table with current data +- After a sprint/release to check progress +- When a module team reports a deliverable is done + +## RST File Structure + +`feature_and_process_status.rst` consists of a file header followed by 5 Process Area sections. Each section has this exact pattern: + +```rst +Process Area N โ€” +*********************** + + + +See :ref:``. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and '' in tags + type == 'gd_req' and is_external == False and status == 'draft' and '' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and '' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and '' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area() + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status() + +.. rubric:: Implementation status: ๐Ÿ”„ NN% (X/Y deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **** + - **** + + * - + - + ... +``` + +**Important rules:** +- `.. needpie::` does **NOT** support a `:title:` option โ€” omit it entirely (causes build errors) +- The pie chart table uses CSS class `compact-overview-table`; each cell needs `.. rst-class:: small-pie-cell` before its `.. needpie::` +- The module tracker table uses CSS class `module-phase-tracker-table` +- Both `.. rubric::` directives are plain inline text โ€” NOT RST section headings +- The `.. rubric:: Implementation status:` line is computed (see Step 4 in Procedure) and placed directly before the module tracker table + +| Process Area | sphinx-needs tag | +|---|---| +| PA 1 โ€” Change Management | `change_management` | +| PA 2 โ€” Requirements Engineering | `requirements_engineering` | +| PA 3 โ€” Architecture Design | `architecture_design` | +| PA 4 โ€” Implementation | `implementation` | +| PA 5 โ€” Verification | `verification` | + +The pie chart diagrams are computed live by sphinx-needs at build time โ€” they **never need manual updates**. Only update the filter `` when adding a new Process Area. + +## Modules and Repos + +> **IMPORTANT**: Each module has its own dedicated repo in the `eclipse-score` GitHub org AND content in `eclipse-score/score`. **Always check BOTH** the module's own repo and `eclipse-score/score` when counting needs elements. Never rely on `eclipse-score/score` alone. + +| Module | Own Repo (always check!) | Docs in `eclipse-score/score` | +|---|---|---| +| Baselibs | `eclipse-score/baselibs` (no sphinx-needs RST so far) | `docs/modules/baselibs/**`, `docs/features/baselibs/docs` | +| Communication | `eclipse-score/communication` (no sphinx-needs RST so far) | `docs/modules/communication/**`, `docs/features/communication/docs` | +| Logging | `eclipse-score/logging` (no sphinx-needs RST so far) | `docs/modules/logging/**`, `docs/features/analysis-infra/logging/docs` | +| Orchestrator | `eclipse-score/lifecycle` โ€” has `docs/module/health_monitor/` with comp_req/comp_arc | `docs/modules/orchestrator/**`, `docs/features/orchestration` | +| Persistency | `eclipse-score/persistency` โ€” has `docs/persistency/kvs/` with comp_req/comp_arc โœ… | `docs/features/persistency` | +| Time | `eclipse-score/inc_time` (no sphinx-needs RST so far) | `docs/features/time/docs` | +| Config Management | `eclipse-score/config_management` (no sphinx-needs RST so far) | `docs/features/configuration` | +| Lifecycle | `eclipse-score/lifecycle` โ€” has `docs/module/health_monitor/` (comp_arc_sta/dyn valid=15/16), `detailed_design/` (dd_sta/dyn valid=1/2), `tests/integration/` | `docs/modules/lifecycle/index.rst`, `docs/features/lifecycle/**` | +| Security/Crypto | `eclipse-score/inc_security_crypto` โ€” `src/` has no implementation yet; `docs/index.rst` with stkh_req | `docs/features/security_crypto/**` | + +**How to search all repos for a module:** +```python +for repo in ["eclipse-score/score", "eclipse-score/"]: + files = [p for p in get_tree(repo) if p.endswith(".rst") and "" in p] + for f in files: + v, t = count_needs_in_file(repo, f) +``` + +## Status Format + +- **``โœ… Available (valid/total)``** โ€” Artifact complete and approved: **100% of needs elements are `valid`** (valid == total). Always add the count in parentheses for requirements and architecture rows. +- **``๐Ÿ”„ NN% (valid/total)``** โ€” In Progress: at least one element is `valid` but not all. Always show count. +- **``โŒ Open``** โ€” Not started, not found, or 0% valid +- For binary rows (Code, SW Development Plan, Unit Tests, CR approved): no count needed, just ``โœ… Available`` or ``โŒ Open`` + +**Percentage calculation per deliverable:** +- **Feature Req / Feature Arch**: count individual needs elements (e.g. `.. feat_req::`, `.. feat_arc::`) inside the doc with `:status: valid`; `valid / total`; 100% (valid == total) โ†’ โœ… Available +- **Comp. Req / Comp. Arch**: count individual needs elements across all component docs; `valid / total`; 100% (valid == total) โ†’ โœ… Available +- **Req. Inspection / Arch. Inspection**: `valid / total` across all checklists (feature + component combined); 100% (valid == total) โ†’ โœ… Available +- **Detailed Design + Code / Impl. Inspection**: `valid / total` across all `chklst_impl_inspection.rst` / `chklst_dd_inspection.rst` files +- **Binary deliverables** (CR approved, SW Dev Plan, Unit Tests, Integration Tests, Verification Report): no percentage +- **Detailed Design + Code / Impl. Inspection**: `valid / total` across all `chklst_impl_inspection.rst` / `chklst_dd_inspection.rst` files +- **Binary deliverables** (CR approved, SW Dev Plan, Unit Tests, Integration Tests, Verification Report): no percentage + +## Status Criteria (per Deliverable) + +### Process Area 1 โ€” CR approved +- **โœ… Available**: A closed GitHub Issue with "Feature Request" or "Contribution Request" for the module exists in `eclipse-score/score` +- **โŒ Open**: No such issue found + +Known closed CRs: Baselibs (#549), Communication (#69), Logging (#68), Orchestrator (#273), Persistency (#95), Time (#910), Config Management (#754, #1764), Lifecycle (#909), Security/Crypto (#905) + +### Process Area 2 โ€” Feature Requirements +- **โœ… Available**: 100% of individual needs elements (e.g. `.. feat_req::`) inside the requirements doc have `:status: valid` +- **๐Ÿ”„ NN%**: elements exist but not all are `valid`; show `valid / total` percentage +- **โŒ Open**: no requirements file or zero needs elements found + +### Process Area 2 โ€” Component Requirements +- **โœ… Available**: 100% of all individual needs elements across all component requirements `.rst` files (not just `index.rst` โ€” search all `.rst` files under `docs/modules//**/requirements/`) have `:status: valid` +- **๐Ÿ”„ NN%**: elements exist but not all are `valid`; show `valid / total` percentage +- **โŒ Open**: no component requirement files found + +### Process Area 2 โ€” Req. Inspection +- **โœ… Available**: 100% of all `chklst_req_inspection.rst` files (feature + component level) have `:status: valid` +- **๐Ÿ”„ In Progress**: checklists exist but not all are `valid` +- **โŒ Open**: no checklists found + +### Process Area 3 โ€” Feature Architecture +- **โœ… Available**: 100% of individual needs elements (e.g. `.. feat_arc::`) inside the architecture doc have `:status: valid` +- **๐Ÿ”„ NN%**: elements exist but not all are `valid`; show `valid / total` percentage +- **โŒ Open**: no architecture file or zero needs elements found + +### Process Area 3 โ€” Component Architecture +- **โœ… Available**: 100% of all individual needs elements across all component architecture files have `:status: valid` +- **๐Ÿ”„ NN%**: elements exist but not all are `valid`; show `valid / total` percentage +- **โŒ Open**: no architecture docs found + +### Process Area 3 โ€” Arch. Inspection +- **โœ… Available**: 100% of all architecture checklists (`chklst_arc_inspection.rst` / `chklst_arch_inspection.rst`) have `:status: valid` +- **๐Ÿ”„ In Progress**: checklists exist but not all are `valid` +- **โŒ Open**: no architecture checklists found + +### Process Area 4 โ€” SW Development Plan +- **โœ… Available**: `eclipse-score/score` contains `docs/platform_management_plan/software_development.rst` (project-wide) +- **โŒ Open**: file absent + +### Process Area 4 โ€” Code +- **โœ… Available**: source files (`.cpp`, `.h`, `.py`, `.rs` etc.) exist in the module's own repo outside of `docs/` +- **โŒ Open**: no source files found +- **Check**: `gh api repos/eclipse-score//git/trees/main?recursive=1 --jq '.tree[].path'` then filter for source extensions, exclude `docs/` +- **NOTE**: All currently active modules (Baselibs, Communication, Logging, Orchestrator, Persistency, Time, Config Mgmt) have source code โ†’ all โœ… Available + +### Process Area 4 โ€” Detailed Design +- **โœ… Available**: 100% of formal design doc needs elements (`.. dd_sta::`, `.. dd_dyn::`, `.. comp_dd::` or similar) in `detailed_design/` folders have `:status: valid` +- **๐Ÿ”„ NN%**: design docs exist and at least one element is `valid` but not all are `valid`; show `valid / total` % +- **โŒ Open**: no RST files with actual design directives found, OR all existing design elements have `:status: draft` (0% valid = same as not started) +- **DO NOT count `chklst_impl_inspection.rst`** โ€” those are inspection checklists, not design documents +- **DO NOT count bare `.. document::` wrapper files** โ€” these are placeholders, not actual design content +- **Search both `eclipse-score/score` and the module's own repo** for `detailed_design/` folders + +### Process Area 4 โ€” Impl. Inspection +- **โœ… Available**: 100% of `chklst_impl_inspection.rst` / `chklst_dd_inspection.rst` files have `:status: valid` +- **๐Ÿ”„ In Progress**: checklists exist but not all are `valid` +- **โŒ Open**: no impl inspection checklists found + +### Process Area 5 โ€” Unit Tests +- **โœ… Available**: Source repo contains `_test.cpp`, `_test.py`, or `/test(s)/` directories (excluding docs/) +- **โŒ Open**: no test files found + +### Process Area 5 โ€” Comp. Integration Tests +- **โœ… Available**: Source repo contains integration test source files (`.cpp`/`.py` with "integration" in path) +- **๐Ÿ”„ In Progress**: integration test CI workflow exists but no test source files +- **โŒ Open**: no integration test artifacts + +### Process Area 5 โ€” Feature Integration Tests +- **๐Ÿ”„ In Progress**: `integration_test_scenarios` or `feature*test*` paths found in source repo +- **โŒ Open**: none found + +### Process Area 5 โ€” Module Verification Report +- **โœ… Available**: `verification/module_verification_report.rst` exists AND `:status: valid` **AND** the file contains actual verification data (test coverage lists, DFA results, static analysis results etc.) โ€” not just section headings +- **๐Ÿ”„ In Progress**: file exists with `:status: draft` +- **โŒ Open**: file does not exist, OR file is a template placeholder only (section headings with no content) +- **โš  Consistency check**: A Module Verification Report can only be โœ… Available if all prerequisite Phase 5 deliverables (Unit Tests, Comp. Integration Tests, Feature Integration Tests) are also โœ… Available. If any prerequisite is โŒ Open, mark the report โŒ Open regardless of `:status:` in the file. +- **Known pitfall โ€” Persistency**: `eclipse-score/persistency` has a `module_verification_report.rst` with `:status: valid` but it is an empty template. Feature Integration Tests are โŒ Open โ†’ report must be โŒ Open. + +## Procedure + +### Prerequisites +- `gh` CLI must be authenticated (`gh auth status`) +- Python 3.8+ + +### Steps + +1. **Fetch the repo tree** for `eclipse-score/score` and module source repos: + ```bash + gh api repos/eclipse-score/score/git/trees/main?recursive=1 --jq '.tree[].path' > /tmp/tree_score.txt + ``` + +2. **Count needs elements** in each requirements/architecture file using this pattern: + ```python + import re, base64, subprocess + def count_needs_status(repo, path): + content = base64.b64decode( + subprocess.run(["gh", "api", f"repos/{repo}/contents/{path}", + "--jq", ".content"], capture_output=True, text=True).stdout.strip() + ).decode() + statuses = re.findall(r'^\s+:status:\s+(\w+)', content, re.MULTILINE) + valid = sum(1 for s in statuses if s == 'valid') + return valid, len(statuses) + ``` + Aggregate `valid` and `total` across all files per deliverable. + Percentage = `valid * 100 // total`. 100% (valid == total) โ†’ โœ… Available, else ๐Ÿ”„ NN%. + +3. **Update the RST file** `process/standards/feature_and_process_status.rst` + with the computed values. + +4. **Compute the Implementation status per Process Area** and update the bold status line that appears directly before each table: + - Count how many deliverable cells (across all modules ร— all deliverables in that Process Area) are `โœ… Available` + - `complete = number of โœ… Available cells`, `total = number of module ร— deliverable cells` + - 100% โ†’ `โœ… Available (total/total deliverables complete)` + - >0% โ†’ `๐Ÿ”„ NN% (complete/total deliverables complete)` + - 0% โ†’ `โŒ Open (0/total deliverables complete)` + - Format: `**Implementation status: ๐Ÿ”„ NN% (complete/total deliverables complete)**` + - Binary rows (Code, SW Dev Plan, Unit Tests, CR): count each module cell as 1 deliverable + - Do NOT include an Overall row inside the table โ€” the status line is placed as plain text before the `.. list-table::` directive + +5. **Adding a new module** โ€” add a row to the Modules and Repos table above, define its `feature_path` and `docs_path`, then add a row to each tracker table (one `* - ` block per PA). + +## Interpretation Notes + +### Artifacts vs. Checklists โ€” Key Rule +- **Artifacts** (Feature Requirements, Component Requirements, Feature Architecture, Component Architecture, Detailed Design, Code): derive status by **directly inspecting the repos** โ€” look for sphinx-needs elements or source files. Do NOT rely on checklist presence/status. +- **Inspection rows** (Req. Inspection, Arch. Inspection, Impl. Inspection): these rows describe the checklists themselves โ€” report what is found in `chklst_*.rst` files (how many exist, valid vs. draft). Computed as `valid / total` checklist files. + +### Additional Notes +- **Requirements/Architecture rows**: count individual needs elements (`:status:` fields inside `.. feat_req::`, `.. feat_arc::`, `.. comp_req::`, `.. comp_arc_sta::`, `.. comp_arc_dyn::`, `.. real_arc_int::`, etc.) โ€” NOT the document-level `:status:` field. +- **Code row**: source files outside of `docs/` in the module's own repo. All active modules currently โœ… Available. +- **Detailed Design row**: actual design directives (`.. dd_sta::`, `.. dd_dyn::`) in `detailed_design/` folders โ€” not `chklst_impl_inspection.rst`, not bare `.. document::` wrappers. +- The SW Development Plan check is project-wide (not per-module) because S-CORE uses a single platform management plan. +- Verification report `status: valid` requires Committer approval in the PR merge. +- **Template vs. real report**: A file with `:status: valid` can still be an empty template. When checking `module_verification_report.rst`, look for actual content (tables, coverage numbers, test results) beyond section headings. If only headings are present, treat as โŒ Open even if `:status: valid`. +- **Phase 5 consistency**: The Module Verification Report cannot be complete if any prerequisite (Unit Tests, Integration Tests) is missing. + +## Limitations + +- Cannot detect whether requirements have 100% test coverage (needs needs.json analysis) +- Cannot check if static analysis findings are cleared +- Feature integration tests heuristic is weak โ€” manual verification recommended + +## Complete RST Snapshot + +Full content of `process/standards/feature_and_process_status.rst` as of last update. +Use this to recreate the file from scratch if needed. + +```rst +.. + # ******************************************************************************* + # Copyright (c) 2025 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Feature and Process Status +########################## + +This page tracks the completion status of all 5 process areas per module. +Update the status column for each module after completing the respective deliverable. + +**Process Status chart legend:** + +.. list-table:: + :header-rows: 1 + :widths: 30 30 40 + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - ๐ŸŸข Valid + + ๐ŸŸก Draft + + ๐Ÿ”ด Invalid + + โฌœ Other + - ๐ŸŸข Ok + + ๐Ÿ”ต Recommendation + + ๐ŸŸก Open + + ๐ŸŸ  Action + + ๐Ÿ”ด Deviation + + โฌœ N/A ยท โ—ป Other + - ๐ŸŸข Automated + + ๐ŸŸก Waiting for automation + + ๐Ÿ”ต Inspection list + + โฌœ Other + +**Implementation Status Values:** + +- ``โœ… Available`` โ€” Work product created, reviewed and approved +- ``๐Ÿ”„ NN%`` โ€” In Progress: artifact exists with at least one valid element, percentage shows valid/total +- ``โŒ Open`` โ€” Not yet started, not found, or 0% valid +- ``โ€”`` โ€” Not applicable for this module + +Process Area 1 โ€” Change Management +*********************************** + +A Change Request must be created and approved by the Architecture Community before module development begins. +See :ref:`chm_change_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'change_management' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'change_management' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'change_management' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'change_management' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(change_management) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(change_management) + +.. rubric:: Implementation status: โœ… Available (9/9 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **CR approved** + + * - Baselibs + - โœ… Available + + * - Communication + - โœ… Available + + * - Logging + - โœ… Available + + * - Orchestrator + - โœ… Available + + * - Persistency + - โœ… Available + + * - Time + - โœ… Available + + * - Config Mgmt + - โœ… Available + + * - Lifecycle + - โœ… Available + + * - Security/Crypto + - โœ… Available + +Process Area 2 โ€” Requirements Engineering +***************************************** + +Feature and component requirements must be written and inspected. +Work products: ``wp__requirements_feat``, ``wp__requirements_comp``, ``wp__requirements_inspect``. +See :ref:`requirements_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'requirements_engineering' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(requirements_engineering) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(requirements_engineering) + +.. rubric:: Implementation status: ๐Ÿ”„ 26% (7/27 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Feature Requirements** + - **Component Requirements** + - **Req. Inspection** + + * - Baselibs + - ๐Ÿ”„ 93% (14/15) + - ๐Ÿ”„ 93% (124/134) + - ๐Ÿ”„ 20% (2/10) + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__, + `feature-level `__ + + * - Communication + - โœ… Available (50/50) + - ๐Ÿ”„ 97% (34/35) + - โŒ Open + + * - Logging + - โœ… Available (46/46) + - โŒ Open + - โŒ Open + + * - Orchestrator + - ๐Ÿ”„ 84% (26/31) + - โŒ Open + - โŒ Open + `executor `__, + `orchestrator `__ + + * - Persistency + - โœ… Available (40/40) + - ๐Ÿ”„ 95% (36/38) + - โœ… Available (2/2) + `feature-level `__, + `kvs `__ + + * - Time + - โœ… Available (15/15) + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available (13/13) + - โŒ Open + - โŒ Open + + * - Lifecycle + - โŒ Open + - โŒ Open + - โŒ Open + + * - Security/Crypto + - โœ… Available (42/42) + - โŒ Open + - โŒ Open + +Process Area 3 โ€” Architecture Design +************************************ + +Feature and component architecture must be designed and inspected. +Work products: ``wp__feature_arch``, ``wp__component_arch``, ``wp__sw_arch_verification``. +See :ref:`arch_workflow`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'architecture_design' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(architecture_design) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(architecture_design) + +.. rubric:: Implementation status: ๐Ÿ”„ 19% (5/27 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Feature Architecture** + - **Component Architecture** + - **Arch. Inspection** + + * - Baselibs + - โœ… Available (4/4) + - ๐Ÿ”„ 98% (172/175) + - ๐Ÿ”„ 80% (8/10) + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__, + `feature-level `__ + + * - Communication + - โœ… Available (3/3) + - ๐Ÿ”„ 94% (17/18) + - โŒ Open + + * - Logging + - โœ… Available (4/4) + - โœ… Available (3/3) + - โŒ Open + + * - Orchestrator + - ๐Ÿ”„ 66% (4/6) + - ๐Ÿ”„ 98% (42/43) + - โŒ Open + `executor `__, + `orchestrator `__ + + * - Persistency + - โœ… Available (12/12) + - ๐Ÿ”„ 25% (1/4) + - โŒ Open + `feature-level `__, + `kvs `__ + + * - Time + - โŒ Open + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โŒ Open + - โŒ Open + - โŒ Open + + * - Lifecycle + - ๐Ÿ”„ 94% (30/32) + - ๐Ÿ”„ 94% (15/16) + - โŒ Open + + * - Security/Crypto + - โŒ Open + - โŒ Open + - โŒ Open + +Process Area 4 โ€” Implementation +******************************** + +Source code and detailed design must be implemented and inspected. +Work products: ``wp__sw_development_plan``, ``wp__sw_implementation``, ``wp__sw_implementation_inspection``. +See :ref:`workflow_implementation`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'implementation' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'implementation' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'implementation' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'implementation' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(implementation) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(implementation) + +.. rubric:: Implementation status: ๐Ÿ”„ 47% (17/36 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **SW Development Plan** + - **Code** + - **Detailed Design** + - **Impl. Inspection** + + * - Baselibs + - โœ… Available + - โœ… Available (~119,400 LOC) `baselibs `__ + - โŒ Open + - โŒ Open + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__ + + * - Communication + - โœ… Available + - โœ… Available (~71,300 LOC) `communication `__ + - โŒ Open + - โŒ Open + + * - Logging + - โœ… Available + - โœ… Available (~22,900 LOC) `logging `__ + - โŒ Open + - โŒ Open + + * - Orchestrator + - โœ… Available + - โœ… Available (~38,300 LOC) `lifecycle `__ + - โŒ Open + - โŒ Open + + * - Persistency + - โœ… Available + - โœ… Available (~8,700 LOC) `persistency `__ + - โŒ Open + - โŒ Open + `kvs `__ + + * - Time + - โœ… Available + - โœ… Available (~11,700 LOC) `inc_time `__ + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available + - โœ… Available (~5,400 LOC) `config_management `__ + - โŒ Open + - โŒ Open + + * - Lifecycle + - โœ… Available + - โœ… Available (~38,300 LOC) `lifecycle `__ + - ๐Ÿ”„ 50% (1/2) + - โŒ Open + + * - Security/Crypto + - โœ… Available + - โŒ Open + - โŒ Open + - โŒ Open + +Process Area 5 โ€” Verification +***************************** + +All tests must be implemented and a module verification report must be approved. +Work products: ``wp__verification_sw_unit_test``, ``wp__verification_comp_int_test``, ``wp__verification_feat_int_test``, ``wp__verification_module_ver_report``. +See :ref:`verification_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'verification' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'verification' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'verification' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'verification' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(verification) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(verification) + +.. rubric:: Implementation status: ๐Ÿ”„ 36% (13/36 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Unit Tests** + - **Comp. Integration Tests** + - **Feature Integration Tests** + - **Module Verification Report** + + * - Baselibs + - โœ… Available (4,663 tests) + - โœ… Available (13 tests) + - โŒ Open + - โŒ Open + + * - Communication + - โœ… Available (2,374 tests) + - โœ… Available (42 tests) + - โŒ Open + - โŒ Open + + * - Logging + - โœ… Available (619 tests) + - โŒ Open + - โœ… Available (1 test) `reference_integration `__ (cross-module) + - โŒ Open + + * - Orchestrator + - โœ… Available (2 tests) + - โœ… Available (9 tests) + - โœ… Available (3 tests) `reference_integration `__ (cross-module) + - โŒ Open + + * - Persistency + - โœ… Available (138 tests) + - โŒ Open + - โœ… Available (6 tests) `reference_integration `__ (cross-module) + - โŒ Open + + * - Time + - โœ… Available (296 tests) + - โœ… Available (11 tests) + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available (143 tests) + - โŒ Open + - โŒ Open + - โŒ Open + + * - Lifecycle + - โœ… Available (2 tests) + - โœ… Available (9 tests) + - โŒ Open + - โŒ Open + + * - Security/Crypto + - โŒ Open + - โŒ Open + - โŒ Open + - โŒ Open + + +Done Criteria +************* + +A module is considered **complete** when all of the following are true: + +#. All ``valid`` component requirements have **100% test coverage** (linked via ``FullyVerifies`` or ``PartiallyVerifies``). +#. All CI metadata checks pass (``TestType``, ``DerivationTechnique``, ``Description`` set on every test). +#. Static analysis has no open ``Critical`` or ``High`` findings. +#. The **Module Verification Report** (``wp__verification_module_ver_report``) is generated and approved by a Committer. +``` diff --git a/process/_assets/custom.css b/process/_assets/custom.css index 02f31d9b5b..aa29bd7b30 100644 --- a/process/_assets/custom.css +++ b/process/_assets/custom.css @@ -179,3 +179,32 @@ .score-grid .sd-card.card-ml4 .sd-card-footer a { color: var(--card-body-text-color) !important; } + +/* Compact process area overview charts */ +.compact-overview-wrapper { + overflow-x: auto; +} + +.compact-overview-table td:nth-child(1), +.compact-overview-table th:nth-child(1), +.compact-overview-table td:nth-child(5), +.compact-overview-table th:nth-child(5), +.compact-overview-table td:nth-child(6), +.compact-overview-table th:nth-child(6) { + text-align: center; + vertical-align: middle; +} + +.compact-overview-table td:has(img[id^="needpie-"]) { + min-width: 240px; + vertical-align: middle; + text-align: center; +} + +.compact-overview-table td:has(img[id^="needpie-"]) img { + width: 240px; + max-width: none; + height: auto; + display: block; + margin: 0 auto; +} diff --git a/process/conf.py b/process/conf.py index a5425b1780..6f06612706 100644 --- a/process/conf.py +++ b/process/conf.py @@ -35,5 +35,64 @@ html_static_path = ["_assets"] html_css_files = ["custom.css"] +# Hide the "On this page" secondary sidebar for wide-content pages +html_theme_options = { + "secondary_sidebar_items": { + "**": ["page-toc"], + "standards/process_reqs_list/process_area_status_summary": [], + "standards/process_reqs_list/process_status_overview": [], + } +} + # :need:`{title}` is used in the needs templates to display the title of the need needs_role_need_template = "{title}" + +# Make the process/ directory importable so that filter functions +# referenced via :filter-func: in sphinx-needs directives can be found. +import sys as _sys +import os as _os +_sys.path.insert(0, _os.path.dirname(_os.path.abspath(__file__))) + + +def _patch_needpie_suppress_legend() -> None: + """Suppress all in-chart legends in sphinx-needs needpie charts. + + needpie auto-adds a legend whenever a slice is <5% or zero, even without + the :legend: option. Since a static legend is displayed above the table, + we replace axes.legend() with a no-op so no legend appears inside the charts. + + We also patch save_matplotlib_figure to always overwrite existing SVG files, + bypassing the sphinx-needs env.images cache which would otherwise skip + regenerating images when the Sphinx environment pickle exists from a prior build. + """ + try: + import matplotlib.axes + matplotlib.axes.Axes.legend = lambda self, *args, **kwargs: None + except Exception: + pass + + try: + import sphinx_needs.utils as _sn_utils + import sphinx_needs.directives.needpie as _needpie_mod + import os + + _orig_save = _sn_utils.save_matplotlib_figure + + def _save_always(app, figure, basename, fromdocname): # type: ignore[no-untyped-def] + # Remove cached entry so figure.savefig() is always called + builder = app.builder + for ext in ("svg", "png", "pdf"): + path = os.path.join(builder.outdir, builder.imagedir, f"{basename}.{ext}") + try: + del app.env.images[path] # type: ignore[attr-defined] + except (KeyError, TypeError, AttributeError): + pass + return _orig_save(app, figure, basename, fromdocname) + + _sn_utils.save_matplotlib_figure = _save_always + _needpie_mod.save_matplotlib_figure = _save_always + except Exception: + pass + + +_patch_needpie_suppress_legend() diff --git a/process/needs_filters.py b/process/needs_filters.py new file mode 100644 index 0000000000..1baa202f6c --- /dev/null +++ b/process/needs_filters.py @@ -0,0 +1,153 @@ +# ******************************************************************************* +# Copyright (c) 2025 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +""" +Custom filter functions for use with sphinx-needs :filter-func: option. +""" + + +def std_req_status_for_area(needs, results, arg1=""): + """ + filter_func for needpie: counts the tag-based compliance status distribution + of std_req needs referenced via `complies` from gd_req needs tagged with the + given process area tag. + + Recognized tags (in priority order): ok, recommendation, open, action, + deviation, n/a. Needs with none of these tags are counted as "other". + + arg1 = process area tag (e.g. requirements_engineering) + """ + area_tag = arg1.strip() + std_req_ids = set() + needs_by_id = {n["id"]: n for n in needs} + for need in needs: + if ( + need.get("type") == "gd_req" + and not need.get("is_external", False) + and area_tag in need.get("tags", []) + ): + for ref_id in need.get("complies", []): + if ref_id.startswith("std_req__iso26262__"): + std_req_ids.add(ref_id) + ok = recommendation = open_ = action = deviation = na = other = 0 + for sid in std_req_ids: + n = needs_by_id.get(sid) + if n: + t = set(n.get("tags", [])) + if "deviation" in t: + deviation += 1 + elif "action" in t: + action += 1 + elif "open" in t: + open_ += 1 + elif "ok" in t: + ok += 1 + elif "recommendation" in t: + recommendation += 1 + elif "n/a" in t: + na += 1 + else: + other += 1 + results += [ok, recommendation, open_, action, deviation, na, other] + + +def wp_tag_status(needs, results, arg1=""): + """ + filter_func for needpie: counts the tag-based verification status distribution + of gd_req needs associated with one or more workflows (pipe-separated in arg1). + + Tags (in priority order): + - done_automation โ†’ Automated + - prio__automation โ†’ Waiting for automation + - manual_prio_ โ†’ Inspection list + - (none of the above) โ†’ Other + + arg1 = workflow id(s), pipe-separated (e.g. wf__foo or wf__foo|wf__bar) + """ + workflow_ids = [w.strip() for w in arg1.split("|") if w.strip()] + automated = waiting = inspection = other = 0 + for need in needs: + if need.get("type") == "gd_req" and not need.get("is_external", False): + satisfies = need.get("satisfies", []) + if any(wf in satisfies for wf in workflow_ids): + tags = set(need.get("tags", [])) + if "done_automation" in tags: + automated += 1 + elif any( + t.startswith("prio_") and t.endswith("_automation") + for t in tags + ): + waiting += 1 + elif any(t.startswith("manual_prio_") for t in tags): + inspection += 1 + else: + other += 1 + results += [automated, waiting, inspection, other] + + +def area_verification_status(needs, results, arg1=""): + """ + filter_func for needpie: counts the tag-based verification status distribution + of gd_req needs tagged with the given process area tag, aggregated across all + workflows for that area. + + Tags (in priority order): + - done_automation โ†’ Automated + - prio__automation โ†’ Waiting for automation + - manual_prio_ โ†’ Inspection list + - (none of the above) โ†’ Other + + arg1 = process area tag (e.g. requirements_engineering) + """ + area_tag = arg1.strip() + automated = waiting = inspection = other = 0 + for need in needs: + if ( + need.get("type") == "gd_req" + and not need.get("is_external", False) + and area_tag in need.get("tags", []) + ): + tags = set(need.get("tags", [])) + if "done_automation" in tags: + automated += 1 + elif any( + t.startswith("prio_") and t.endswith("_automation") + for t in tags + ): + waiting += 1 + elif any(t.startswith("manual_prio_") for t in tags): + inspection += 1 + else: + other += 1 + results += [automated, waiting, inspection, other] + + +def wp_done_automation_status(needs, results, arg1=""): + """ + filter_func for needpie: counts gd_req needs associated with one or more + workflows and splits them into done_automation vs. remaining requirements. + + arg1 = workflow id(s), pipe-separated (e.g. wf__foo or wf__foo|wf__bar) + """ + workflow_ids = [w.strip() for w in arg1.split("|") if w.strip()] + done = rest = 0 + for need in needs: + if need.get("type") == "gd_req" and not need.get("is_external", False): + satisfies = need.get("satisfies", []) + if any(wf in satisfies for wf in workflow_ids): + tags = set(need.get("tags", [])) + if "done_automation" in tags: + done += 1 + else: + rest += 1 + results += [done, rest] diff --git a/process/standards/feature_and_process_status.rst b/process/standards/feature_and_process_status.rst new file mode 100644 index 0000000000..310238a520 --- /dev/null +++ b/process/standards/feature_and_process_status.rst @@ -0,0 +1,618 @@ +.. + # ******************************************************************************* + # Copyright (c) 2025 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Feature and Process Status +########################## + +This page tracks the completion status of all 5 process areas per module. +Update the status column for each module after completing the respective deliverable. + +**Process Status chart legend:** + +.. list-table:: + :header-rows: 1 + :widths: 30 30 40 + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - ๐ŸŸข Valid + + ๐ŸŸก Draft + + ๐Ÿ”ด Invalid + + โฌœ Other + - ๐ŸŸข Ok + + ๐Ÿ”ต Recommendation + + ๐ŸŸก Open + + ๐ŸŸ  Action + + ๐Ÿ”ด Deviation + + โฌœ N/A ยท โ—ป Other + - ๐ŸŸข Automated + + ๐ŸŸก Waiting for automation + + ๐Ÿ”ต Inspection list + + โฌœ Other + +**Implementation Status Values:** + +- ``โœ… Available`` โ€” Work product created, reviewed and approved +- ``๐Ÿ”„ NN%`` โ€” In Progress: artifact exists with at least one valid element, percentage shows valid/total +- ``โŒ Open`` โ€” Not yet started, not found, or 0% valid +- ``โ€”`` โ€” Not applicable for this module + +Process Area 1 โ€” Change Management +*********************************** + +A Change Request must be created and approved by the Architecture Community before module development begins. +See :ref:`chm_change_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'change_management' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'change_management' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'change_management' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'change_management' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(change_management) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(change_management) + +.. rubric:: Implementation status: โœ… Available (9/9 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **CR approved** + + * - Baselibs + - โœ… Available + + * - Communication + - โœ… Available + + * - Logging + - โœ… Available + + * - Orchestrator + - โœ… Available + + * - Persistency + - โœ… Available + + * - Time + - โœ… Available + + * - Config Mgmt + - โœ… Available + + * - Lifecycle + - โœ… Available + + * - Security/Crypto + - โœ… Available + +Process Area 2 โ€” Requirements Engineering +***************************************** + +Feature and component requirements must be written and inspected. +Work products: ``wp__requirements_feat``, ``wp__requirements_comp``, ``wp__requirements_inspect``. +See :ref:`requirements_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'requirements_engineering' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'requirements_engineering' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(requirements_engineering) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(requirements_engineering) + +.. rubric:: Implementation status: ๐Ÿ”„ 26% (7/27 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Feature Requirements** + - **Component Requirements** + - **Req. Inspection** + + * - Baselibs + - ๐Ÿ”„ 93% (14/15) + - ๐Ÿ”„ 93% (124/134) + - ๐Ÿ”„ 20% (2/10) + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__, + `feature-level `__ + + * - Communication + - โœ… Available (50/50) + - ๐Ÿ”„ 97% (34/35) + - โŒ Open + + * - Logging + - โœ… Available (46/46) + - โŒ Open + - โŒ Open + + * - Orchestrator + - ๐Ÿ”„ 84% (26/31) + - โŒ Open + - โŒ Open + `executor `__, + `orchestrator `__ + + * - Persistency + - โœ… Available (40/40) + - ๐Ÿ”„ 95% (36/38) + - โœ… Available (2/2) + `feature-level `__, + `kvs `__ + + * - Time + - โœ… Available (15/15) + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available (13/13) + - โŒ Open + - โŒ Open + + * - Lifecycle + - โŒ Open + - โŒ Open + - โŒ Open + + * - Security/Crypto + - โœ… Available (42/42) + - โŒ Open + - โŒ Open + +Process Area 3 โ€” Architecture Design +************************************ + +Feature and component architecture must be designed and inspected. +Work products: ``wp__feature_arch``, ``wp__component_arch``, ``wp__sw_arch_verification``. +See :ref:`arch_workflow`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'architecture_design' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'architecture_design' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(architecture_design) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(architecture_design) + +.. rubric:: Implementation status: ๐Ÿ”„ 19% (5/27 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Feature Architecture** + - **Component Architecture** + - **Arch. Inspection** + + * - Baselibs + - โœ… Available (4/4) + - ๐Ÿ”„ 98% (172/175) + - ๐Ÿ”„ 80% (8/10) + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__, + `feature-level `__ + + * - Communication + - โœ… Available (3/3) + - ๐Ÿ”„ 94% (17/18) + - โŒ Open + + * - Logging + - โœ… Available (4/4) + - โœ… Available (3/3) + - โŒ Open + + * - Orchestrator + - ๐Ÿ”„ 66% (4/6) + - ๐Ÿ”„ 98% (42/43) + - โŒ Open + `executor `__, + `orchestrator `__ + + * - Persistency + - โœ… Available (12/12) + - ๐Ÿ”„ 25% (1/4) + - โŒ Open + `feature-level `__, + `kvs `__ + + * - Time + - โŒ Open + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โŒ Open + - โŒ Open + - โŒ Open + + * - Lifecycle + - ๐Ÿ”„ 94% (30/32) + - ๐Ÿ”„ 94% (15/16) + - โŒ Open + + * - Security/Crypto + - โŒ Open + - โŒ Open + - โŒ Open + +Process Area 4 โ€” Implementation +******************************** + +Source code and detailed design must be implemented and inspected. +Work products: ``wp__sw_development_plan``, ``wp__sw_implementation``, ``wp__sw_implementation_inspection``. +See :ref:`workflow_implementation`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'implementation' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'implementation' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'implementation' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'implementation' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(implementation) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(implementation) + +.. rubric:: Implementation status: ๐Ÿ”„ 47% (17/36 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **SW Development Plan** + - **Code** + - **Detailed Design** + - **Impl. Inspection** + + * - Baselibs + - โœ… Available + - โœ… Available (~119,400 LOC) `baselibs `__ + - โŒ Open + - โŒ Open + `bitmanipulation `__, + `concurrency `__, + `containers `__, + `filesystem `__, + `json `__, + `safecpp `__, + `result `__, + `srs `__, + `utils `__ + + * - Communication + - โœ… Available + - โœ… Available (~71,300 LOC) `communication `__ + - โŒ Open + - โŒ Open + + * - Logging + - โœ… Available + - โœ… Available (~22,900 LOC) `logging `__ + - โŒ Open + - โŒ Open + + * - Orchestrator + - โœ… Available + - โœ… Available (~38,300 LOC) `lifecycle `__ + - โŒ Open + - โŒ Open + + * - Persistency + - โœ… Available + - โœ… Available (~8,700 LOC) `persistency `__ + - โŒ Open + - โŒ Open + `kvs `__ + + * - Time + - โœ… Available + - โœ… Available (~11,700 LOC) `inc_time `__ + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available + - โœ… Available (~5,400 LOC) `config_management `__ + - โŒ Open + - โŒ Open + + * - Lifecycle + - โœ… Available + - โœ… Available (~38,300 LOC) `lifecycle `__ + - ๐Ÿ”„ 50% (1/2) + - โŒ Open + + * - Security/Crypto + - โœ… Available + - โŒ Open + - โŒ Open + - โŒ Open + +Process Area 5 โ€” Verification +***************************** + +All tests must be implemented and a module verification report must be approved. +Work products: ``wp__verification_sw_unit_test``, ``wp__verification_comp_int_test``, ``wp__verification_feat_int_test``, ``wp__verification_module_ver_report``. +See :ref:`verification_workflows`. + +.. rubric:: Process Status + +.. list-table:: + :header-rows: 1 + :class: compact-overview-table + + * - Process req. status + - ISO 26262 std_req status + - Req. verification status + * - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Valid, Draft, Invalid, Other + :colors: LimeGreen, Gold, LightCoral, LightGray + + type == 'gd_req' and is_external == False and status == 'valid' and 'verification' in tags + type == 'gd_req' and is_external == False and status == 'draft' and 'verification' in tags + type == 'gd_req' and is_external == False and status == 'invalid' and 'verification' in tags + type == 'gd_req' and is_external == False and status not in ['valid', 'draft', 'invalid'] and 'verification' in tags + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Ok, Recommendation, Open, Action, Deviation, N/A, Other + :colors: LimeGreen, LightBlue, Gold, Orange, LightCoral, LightGray, Silver + :filter-func: needs_filters.std_req_status_for_area(verification) + - + + .. rst-class:: small-pie-cell + + .. needpie:: + :labels: Automated, Waiting for automation, Inspection list, Other + :colors: LimeGreen, Gold, LightBlue, LightGray + :filter-func: needs_filters.area_verification_status(verification) + +.. rubric:: Implementation status: ๐Ÿ”„ 36% (13/36 deliverables complete) + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + :class: module-phase-tracker-table + + * - **Module** + - **Unit Tests** + - **Comp. Integration Tests** + - **Feature Integration Tests** + - **Module Verification Report** + + * - Baselibs + - โœ… Available (4,663 tests) + - โœ… Available (13 tests) + - โŒ Open + - โŒ Open + + * - Communication + - โœ… Available (2,374 tests) + - โœ… Available (42 tests) + - โŒ Open + - โŒ Open + + * - Logging + - โœ… Available (619 tests) + - โŒ Open + - โœ… Available (1 test) `reference_integration `__ (cross-module) + - โŒ Open + + * - Orchestrator + - โœ… Available (2 tests) + - โœ… Available (9 tests) + - โœ… Available (3 tests) `reference_integration `__ (cross-module) + - โŒ Open + + * - Persistency + - โœ… Available (138 tests) + - โŒ Open + - โœ… Available (6 tests) `reference_integration `__ (cross-module) + - โŒ Open + + * - Time + - โœ… Available (296 tests) + - โœ… Available (11 tests) + - โŒ Open + - โŒ Open + + * - Config Mgmt + - โœ… Available (143 tests) + - โŒ Open + - โŒ Open + - โŒ Open + + * - Lifecycle + - โœ… Available (2 tests) + - โœ… Available (9 tests) + - โŒ Open + - โŒ Open + + * - Security/Crypto + - โŒ Open + - โŒ Open + - โŒ Open + - โŒ Open + +Done Criteria +************* + +A module is considered **complete** when all of the following are true: + +#. All ``valid`` component requirements have **100% test coverage** (linked via ``FullyVerifies`` or ``PartiallyVerifies``). +#. All CI metadata checks pass (``TestType``, ``DerivationTechnique``, ``Description`` set on every test). +#. Static analysis has no open ``Critical`` or ``High`` findings. +#. The **Module Verification Report** (``wp__verification_module_ver_report``) is generated and approved by a Committer. diff --git a/process/standards/index.rst b/process/standards/index.rst index b4576a7a18..80831b4356 100644 --- a/process/standards/index.rst +++ b/process/standards/index.rst @@ -24,6 +24,7 @@ Standards & Requirements isopas8926/isopas8926 aspice_40/index isosae21434/isosae21434 + feature_and_process_status process_reqs_list/index Standards Coverage statistics diff --git a/process/standards/process_reqs_list/index.rst b/process/standards/process_reqs_list/index.rst index 652fa580c4..23a8742e55 100644 --- a/process/standards/process_reqs_list/index.rst +++ b/process/standards/process_reqs_list/index.rst @@ -17,14 +17,12 @@ Process Requirements List ######################### -Automation Status via Process Requirement Table -*********************************************** +Feature Status Tracker +********************** -All process requirements should be labelled with the priorization of automation implementation: +For a detailed overview of deliverable status per module and process area, see +:doc:`../feature_and_process_status`. -- A label "manual" means nothing to do, because it must be fulfilled manually (e.g. by filling attributes). It can be added a prio (to denote that this req is a must for v0.5 add "prio_1") -- A label "done_automation" means nothing to do, because it already works. Note that in docs-as-code repository there are tool requirements linking to the process requirements with an "Implemented" attribute. -- A label "prio_*_automation" means the prio 1, 2, ... labelled requirement shall be implemented in this order. Prio 1 is everything we need for the re-audit, prio 2 could be done manually as a fallback, prio 3 is nice to have ... .. needtable:: :style: table