Skip to content

Flatten documentation structure and enhance design/verification content#8

Merged
Malcolmnixon merged 34 commits into
mainfrom
chore/update-agents-and-standards
Jul 3, 2026
Merged

Flatten documentation structure and enhance design/verification content#8
Malcolmnixon merged 34 commits into
mainfrom
chore/update-agents-and-standards

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

This pull request introduces significant improvements and clarifications to the agent orchestration and reporting process for software development, planning, quality, and review agents. The main focus is on making the planning phase explicit with a new planning.agent.md, enhancing traceability and companion artifact requirements, and standardizing report outputs and compliance checks across all agents.

Key changes include:

Agent Workflow and Planning Enhancements

  • Added a new planning.agent.md agent that formalizes the planning phase: it investigates the codebase, produces a detailed implementation plan, identifies all required companion artifacts, analyzes assumptions and risks, and outputs a standardized report. This agent is now explicitly invoked in the implementation orchestration flow. [1] [2]
  • Updated the implementation orchestration agent to use the new planning agent, clarified state transitions, and improved the reporting template to reference the planning report and include unknowns when the result is INCOMPLETE. [1] [2] [3]

Quality and Companion Artifact Compliance

  • Improved the quality agent to cross-reference the planning agent's companion artifact table, ensuring all required artifacts are produced and validated. Expanded compliance checks to include verification documentation, review sets, and repository structure, and clarified evaluation criteria for each artifact type. [1] [2]
  • Updated the developer agent process to explicitly require identification and updating of all companion artifacts (requirements, design docs, verification docs, tests, review-sets, README.md, user guides) and to use templates for new files where available.

Reporting and Output Standardization

  • Standardized report file naming and output fields for all agents (developer, planning, implementation, quality, lint-fix, formal-review), ensuring each report is saved to the appropriate .agent-logs/ path and includes a clear summary section. [1] [2] [3] [4]

Review and Documentation Process

  • Refined the formal-review agent instructions to distinguish between context and files under review, and updated the reporting template to include the new report path field.
  • Clarified the role of software item definitions and vocabulary in the software architect agent, explicitly including "Shared Package" as a recognized term.

Minor Improvements

  • Added "hotspots" to the cspell custom dictionary.

These changes collectively improve traceability, compliance, and clarity in the agent-driven software development workflow, making expectations and outputs more explicit and auditable.

Malcolm Nixon and others added 30 commits July 2, 2026 22:11
…n root

Move docs/design|verification|reqstream/{system}/{system}.{md,yaml} to
docs/{collection}/{system}.{md,yaml} per updated design-documentation.md,
verification-documentation.md, and reqstream-usage.md standards (system
files now live at the collection root; only subsystem/unit files remain
nested). Update docs/design/definition.yaml, docs/verification/definition.yaml,
requirements.yaml, and .reviewmark.yaml to reference the new flat paths.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ments

SkiaSharp is a runtime NuGet dependency of DemaConsulting.Rendering.Skia
(bitmap drawing and PNG/JPEG/WEBP encoding), so it should be documented as
an OTS item alongside the build/compliance tools. Adds:
- docs/design/ots/skiasharp.md (Purpose/Features Used/Integration Pattern)
- docs/verification/ots/skiasharp.md (verified via existing renderer tests,
  no separate self-validation suite, matching the xUnit pattern)
- docs/reqstream/ots/skiasharp.yaml (3 requirements traced to real renderer tests)
- Updates docs/design/ots.md to list SkiaSharp and its runtime-library
  consumption model
- Wires the new files into definition.yaml manifests, requirements.yaml,
  and .reviewmark.yaml (new OTS-SkiaSharp review-set)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… OTS overview

Fixes from code-review agent findings:
- docs/design/rendering-skia.md and docs/design/introduction.md incorrectly
  claimed SkiaSharp had no OTS integration design doc / that no OTS items are
  linked into delivered packages, contradicting the SkiaSharp OTS docs added
  in the previous commit. Corrected both to reflect SkiaSharp as the one
  runtime-library exception.
- docs/design/introduction.md's OTS Software Items diagram was missing
  SkiaSharp.
- docs/verification/ots.md (mandatory collection-level OTS verification
  overview per verification-documentation.md) did not exist. Added it and
  wired it into docs/verification/definition.yaml.
- .reviewmark.yaml's per-system Design/Verification review-sets were missing
  the docs/design/ots.md / docs/verification/ots.md path entries required by
  reviewmark-usage.md's File Path Patterns for those review-set types. Added
  to all 5 systems.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nits

Adds the mandatory sections required by .github/standards/design-documentation.md
and .github/standards/verification-documentation.md that were flagged as missing
by the formal-review batch (Rendering-Model, Rendering-Abstractions,
Rendering-Layout, Rendering-Skia, Rendering-Svg, and OTS-SkiaSharp review-sets).

- Unit design docs: add Purpose, Data Model, Key Methods, Error Handling,
  Dependencies, and Callers where missing.
- Unit verification docs: add Verification Approach, Test Environment,
  Acceptance Criteria, and Test Scenarios where missing.
- Subsystem design doc (rendering-layout/engine.md): add Interfaces and Design.
- OTS-SkiaSharp design doc: expand Integration Pattern with SkiaSharp
  lifecycle/disposal guidance.

All content is grounded in the real C# implementation under src/ and the real
xUnit tests under test/. Non-applicable sections are documented inline where
none were needed. Out-of-scope findings (compound requirements, review-set
membership gaps, code/test style issues, file-move suggestions) were
deliberately left unfixed per task scope and are recorded in the report.

Validated with fix.ps1, lint.ps1, and dotnet reviewmark --lint (all passing).
… test conventions)

- Split compound requirements into single-criterion requirements:
  - Rendering-OTS-SkiaSharp-Encode -> EncodePng/EncodeJpeg/EncodeWebp
  - NotationMetrics TriangleGeometry/DiamondGeometry -> Dimensions + endpoint-placement pairs
  - NotationMetrics BoxDecorations -> PortSquare/FolderTab/NoteFold/RoundedRectCorner/Badge/LabelBackground
  - RenderingContracts Algorithm/Renderer -> Identifier/Apply and Identity/Write pairs
  Updated all design/verification cross-references and parent requirement children lists.
- Added missing paths entries to .reviewmark.yaml review-sets (Rendering-Model-Verification,
  Rendering-Abstractions-Verification, Rendering-Layout-Design, Rendering-Layout-Verification,
  Rendering-Skia-Design, Rendering-Svg-Verification) so each includes its system-level doc.
- Investigated docs/verification/rendering-layout/engine/engine.md placement finding: left as-is
  since docs/design and docs/reqstream already nest the Engine subsystem doc the same way, so
  verification already mirrors the established (if imperfect) repo convention; fixing all three
  hierarchies is out of scope here.
- Renamed EdgeRoutingOptionTests.cs methods to follow the
  {ClassName}_{MethodUnderTest}_{Scenario}_{ExpectedBehavior} naming convention.
- Added labeled Arrange/Act/Assert comments to Skia renderer tests (PngRendererTests,
  SkiaFormatRendererTests, PngEndMarkerTests).
BoxMetrics.FolderTabHeight and TitleAreaHeight previously dereferenced
their theme parameter directly, raising an undocumented
NullReferenceException on null input. Add ArgumentNullException.ThrowIfNull
guards matching the existing NotationMetrics convention, document the new
contract in XML doc comments, the unit design doc's Error Handling
section, and add a Rendering-Abstractions-BoxMetrics-RejectNullTheme
requirement traced to two new tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The Rendering-Layout-InterconnectionEngine-Waypoints requirement said
'one waypoint list per input edge', contradicting the design doc and
implementation, which deliberately return one waypoint list per acyclic
edge after self-loop removal, duplicate-pair de-duplication, and
back-edge reversal (required by the layered-layout pipeline's need for
an acyclic graph to assign layers). Reword the requirement to describe
the actual, already-documented acyclic-edge contract instead of
changing the implementation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… sized view

BuildSizedView() built a fresh view graph for each container scope but never
carried over the scope's own CoreOptions.Direction override, so a leaf
algorithm that reads Direction directly from the graph (LayeredLayoutAlgorithm)
silently fell back to the shared options' direction instead of a
container-specific override. Propagate the scope's Direction override onto the
sized view, mirroring the existing Algorithm-override handling in
ResolveScopeAlgorithm. Adds a regression test and traces the fix with a new
Rendering-Layout-HierarchicalLayout-PropagatesDirection requirement.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…adius

RoundedRectRadius(Theme) already validated and documented a null-theme
ArgumentNullException, but no test exercised the error path. Adds the missing
regression test and traces it with a new
Rendering-Abstractions-NotationMetrics-RejectNullTheme requirement.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
LayoutAlgorithmRegistry_RegisterThenResolve_ReturnsAlgorithm and
RendererRegistry_RegisterThenResolve_ReturnsRenderer previously only checked
registry lookup, but the verification doc claimed they exercised
ILayoutAlgorithm.Apply and IRenderer.Render. Neither contract method was ever
invoked. Both tests now call Apply/Render on the resolved instance and assert
on the result, so the documented claim matches reality.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The Error Handling section claimed the final fallback keeps the label at its
preferred midpoint even if it still overlaps another label. The code actually
drops the label just beneath every already-placed label, guaranteeing no
overlap in all cases. Reword the design doc to match the (stronger, correct)
implementation rather than changing the code.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ComponentPacker.LayoutComponent rebuilt each disconnected component as a
fresh LayeredGraph but never copied the parent graph's
BackEdgeEntryApproach, so a caller-customized reversed-edge clearance
silently reverted to the LayeredLayoutMetrics.ConnectorClearance default
for any multi-component (packed) graph. Single-component graphs were
unaffected since they pass through RunInner directly without rebuilding.

Added a regression test using two disconnected triangle components (each
with a short cycle producing a long back edge) that proves the routed
back-edge corridor now reflects the parent's configured clearance instead
of always defaulting.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Note: the ComponentPacker BackEdgeEntryApproach issue remains intentionally out of scope and is not fixed in this commit.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit applies the minimal OTS inventory update by adding SonarScanner for .NET to docs/design/ots.md without expanding companion artifacts beyond the literal finding scope.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add Rendering-Layout-LayeredPipeline-PackedComponentsBackEdgeApproach
requirement documenting that the component-packing stage propagates the
parent graph's BackEdgeEntryApproach to every packed child component,
and trace it to the new ComponentPacker_Apply_MultiComponent_
PropagatesBackEdgeEntryApproach regression test. Updates the
layered-pipeline design doc's ComponentPacker description and
traceability table, and the verification doc's Test Scenarios and
Requirements Coverage sections, following the fix committed in 849f3b2.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 3, 2026 17:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates the Rendering repository’s traceability and documentation structure while adding targeted behavior fixes and regression tests across the Layout and renderer stacks.

Changes:

  • Expanded unit/system requirements and verification artifacts (including new OTS evidence for SkiaSharp) and flattened/standardized documentation structure and headings.
  • Added/strengthened tests for SVG badges/end markers, Skia format metadata, registries, and argument validation in shared metric helpers.
  • Fixed two layout regressions by propagating per-scope direction overrides in hierarchical layout and propagating BackEdgeEntryApproach into packed layered components.

Reviewed changes

Copilot reviewed 166 out of 168 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs Adds SVG badge rendering tests (bullseye/diamond/bars).
test/DemaConsulting.Rendering.Svg.Tests/SvgEndMarkerTests.cs Adds SVG end-marker reference tests (filled arrow/diamond/circle/bar).
test/DemaConsulting.Rendering.Skia.Tests/SkiaFormatRendererTests.cs Improves AAA clarity and checks WEBP FileExtensions metadata.
test/DemaConsulting.Rendering.Skia.Tests/PngRendererTests.cs Improves AAA clarity for PNG signature test.
test/DemaConsulting.Rendering.Skia.Tests/PngEndMarkerTests.cs Improves AAA clarity for pixel-based end-marker tests.
test/DemaConsulting.Rendering.Layout.Tests/HierarchicalLayoutAlgorithmTests.cs Adds regression test for nested direction override propagation.
test/DemaConsulting.Rendering.Layout.Tests/Engine/Layered/ComponentPackerTests.cs Adds regression test ensuring back-edge entry approach propagates into packed components.
test/DemaConsulting.Rendering.Layout.Tests/EdgeRoutingOptionTests.cs Renames tests for clearer intent and stable naming.
test/DemaConsulting.Rendering.Abstractions.Tests/RegistryTests.cs Strengthens registry tests to prove contract methods are invoked, not just resolved.
test/DemaConsulting.Rendering.Abstractions.Tests/NotationMetricsTests.cs Adds null-argument validation test.
test/DemaConsulting.Rendering.Abstractions.Tests/BoxMetricsTests.cs Adds null-argument validation tests for BoxMetrics helpers.
src/DemaConsulting.Rendering.Skia/JpegRenderer.cs Updates XML doc to reflect theme background behavior.
src/DemaConsulting.Rendering.Layout/HierarchicalLayoutAlgorithm.cs Propagates CoreOptions.Direction override onto sized-view graphs.
src/DemaConsulting.Rendering.Layout/Engine/Layered/ComponentPacker.cs Propagates BackEdgeEntryApproach into child graphs during component packing.
src/DemaConsulting.Rendering.Abstractions/Theme.cs Normalizes spelling in XML doc (“colour” → “color”).
src/DemaConsulting.Rendering.Abstractions/BoxMetrics.cs Adds explicit null checks and documents thrown exceptions.
requirements.yaml Updates ReqStream include paths and adds SkiaSharp OTS requirements include.
docs/verification/rendering/options.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering/layout-graph.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering.md Renames sections and clarifies system verification structure.
docs/verification/rendering-svg.md Renames “Strategy” → “Approach” and adjusts section naming.
docs/verification/rendering-skia/webp-renderer.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-skia/png-renderer.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-skia/jpeg-renderer.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-skia.md Renames “Strategy” → “Approach” and adjusts section naming.
docs/verification/rendering-layout/layered-layout-algorithm.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-layout/hierarchical-layout-algorithm.md Expands verification details and adds direction-propagation scenario mapping.
docs/verification/rendering-layout/engine/orthogonal-edge-router.md Expands engine verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/engine/engine.md Expands engine subsystem verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/engine/containment-packer.md Expands containment packer verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/edge-routing-option.md Expands edge-routing option verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/default-layout.md Expands default layout verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/containment-layout.md Expands containment layout verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/containment-layout-algorithm.md Expands containment algorithm verification approach/environment/acceptance criteria.
docs/verification/rendering-layout/connector-router.md Expands connector router verification approach/environment/acceptance criteria.
docs/verification/rendering-layout.md Renames “Strategy” → “Approach” and adjusts section naming.
docs/verification/rendering-abstractions/theme.md Expands theme verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-abstractions/registries.md Expands registries verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-abstractions/connector-label-placer.md Expands verification approach/environment/acceptance criteria and scenarios.
docs/verification/rendering-abstractions/box-metrics.md Expands verification details and adds null-theme requirement coverage.
docs/verification/rendering-abstractions.md Refines system-level abstractions verification decomposition and scenario mapping.
docs/verification/ots/xunit.md Standardizes headings and scenario structure.
docs/verification/ots/weasyprint.md Standardizes headings and scenario structure.
docs/verification/ots/versionmark.md Standardizes headings and scenario structure.
docs/verification/ots/sonarmark.md Standardizes headings and scenario structure.
docs/verification/ots/skiasharp.md Adds SkiaSharp OTS verification evidence and scenario mappings.
docs/verification/ots/sarifmark.md Standardizes headings and scenario structure.
docs/verification/ots/reviewmark.md Standardizes headings and scenario structure.
docs/verification/ots/reqstream.md Standardizes headings and scenario structure.
docs/verification/ots/pandoc.md Standardizes headings and scenario structure.
docs/verification/ots/fileassert.md Standardizes headings and scenario structure.
docs/verification/ots/buildmark.md Standardizes headings and scenario structure.
docs/verification/ots.md Adds an OTS verification index/strategy overview.
docs/verification/introduction.md Updates verification scope/exclusions and adds SkiaSharp mention.
docs/verification/definition.yaml Updates verification document input list for flattened structure and OTS index.
docs/reqstream/rendering/platform-requirements.yaml Renames section title for consistency.
docs/reqstream/rendering/options.yaml Renames section title for consistency.
docs/reqstream/rendering/layout-tree.yaml Renames section title for consistency.
docs/reqstream/rendering/layout-graph.yaml Renames section title for consistency.
docs/reqstream/rendering.yaml Renames system section title for consistency.
docs/reqstream/rendering-svg/svg-renderer.yaml Adds badge/end-marker requirements and updates section title.
docs/reqstream/rendering-svg.yaml Adds system-level SVG requirements file.
docs/reqstream/rendering-skia/webp-renderer.yaml Updates section title for consistency.
docs/reqstream/rendering-skia/skia-raster-renderer.yaml Updates section title for consistency.
docs/reqstream/rendering-skia/png-renderer.yaml Updates section title for consistency.
docs/reqstream/rendering-skia/jpeg-renderer.yaml Updates section title for consistency.
docs/reqstream/rendering-skia.yaml Adds system-level Skia requirements file.
docs/reqstream/rendering-layout/layered-layout-algorithm.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/hierarchical-layout-algorithm.yaml Adds direction-propagation requirement and updates section title.
docs/reqstream/rendering-layout/engine/orthogonal-edge-router.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/engine/layered-pipeline.yaml Adds packed-components back-edge approach requirement and updates section title.
docs/reqstream/rendering-layout/engine/engine.yaml Renames engine subsystem and refines child requirement decomposition.
docs/reqstream/rendering-layout/engine/containment-packer.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/edge-routing-option.yaml Updates section title and referenced test names.
docs/reqstream/rendering-layout/default-layout.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/containment-layout.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/containment-layout-algorithm.yaml Updates section title for consistency.
docs/reqstream/rendering-layout/connector-router.yaml Updates section title for consistency.
docs/reqstream/rendering-layout.yaml Renames system section title and adds new child requirements.
docs/reqstream/rendering-abstractions/theme.yaml Updates section title for consistency.
docs/reqstream/rendering-abstractions/rendering-contracts.yaml Splits/renames contract requirements and updates IDs/tests.
docs/reqstream/rendering-abstractions/rendering-abstractions.yaml Removes old system-level abstractions requirements file (replaced by flattened structure).
docs/reqstream/rendering-abstractions/registries.yaml Updates section title for consistency.
docs/reqstream/rendering-abstractions/connector-label-placer.yaml Updates section title for consistency.
docs/reqstream/rendering-abstractions/box-metrics.yaml Adds null-theme rejection requirement and updates section title.
docs/reqstream/ots/skiasharp.yaml Adds SkiaSharp OTS requirements and test evidence links.
docs/design/rendering/rendering.md Removes old nested rendering model design file (replaced by flattened structure).
docs/design/rendering/layout-tree.md Expands unit design sections (purpose/methods/error handling/deps/callers).
docs/design/rendering.md Adds flattened rendering model system design document.
docs/design/rendering-svg/rendering-svg.md Removes old nested SVG design file (replaced by flattened structure).
docs/design/rendering-svg.md Adds flattened SVG system design document.
docs/design/rendering-skia/webp-renderer.md Expands unit design sections (methods/error handling/deps/callers).
docs/design/rendering-skia/rendering-skia.md Removes old nested Skia system design file (replaced by flattened structure).
docs/design/rendering-skia/png-renderer.md Expands unit design sections (methods/error handling/deps/callers).
docs/design/rendering-skia/jpeg-renderer.md Expands unit design sections (methods/error handling/deps/callers).
docs/design/rendering-layout/rendering-layout.md Removes old nested layout design file (replaced by flattened structure).
docs/design/rendering-layout/layered-layout-algorithm.md Standardizes headings and section structure.
docs/design/rendering-layout/engine/orthogonal-edge-router.md Expands design with dependencies/callers sections and standardizes headings.
docs/design/rendering-layout/engine/layered-pipeline.md Documents back-edge approach propagation for packed components and adds deps/callers.
docs/design/rendering-layout/engine/interconnection-layout-engine.md Refines requirement traceability granularity and standardizes headings.
docs/design/rendering-layout/engine/engine.md Expands subsystem interfaces/dependencies/callers and standardizes headings.
docs/design/rendering-layout/engine/containment-packer.md Standardizes headings and section structure.
docs/design/rendering-layout/edge-routing-option.md Expands key methods/error handling/deps/callers sections.
docs/design/rendering-layout/containment-layout.md Standardizes headings and section structure.
docs/design/rendering-layout/containment-layout-algorithm.md Adds explicit dependencies/callers sections.
docs/design/rendering-layout/connector-router.md Adds explicit dependencies/callers sections.
docs/design/rendering-abstractions/theme.md Adds error handling/deps/callers sections and standardizes headings.
docs/design/rendering-abstractions/rendering-abstractions.md Removes old nested abstractions design file (replaced by flattened structure).
docs/design/rendering-abstractions/registries.md Adds error handling/deps/callers sections and standardizes headings.
docs/design/rendering-abstractions/connector-label-placer.md Adds error handling/deps/callers sections and standardizes headings.
docs/design/rendering-abstractions/box-metrics.md Documents null-argument contract and adds deps/callers sections.
docs/design/ots/xunit.md Adds xUnit integration design document.
docs/design/ots/weasyprint.md Adds WeasyPrint integration design document.
docs/design/ots/versionmark.md Adds VersionMark integration design document.
docs/design/ots/sonarmark.md Adds SonarMark integration design document.
docs/design/ots/sarifmark.md Adds SarifMark integration design document.
docs/design/ots/reviewmark.md Adds ReviewMark integration design document.
docs/design/ots/reqstream.md Adds ReqStream integration design document.
docs/design/ots/pandoc.md Adds Pandoc integration design document.
docs/design/ots/fileassert.md Adds FileAssert integration design document.
docs/design/ots/buildmark.md Adds BuildMark integration design document.
docs/design/ots.md Adds OTS integration design index/strategy document.
docs/design/introduction.md Updates design navigation and documents flattened structure + OTS docs mapping.
docs/design/definition.yaml Updates design document input list for flattened structure and OTS integration docs.
.github/standards/testing-principles.md Removes redundant header text to streamline standards doc.
.github/standards/csharp-testing.md Removes redundant “Before submitting…” header to streamline checklist.
.github/standards/csharp-language.md Removes redundant preface lines from documentation example section.
.github/standards/coding-principles.md Streamlines introductory text and clarifies “Full Symbol Documentation” wording.
.github/agents/software-architect.agent.md Adds “Shared Package” to the controlled vocabulary list.
.github/agents/lint-fix.agent.md Standardizes report template to include explicit report path field.
.github/agents/formal-review.agent.md Clarifies context-vs-reviewed file handling and standardizes report path field.
.github/agents/developer.agent.md Adds explicit companion-artifact expectations and standardizes report path field.
.cspell.yaml Adds “hotspots” to the custom dictionary.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docs/verification/rendering-abstractions/registries.md Outdated
Comment thread test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs
Comment thread test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs
Comment thread test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs
Comment thread test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs
Malcolm Nixon and others added 3 commits July 3, 2026 13:37
- docs/verification/rendering-abstractions/registries.md: correct the
  Verification Approach description of FakeAlgorithm.Apply and
  FakeRenderer.Render. They are intentionally non-no-op (they produce
  fixed, distinguishable output) so the registry tests can prove the
  resolved instance's Apply/Render was actually invoked, not merely
  that the registry resolved the correct type.

- test/DemaConsulting.Rendering.Svg.Tests/SvgRendererPortedTests.cs: the
  Bullseye, Diamond, HorizontalBar, and VerticalBar badge-shape tests
  searched the entire rendered SVG document for a circle/polygon/line
  element, but those same element types also appear in the renderer's
  shared <defs> end-marker definitions, so each assertion could pass
  even if the badge itself failed to render. Added a BodyAfterDefs
  helper that restricts the search to the SVG body following the
  closing </defs> tag, so these tests specifically verify the badge
  output.

Addresses the 5 review comments left by the automated Copilot PR
reviewer on PR #8.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add PropertyHolder.OverlayOnto(parent) as a generic, property-agnostic
  cascading primitive (child's explicit values win over parent's already-
  resolved snapshot).
- Refactor HierarchicalLayoutAlgorithm to thread a cascaded LayoutOptions
  snapshot through recursion (replacing the old algoId/inherited string-
  threading that only cascaded CoreOptions.Algorithm), so Direction,
  EdgeRouting, HierarchyHandling, NodeSpacing, and LayerSpacing now cascade
  correctly through nested containers too. Preserves both existing scope
  conventions (Algorithm override on the container node itself; other
  properties on node.Children) and the flat-fast-path guarantee (no
  containers -> delegates straight to the leaf algorithm with the original
  unmutated graph).
- Fix ContainmentLayoutAlgorithm.Apply to resolve EdgeRouting via a new
  ResolveEdgeRouting helper (graph override -> options -> default),
  mirroring LayeredLayoutAlgorithm.ResolveDirection; previously the graph's
  own EdgeRouting override had zero effect.
- Verify GalleryDiagrams.MixedDirectionNested (intake -> pipeline(Down,
  containing validate/transform/publish) -> archive) and its catalog/test
  entries are correct, then regenerate the gallery. Only
  mixed-direction-nested.svg has real content changes; whitespace-only
  churn in six unrelated SVGs was reverted.
- Add regression tests: PropertyHolder.OverlayOnto unit tests; 3-level
  Direction cascade tests (inherit-through-unset middle level and mid-level
  override precedence); an EdgeRouting cascade test using a recording
  test-double algorithm; a ContainmentLayoutAlgorithm EdgeRouting
  graph-over-options precedence test. Flat-fast-path regression tests
  confirmed unchanged and passing.
- Update CoreOptions.cs and HierarchicalLayoutAlgorithm.cs XML docs, design
  docs (rendering/options, hierarchical-layout-algorithm,
  containment-layout-algorithm), verification docs, and the user guide to
  describe the generalized cascading model, with a 3-level example.
- Update reqstream: add Rendering-Model-Options-Cascade; rename
  Rendering-Layout-HierarchicalLayout-PropagatesDirection to
  ...-CascadesOptions (generalized to all 6 properties); add
  Rendering-Layout-HierarchicalLayout-HonorsScopeEdgeRouting and
  Rendering-Layout-ContainmentAlgorithm-HonorsScopeEdgeRouting.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Lists HierarchyHandling alternate modes, NodeSpacing, and LayerSpacing
as accepted-but-not-yet-honored options, so this deferred work survives
across sessions instead of living only in scattered doc comments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 3, 2026 19:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 177 out of 180 changed files in this pull request and generated no new comments.

@Malcolmnixon
Malcolmnixon merged commit 0b8ce78 into main Jul 3, 2026
7 checks passed
@Malcolmnixon
Malcolmnixon deleted the chore/update-agents-and-standards branch July 3, 2026 19:43
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