Assessment domain: article stability signal (PRD-0015) + GA review-assist design sketch#124
Conversation
…gn sketch PRD-0012 specifies a two-layer article stability signal shaped for GA criterion 5: a deterministic sensor/gate (revert chains, dispute markers, protection, pre/post-nomination split) that keeps quiet pages inference-free, and a grounded, abstention-biased panel interpretation of the ambiguous middle, with a PRD-0007 benchmark loop that graduates settled classes into the deterministic layer. The design sketch maps the GA criteria onto existing contracts (ADR-0011 verify-page, PRD-0009 book grounding and Open Library enrichment, PRD-0011/ ADR-0016-0017 Wikidata lanes), names the end-to-end reviewer workflow (evidence run, GA-shaped wikitext appendix, ADR-0010 posting, hold-loop re-run, harvest lanes), and pins the posture invariants: evidence not verdicts, grounded or absent, every write operator-confirmed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
PRD-0012 (citation insertion) and PRD-0014 (citation repair browser surface) are claimed on the citation-repair-browser-surface branch (PR #109), and PRD-0013 (citation write surface) on citation-write-surface (PR #106). 0015 is the first number free across all remote branches. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Corrects the appendix-posting step: appending to Talk:Article/GAn is an insert-at-position, so it depends on PRD-0012's spawned ADR-0003 insertion extension (or PRD-0013's guarded-edit Insert op) plus ADR-0018's token seam for non-server shells, not on shipped ADR-0010 mechanism alone. Marks the hold loop's re-verify dependency as PRD-0014's route (PR #109). Adopts PRD-0014's mismatch framing for report wording, and adds an in-flight dependencies section covering PRD-0012/0013/0014 and the ADR-0016 PRs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
PRD-0015 resolutions from the 2026-07-09 design discussion: (1) 90-day window anchored to run time with three review phases and recorded bounds; (2) mechanisms platform, StabilitySignal contract in sp42-core per the PageVerificationReport precedent, policy in the domain; (3) six provisional classes, adding ActiveContentDispute and a talk-activity triage sensor, with additive vocabulary evolution under the replay discipline; (4) bundle-per- article evidence packaging with disclosed truncation, per-chain sharding as overflow only. Automatic on-nomination runs recorded as a deferred non-goal with Layer-A-only unattended posture. GA sketch gains external-ecosystem notes from surveying fuzheado's Wikipedia-AI-Skills: no GA review skill exists (companion-skill consumer shape for the MCP surface), LiftWing articlequality as a candidate informational pre-screen, and takeaways from its article-audit skill (verdict mapping confirmed against its real schema, task-graph work-order pattern for holds, BLP intake flag, derived-artifact discipline). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…intake Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
… from body Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
{{POV}}-family banners and split/merge tags live in article wikitext, not
the talk page; RfC templates and discussions live on talk. Also drops the
nomination assumption from the Layer A intro per the wiki-agnostic scope.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…hor tied to scope Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…rades to Unclear Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…udes markers Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…ng, runs not nominations Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…tics Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…from WME survey Wikimedia Enterprise ships no packaged stability datapoint (recorded in Alternatives as reference-not-reuse); its Breaking-News method — pageview and unique-editor spikes — is adopted as a Layer A sensor, with a matching exculpatory class: news-driven churn is the non-dispute cause most easily mistaken for an edit war, and criterion 5 scopes instability to edit wars and content disputes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Syncs sensor lists and marker surfaces; upgrades the grounding-gate and truncation items with their decided consequences (degrade-to-Unclear with disclosure; sharding blindness stated); adds items for the unambiguous- benign arm, NewsDrivenVolatility, multi-classification with per-class agreement, triage-outcome recording, and rev_id replay determinism. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…lt-sensitive, disclosed settings Names the five numeric knobs and their asymmetric failure directions: the triage thresholds' insensitive direction suppresses evidence rather than wasting inference, so knobs default sensitive and every report records the settings in effect (also required for replay determinism). Rewrites the numeric-thresholds alternative around the upstream-vs-conclusion distinction, conceding knobs are not harmless. DoD gains the disclosure and knob-variation assertions. Knob interactions are expected to be settled by alpha dogfooding, recorded as such. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…ns chosen from alpha The budget is the Layer B bundle cap (panel context + inference cost). An oversized pool now declines transparently with Layer A facts intact instead of sampling or truncating; truncation/sampling/sharding become deferred candidate mitigations selected from alpha data. Deletes the usefulness-floor knob (five knobs become four). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Conduct discipline for the one output that describes people's behavior: classify history never persons, no intent vocabulary, pasteable rendering counts participants without naming them, cross-article conduct aggregation excluded at scope. False-quiet risk gains its enforcement mechanism: an audit flag in the MVP surface forcing Layer B past triage, a DoD item proving it, and the alpha false-quiet-rate checkpoint tracked in #122. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
…iscussion Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3909b105b8
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| - *Stability:* the PRD-0015 two-layer signal, keyed to the nomination | ||
| timestamp. |
There was a problem hiding this comment.
Anchor the stability run to run time
PRD-0015 explicitly resolves the stability window as a 90-day window anchored to the observed run/head revision, with the GA nomination timestamp only rendered as a phase marker; it also calls out that anchoring to nomination time goes stale for long GAN backlogs. This workflow text points implementers back to the nomination timestamp, so a GA report built from this sketch can omit months of current article/talk activity for old nominations and contradict the PRD it is composing.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Correct — this line predated the PRD's Q1 resolution (run-time anchor, nomination as phase marker) and was never synced. Fixed in ac19df5: the sketch now states the window anchors to run time (the observed head revision) with {{GA nominee}} and review-start rendered only as phase markers.
Generated by Claude Code
…e marker Syncs the workflow step with PRD-0015's resolved window semantics; the sketch predated the Q1 resolution. Flagged by Codex review on #124. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ac19df5501
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| tags + summaries), the Pageviews fetch edge, the revert-chain reducer, and the | ||
| talk-activity sensor as | ||
| platform mechanisms (pure builders/parsers over the `HttpClient` trait), with | ||
| the `StabilitySignal` contract in `sp42-core` (Constitution Art. 9.1, the |
There was a problem hiding this comment.
Point new contracts at the platform layer
This directs the future implementation to add the StabilitySignal contract to sp42-core, but ADR-0013 moved reusable mechanisms/contracts to the platform crates and crates/sp42-core/src/lib.rs now documents that sp42-core is only a migration facade that owns no code. If the PRD is followed literally, the assessment implementation will put new contract code in a crate being retired and bypass the layer ownership this domain is supposed to build on; please name the actual platform contract crate (sp42-platform/sp42-types, as appropriate) or keep domain-owned report types in the assessment crate.
Useful? React with 👍 / 👎.
| back — not the nomination timestamp: GAN backlog waits run to months, and | ||
| criterion 5 is about *current* behavior, so a nomination-anchored window would | ||
| hand the reviewer a stale picture. The `{{GA nominee}}` timestamp and the | ||
| review-start timestamp (the creation of the `Talk:Article/GAn` review subpage) |
There was a problem hiding this comment.
Use numbered GA review subpages
Using Talk:Article/GAn as the review-start page makes the phase marker miss normal enwiki GA reviews if implemented literally: the GA instructions describe the page parameter as the number in Talk:ArticleName/GA n and say it is number-only, so actual review pages are /GA1, /GA2, etc., not /GAn (see the linked Good article instructions). In that scenario the report will degrade as if no review page exists and review-driven changes will be put in the wrong phase; spell this as GA<N> or derive it from the {{GA nominee|page=}} value.
Useful? React with 👍 / 👎.
Summary
Docs only — stands up the assessment domain (evidence-assembly for per-article quality assessments, starting with English Wikipedia's Good-article review) and its first PRD.
docs/domains/assessment/prd/0015-article-stability-signal.md— a two-layer article stability signal shaped for GA criterion 5: a deterministic sensor/gate (revert chains, dispute markers from both article and talk surfaces, protection, talk-activity volume, attention volatility) that keeps quiet pages inference-free, and grounded, abstention-biased panel interpretation of only the ambiguous middle. All four open questions were resolved in design discussion with the Editor (2026-07-09), then the document went through a full paragraph-by-paragraph Editor review. Highlights of what that review settled:docs/design-plans/2026-07-09-ga-review-assist.md— the end-to-end GA workflow sketch composing existing contracts (ADR-0010/0011, PRD-0009/0011, ADR-0016/0017), with a criterion coverage map, in-flight dependency notes (PRD-0012/0013/0014, PRs Docs: MCP citation write surface — agent proposes, human confirms (add path blocked on PRD-0012/ADR-0003 insertion) #106/Add citation repair/insertion action row to the Citations tab (PRD-0014) #109/Wikidata entity read path: platform wikibase module + patrol MVP (ADR-0016 / PRD-0011) #119), and external-ecosystem notes from surveying fuzheado's Wikipedia-AI-Skills and Wikimedia Enterprise's Credibility Signals.docs/domains/README.md,docs/README.md).PRD numbering note: originally drafted as 0012, renumbered to 0015 after finding 0012–0014 claimed on in-flight branches (#106, #109).
Type
Validation Required
Docs-only change — no code paths touched, no scripts to run. Internal links and PRD/ADR cross-references checked by hand against the tree and the open PRs.
Risk
The PRD expects one thin platform ADR (history + Pageviews fetch edges, revert-chain reducer, talk-activity sensor;
StabilitySignalcontract insp42-core; policy in the domain) if accepted — spawned then, not in this PR.Notes For Reviewers
Discussionstate: the Resolved-questions section carries the Editor's decided answers but remains open to reviewer reaction until acceptance.PageVerificationReportis the intended first build step, and it has no dependency on this PRD).🤖 Generated with Claude Code
https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3
Generated by Claude Code