Files
Socrates/docs/design-source/socrata/project/data.js
dtoro f1c4566576 Initial commit — design docs + Phase 0 validation harness
Sets up the Socrata project repo with:

docs/ — strategy and design documents
  - idea.md: full product vision
  - implementation-plan.md: Phase 0 + Phase 1 MVP plan
  - phase-0-validation.md: 2-week validation experiment strategy
  - phase-0-plan.md: concrete Phase 0 build plan
  - phase-0-results.md: Phase 0 gate outcome — GO for MVP
  - sysml-modeling.md: metamodel + SE discipline + validation rules
  - socrates.md: agent character, surfaces, modes, prompts, lifecycle
  - sync.md: bidirectional text↔diagram sync engineering
  - design-source/: HTML/CSS/JS handoff bundle from Claude Design

phase-0/ — validated harness (CLI, no UI, no DB)
  - LM Studio (local OpenAI-compatible) generation + detection + judge
  - PlantUML rendering for SysML model visualization
  - 10-seed corpus (8 working + 2 holdouts)
  - 5 corpus runs with iteration history in reports/
  - Final gate: 10/10 pass, mean 4.32/5, holdouts validated

Phase 1 MVP scope and milestones documented in implementation-plan.md.
2026-04-28 22:07:38 +02:00

101 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Sample project content — a realistic PM idea: an AI study companion for university students.
// Used to populate the textual narrative + diagram in all three aesthetic directions.
window.SOCRATA_DATA = {
project: {
name: "Aristotle",
tagline: "AI study companion for first-year STEM students",
scope: "Higher education · undergraduate",
owner: "M. Chen · PM",
branch: "main",
lastSync: "2 min ago",
},
// The narrative — a sequence of "tokens": plain prose, paragraph breaks,
// headings, and inline markup chips referencing model elements.
narrative: [
{ type: "h1", text: "Problem framing" },
{ type: "p", children: [
{ t: "text", v: "First-year STEM students at large public universities frequently disengage from coursework not because the material is intractable, but because the " },
{ t: "chip", kind: "block", id: "student", label: "Student" },
{ t: "text", v: " lacks a low-stakes thinking partner during the long tail between lectures and office hours. The " },
{ t: "chip", kind: "block", id: "course", label: "Course" },
{ t: "text", v: " produces problem sets that assume mastery of prerequisite scaffolding, and a " },
{ t: "chip", kind: "property", id: "selfEfficacy", label: "self_efficacy" },
{ t: "text", v: " gap forms quickly." },
]},
{ type: "p", children: [
{ t: "text", v: "Aristotle is a study companion that " },
{ t: "chip", kind: "association", id: "guides", label: "guides" },
{ t: "text", v: " the student through Socratic prompts rather than answers, scoped to their current " },
{ t: "chip", kind: "block", id: "assignment", label: "Assignment" },
{ t: "text", v: ". It refuses to produce solutions; it only produces questions calibrated to a student's evolving understanding." },
]},
{ type: "h2", text: "Constraints" },
{ type: "p", children: [
{ t: "chip", kind: "requirement", id: "REQ-001", label: "REQ-001" },
{ t: "text", v: " The companion must never output a complete solution to a graded problem. " },
{ t: "chip", kind: "requirement", id: "REQ-002", label: "REQ-002" },
{ t: "text", v: " Response latency under 1.2s P50 to preserve flow. " },
{ t: "chip", kind: "requirement", id: "REQ-003", label: "REQ-003" },
{ t: "text", v: " Operates within FERPA boundaries; coursework never leaves institutional tenancy." },
]},
{ type: "h2", text: "Why now" },
{ type: "p", children: [
{ t: "text", v: "Two large public-university pilots indicated that students would adopt a tool that explicitly does not solve their homework — an inversion of the prevailing market." },
]},
],
// Model — the SysML graph. Positions are normalized 01 on a 720×460 board.
blocks: [
{ id: "student", label: "Student", kind: "block", x: 0.10, y: 0.18, w: 168, h: 96,
properties: ["self_efficacy", "course_load", "prior_grade"] },
{ id: "aristotle", label: "Aristotle", kind: "block", x: 0.42, y: 0.18, w: 184, h: 110,
properties: ["interaction_style", "scope_window", "refusal_policy"] },
{ id: "course", label: "Course", kind: "block", x: 0.74, y: 0.10, w: 168, h: 96,
properties: ["syllabus", "prerequisites"] },
{ id: "assignment", label: "Assignment", kind: "block", x: 0.74, y: 0.58, w: 168, h: 96,
properties: ["due_at", "rubric", "graded"] },
{ id: "instructor", label: "Instructor", kind: "actor", x: 0.10, y: 0.62, w: 144, h: 76,
properties: ["policy_set"] },
{ id: "ferpa", label: "FERPA boundary", kind: "constraint", x: 0.42, y: 0.66, w: 184, h: 72,
properties: [] },
],
associations: [
{ id: "a1", from: "student", to: "aristotle", label: "consults", kind: "association" },
{ id: "a2", from: "aristotle", to: "assignment", label: "scoped_to", kind: "association" },
{ id: "a3", from: "course", to: "assignment", label: "contains", kind: "composition" },
{ id: "a4", from: "instructor", to: "aristotle", label: "configures", kind: "association" },
{ id: "a5", from: "aristotle", to: "ferpa", label: "obeys", kind: "constraint" },
{ id: "a6", from: "student", to: "course", label: "enrolled_in", kind: "association" },
],
// Side rail items
assumptions: [
{ id: "ASM-1", text: "Students will accept a tool that refuses to give answers", status: "open", linked: ["aristotle"] },
{ id: "ASM-2", text: "Faculty will not classify Socratic prompts as academic dishonesty", status: "validated", linked: ["aristotle", "instructor"] },
{ id: "ASM-3", text: "1.2s P50 latency is achievable with on-prem inference", status: "open", linked: ["aristotle"] },
],
risks: [
{ id: "RSK-1", text: "Refusal policy circumvented via prompt injection", severity: "high", linked: ["aristotle"] },
{ id: "RSK-2", text: "FERPA tenancy adds 46 weeks of procurement per institution", severity: "med", linked: ["ferpa"] },
],
// Socrates' active thread
socratesThread: [
{ who: "socrates", text: "You've defined Aristotle as scoped to a single Assignment. What happens when a student wants to compare techniques across two assignments — does the scope expand, or does the student switch contexts?" },
{ who: "user", text: "Switch contexts. We don't want cross-assignment leakage of solution patterns." },
{ who: "socrates", text: "Good. That decision has an implication: the property scope_window on Aristotle becomes single-valued, and we may want a Constraint that forbids cross-Assignment retrieval. Should I draft that as a proposal?" },
],
// Pending change proposal
proposal: {
title: "Add constraint: no cross-Assignment retrieval",
impactedBlocks: ["aristotle", "assignment"],
addedConstraints: 1,
affectedRequirements: ["REQ-001"],
iteration: 2,
},
};