Skip to content

Commit f66bc31

Browse files
Malcolm NixonCopilot
authored andcommitted
fix: reclassify FileAssert from OTS to Shared Package and fix test names
FileAssert cannot treat its own published package as an OTS item. Per the software-items standard, a package produced by the same program consumed in CI is a Shared Package. Additionally, the self-validation test names FileAssert_Exists and FileAssert_Contains no longer exist; they were renamed to FileAssert_File and FileAssert_Text when validation was refactored into per-assertion-type files. Changes: - Move docs/reqstream/ots/fileassert.yaml to docs/reqstream/shared/ - Rename requirement ID from FileAssert-OTS-FileAssert to FileAssert-Shared-FileAssert with tag [shared] - Replace FileAssert_Exists and FileAssert_Contains with FileAssert_File, FileAssert_Text, FileAssert_Html, and FileAssert_Pdf to cover the assertion types actually used by this project - Move design and verification docs from ots/ to shared/ folders - Add shared.md overview documents for design and verification sections - Update docs/design/ots.md to remove FileAssert and add clarifying note - Update docs/verification/ots.md to remove FileAssert references - Update both definition.yaml files for correct document assembly - Update docs/design/introduction.md to document Shared Package artifacts - Update .reviewmark.yaml review set from FileAssert-OTS-FileAssert to FileAssert-Shared-FileAssert with corrected paths - Update requirements.yaml include path Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent e162d4c commit f66bc31

13 files changed

Lines changed: 211 additions & 116 deletions

File tree

.reviewmark.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -335,13 +335,13 @@ reviews:
335335
- "docs/design/ots/buildmark.md" # OTS design
336336
- "docs/verification/ots/buildmark.md" # OTS verification
337337

338-
# FileAssert-OTS-FileAssert Review
339-
- id: FileAssert-OTS-FileAssert
340-
title: Review FileAssert OTS FileAssert Requirements and Verification
338+
# FileAssert-Shared-FileAssert Review
339+
- id: FileAssert-Shared-FileAssert
340+
title: Review FileAssert Shared Package FileAssert Requirements and Verification
341341
paths:
342-
- "docs/reqstream/ots/fileassert.yaml" # OTS requirements
343-
- "docs/design/ots/fileassert.md" # OTS design
344-
- "docs/verification/ots/fileassert.md" # OTS verification
342+
- "docs/reqstream/shared/fileassert.yaml" # Shared Package requirements
343+
- "docs/design/shared/fileassert.md" # Shared Package design
344+
- "docs/verification/shared/fileassert.md" # Shared Package verification
345345

346346
# FileAssert-OTS-Pandoc Review
347347
- id: FileAssert-OTS-Pandoc

docs/design/definition.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ input-files:
2929
- docs/design/file-assert/ots-dependencies.md
3030
- docs/design/ots.md
3131
- docs/design/ots/buildmark.md
32-
- docs/design/ots/fileassert.md
3332
- docs/design/ots/pandoc.md
3433
- docs/design/ots/reqstream.md
3534
- docs/design/ots/reviewmark.md
@@ -38,6 +37,8 @@ input-files:
3837
- docs/design/ots/versionmark.md
3938
- docs/design/ots/weasyprint.md
4039
- docs/design/ots/xunit.md
40+
- docs/design/shared.md
41+
- docs/design/shared/fileassert.md
4142
template: template.html
4243
table-of-contents: true
4344
number-sections: true

docs/design/introduction.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,14 @@ FileAssert integrates the third-party library; their artifacts sit parallel to s
149149
- Design: `docs/design/ots/{ots-name}.md`
150150
- Verification: `docs/verification/ots/{ots-name}.md`
151151

