Skip to content

docs: decide feature granularity and folder structure for inc_time module #121

Description

@lavrovvalera

Context

Issue #40 requires the module to comply with SCORE folder and naming conventions (folder.rst, naming.rst). Before implementing any structural changes, a conceptual decision is needed: what counts as a "feature" in this module?

The folder structure depends entirely on this answer, because docs/features/<feature_name>/ must be named after user-visible capabilities — not implementation components.

Once decided, the implementation shall be done according to folder.rst and naming.rst conventions. Issue #84 shall be refined based on the decision made in this ticket.


Problem

The module currently has three folders under docs/features/:

docs/features/time/         ← named after component
docs/features/time_daemon/  ← named after component  
docs/features/time_slave/   ← named after component

Per folder.rst, feature folders must represent user-visible capabilities, not implementation components. Additionally, docs/features/*/architecture/ sub-folders are missing everywhere — content sits flat under _assets/.


Decision needed

  1. How many features does inc_time implement? Option A (three independent features) or Option B (one feature)?
  2. If Option A: are the proposed feature names correct?

Option A — Three features

vehicle_time and local_clock have different component dependencies and deployment models. A user can use local_clock with zero daemon or slave process deployed. They are independently useful and independently deployable.

inc_time/
├── docs/
│   ├── features/
│   │   ├── vehicle_time/            ← gPTP-synced time + status API
│   │   │   └── architecture/          components: time_slave + time_daemon + vehicle_time API
│   │   ├── local_clock/             ← OS-backed clocks, no sync infrastructure
│   │   │   └── architecture/          components: time API only
│   │   │                              (SteadyTime, SystemTime, HighResSteadyTime, HplsTime)
│   │   └── abs_time/                ← UTC-synced absolute time (future placeholder)
│   │       └── architecture/          components: time_daemon + time API + TBD
│   ├── manuals/
│   ├── release/
│   ├── safety_mgt/
│   ├── security_mgt/
│   └── verification_report/
└── score/
    ├── time/                        ← component: Clock<Tag> API library
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   └── architecture/
    │   └── src/
    ├── time_daemon/                 ← component: TimeDaemon
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   └── architecture/
    │   └── src/
    ├── time_slave/                  ← component: TimeSlave (already compliant)
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   ├── architecture/
    │   │   ├── manuals/
    │   │   ├── safety_analysis/
    │   │   └── security_analysis/
    │   ├── src/
    │   └── tests/
    └── ts_client/                   ← component: IPC client library
        ├── docs/
        │   ├── requirements/
        │   └── detailed_design/
        └── src/

Option B — One feature

The central score platform repo defines everything under one feature score/docs/features/time/. The module follows the single-feature variant from folder.rst, omitting the features/ nesting level.

inc_time/
├── docs/
│   ├── architecture/                ← single feature architecture, covers all
│   │   └── _assets/                   capabilities (vehicle_time, local_clock,
│   │                                   abs_time) in one document
│   ├── manuals/
│   ├── release/
│   ├── safety_mgt/
│   ├── security_mgt/
│   └── verification_report/
└── score/
    ├── time/                        ← component: Clock<Tag> API library
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   └── architecture/
    │   └── src/
    ├── time_daemon/                 ← component: TimeDaemon
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   └── architecture/
    │   └── src/
    ├── time_slave/                  ← component: TimeSlave (already compliant)
    │   ├── docs/
    │   │   ├── requirements/
    │   │   ├── detailed_design/
    │   │   ├── architecture/
    │   │   ├── manuals/
    │   │   ├── safety_analysis/
    │   │   └── security_analysis/
    │   ├── src/
    │   └── tests/
    └── ts_client/                   ← component: IPC client library
        ├── docs/
        │   ├── requirements/
        │   └── detailed_design/
        └── src/

Additional note on content placement

Regardless of which option is chosen, the existing docs/features/time_daemon/_assets/ and docs/features/time_slave/_assets/ content (internal class diagrams, internal sequences for ptp_machine, msg_broker, ipc, etc.) is component detailed design, not feature architecture. It belongs in score/<component>/docs/detailed_design/, not in the feature folder.


References

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions