Skip to content

Adopt section-owned Member documentation demand - #10944

Open
richlander wants to merge 2 commits into
mainfrom
feature/member-section-documentation
Open

richlander wants to merge 2 commits into
mainfrom
feature/member-section-documentation

Conversation

@richlander

@richlander richlander commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Member documentation demand

Member documentation now follows selected Content rather than ShowDocs,
verbosity, or Description-column inference. Default exact reports use the final
shared declaration/attachment composition, including the report reached by saved
Member replay. Explicit Signature and Overloads stay metadata-only; Documented
Overloads requests documentation, and Count does not.

The operator approved retaining documentation as fixed Content of compatibility
declaration sections, including Methods, Properties, and projected Extension
Methods. This preserves existing capabilities without introducing a generic
detail level or new syntax. Authored-documentation authorization, source-part
composition, and the metadata-only PackageHouse acquisition boundary are
unchanged. Global flag retirement remains #10810.

Design basis: Type/Member documents — Member documentation attachment
composition

owns declaration/attachment association. Supporting contracts are the
content-defined-section plan, DocumentationHouse settlement and provenance,
Metadata subject identity, existing QuerySpace terminals, and independent source
capability authorization. The existing Markout rendering boundary and approved
first-overload disclosure/parent-rooted Tree UX are unchanged.

This is CLI adoption step 4 of #10802's ten-step plan, under #9547. Shared step 2
landed in #10823. Browser adoption remains #10808; global flags and shortcut
assessment remain #10810/#10811. No shared producer or public API expansion is
introduced.

Validation: Release solution build passed with 0 warnings/errors.
The expanded documentation/overload/replay/source-capability and complete
ExactTypeWorkspaceRouteTests selection passed 177/178. Its sole failure
is the existing unqualified generic Member router
defect #10781 (List<T>.Add); the same failure reproduces on the untouched
NativeAOT baseline. No tests were skipped. New gates cover default reports with
either compatibility-flag value, explicit metadata-only sections against
malformed XML, Count, fixed compatibility-section docs across admitted
presentations, and malformed exact documentation retaining the declaration.
Existing projected-extension, non-public documentation, authored-source
authorization, ordinal/digest, and saved-replay gates pass. Markdown lint and
diff hygiene pass.

Candidate 1 was superseded before reviewer dispatch after the existing
MemberRouteAdmitsOnlyLockedDemandShapes gate exposed a lost authored-source
capability boundary. Candidate 2 preserves that boundary using the unchanged
DocumentationEnricher.AuthorizesAuthoredDocumentation predicate; it does not
restore compatibility-flag-based compiled-documentation selection. The complete
route class now passes. Round 1 is complete: two pushed candidates, one usable
GPT-6 Sol review, zero accepted review findings.

Exact-head NativeAOT evidence

Exact effective base: bad102273d5c2862be15bba6651c13ce2cffdad4.
Candidate: c394284a2c169dfc19f2fcce9caee3b2b1042d23.
Production binaries are NativeAOT osx-arm64, versions 0.27.0+bad1022 and
0.27.0+c394284. Binary SHA-256, respectively:

bdcdd4b176b83a46b8ca7cfd1466805e2ec2004eff4af0d0a24f99c5b7c56c8a
44555174f7ace083097d07ca0389bb5bf94e33fdba79643ea92130547df9e850

Each complete process ran with fully consumed stdout/stderr, three alternating
warmups per binary/case, then 20 samples per binary/case in seeded shuffled
case rounds with alternating base/head order. Host: macOS 27.2 arm64, a shared
machine; load averages fell from 6.30/9.26/18.86 to 3.26/5.28/14.30. These are
single-machine observations, not a universal latency or speedup guarantee.
No significant regression was observed; changes below roughly 1% are neutral.

All 17 controls passed expected cardinality, stable per-binary output hashes,
and base/head content or identity correspondence. Explicit Signature
intentionally drops Description; its comparison excludes only that field.

Case Rows/count Base median/p95 ms Head median/p95 ms
Exact report 1 432.36 / 451.20 428.77 / 444.48
Default report 1 434.39 / 446.59 434.33 / 441.05
Group Tree 15 422.99 / 429.75 419.95 / 426.91
Plain Rows 15 422.86 / 431.32 422.63 / 430.20
Plain Window 2 425.94 / 436.85 423.95 / 431.08
Plain Count 15 420.97 / 430.15 419.88 / 425.82
Documented Rows 15 434.19 / 444.64 432.28 / 442.03
Documented Window 2 433.56 / 443.75 433.11 / 445.42
Documented Count 15 420.90 / 430.65 419.54 / 427.60
Empty-window Count 0 419.51 / 427.40 419.51 / 425.25
Compatibility Methods Rows 15 472.28 / 477.90 472.75 / 478.05
Compatibility Methods Count 15 471.04 / 488.72 420.55 / 425.68
Explicit Signature Rows 1 84.00 / 85.51 36.42 / 38.38
Singleton report 1 34.10 / 35.19 33.90 / 35.62
Singleton documented Rows 1 35.07 / 37.08 35.14 / 36.60
Saved exact report 1 202.76 / 205.48 201.76 / 208.34
Saved Rows 1 256.16 / 262.62 254.22 / 260.57

