Skip to content

Decouple node status into two visual dimensions: border (human review) + fill (machine) #5

Description

@surenny

Problem

Current lifecycle is a strict linear chain draft → reviewed → bound → aligned → proved, but bound (machine-derived from \lean{}) and nl_reviewed (human gate) are independent dimensions. This causes awkward UX: a node that is draft + bound cannot be directly aligned without first clicking "Approve NL".

Proposal

Use the two existing SVG visual elements to represent two orthogonal progress dimensions:

Dimension Visual States
Human review Border color draft (gray) → reviewed (orange) → aligned (green)
Machine Fill color unbound (empty) → bound (light blue?) → proved (solid green)

Key rules

  • aligned implies nl_reviewed — confirming NL↔Lean alignment means you've reviewed the NL
  • Remove bound → nl_reviewed auto-promotion — having a Lean binding doesn't mean a human reviewed the NL
  • proved is still machine-derived (Lean compiled with \leanok)
  • When bound=true and aligned=false, show "Confirm Alignment" button regardless of nl_reviewed state

Example states

Node state Border Fill
Just written by AI gray empty
AI added \lean{} binding gray light fill
Human reviewed NL only orange empty
Human reviewed NL + has binding orange light fill
Human confirmed alignment green light fill
Proved in Lean green solid green

Files to modify

  • tools/leanblueprint/leanblueprint/Packages/blueprint.py — colorizer, fillcolorizer, legend, remove bound → nl_reviewed rule
  • tools/plastexdepgraph/plastexdepgraph/templates/dep_graph.htmlSTATE_COLORS, updateSvgNode(), lifecycle badges
  • tools/leanblueprint/leanblueprint/client.py — align action auto-sets nl_reviewed

Context

Discussed in review of the GitHub Pages review system implementation. The two-dimension model better reflects the actual workflow where AI generates both NL and Lean bindings, and mathematicians review them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions