Skip to content

Assessment domain: article stability signal (PRD-0015) + GA review-assist design sketch#124

Merged
tieguy merged 26 commits into
mainfrom
claude/sp42-wikipedia-ga-reviews-xlwxej
Jul 10, 2026
Merged

Assessment domain: article stability signal (PRD-0015) + GA review-assist design sketch#124
tieguy merged 26 commits into
mainfrom
claude/sp42-wikipedia-ga-reviews-xlwxej

Conversation

@tieguy

@tieguy tieguy commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

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:
    • run-time-anchored 90-day window with three review phases ({{GA nominee}} → review-subpage creation → now); wiki/process-agnostic, phase markers optional
    • seven provisional classes, multi-classification output bound per-evidence, deprecate-never-remove vocabulary evolution
    • policy-knob discipline: knobs sit upstream of interpretation, default sensitive (their insensitive direction suppresses evidence), settings recorded in every report
    • evidence budget is fits-or-declines in the MVP — no sampling/truncation/sharding chosen on paper; mitigations picked experimentally from alpha data
    • conduct posture: classify history never persons, no intent vocabulary, pasteable rendering counts participants without naming them, cross-article aggregation excluded
    • false-quiet audit mode in the MVP surface; alpha checkpoint tracked in Alpha checkpoint: measure the stability signal's false-quiet rate via audit mode (PRD-0015) #122
  • 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.
  • Domain README + index wiring (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

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Build, CI, or release
  • Security-sensitive change

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

  • Touches auth/session/cookies/CSRF
  • Touches deployment/runtime configuration
  • Touches desktop packaging
  • Touches scoring or Wikimedia action behavior
  • Needs an ADR

The PRD expects one thin platform ADR (history + Pageviews fetch edges, revert-chain reducer, talk-activity sensor; StabilitySignal contract in sp42-core; policy in the domain) if accepted — spawned then, not in this PR.

Notes For Reviewers

  • The PRD is in Discussion state: the Resolved-questions section carries the Editor's decided answers but remains open to reviewer reaction until acceptance.
  • The stability signal is the assessment domain's first capability; the design sketch is the map for what follows (GA report renderer over the existing PageVerificationReport is the intended first build step, and it has no dependency on this PRD).
  • Places most worth scrutiny: the policy-knob asymmetry argument (Layer A triage), the conduct posture (the one output that describes people's behavior), and the fits-or-declines evidence budget.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3


Generated by Claude Code

claude added 24 commits July 9, 2026 02:31
…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
… 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
…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
…ng, runs not nominations

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
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
@tieguy tieguy requested a review from schiste as a code owner July 10, 2026 18:50
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ATEQwdt8J9mVb94EcgRFY3

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 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".

Comment on lines +62 to +63
- *Stability:* the PRD-0015 two-layer signal, keyed to the nomination
timestamp.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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
@tieguy tieguy merged commit 35be644 into main Jul 10, 2026
4 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge 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 👍 / 👎.

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