xai-org / xai-org/x-algorithm

Under the Hood does not carry label-source provenance into the report, contrary to README:411

Open
#39 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
33.3k
Forks
5.4k
Avg merge
1d 17h
Merged PRs (30d)
1

Description

README:411 lists as a benefit of Under the Hood:

one can see whether labels have been manually applied outside of automated systems

I could not find a path in the released code that carries per-event label source into the report.

Source is structured where the label is read. visibility-filtering-client/tweet_safety_label.rs:197-209 maps safety_label_source into three distinct variants: BotmakerAction (carrying rule_id), ToolAction (carrying agent_tool and actor_ldap), and GrokAnnotationAction (carrying source). xai_x_thrift is not published, so I am not claiming what each variant denotes. The point is only that a per-event source discriminator exists and is structurally distinct at this layer.

It is not carried through the Under the Hood path.

  • under-the-hood/scalding/UthDailyPostsJob.scala:263 retains event.labelType.originalName. The event body is read at :266 and :269 for createdAtMsec and expiresAtMsec only.
  • under-the-hood/thrift/uth_serving.thrift:53-61: UthPostLabelAggregate and UthAccountLabelAggregate hold a label name and day counts. There is no source field to populate.
  • under-the-hood/strato/columns/underTheHoodReport.User.strato:194-199 and :210-215 emit label, about, effect, and counts.
  • under-the-hood/strato/graphql/under_the_hood.thrift:9-13: the response is generatedAt, reportJson, reportInfo.

The static about text does not stand in for it. Those strings are per-label-type constants, and seven of them state the disjunction rather than resolving it. underTheHoodLabels.strato:12 reads "Post detected by automated systems or in response to a user report", with the same construction at :30, :40, :61, :77, :95, and :120.

Two resolutions look legitimate to me:

  1. Carry a coarse category derived from the variant, for example automated, manual, or LLM, without exposing rule_id or actor_ldap.
  2. Amend README:411 to describe what the report contains.

I searched the tracker for manually applied, actor_ldap, ToolAction, BotmakerAction, GrokAnnotation, label source, and source provenance, with no matches. #11 edits two of these files and its description notes it avoids inventing source metadata absent from the aggregate. If you consider that the same target, say so and I will fold this in rather than track it separately.

Audited at a389166f6cf5da70a286b568c87695d4dcdce3a1. This is a static reading of the checked-in types and job code. under-the-hood/ and visibility-filtering-client/ ship no build target, so I have not executed anything.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with visibility-filtering-client/tweet_safety_label.rs:197-209, then trace the Under the Hood path through UthDailyPostsJob.scala:263-269, uth_serving.thrift:53-61, and the report Strato files. Decide whether the report should expose a coarse source category or README should be corrected. Done means the chosen contract is consistently reflected in the aggregate, report, and documentation.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, scala
Domain
api, backend, data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.