Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cspell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ words:
- Dema
- fileassert
- Linq
- mstest
- xunit
- Pandoc
- reqstream
- reviewmark
Expand Down
67 changes: 50 additions & 17 deletions .fileassert.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
# FileAssert document validation tests for FileAssert.
# Tests are tagged by document group to allow per-group execution during the build pipeline.
# Tags: build-notes, code-quality, code-review, design, user-guide, requirements.
# Tags: build-notes, code-quality, code-review, design, verification, user-guide, requirements.
#
# NOTE: build-notes through user-guide tests provide OTS evidence for Pandoc and WeasyPrint
# and run before ReqStream. The requirements tests run after ReqStream and validate the
Expand All @@ -15,7 +15,7 @@ tests:
description: "Build Notes HTML was generated by Pandoc"
tags: [build-notes]
files:
- pattern: "docs/build_notes/build_notes.html"
- pattern: "docs/build_notes/generated/build_notes.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -27,7 +27,7 @@ tests:
description: "Build Notes PDF was generated by WeasyPrint"
tags: [build-notes]
files:
- pattern: "docs/FileAssert Build Notes.pdf"
- pattern: "docs/generated/FileAssert Build Notes.pdf"
count: 1
Comment thread
Malcolmnixon marked this conversation as resolved.
pdf:
metadata:
Expand All @@ -48,7 +48,7 @@ tests:
description: "Code Quality HTML was generated by Pandoc"
tags: [code-quality]
files:
- pattern: "docs/code_quality/quality.html"
- pattern: "docs/code_quality/generated/quality.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -60,7 +60,7 @@ tests:
description: "Code Quality PDF was generated by WeasyPrint"
tags: [code-quality]
files:
- pattern: "docs/FileAssert Code Quality.pdf"
- pattern: "docs/generated/FileAssert Code Quality.pdf"
count: 1
pdf:
metadata:
Expand All @@ -81,7 +81,7 @@ tests:
description: "Code Review Plan HTML was generated by Pandoc"
tags: [code-review]
files:
- pattern: "docs/code_review_plan/plan.html"
- pattern: "docs/code_review_plan/generated/plan.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -93,7 +93,7 @@ tests:
description: "Code Review Plan PDF was generated by WeasyPrint"
tags: [code-review]
files:
- pattern: "docs/FileAssert Review Plan.pdf"
- pattern: "docs/generated/FileAssert Review Plan.pdf"
count: 1
pdf:
metadata:
Expand All @@ -114,7 +114,7 @@ tests:
description: "Code Review Report HTML was generated by Pandoc"
tags: [code-review]
files:
- pattern: "docs/code_review_report/report.html"
- pattern: "docs/code_review_report/generated/report.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -126,7 +126,7 @@ tests:
description: "Code Review Report PDF was generated by WeasyPrint"
tags: [code-review]
files:
- pattern: "docs/FileAssert Review Report.pdf"
- pattern: "docs/generated/FileAssert Review Report.pdf"
count: 1
pdf:
metadata:
Expand All @@ -147,7 +147,7 @@ tests:
description: "Design HTML was generated by Pandoc"
tags: [design]
files:
- pattern: "docs/design/design.html"
- pattern: "docs/design/generated/design.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -159,7 +159,7 @@ tests:
description: "Design PDF was generated by WeasyPrint"
tags: [design]
files:
- pattern: "docs/FileAssert Software Design.pdf"
- pattern: "docs/generated/FileAssert Software Design.pdf"
count: 1
pdf:
metadata:
Expand All @@ -174,13 +174,46 @@ tests:
text:
- contains: "Design"

# --- VERIFICATION DOCUMENT ---

- name: Pandoc_VerificationHtml
description: "Verification HTML was generated by Pandoc"
tags: [verification]
files:
- pattern: "docs/verification/generated/verification.html"
count: 1
html:
- query: "//head/title"
count: 1
text:
- contains: "Verification"

- name: WeasyPrint_VerificationPdf
description: "Verification PDF was generated by WeasyPrint"
tags: [verification]
files:
- pattern: "docs/generated/FileAssert Software Verification Design.pdf"
count: 1
Comment thread
Malcolmnixon marked this conversation as resolved.
pdf:
metadata:
- field: "Title"
contains: "Verification"
- field: "Author"
contains: "DEMA Consulting"
- field: "Subject"
contains: "Verification design document"
pages:
min: 3
text:
- contains: "Verification"

# --- USER GUIDE ---

- name: Pandoc_UserGuideHtml
description: "User Guide HTML was generated by Pandoc"
tags: [user-guide]
files:
- pattern: "docs/user_guide/introduction.html"
- pattern: "docs/user_guide/generated/user_guide.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -192,7 +225,7 @@ tests:
description: "User Guide PDF was generated by WeasyPrint"
tags: [user-guide]
files:
- pattern: "docs/FileAssert User Guide.pdf"
- pattern: "docs/generated/FileAssert User Guide.pdf"
count: 1
pdf:
metadata:
Expand All @@ -214,7 +247,7 @@ tests:
description: "Requirements HTML was generated by Pandoc"
tags: [requirements]
files:
- pattern: "docs/requirements_doc/requirements.html"
- pattern: "docs/requirements_doc/generated/requirements.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -226,7 +259,7 @@ tests:
description: "Requirements PDF was generated by WeasyPrint"
tags: [requirements]
files:
- pattern: "docs/FileAssert Requirements.pdf"
- pattern: "docs/generated/FileAssert Requirements.pdf"
count: 1
pdf:
metadata:
Expand All @@ -248,7 +281,7 @@ tests:
description: "Trace Matrix HTML was generated by Pandoc"
tags: [requirements]
files:
- pattern: "docs/requirements_report/trace_matrix.html"
- pattern: "docs/requirements_report/generated/trace_matrix.html"
count: 1
html:
- query: "//head/title"
Expand All @@ -260,7 +293,7 @@ tests:
description: "Trace Matrix PDF was generated by WeasyPrint"
tags: [requirements]
files:
- pattern: "docs/FileAssert Trace Matrix.pdf"
- pattern: "docs/generated/FileAssert Trace Matrix.pdf"
count: 1
pdf:
metadata:
Expand Down
2 changes: 1 addition & 1 deletion .github/agents/developer.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Perform software development tasks by determining and applying appropriate stand
5. **Formatting**: Run `pwsh ./fix.ps1` to silently apply all
available auto-fixers (dotnet format, markdown, YAML) before committing
6. **Build and test** (code changes only): Run `pwsh ./build.ps1` and confirm it
passes report FAILED if the build or any tests fail
passes - report FAILED if the build or any tests fail
7. **Generate completion report** per the AGENTS.md reporting requirements - save to
`.agent-logs/{agent-name}-{subject}-{unique-id}.md` and return the summary to the caller

