Fill API documentation placeholders#115
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Learn Build status updates of commit c17bfbd:
|
PoliCheck Scan ReportThe 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 foundMore information about PoliCheckInformation: PoliCheck | Severity Guidance | Term |
[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>
…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>
Automated AI-generated documentation for XML API docs with 'To be added.' placeholders.
Summary
Filled documentation for 843 fields across 27 files covering:
Face(21 members),Font(6 members)GRVkYcbcrComponents,GrVkYcbcrConversionInfo,SKDocumentXpsOptions,SKFontArguments,SKFontPaletteOverride,SKFontVariationAxis,SKFontVariationPositionCoordinate,SKFourByteTag,SKWebpEncoder,SKWebpEncoderFrame,SKPathBuilderSKColorspacePrimariesCicp,SKColorspaceTransferFnCicp,SKColorTypeSKCanvas,SKColorSpace,SKPaint,SKPath,SKPathMeasure,SKStream,SKSurface,SKTypefaceGTKExtensions,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— FixedDPI→Dpiproperty 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 CDATASKWebpEncoder— Added null check forSKData?return in code exampleSKPath— Filled empty summaries and missing params forAddPath/AddPathReverseoverloads