Require provenance for spreadsheet derived estimates - #1219
Merged
Merged
Conversation
Change-Id: I4e2f319839830f71c7f873c0f4560bee194eaa86
Change-Id: If2020ac1a6062fb2376a55589408419205058a18
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3cb91070-39cc-45a8-97a9-924dde72a1dc) |
Contributor
|
Queued — the merge queue status continues in this comment ↓. |
Owner
Author
|
@Mergifyio queue |
Contributor
Merge Queue Status
This pull request spent 44 minutes 29 seconds in the queue, including 44 minutes 3 seconds running CI. Required conditions to merge
|
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Each number in the sheet now has to say where it came from. A filled in average must name how it was made. A guess cannot stand in for a real source. The check fails when a needed name is missing.
Review Claim
The spreadsheet schema and validator now require provenance for derived estimates and keep them out of source-coverage claims.
Review Lane
behavior
Review Unit
product-skill
Safety Invariant
No derived value can appear without an explicit method, lineage, and derivation note; derived values cannot satisfy source-backed competitor coverage.
Slice Rationale
This PR contains the schema and validator behavior. The separate engine-runtime PR contains the completion guard.
Non-goals
Test Plan
Test Plan
Revert Plan
Revert Plan
Note
Low Risk
Documentation and offline CSV validation for a product skill; no runtime engine, auth, or live sheet writes in this change.
Overview
Introduces the spreadsheet-authoring product skill: a workbook modeling guide that treats sheets as
raw observations → aggregation table → chart, with typedPeriod Start/Period End, separate Observation Point qualifiers, and strict rules for derived estimates (midpoint / linear interpolation only, with method, lineage, and notes).Adds
validate_schema.pyfor CSV/fixture preflight: required columns, no qualifiers in date columns, unique observation keys, source URLs on numeric rows, derived-row provenance checks, and optional--expected-entitiescoverage where derived estimates do not count as source-backed competitor coverage. Failed coverage is meant to surface asSPREADSHEET_COVERAGE: FAILrather than zero-fill or infer missing entities.Includes skill invoke/skip test notes and unit tests for the validator behavior.
Reviewed by Cursor Bugbot for commit c13bc11. Bugbot is set up for automated code reviews on this repo. Configure here.