152+
Shared packages (earlier releases of the same program's own packages consumed in CI) have
153+
integration/usage design docs at `docs/design/shared/{package-name}.md`; their artifacts also
154+
sit parallel to system and OTS folders:
155+
156+
- Requirements: `docs/reqstream/shared/{package-name}.yaml`
157+
- Design: `docs/design/shared/{package-name}.md`
158+
- Verification: `docs/verification/shared/{package-name}.md`
159+
152160
Review-sets: defined in `.reviewmark.yaml`
153161

154162
## References

docs/design/ots.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ builds and provides an audit record of which tool version produced each release
2525
| OTS Item | Role |
2626
| :---------- | :--------------------------------------------------------------------------- |
2727
| BuildMark | Generates build-notes documentation from GitHub Actions metadata |
28-
| FileAssert | Validates generated HTML and PDF documents against acceptance criteria |
2928
| Pandoc | Converts Markdown source documents to HTML for each document collection |
3029
| ReqStream | Enforces requirements traceability against TRX test-result files |
3130
| ReviewMark | Generates review plan and review report from the review configuration |
@@ -35,12 +34,15 @@ builds and provides an audit record of which tool version produced each release
3534
| WeasyPrint | Converts HTML documents to PDF for release artifact archiving |
3635
| xUnit | Discovers, executes, and reports unit tests; produces TRX output |
3736

37+
> **Note**: FileAssert is not an OTS item for this project. Because this project consumes an
38+
> earlier released version of its own package in CI, it is classified as a **Shared Package**.
39+
> See the _Shared Package Integration Design_ section for details.
40+
3841
## Per-Item Design
3942

4043
Detailed design for each OTS item is provided in the following sections of this document:
4144

4245
- See _BuildMark OTS Design_ for the build-notes generation tool.
43-
- See _FileAssert OTS Design_ for the document assertion tool.
4446
- See _Pandoc OTS Design_ for the Markdown-to-HTML conversion tool.
4547
- See _ReqStream OTS Design_ for the requirements traceability enforcement tool.
4648
- See _ReviewMark OTS Design_ for the review plan and report generation tool.
@@ -83,7 +85,7 @@ manifest outside of the design artifact set.
8385

8486
OTS items in this project fall into two integration categories:
8587

86-
- **dotnet global tools** (BuildMark, FileAssert, Pandoc, ReqStream, ReviewMark, SarifMark,
88+
- **dotnet global tools** (BuildMark, Pandoc, ReqStream, ReviewMark, SarifMark,
8789
SonarMark, VersionMark, WeasyPrint) — installed globally in the CI environment via
8890
`dotnet tool restore` from `.config/dotnet-tools.json` and invoked as command-line executables
8991
within GitHub Actions workflow steps. No wrapper code is written; tools are invoked directly

docs/design/shared.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Shared Package Integration Design
2+
3+
FileAssert uses one shared package from within the same program: an earlier released version of
4+
itself. This section describes the integration strategy and usage design for this package.
5+
6+
## Integration Strategy
7+
8+
A **Shared Package** is a software package produced by the same program (repository), consumed as
9+
a pinned released version rather than built from source. Unlike an OTS item, a shared package is
10+
developed in-house; unlike in-scope source code, the consuming repository references its advertised
11+
features rather than its internal design.
12+
13+
FileAssert consumes a previous release of itself as a dotnet global tool installed via
14+
`.config/dotnet-tools.json`. This is a deliberate dogfooding practice: the CI pipeline uses a
15+
stable released build of the tool to validate the in-development build's documentation outputs,
16+
while the in-development build is what produces the next release.
17+
18+
## Shared Package Summary
19+
20+
| Package | Role |
21+
| :---------- | :--------------------------------------------------------------------------- |
22+
| FileAssert | Validates generated HTML and PDF documents against acceptance criteria |
23+
24+
## Per-Package Design
25+
26+
Detailed integration design is provided in the following section of this document:
27+
28+
- See _FileAssert Shared Package Design_ for the document assertion tool.
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
## FileAssert OTS Design
1+
## FileAssert Shared Package Design
22

3-
DemaConsulting.FileAssert is the tool developed by this project and is also consumed as an OTS
4-
item within its own CI pipeline to validate the correctness of the documents it generates and to
5-
produce self-validation evidence.
3+
DemaConsulting.FileAssert is the tool developed by this project. An earlier released version of it
4+
is also consumed within this project's own CI pipeline to validate generated documents and to
5+
produce self-validation evidence. Because this repository uses its own published package, it is
6+
classified as a **Shared Package** rather than OTS.
67

78
### Purpose
89

910
FileAssert validates HTML and PDF documents produced during the build pipeline, asserting that
1011
each document exists, has a non-trivial size, is structurally valid, and contains expected
1112
content. Its built-in self-validation suite (`--validate`) is run as a CI step to produce TRX
12-
test evidence satisfying the `FileAssert-OTS-FileAssert` requirement.
13+
test evidence satisfying the `FileAssert-Shared-FileAssert` requirement.
1314

1415
FileAssert is chosen because it directly implements the project's own document-assertion
1516
capability, making its CI use a natural dogfooding exercise that simultaneously validates the
@@ -42,7 +43,7 @@ The project uses the following FileAssert command-line interfaces:
4243
| `dotnet fileassert --validate --results <trx-file>` | Runs self-validation and writes TRX results |
4344
| `dotnet fileassert --config <file> --results <trx-file>` | Runs document assertions from a YAML configuration |
4445

45-
The TRX output from `--results` is consumed by ReqStream to satisfy `FileAssert-OTS-FileAssert`.
46+
The TRX output from `--results` is consumed by ReqStream to satisfy `FileAssert-Shared-FileAssert`.
4647

4748
### Dependencies
4849

Original file line numberDiff line numberDiff line change
@@ -1,28 +1,35 @@
11
---
2-
# FileAssert OTS Software Requirements
2+
# FileAssert Shared Package Software Requirements
33
#
44
# Requirements for the FileAssert document assertion tool functionality.
5+
# FileAssert is classified as a Shared Package because this repository uses an earlier
6+
# released version of itself in CI - a project cannot treat its own package as OTS.
57

68
sections:
7-
- title: OTS Software Requirements
9+
- title: Shared Package Software Requirements
810
sections:
911
- title: FileAssert Requirements
1012
requirements:
11-
- id: FileAssert-OTS-FileAssert
13+
- id: FileAssert-Shared-FileAssert
1214
title: FileAssert shall validate generated documents against acceptance criteria.
1315
justification: |
1416
DemaConsulting.FileAssert validates HTML and PDF documents produced during the
1517
build, asserting that each document exists, is structurally valid, has correct
16-
metadata, and contains expected content. It provides OTS evidence for Pandoc and
17-
WeasyPrint and independently confirms file assertion is functioning. Self-validation
18-
proves the tool itself is operational before ReqStream consumes the results.
19-
tags: [ots]
18+
metadata, and contains expected content. It provides verification evidence for
19+
Pandoc and WeasyPrint and independently confirms file assertion is functioning.
20+
Self-validation proves the tool itself is operational before ReqStream consumes
21+
the results.
22+
tags: [shared]
2023
# Test IDs below are sourced from the tool's `--validate` self-validation TRX output
2124
# (artifacts/<tool>-self-validation*.trx in CI). Each ID matches a TestCase Name in
2225
# the TRX; ReqStream consumes the artifacts/**/*.trx glob.
26+
# Tests are selected to cover the specific assertion types used by this project:
27+
# file existence (count), text content, HTML structure, and PDF metadata/pages/text.
2328
tests:
2429
- FileAssert_VersionDisplay
2530
- FileAssert_HelpDisplay
2631
- FileAssert_Results
27-
- FileAssert_Exists
28-
- FileAssert_Contains
32+
- FileAssert_File
33+
- FileAssert_Text
34+
- FileAssert_Html
35+
- FileAssert_Pdf

docs/verification/definition.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ input-files:
2929
- docs/verification/file-assert/selftest/validation.md
3030
- docs/verification/ots.md
3131
- docs/verification/ots/buildmark.md
32-
- docs/verification/ots/fileassert.md
3332
- docs/verification/ots/pandoc.md
3433
- docs/verification/ots/reqstream.md
3534
- docs/verification/ots/reviewmark.md
@@ -38,6 +37,8 @@ input-files:
3837
- docs/verification/ots/versionmark.md
3938
- docs/verification/ots/weasyprint.md
4039
- docs/verification/ots/xunit.md
40+
- docs/verification/shared.md
41+
- docs/verification/shared/fileassert.md
4142
template: template.html
4243
table-of-contents: true
4344
number-sections: true

docs/verification/ots.md

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ OTS software items used by FileAssert are verified by one of two complementary a
1111
depending on the nature of the item:
1212

1313
- **Authored integration tests**: Items whose correct behaviour cannot be inferred purely from
14-
pipeline success (xUnit, FileAssert) are verified by named test scenarios that exercise the
15-
specific features required by this project. Each scenario identifies a test method, the expected
14+
pipeline success (xUnit) are verified by named test scenarios that exercise the specific
15+
features required by this project. Each scenario identifies a test method, the expected
1616
outcome, and the requirement it covers.
1717

1818
- **CI pipeline evidence**: Items whose primary function is to produce artefacts consumed by
@@ -32,10 +32,6 @@ The following evidence is collected and retained for each OTS item:
3232
- **xUnit**: TRX result files generated by `dotnet test` during CI. Each TRX file is consumed by
3333
`reqstream --enforce` to confirm that all named test scenarios have a recorded passing result.
3434

35-
- **FileAssert**: The self-validation TRX file (`artifacts/fileassert-self-validation.trx`)
36-
produced by `fileassert --validate --results` during CI. This file is also consumed by
37-
`reqstream --enforce`.
38-
3935
- **All other OTS items**: A passing CI pipeline run, including Pandoc HTML generation, WeasyPrint
4036
PDF rendering, FileAssert assertions on every generated document, and `reqstream --enforce` with
4137
no unmet requirements. The combined CI log and artefacts constitute the qualification record.
@@ -63,9 +59,6 @@ The following OTS software items are used by FileAssert and are verified in this
6359
- **BuildMark** — generates a markdown build-notes document from GitHub Actions workflow metadata,
6460
verified by CI pipeline success and downstream document validation.
6561

66-
- **FileAssert** — validates generated HTML and PDF documents for existence, size, structure, and
67-
content; verified by self-validation tests and transitive pipeline evidence.
68-
6962
- **Pandoc** — converts Markdown source documents to HTML as part of the documentation build;
7063
verified by FileAssert assertions on each generated HTML document.
7164

docs/verification/ots/fileassert.md

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)