Expand Down
2 changes: 2 additions & 0 deletions .github/agents/formal-review.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ Before reviewing, read these standards to inform review judgments:
hierarchy and categorization review judgments
- **`design-documentation.md`** - defines mandatory sections, structural conventions,
and coverage expected at each level; informs all design documentation review judgments
- **`verification-documentation.md`** - defines mandatory sections, structural conventions,
and coverage expected at each level; informs all verification design review judgments

For review sets that include source code or tests, also consult the relevant
standards from the selection matrix in AGENTS.md.
Expand Down
7 changes: 6 additions & 1 deletion .github/agents/lint-fix.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,12 @@ submission, not during normal development.

- **markdownlint MD013 (line length)**: Wrap long lines at natural break points,
after commas, before conjunctions, or at sentence boundaries. Do not break
in the middle of a code span or URL.
in the middle of a code span or URL. **Pipe-tables that cannot be wrapped
without breaking structure** are a special case - convert them to a bullet
list if the data reads naturally that way, or rewrite as a
[grid table](https://pandoc.org/MANUAL.html#tables) if a tabular layout is
essential. Do not get stuck trying to squeeze a wide pipe-table into 120
characters.

- **markdownlint other rules**: Apply the specific fix indicated in the output
(e.g., missing blank lines, heading levels, code fence languages).
Expand Down
77 changes: 0 additions & 77 deletions .github/agents/repo-consistency.agent.md

This file was deleted.

11 changes: 3 additions & 8 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,19 @@ Before submitting this pull request, ensure you have completed the following:

### Build and Test

- [ ] Code builds successfully: `dotnet build --configuration Release`
- [ ] All unit tests pass: `dotnet test --configuration Release`
- [ ] Self-validation tests pass:
`dotnet run --project src/DemaConsulting.FileAssert --configuration Release --framework net10.0`
`--no-build -- --validate`
- [ ] Code builds successfully and all tests pass: `pwsh ./build.ps1`
- [ ] Code produces zero warnings

### Code Quality

- [ ] Code formatting is correct: `dotnet format --verify-no-changes`
- [ ] New code has appropriate XML documentation comments
- [ ] Static analyzer warnings have been addressed

### Quality Checks

Please run the following checks before submitting:

- [ ] **All linters pass**: `./lint.sh` (Unix/macOS) or `cmd /c lint.bat` / `./lint.bat` (Windows)
- [ ] **All linters pass**: `pwsh ./lint.ps1`

### Testing

Expand All @@ -55,7 +50,7 @@ Please run the following checks before submitting:
### Documentation

- [ ] Updated README.md (if applicable)
- [ ] Updated ARCHITECTURE.md (if applicable)
- [ ] Updated docs/ documentation (if applicable)
- [ ] Added code examples for new features (if applicable)
- [ ] Updated requirements.yaml (if applicable)

Expand Down
30 changes: 27 additions & 3 deletions .github/standards/coding-principles.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,35 @@ All code MUST follow literate programming principles:
matches design intent without reading the full codebase
- **Logical Separation**: Complex functions use block comments to separate and
describe logical steps within the implementation
- **Public Documentation**: All public interfaces have comprehensive documentation
because consumers and auditors rely on interface contracts for integration
and compliance verification
- **Full Symbol Documentation**: ALL symbols have comprehensive documentation
because reviewers and auditors must verify every implementation detail, not
just the public interface - access-level specifics (public, protected,
private, internal, etc.) vary by language; see the language-specific standard
- **Clarity Over Cleverness**: Code should be immediately understandable by team members

## API Documentation

Good API documentation enables consumers, reviewers, and agents to use an
interface correctly without reading the implementation:

- **Self-Contained**: Each member's documentation must be fully understandable
in isolation - consumers must not need to read the implementation to call it
correctly
- **Intent-Focused**: Explain WHY the member exists and WHAT problem it solves,
not just restate the name - this lets reviewers verify the implementation
matches design intent
- **Parameter and Return Contracts**: Document valid ranges, null handling, and
boundary cases - agents and consumers rely on these contracts to call the API
correctly
- **Error Conditions**: Document every exception or error code, the condition
that triggers it, and how the caller should respond - undocumented errors
cannot be handled correctly
- **Side Effects**: Document I/O, state mutation, resource allocation, or
network calls - hidden side effects cause integration bugs that are hard to
diagnose
- **Thread Safety**: State whether the API is safe for concurrent use - missing
this forces consumers to read the implementation or risk data races

## Universal Code Architecture Principles

### Design Patterns
Expand Down
Loading
Loading