Skip to content

No forced hierarchy (containers and components) #70

Description

@seekers-fd

As a PDS model author working at a single architectural plane, I want to declare a container or component without a for <parent> clause, so I can model a flat set of nodes without stub system/container declarations that exist only to satisfy the hierarchy.

Scope — broadened 2026-06-24 (owner decision). Originally container-only; extended to every node with mandatory hierarchy — containers and components. The container is the canonical flat-grain primitive, so a parentless component is allowed but flagged redundant by an advisory lint (PDS-ARCH-004), steering it to a container or a for <container>.

Context. The old rule forced every container to name a parent system and every component a parent container, even when the modelling intent is explicitly flat. The only workaround was stub anchor nodes (public system X;) that carry no information and pollute the outline and the rendered context diagram.

Acceptance criteria

  • public container Foo {} and public component Bar {} parse and pass pds check with no error.
  • A standalone container/component with no for is valid at the top level of a module.
  • pds svg and pds doc render standalone containers and components at the context (top-level) layer — not omitted, not erroring.
  • A parentless component raises PDS-ARCH-004 — an advisory Warning (never fails a check) marking it redundant with a standalone container.
  • A for parent, when named, MUST still be a system for a container and a container for a component; any other parent kind is rejected.
  • Existing models using for <system> / for <container> are unaffected.

Workaround today (removed): declare a throwaway public system X; / stub container and attach everything to it — introduces noise and misrepresents the architecture.

Delivered by #75 (ADR-042; PDS-ARCH-004).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions