Skip to content

Fill API documentation placeholders#115

Closed
github-actions[bot] wants to merge 1 commit into
mainfrom
automation/write-api-docs
Closed

Fill API documentation placeholders#115
github-actions[bot] wants to merge 1 commit into
mainfrom
automation/write-api-docs

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

Automated AI-generated documentation for XML API docs with 'To be added.' placeholders.

Summary

Filled documentation for 843 fields across 27 files covering:

  • HarfBuzzSharp: Face (21 members), Font (6 members)
  • SkiaSharp structs: GRVkYcbcrComponents, GrVkYcbcrConversionInfo, SKDocumentXpsOptions, SKFontArguments, SKFontPaletteOverride, SKFontVariationAxis, SKFontVariationPositionCoordinate, SKFourByteTag, SKWebpEncoder, SKWebpEncoderFrame, SKPathBuilder
  • SkiaSharp enums: SKColorspacePrimariesCicp, SKColorspaceTransferFnCicp, SKColorType
  • SkiaSharp methods: SKCanvas, SKColorSpace, SKPaint, SKPath, SKPathMeasure, SKStream, SKSurface, SKTypeface
  • Views: GTKExtensions, SKDrawingArea, _Imports (Blazor)

Review

Three independent review agents (factual claim verifier, code example verifier, quality reviewer) validated the documentation. Critical issues fixed before merge:

  • HarfBuzzSharp.Font — Corrected normalized variation coord range from "[-1, 1]" to 2.14 fixed-point integers in [-16384, 16384]
  • SKDocumentXpsOptions — Fixed DPIDpi property name in code example; corrected boolean <value> from "true to" → "true if"
  • SKFourByteTag — Fixed wrong characters in constructor example; replaced <see cref> with <xref:> inside CDATA
  • SKWebpEncoder — Added null check for SKData? return in code example
  • SKPath — Filled empty summaries and missing params for AddPath/AddPathReverse overloads

Generated by Auto API Docs Writer · ● 11.8M ·

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@learn-build-service-prod
Copy link
Copy Markdown
Contributor

Learn Build status updates of commit c17bfbd:

⚠️ Validation status: warnings

File Status Preview URL Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml ⚠️Warning Details
SkiaSharpAPI/SkiaSharp.Views.Gtk/SKDrawingArea.xml ⚠️Warning Details
SkiaSharpAPI/HarfBuzzSharp/Face.xml ✅Succeeded
SkiaSharpAPI/HarfBuzzSharp/Font.xml ✅Succeeded
SkiaSharpAPI/index.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp.Views.Blazor/_Imports.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/GRVkYcbcrComponents.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/GrVkYcbcrConversionInfo.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKCanvas.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorSpace.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorspacePrimariesCicp.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorspaceTransferFnCicp.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKColorType.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKDocumentXpsOptions.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFontArguments.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFontPaletteOverride.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFontVariationAxis.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFontVariationPositionCoordinate.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKFourByteTag.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKMatrix.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPaint.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPath.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPathBuilder.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKPathMeasure.xml ✅Succeeded
SkiaSharpAPI/SkiaSharp/SKStream.xml ✅Succeeded

This comment lists only the first 25 files in the pull request.

SkiaSharpAPI/SkiaSharp.Views.Gtk/GTKExtensions.xml

  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Point3D'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Pixbuf'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Graphene.Size'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Rectangle'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Color'.
  • Line 0, Column 0: [Warning: xref-not-found - See documentation] Cross reference not found: 'Gdk.Point'.

This comment lists only the first 25 errors (including error/warning/suggestion) in the pull request.
For more details, please refer to the build report.

Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.

@learn-build-service-prod
Copy link
Copy Markdown
Contributor

PoliCheck Scan Report

The following report lists PoliCheck issues in PR files. Before you merge the PR, you must fix all severity-1 and severity-2 issues. The AI Review Details column lists suggestions for either removing or replacing the terms. If you find a false positive result, mention it in a PR comment and include this text: #policheck-false-positive. This feedback helps reduce false positives in future scans.

✅ No issues found

More information about PoliCheck

Information: PoliCheck | Severity Guidance | Term
For any questions: Try searching the learn.microsoft.com contributor guides or post your question in the Learn support channel.

@github-actions github-actions Bot closed this May 21, 2026
@github-actions github-actions Bot deleted the automation/write-api-docs branch May 21, 2026 03:07
mattleibow added a commit to mono/SkiaSharp that referenced this pull request May 21, 2026
[api-docs] Fix false-positive extraction and add merge guard (#4030)

Context: mono/SkiaSharp-API-docs#115
Companion: mono/SkiaSharp-API-docs#116

Review of the automated docs output (PR #115) revealed three systemic
pipeline issues: the extract regex matched legitimate prose containing
"to be added" (e.g. SKPath.AddPath's "elements to be added to the
current path"), the merge step had no guard against agent-invented
fields, and the writer produced wrong domain facts (gamma 2.8 vs 2.2
for BT.470, contradictory bit-packing for Bgra10101010XR).

docs-tool.ps1:
  * Anchor extraction regex to `^\s*To be added\.?\s*$` — only full-text
    placeholder matches trigger extraction
  * Record `_extractedKeys` metadata during extract so the merge phase
    knows which fields were originally placeholders
  * Add merge guard that rejects any agent-added fields not present in
    the original extract (prevents invented documentation)
  * Exclude manifest.json from merge processing
  * Fix PowerShell falsy-empty-array check (`@()` is falsy in boolean
    context; use .PSObject.Properties existence test instead)

SKILL.md:
  * Writer prompt: JSON integrity rules (never add/remove/rename fields),
    trust hierarchy for native type facts (header > reference > knowledge)
  * Factual verifier prompt: standard value verification against
    skia-patterns.md reference file
  * Phase 2: simplified for automated workflow awareness

Validated across 8 workflow runs — 0 tooling regressions post-fix.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mattleibow added a commit that referenced this pull request May 21, 2026
…on (#116)

[workflow] Move extraction to gen job and fix agent session termination (#116)

Context: #115
Companion: mono/SkiaSharp#4030

The automated docs writer workflow had two classes of failure:

1. Extraction ran inside the agent container, meaning it was
   non-deterministic and couldn't serve as an immutable baseline for
   auditing what the agent changed.

2. The orchestrator agent launched background sub-agents, printed
   "Waiting for them to complete" in text, and ended its turn with no
   active tool call. The Copilot CLI runtime interpreted this as
   "agent is done" and terminated the session — losing all work. This
   happened in 2 of 5 pre-fix runs (40% failure rate).

Workflow changes:
  * Move placeholder extraction into the `regenerate-stubs` job
    (Windows, mechanical, deterministic)
  * Upload `docs-extracted` artifact (7-day retention) as immutable
    baseline
  * Pre-agent step copies original JSON to
    `/tmp/gh-aw/agent/docs-work-original/`
  * Post-step copies final JSON to `/tmp/gh-aw/agent/docs-work-final/`
  * Both directories upload as part of the agent artifact for diffing

Prompt hardening (session termination fix):
  * Require `read_agent(wait=true)` in the SAME response as agent launch
  * Document multi-agent sequential pattern (read each agent in turn)
  * Explicitly forbid "launch → text → end turn" pattern
  * Add budget fallback: skip Phase 5 if past 10 minutes without merge
  * Add COMPLETION GATE: session cannot end without `create_pull_request`
    or `noop`

Post-fix validation: 3/3 runs succeeded (100%), all producing PRs.

Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

0 participants