Compatibility Count avoids documentation enrichment: median wall time improves
10.7%, with process CPU dropping from 471.28 to 421.58 ms. Explicit Signature
avoids documentation acquisition/parsing: median improves 56.6%, with CPU
79.23 to 32.71 ms. Negative malformed-XML tests independently enforce avoided
documentation work. Other Count requests remain close to plain Rows because
the retained legacy adapter first extracts the API/member population
(MemberCommand.cs:265-285) before its Count branch (1192-1210).
This slice removes documentation work, not that pre-existing materialization;
it makes no source-native Count/Window optimization claim.

Inputs and exact commands

REAL is the frozen System.Text.Json@10.0.0 net9.0 library and adjacent XML;
SMALL is the Release InspectWeb.DocumentationFixtures.dll and adjacent XML.
SHA-256 values, in DLL/XML order:

REAL DLL 5f448c57a249b0bb0eadcd3dfaf6f06b155828de34f0e523774b00a655744b2f
REAL XML 63342e258274d49ea205580a1f9d526ac41189b8e741314c625a6989cf350bde
SMALL DLL 326b0d9936d996f45a980c2b5c51267233793fd45526254a5769ed76dd099874
SMALL XML 960d159d79a19681340884a6d8623abe5e2b44845c11d4d1a1ab627e4c0ee5cb

Each command below runs once with each exact binary. PACKET is base64url
encoding of the unchanged docs/examples/workspace-member-replay.json
(format 5, System.Text.Json 10.0.0/net10.0, exact Serialize digest 1dc14dd1fb).
Replay uses the pre-existing local cache, fully offline.

"$BIN" member System.Text.Json.JsonSerializer.Serialize:7 --library "$REAL"
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL"
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" --tree
# Repeat these three commands for SECTION=Overloads and "Documented Overloads".
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S "$SECTION" --jsonl
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S "$SECTION" --rows 2..3 --jsonl
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S "$SECTION" --count
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S "Documented Overloads" --rows 99..100 --count
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S Methods --jsonl
"$BIN" member System.Text.Json.JsonSerializer.Serialize --library "$REAL" -S Methods --count
"$BIN" member System.Text.Json.JsonSerializer.Serialize:7 --library "$REAL" -S Signature --jsonl
"$BIN" member InspectWeb.DocumentationFixtures.WidgetExtensions.Measure:1 --library "$SMALL"
"$BIN" member InspectWeb.DocumentationFixtures.WidgetExtensions.Measure --library "$SMALL" -S "Documented Overloads" --jsonl
"$BIN" -w "$PACKET" --offline
"$BIN" -w "$PACKET" --offline --jsonl

The harness, full receipts, output captures, CPU measurements, and complete
sample records are preserved in session artifacts
member-docs-measure.py and member-docs-evidence-c2/results.json.
Candidate-1 partial evidence is historical and was not transferred.

Review: GPT-6 Sol (gpt-6-sol) returned CLEAN for exact head
c394284a2c169dfc19f2fcce9caee3b2b1042d23, confirming the capability repair,
retained source behavior, fixed compatibility Content, and metadata-only
acquisition boundary. Current-head ci-required succeeded. At round closure,
live main was bad102273d5c2862be15bba6651c13ce2cffdad4, with positive
mergeability and GraphQL merge state CLEAN. No review threads remain.

At the 2026-10-30T05:09Z safety-net check, main had advanced through #10821
to fcc3608477b54b99711579fccae5219227eefc66. Classification:
no interaction. None of its 54 files overlaps this PR. Its Browser Unsafe
view, additive unsafe-analysis/navigation contracts, and equivalent CLI
limitation-text delegation do not change Member documentation selection,
attachment, source authorization, or the retained rendering contracts.
The local test merge is clean. The reviewed head is unchanged and retains
review-clean; no integration, new validation, or new review is required.
Measured NativeAOT evidence still compares the recorded effective base
bad102273 with candidate c394284a2; it is not a measurement of the moved
base. Current-head ci-required remains successful; GraphQL mergeability was
UNKNOWN during this snapshot and must be positively refreshed at final
merge preflight.

Awaiting the operator's merge decision; merge is not authorized.

Closes #10805. Part of #10802 and #9547.

Generated by GitHub Copilot CLI.

Compose default exact Member reports through the final declaration/attachment operation. Preserve compatibility declaration documentation as fixed content while keeping explicit Signature, Overloads, and Count metadata-only. Saved reports use the same demand; source authorization and cheap PackageHouse acquisition remain unchanged.

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

Copilot-Session: 08e06f42-471f-4bd4-bb1c-d45172fc66a7
@richlander

Copy link
Copy Markdown
Owner Author

Round 1, candidate 1, usable reviews 0, accepted review findings 0: superseding this candidate before reviewer dispatch. An additional existing gate, MemberRouteAdmitsOnlyLockedDemandShapes, exposed an author-caused regression: removing the generic flag guard also removed the independent authored-documentation capability boundary. The repair reuses DocumentationEnricher.AuthorizesAuthoredDocumentation at PackageHouse admission, without restoring ShowDocs-based content selection. The interrupted candidate-1 NativeAOT run and all completed records are retained as historical evidence, not transferred to the replacement head. The replacement will rerun the expanded route gates, exact-head CI, and NativeAOT measurements. No review round has been spent.

Generated by GitHub Copilot CLI.

Keep explicitly authorized authored documentation on the established rich route without making compatibility flags select compiled documentation content.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 08e06f42-471f-4bd4-bb1c-d45172fc66a7
@richlander

Copy link
Copy Markdown
Owner Author

Round 1, candidate 2: exact head c394284 against effective base bad1022 is locked for the single GPT-6 Sol (gpt-6-sol) review. Current-head ci-required succeeded, all observed checks completed without a non-green result, the local live-main conflict probe is clean, and no existing review threads were present. The complete canonical review contract and self-contained design/adoption/capability frame were supplied to the isolated exact-head reviewer. NativeAOT evidence is complete and the full 17-case numeric report, inputs, commands, binary identities and limitations are now in this PR body. Prior candidate-1 records remain historical only. Two candidates pushed, zero usable reviews so far, zero accepted review findings. No merge authorization exists.

Generated by GitHub Copilot CLI.

@richlander

Copy link
Copy Markdown
Owner Author

Round 1 is complete: 2 pushed candidates, 1 usable review, 0 accepted review findings. GPT-6 Sol (gpt-6-sol) returned CLEAN for unchanged exact head c394284. Reconciliation: the author-discovered candidate-1 capability-admission regression is resolved by c394284 without restoring ShowDocs-based compiled-documentation selection; independent source-part/authored-source behavior and approved fixed compatibility Content are preserved, as is the metadata-only acquisition boundary. The generic shorthand defect #10781 remains pre-existing baseline behavior, not an introduced finding. No new review repairs or scope changes are required.

The local live-base probe remains clean against unchanged main bad1022. Fresh exact-head ci-required succeeded; GraphQL reports MERGEABLE/CLEAN, open and non-draft, with no review threads and auto-merge unarmed. Release build and the expanded route/documentation selection are recorded above (177/178, sole baseline #10781 failure); all 17 exact NativeAOT controls and complete numeric evidence are published in the PR body and visible operator session. Normative ownership remains docs/design/type-member-inspection-documents.md#member-documentation-attachment-composition, with no ownership drift. Synchronizing review-clean to this exact head. Recommendation: merge after the operator authorizes this head on base ref main. No authorization currently exists.

Generated by GitHub Copilot CLI.

@richlander richlander added the review-clean PR has met the adversarial review standard per AGENTS.md. label Oct 30, 2026
@richlander

Copy link
Copy Markdown
Owner Author

Carry-forward check after completed round 1 (2 pushed candidates, 1 usable GPT-6 Sol review, 0 accepted review findings): head remains c394284. Main advanced from bad1022 to fcc3608 through #10821. Classification: no interaction. None of the 54 landed files overlaps this PR. The Browser Unsafe view and additive unsafe-analysis/navigation contracts do not change Member documentation selection, attachment, or source capabilities. The only CLI change delegates limitation-text formatting to an equivalent shared implementation; it preserves the formatter callback and output structure. No silently wrong merge resolution was identified; local merge-tree is clean. The unchanged head keeps its review-clean evidence and label; no integration, revalidation, or replacement review is required. NativeAOT evidence remains the exact original effective-base/head comparison, not a new speedup claim against the moved base.

Current-head ci-required remains successful; no review threads, new review feedback, or operator action was observed. GitHub mergeability was UNKNOWN in this one safety-net snapshot, so final merge preflight must refresh it before any authorized action. Auto-merge remains unarmed and no merge authorization exists. This first check found no actionable feedback and no operator message since publication; automated observation is stopping. The PR remains open.

Generated by GitHub Copilot CLI.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-clean PR has met the adversarial review standard per AGENTS.md.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adopt section-owned documentation demand in CLI Member routes

1 participant