FLL - Specifications - FSS-000D (Basic Rule)
Author: Kevin Day
Description: Featurless Linux Library Specifications
Keywords: Featureless, FLL, Kevin Day, Kevux, Linux, Library, Distribution, Open-Source, specification, standard, fss-000d, basic rule

# Featureless Linux Library Specification

## FSS-000D (Basic Rule)

The version date of this specification is `2023/07/14`.

This is a special case that follows `FSS-0002 (Basic List)`, and different FSS formats inside this `FSS-0002 (Basic List)`. This `FSS-0002 (Basic List)` is considered the "Outer List" and the Content of this Outer List is considered the "Inner Content".

The Inner Content may be any of the following FSS formats: `FSS-0000 (Basic)`, `FSS-0001 (Extended)`, and `FSS-0003 (Extended List)`. The way in which each format is determined is first to see if the Inner Content Object would be a valid Extended List Object. If the Inner Content Object is not a valid `FSS-0003 (Extended List)` Object, then check to see if it is an `FSS-0000 (Basic)` or `FSS-0001 (Extended)` Object.

The `FSS-0000 (Basic)` and `FSS-0001 (Extended)` Objects have the same format for Object names but the `FSS-0003 (Extended List)` Object is slightly different. Anything that would match an `FSS-0003 (Extended List)` Object must therefore be an `FSS-0003 (Extended List)` Object.

This supports the use of `iki-0000 (Unrestricted)` but only within the Content of the outermost `FSS-0002 (Basic List)`. That is to say, the IKI is only processed once. Additional restrictions on the use of IKI syntax is allowed if explicitly defined in the implementing specification. This additional restriction may also include using a more restrictive IKI syntax, such as `iki-0001 (Basic)`.

Anything implementing this specification may impose its own restrictions on when to determine if the Inner Content is what FSS format, based on Object names.

See the the FSS-0000 (Basic), FSS-0001 (Extended), and FSS-0003 (Extended List) specification files for details on the syntax rules.

Example:

    # fss-000d
    main:
      name "Boot Devices"

    script:
      start {
        ip addr add 127.0.0.1/8 label lo dev lo;
        ip link set lo up;
      }

      stop {
        ip link set lo down;
      }

    command:
      start mount -a -O no_netdev
      stop umount -arf -O no_netdev

Example Results:

    Outer List Objects would be:
      1) main
      2) script
      3) command

    Outer List Contents would be:
      1.1) name "Boot Devices"

      2.1) start {
             ip addr add 127.0.0.1/8 label lo dev lo;
             ip link set lo up;
           }

           stop {
             ip link set lo down;
           }

      3.1) begin mount -a -O no_netdev
           end umount -arf -O no_netdev

    Inner Content Objects would be:
      1.1.1) name
      2.1.1) start
      2.1.2) stop
      3.1.1) begin
      3.1.2) end

    Inner Content Contents would be (without breaking Content into its individual parts):
      1.1.1) Boot Devices
      2.1.1) ip addr add 127.0.0.1/8 label lo dev lo;
             ip link set lo up;
      2.1.2) ip link set lo down;
      3.1.1) mount -a -O no_netdev
      3.1.2) umount -arf -O no_netdev