Skip to content

Replace Python SBDL converters with inline # @sbdl declarations using SBDL's built-in gathering#1171

Closed
Copilot wants to merge 3 commits intodocs/generate-test-spec-and-traceabilityfrom
copilot/add-inline-sbdl-to-gherkin
Closed

Replace Python SBDL converters with inline # @sbdl declarations using SBDL's built-in gathering#1171
Copilot wants to merge 3 commits intodocs/generate-test-spec-and-traceabilityfrom
copilot/add-inline-sbdl-to-gherkin

Conversation

Copy link
Contributor

Copilot AI commented Feb 27, 2026

~580 lines of Python scripts were generating SBDL by parsing Gherkin and BATS files externally. This moves SBDL declarations inline — next to the elements they describe — and uses SBDL's built-in @sbdl prefix support to gather them directly, with no custom extraction script needed.

Inline # @sbdl in Gherkin feature files

Each Feature, Rule, and Scenario in test/cpp/features/*.feature now carries a # @sbdl comment expressing the element type, its parent relation, and description. The # keeps the line a valid Gherkin comment; SBDL recognizes the @sbdl prefix natively and extracts the declaration:

Feature: Compatibility
  # @sbdl compatibility is aspect { description is "As a software craftsperson, ..." }

  Rule: Host architecture
    # @sbdl host-architecture is requirement { aspect is compatibility description is "amp-devcontainer SHALL be compatible with both the x86-64 (AMD64) and AArch64 (ARM64) host architectures." }

    Scenario: Compile valid source code into working software targeting the container host architecture
      # @sbdl compile-host-cpp is test { requirement is compile-for-container-host-architecture-and-operating-system }

Inline # @sbdl in BATS test files

Each @test block in test/cpp/, test/rust/, and test/base/ gets a # @sbdl line below the existing # bats test_tags= annotation. Flavor-prefixed identifiers (cpp-, rust-, base-) avoid collisions:

# bats test_tags=compilation,compile-for-container-host-architecture-and-operating-system
# @sbdl cpp-compile-host-gcc is test { requirement is compile-for-container-host-architecture-and-operating-system }
@test "valid code input should result in working executable using host compiler" {

Flavor files

docs/support/cpp-flavor.sbdl and docs/support/rust-flavor.sbdl provide the per-flavor document-flavor definition element used by the document templates.

Workflow

.github/workflows/wc-document-generation.yml updated to call sbdl directly with the feature and BATS files as inputs — no intermediary extraction step or output file needed. gherkin-official and python dependencies removed.

Deleted files

  • docs/support/gherkin_mapping_config.py
  • docs/support/gherkin_sbdl_converter.py
  • docs/support/bats_sbdl_converter.py
  • docs/support/generate-sbdl.py
Original prompt

Context

PR #1166 (branch docs/generate-test-spec-and-traceability) currently uses ~580+ lines of custom Python scripts to convert Gherkin .feature files and BATS .bats test files into SBDL. This involves:

  • docs/support/gherkin_mapping_config.py (80 lines) — mapping configs
  • docs/support/gherkin_sbdl_converter.py (204 lines) — Gherkin parser/converter
  • docs/support/bats_sbdl_converter.py (144 lines) — BATS parser/converter
  • docs/support/generate-sbdl.py (160 lines) — unified orchestrator
  • docs/support/gherkin-to-sbdl.py (39 lines) — standalone Gherkin converter

SBDL's strength is keeping definitions close to the code (see https://sbdl.dev). The goal is to embed SBDL declarations inline in the source files (.feature and .bats) and replace the Python conversion scripts with a simple extraction mechanism.

Requirements

1. Add inline SBDL to Gherkin .feature files

For each Feature, Rule, and Scenario that currently gets converted to SBDL, add an inline #!sbdl comment directly in the .feature file, right next to the element it describes.

Pattern for Features (mapped to aspect or requirement depending on config):
For the test-specification config: Features → aspects, Rules → requirements, Scenarios → tests.
For the requirements config: Features → requirements, Rules → requirements.

Since both configs need to be supported, use the test-specification mapping (aspect/requirement/test) as the canonical inline form, since it's the superset. The requirements config can be handled by the SBDL toolchain at document generation time.

Files to annotate (all in test/cpp/features/):

  • compatibility.feature — Feature: Compatibility + its Rules
  • compilation.feature — Feature: Compilation + its Rules + Scenario
  • debugging.feature — Feature: Debugging + its Rules
  • maintainability.feature — Feature: Maintainability + its Rules
  • security.feature — Feature: Security + its Rules
  • static-dynamic-analysis.feature — Feature: Static and dynamic analysis + its Rules + Scenario

Inline SBDL format — add as a comment line directly below the Feature/Rule/Scenario keyword line. Use hyphenated-lowercase-slug identifiers (matching what to_slug() currently generates). Do NOT duplicate the title in both the identifier and a custom:title attribute — the identifier should be a short, meaningful slug, and the Gherkin name itself serves as the human-readable title. Example:

Feature: Compatibility
  #!sbdl compatibility is aspect { description is "As a software craftsperson, to ensure that my development environment works well with a variety of tools and systems, I want my development environment to be compatible with commonly used tools and systems." }

  Rule: Host architecture
    #!sbdl host-architecture is requirement { aspect is compatibility description is "amp-devcontainer SHALL be compatible with both the x86-64 (AMD64) and AArch64 (ARM64) host architectures." }

For Scenarios:

    Scenario: Compile valid source code into working software targeting the container host architecture
      #!sbdl compile-host-cpp is test { requirement is compile-for-container-host-architecture-and-operating-system }

2. Add inline SBDL to BATS .bats test files

Replace the current # bats test_tags=... traceability approach with inline #!sbdl declarations. Keep the # bats test_tags=... lines as they are (they serve BATS's own filtering), but add #!sbdl lines that directly express the traceability.

Files to annotate:

  • test/cpp/integration-tests.bats
  • test/rust/integration-tests.bats
  • test/base/integration-tests.bats

Pattern: Add #!sbdl comment directly above or below the # bats test_tags= line, before the @test line. Use a short author-chosen identifier prefixed with the flavor (e.g. cpp-, rust-, base-). Express the requirement relation directly:

# bats test_tags=compilation,compile-for-container-host-architecture-and-operating-system
#!sbdl cpp-compile-host-gcc is test { requirement is compile-for-container-host-architecture-and-operating-system }
@test "valid code input should result in working executable using host compiler" {

Use the tag values that correspond to Rule slugs from the .feature files as the requirement references. Where a test maps to multiple tags, choose the most specific Rule slug for the requirement is relation.

3. Create a simple SBDL extraction script

Replace generate-sbdl.py, gherkin-to-sbdl.py, gherkin_sbdl_converter.py, gherkin_mapping_config.py, and bats_sbdl_converter.py with a single simple script docs/support/extract-sbdl.sh (or a minimal Python equivalent docs/support/extract-sbdl.py) that:

  1. Takes input file paths as arguments (or globs)
  2. Extracts all #!sbdl lines from the input files
  3. Strips the #!sbdl prefix (and any leading comment characters like # or spaces)
  4. Outputs a valid .sbdl file with the...

This pull request was created from Copilot chat.


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

Hey there and thank you for opening this pull request! 👋🏼

We require pull request titles to follow the Conventional Commits specification and it looks like your proposed title needs to be adjusted.

⚠️ Details

No release type found in pull request title "Replace Python SBDL converters with inline # @sbdl declarations using SBDL's built-in gathering". Add a prefix to indicate what kind of release this pull request corresponds to. For reference, see https://www.conventionalcommits.org/

Available types:

  • feat: A new feature
  • fix: A bug fix
  • docs: Documentation only changes
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
  • refactor: A code change that neither fixes a bug nor adds a feature
  • perf: A code change that improves performance
  • test: Adding missing tests or correcting existing tests
  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
  • chore: Other changes that don't modify src or test files
  • revert: Reverts a previous commit

@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

MegaLinter analysis: Error

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ ACTION actionlint 21 0 0 0.66s
✅ DOCKERFILE hadolint 3 0 0 0.79s
❌ GHERKIN gherkin-lint 6 6 0 3.3s
✅ JSON npm-package-json-lint yes no no 0.51s
✅ JSON prettier 21 4 0 0 0.53s
✅ JSON v8r 21 0 0 7.13s
✅ MARKDOWN markdownlint 12 0 0 0 1.06s
✅ MARKDOWN markdown-table-formatter 12 0 0 0 0.31s
✅ REPOSITORY checkov yes no no 17.94s
✅ REPOSITORY gitleaks yes no no 0.61s
✅ REPOSITORY git_diff yes no no 0.01s
✅ REPOSITORY grype yes no no 30.75s
✅ REPOSITORY secretlint yes no no 0.94s
✅ REPOSITORY syft yes no no 1.96s
✅ REPOSITORY trivy yes no no 5.55s
✅ REPOSITORY trivy-sbom yes no no 0.23s
✅ REPOSITORY trufflehog yes no no 2.19s
⚠️ SPELL lychee 81 1 0 23.64s
✅ YAML prettier 29 0 0 0 1.02s
✅ YAML v8r 29 0 0 8.45s
✅ YAML yamllint 29 0 0 0.87s

Detailed Issues

❌ GHERKIN / gherkin-lint - 6 errors
Results of gherkin-lint linter (version 0.0.0)
See documentation on https://megalinter.io/9.3.0/descriptors/gherkin_gherkin_lint/
-----------------------------------------------

❌ [ERROR] test/cpp/features/compatibility.feature
    test/cpp/features/compatibility.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer images *SHALL* be compatible with the [OCI image specification](https://github.com/opencontainers/image-spec/blob/main/spec.md)'                unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'To guarantee compatibility with container runtimes and container- and image tooling; amp-devcontainer should be compatible with the OCI image specification.'    unexpected-error
      16    (16:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHALL* be compatible with both the x86-64 (AMD64) *and* AArch64 (ARM64) host architectures.'                                                   unexpected-error
      18    (18:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Supporting both x86-64 and AArch64 has several advantages:'                                                                                                      unexpected-error
      20    (20:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got '- Increasing useability on a wide range of host machines, from PC hardware using the x86-64 architecture to Apple Silicon using the AArch64 architecture'        unexpected-error
      21    (21:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got '- Unlocking the power efficiency of the AArch64 architecture, potentially reducing energy consumption and cost for metered ci-systems'                           unexpected-error
      25    (25:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHOULD* be compatible with [VS Code](https://code.visualstudio.com/) *and* [GitHub Codespaces](https://github.com/features/codespaces).'       unexpected-error
      27    (27:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It should be possible to use amp-devcontainer and all of its features in both VS Code and GitHub Codespaces with minimal effort.'                                unexpected-error
      4     (4:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'As a software craftsperson,'                                                                                                                                      unexpected-error
      5     (5:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'to ensure that my development environment works well with a variety of tools and systems,'                                                                        unexpected-error
      6     (6:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'I want my development environment to be compatible with commonly used tools and systems.'                                                                         unexpected-error

❌ [ERROR] test/cpp/features/compilation.feature
    test/cpp/features/compilation.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHALL* be able to compile valid source code into a working executable targeting the container host architecture and operating system.'    unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Compiling valid source code into working software, able to run on the container host architecture and operating system,'                                    unexpected-error
      13    (13:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'can be necessary in several scenarios; for example when:'                                                                                                   unexpected-error
      15    (15:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got '- the container host is the deployment target'                                                                                                              unexpected-error
      16    (16:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got '- running tests on the container host'                                                                                                                      unexpected-error
      17    (17:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got '- building plug-ins, extensions, code generators, or other additional tools that need to run on the container host'                                         unexpected-error
      29    (29:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHOULD* be able to compile valid source-code into a working ELF executable targeting the ARM Cortex architecture.'                        unexpected-error
      31    (31:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Compiling valid source-code into working ELF executables, able to run on the ARM Cortex architecture,'                                                      unexpected-error
      4     (4:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'As a software developer,'                                                                                                                                    unexpected-error
      5     (5:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'to generate a working product, when using compiled languages,'                                                                                               unexpected-error
      6     (6:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'source code needs to be compiled into working software.'                                                                                                     unexpected-error

❌ [ERROR] test/cpp/features/debugging.feature
    test/cpp/features/debugging.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHALL* provide debugging support for the primary programming language(s) used within the container.'                                               unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Providing debugging support within the development environment enhances the developer experience and productivity.'                                                  unexpected-error
      13    (13:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It allows developers to efficiently identify and resolve issues in their code by setting breakpoints, inspecting variables, and stepping through code execution.'    unexpected-error
      14    (14:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'This capability is essential for diagnosing complex problems, understanding code flow, and ensuring the correctness of software.'                                    unexpected-error
      15    (15:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'By having integrated debugging tools, developers can streamline their workflow and reduce the time spent on troubleshooting and fixing bugs.'                        unexpected-error
      19    (19:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *MAY* provide tools to upload compiled firmware to a connected micro-controller.'                                                                   unexpected-error
      21    (21:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Providing tools to upload compiled firmware to a connected micro-controller enhances the development workflow for embedded systems.'                                 unexpected-error
      22    (22:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It allows developers to quickly and easily transfer their compiled code to the target hardware for testing and debugging.'                                           unexpected-error
      4     (4:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'As a software craftsperson,'                                                                                                                                          unexpected-error
      5     (5:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'to efficiently identify and resolve issues in my code,'                                                                                                               unexpected-error
      6     (6:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'I want to be able to debug my source code within the development environment.'                                                                                        unexpected-error

❌ [ERROR] test/cpp/features/maintainability.feature
    test/cpp/features/maintainability.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHOULD* contain up-to-date tools and dependencies.'                                                                                                                             unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Keeping tools and dependencies up-to-date helps ensure that the development environment remains secure, stable, and compatible with the latest technologies.'                                     unexpected-error
      13    (13:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It also helps prevent issues related to deprecated or unsupported software versions, reducing maintenance overhead and improving overall developer productivity.'                                 unexpected-error
      14    (14:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Regular updates can also introduce new features and improvements that enhance the development experience.'                                                                                        unexpected-error
      18    (18:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHOULD* provide support for automatic updates when consumed as a dependency.'                                                                                                   unexpected-error
      20    (20:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Providing support for automatic updates when amp-devcontainer is consumed as a dependency helps ensure that users always have access to the latest features, bug fixes, and security patches.'    unexpected-error
      21    (21:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'This reduces the maintenance burden on users, as they do not need to manually track and apply updates.'                                                                                           unexpected-error
      22    (22:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Automatic updates can also help ensure compatibility with other dependencies and tools, improving the overall stability and reliability of the development environment.'                          unexpected-error
      4     (4:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'As a software craftsperson,'                                                                                                                                                                       unexpected-error
      5     (5:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'to ensure that I have access to a stable and reliable development environment,'                                                                                                                    unexpected-error
      6     (6:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'I want my development environment to be maintainable over time.'                                                                                                                                   unexpected-error

❌ [ERROR] test/cpp/features/security.feature
    test/cpp/features/security.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHALL* include build provenance as specified in [SLSA v1.0 Build L3](https://slsa.dev/spec/v1.0/levels).'                                                                       unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Including provenance gives confidence that the container images haven't been tampered with and can be securely traced back to its source code.'                                                   unexpected-error
      13    (13:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'The primary purpose is to enable [verification](https://slsa.dev/spec/v1.0/verifying-artifacts) that the container image was built as expected.'                                                  unexpected-error
      14    (14:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Consumers have some way of knowing what the expected provenance should look like for a given container image and then compare each container image's actual provenance to those expectations.'    unexpected-error
      15    (15:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Doing so prevents several classes of [supply chain threats](https://slsa.dev/spec/v1.0/threats).'                                                                                                 unexpected-error
      19    (19:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *SHALL* cryptographically sign its released container images.'                                                                                                                   unexpected-error
      21    (21:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Cryptographically signing released container images provides integrity and authenticity guarantees.'                                                                                              unexpected-error
      22    (22:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It enables consumers to verify that the container image hasn't been tampered with and that it indeed originates from the expected publisher.'                                                     unexpected-error
      4     (4:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'As a security engineer and security conscious developer,'                                                                                                                                          unexpected-error
      5     (5:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'to have control over the security posture of my development environment,'                                                                                                                          unexpected-error
      6     (6:3): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'I want to have controls in place to identify and mitigate supply-chain vulnerabilities.'                                                                                                           unexpected-error

❌ [ERROR] test/cpp/features/static-dynamic-analysis.feature
    test/cpp/features/static-dynamic-analysis.feature
      10    (10:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *MAY* provide code formatting tools for the primary programming language(s) used within the container.'                                                                                                       unexpected-error
      12    (12:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Providing code formatting tools helps maintain a consistent coding style across the codebase, improving readability and reducing friction during code reviews.'                                                                unexpected-error
      13    (13:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'It also helps catch potential issues early by enforcing coding standards and best practices.'                                                                                                                                  unexpected-error
      14    (14:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'By integrating code formatting tools into the development environment, developers can easily format their code according to predefined rules, ensuring that the code adheres to the project's style guidelines.'               unexpected-error
      26    (26:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'amp-devcontainer *MAY* provide static analysis tools for the primary programming language(s) used within the container.'                                                                                                       unexpected-error
      28    (28:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'Providing static analysis tools helps identify potential issues in the code before it is executed, improving code quality and reducing the likelihood of runtime errors.'                                                      unexpected-error
      29    (29:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'These tools can analyze the code for common pitfalls, coding standards violations, and potential bugs, providing developers with valuable feedback early in the development process.'                                          unexpected-error
      30    (30:5): expected: #EOF, #Comment, #BackgroundLine, #TagLine, #ScenarioLine, #RuleLine, #Empty, got 'By integr

(Truncated to 20000 characters out of 21288)
⚠️ SPELL / lychee - 1 error
[IGNORED] docker://pandoc/extra:3.7.0@sha256:a703d335fa237f8fc3303329d87e2555dca5187930da38bfa9010fa4e690933a | Unsupported: Error creating request client: builder error for url (docker://pandoc/extra:3.7.0@sha256:a703d335fa237f8fc3303329d87e2555dca5187930da38bfa9010fa4e690933a)
[403] https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads | Network error: Forbidden
[IGNORED] https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/philips-software/amp-devcontainer | Unsupported: Error creating request client: builder error for url (vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/philips-software/amp-devcontainer)
📝 Summary
---------------------
🔍 Total..........126
✅ Successful.....123
⏳ Timeouts.........0
🔀 Redirected.......0
👻 Excluded.........0
❓ Unknown..........0
🚫 Errors...........1

Errors in .github/TOOL_VERSION_ISSUE_TEMPLATE.md
[403] https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads | Network error: Forbidden

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.3.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,DOCKERFILE_HADOLINT,GHERKIN_GHERKIN_LINT,JSON_V8R,JSON_PRETTIER,JSON_NPM_PACKAGE_JSON_LINT,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_GRYPE,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is graciously provided by OX Security

@github-actions
Copy link
Contributor

Test Results

0 files   -  7  0 suites   - 7   0s ⏱️ - 4m 0s
0 tests  - 33  0 ✅  - 33  0 💤 ±0  0 ❌ ±0 
0 runs   - 69  0 ✅  - 69  0 💤 ±0  0 ❌ ±0 

Results for commit e9d5b58. ± Comparison against base commit 3344cbb.

…tract-sbdl.sh

Co-authored-by: rjaegers <45816308+rjaegers@users.noreply.github.com>
Copilot AI changed the title [WIP] Add inline SBDL declarations to Gherkin feature files Replace Python SBDL converters with inline #!sbdl declarations and a shell extraction script Feb 27, 2026
@rjaegers
Copy link
Member

Copilot please use sbdl built-in functionality to gather the design materials instead of the bash script.

…ript

Co-authored-by: rjaegers <45816308+rjaegers@users.noreply.github.com>
@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

📦 Container Size Analysis

Note

Comparing ghcr.io/philips-software/amp-devcontainer-base:edgeghcr.io/philips-software/amp-devcontainer-base:pr-1171

📈 Size Comparison Table

OS/Platform Previous Current Change Trend
linux/amd64 175.16 MB 175.16 MB 252 B (0%) 🔽
linux/arm64 167.63 MB 167.63 MB 55 B (0%) 🔽

Copy link
Contributor Author

Copilot AI commented Feb 27, 2026

Copilot please use sbdl built-in functionality to gather the design materials instead of the bash script.

Done in be330f9. SBDL has a built-in @sbdl prefix that it recognizes in any file type — lines matching @sbdl\s are extracted and parsed natively. Changed all inline declarations from #!sbdl to # @sbdl (kept the # for valid Gherkin comments), deleted extract-sbdl.sh, added cpp-flavor.sbdl and rust-flavor.sbdl for the per-flavor document-flavor definitions, and updated the workflow to call sbdl directly with the feature/bats files as inputs.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • sbdl.dev
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

@sonarqubecloud
Copy link

Copilot AI changed the title Replace Python SBDL converters with inline #!sbdl declarations and a shell extraction script Replace Python SBDL converters with inline # @sbdl declarations using SBDL's built-in gathering Feb 27, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

📦 Container Size Analysis

Note

Comparing ghcr.io/philips-software/amp-devcontainer-rust:edgeghcr.io/philips-software/amp-devcontainer-rust:pr-1171

📈 Size Comparison Table

OS/Platform Previous Current Change Trend
linux/amd64 555.57 MB 555.57 MB 374 B (0%) 🔽
linux/arm64 509.75 MB 509.75 MB +63 B (+0%) 🔼

@github-actions
Copy link
Contributor

github-actions bot commented Feb 27, 2026

📦 Container Size Analysis

Note

Comparing ghcr.io/philips-software/amp-devcontainer-cpp:edgeghcr.io/philips-software/amp-devcontainer-cpp:pr-1171

📈 Size Comparison Table

OS/Platform Previous Current Change Trend
linux/amd64 696.86 MB 696.88 MB +16.24 kB (+0%) 🔼
linux/arm64 677.67 MB 677.68 MB +13.49 kB (+0%) 🔼

@rjaegers
Copy link
Member

Copilot can you rebase on the target branch and solve the conflicts?

Copy link
Contributor Author

Copilot AI commented Feb 27, 2026

Copilot can you rebase on the target branch and solve the conflicts?

I'm unable to perform a rebase — the sandbox only has a shallow clone of this branch, and git rebase with force-push is not available to me. Could you rebase this branch onto docs/generate-test-spec-and-traceability manually? I can then resolve any remaining conflicts on the branch once the rebase is done.

@rjaegers Ron (rjaegers) deleted the copilot/add-inline-sbdl-to-gherkin branch February 27, 2026 16:26
Copilot AI had a problem deploying to acceptance-testing February 27, 2026 16:31 Failure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants