Logo white

宜博 / lemongraph

Sign in
  • Sign in
  • Project
  • Files
  • Commits
  • Network
  • Graphs
  • Milestones
  • Issues 0
  • Merge Requests 0
  • Labels
  • Wiki
  • Commits 341
  • Compare
  • Branches 1
  • Tags 0
  • lemongraph
06 Aug, 2026
22 commits
  • graphlemon: auto-commit uncommitted changes for 1f278c16-76a4-4d05-be48-89548a22… ...
    0b35896d
    …85fa-main-checkout-drift
    graphlemon authored
    2026-08-06 10:47:50 +0800  
    Browse Code »
  • Give Planner/Coder/Validator real, machine-checkable acceptance criteria ...
    07a0a27e
    1
    Root cause traced (docs/implementation-gap-analysis.md): the Benchmark
    document Validator relies on for its verdict was frequently a narrative
    about the work session ("The planner workflow completed and produced a
    Benchmark defining 18 scenarios...") instead of the actual scenarios --
    found via a real skill-detail-page task's benchmark.md, then confirmed
    present since the earliest real self-hosting runs. Validator's own
    judgment was, in practice, resting on thin, sometimes-vacuous prose.
    
    Planner's work graph (brd->prd->sdd->benchmark) extends to
    benchmark->test_dataset->test_script: test_dataset/test_script are always
    present as nodes, but the generating subagent judges per-goal whether a
    real dataset/script applies (many goals, e.g. UI wiring, legitimately
    don't have one -- replying 'N/A: <reason>' is a real, expected answer, not
    a failure). test_script gets a genuinely mechanical verify_fn (real
    py_compile/node --check, not LLM judgment) -- the one node type where an
    objective check is actually possible. All four document prompts also gained
    an explicit anti-narration instruction (only 'brd' had a weaker version of
    this before).
    
    Coder's implementation prompt now receives the real benchmark/dataset/
    script and must make the Planner's real script pass for real, not just
    whatever tests it invents on its own.
    
    Validator gets its own 3-node Work Graph (validator_benchmark ->
    validator_test_dataset -> validator_test_script), generated independently
    from SDD/PRD -- deliberately NOT reusing Coder's or Planner's own copies,
    same reasoning as a held-out eval set vs. the dev set a model was tuned
    against. The resulting script, if real, is actually executed against the
    current repository state; a non-zero real exit code force-overrides the
    verdict to FAIL in code (user-confirmed hard gate: the script is not up
    for LLM debate on a failure, only on a pass can subjective judgment add
    INCONCLUSIVE/risk notes).
    
    schema.py: artifact.artifact_type's CHECK constraint gains the 5 new
    types, plus migrate_expand_artifact_types() -- SQLite has no ALTER-based
    constraint migration, so this is the standard rebuild-copy-swap dance,
    applied for real to the live ~/.graphlemon/graphlemon.db (42 rows,
    verified byte-identical count before/after, integrity_check clean).
    
    skills/qa-task-validation.md and skills/project-sdd-planning.md already
    gained a standing principle from this same incident: verify cross-task
    data dependencies against real system state, not seeded fixtures alone
    (see prior commit d7035fc) -- this commit is the mechanism-level half of
    the same fix, not just the prose-guidance half.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
    2026-08-06 10:33:35 +0800  
    Browse Code »
  • graphlemon: test_report artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    e3baa491
    graphlemon authored
    2026-08-06 01:29:42 +0800  
    Browse Code »
  • graphlemon: code_diff artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    901625e2
    graphlemon authored
    2026-08-06 01:29:42 +0800  
    Browse Code »
  • graphlemon: merge 39efb231-d574-446d-813d-9eabd50b5981
    01173527
    graphlemon authored
    2026-08-06 01:29:42 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 39efb231-d574-446d-813d-9eabd50b5981
    13a4350b
    graphlemon authored
    2026-08-06 01:29:42 +0800  
    Browse Code »
  • graphlemon: benchmark artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    9334f8d6
    graphlemon authored
    2026-08-06 01:19:14 +0800  
    Browse Code »
  • graphlemon: sdd artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    ddb7ff69
    graphlemon authored
    2026-08-06 01:19:14 +0800  
    Browse Code »
  • graphlemon: prd artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    f9773353
    graphlemon authored
    2026-08-06 01:19:14 +0800  
    Browse Code »
  • graphlemon: brd artifact for task 3605272e-fe33-48cc-b3f3-e0c0ba26f970
    8b835b11
    graphlemon authored
    2026-08-06 01:19:14 +0800  
    Browse Code »
  • Validator/Planner skills: require real-state verification for cross-task data dependencies ...
    d7035fc5
    Real incident (2026-08-06): the skill-content migration task and the skill
    detail page bug fix were two separate tasks. Neither was asked to verify
    that migrated content is actually reachable through the DB-backed lookup
    the detail page uses. Both passed their own tests cleanly -- because both
    only ever exercised the mechanism against seeded/mocked fixture data, never
    checked whether the real producer's real output actually exists in the
    real system. The result: the skill detail page returned "not found" for
    all 12 real migrated skills, and nobody caught it until a human clicked
    through the real console.
    
    qa-task-validation (§8): passing unit tests against seeded fixtures proves
    the mechanism is correct given valid input -- it does not prove that input
    exists for real. When a feature reads data another task/process was
    supposed to have already written, Validator must independently query the
    real running system against a real (not newly-created) object.
    
    project-sdd-planning (§10): when a task's acceptance depends on another
    task's real output, the Benchmark must name a real, specific object as the
    acceptance anchor, not just describe the mechanism.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
    2026-08-06 01:17:26 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 90c6ca9d-21eb-4678-ab12-2e2f5bd0… ...
    8646516e
    …11fd-main-checkout-drift
    graphlemon authored
    2026-08-06 00:59:22 +0800  
    Browse Code »
  • graphlemon: test_report artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    bd13bd26
    graphlemon authored
    2026-08-06 00:46:27 +0800  
    Browse Code »
  • graphlemon: code_diff artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    be5c3990
    graphlemon authored
    2026-08-06 00:46:27 +0800  
    Browse Code »
  • graphlemon: merge 6299a5c5-5359-4017-af00-19ab432484c6
    fb1ff76d
    graphlemon authored
    2026-08-06 00:46:27 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 6299a5c5-5359-4017-af00-19ab432484c6
    7073e204
    graphlemon authored
    2026-08-06 00:46:27 +0800  
    Browse Code »
  • graphlemon: benchmark artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    70f23ac9
    graphlemon authored
    2026-08-06 00:35:58 +0800  
    Browse Code »
  • graphlemon: sdd artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    3837cc73
    graphlemon authored
    2026-08-06 00:35:58 +0800  
    Browse Code »
  • graphlemon: prd artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    7130290d
    graphlemon authored
    2026-08-06 00:35:58 +0800  
    Browse Code »
  • graphlemon: brd artifact for task 837fc183-f87f-41d9-8bc9-6262d7172834
    97faa2d9
    graphlemon authored
    2026-08-06 00:35:58 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 81700b35-ea5b-4718-9846-4ff0f924… ...
    38b95420
    …c231-main-checkout-drift
    graphlemon authored
    2026-08-06 00:20:43 +0800  
    Browse Code »
  • deploy_rollback: stop leaking the revived process on every rollback_path_b failure ...
    147be052
    _launch_candidate() spawns a real `python -m src.backend_server` process
    (`revived`) to re-verify the previous version during a post-cutover
    rollback. On the success path it's correctly left running -- it IS the new
    Live. But on every failure path (never bound live_port, failed
    re-verification, git revert conflict) nothing ever terminated it -- found
    via 31 accumulated orphaned processes on this machine, one per failed
    rollback_path_b call across many real test runs this session.
    
    This is also the likely cause of RollbackPathBFailureTest's own reported
    non-determinism (three independent real Validator sessions saw it fail,
    never reproduced manually): a leaked process from an earlier failed run
    can still be squatting on the port a later run's _find_free_port() picks,
    producing a false "alive" health-check reading.
    
    Fix: call deploy_cutover._stop_process(revived.pid) in both failure
    branches before raising, mirroring the pattern cutover() already uses for
    its own stop_timeout-bounded process teardown. Also fixes
    RollbackPathBHappyPathTest's own matching leak (it re-appended bad_live.pid
    a second time instead of tracking the actual revived process, a
    copy-paste bug, not real cleanup) by capturing the real pid via a thin
    _launch_candidate wrapper.
    
    31 pre-existing orphaned processes killed by hand; verified 5 repeated
    test runs after the fix leak zero new ones.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
    2026-08-06 00:01:27 +0800  
    Browse Code »

05 Aug, 2026
12 commits
  • Validator memory: RollbackPathBFailureTest pre-existing failure note ...
    701f6137
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
    2026-08-05 23:40:33 +0800  
    Browse Code »
  • gap-analysis doc: record the UI bug batch (log viewer, skill detail, artifact click-through) ...
    630efa88
    Three real self-hosting fixes (log content never written, skill detail
    page missing real content, artifact list not clickable), two design
    questions set aside per user's request (unified Planner-driven work graph
    across all org agents, loop visualization on the graph), three bugs left
    for a future batch, and two infrastructure bugs found and fixed along the
    way (manual_resume not actually continuing execution for most block
    reasons, run_goal_to_completion crashing instead of blocking on unrouted
    exceptions). Also upgrades the RollbackPathBFailureTest flakiness note --
    three independent real sessions have now hit it.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    bboonnee authored
    2026-08-05 23:40:01 +0800  
    Browse Code »
  • graphlemon: test_report artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    f9c2e854
    graphlemon authored
    2026-08-05 13:28:11 +0800  
    Browse Code »
  • graphlemon: code_diff artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    bb18746d
    graphlemon authored
    2026-08-05 13:28:11 +0800  
    Browse Code »
  • graphlemon: merge daef8910-e6a7-4060-babd-dd736e6f1a79
    db695706
    graphlemon authored
    2026-08-05 13:28:11 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for daef8910-e6a7-4060-babd-dd736e6f… ...
    21cb6e11
    …1a79-main-checkout-drift
    graphlemon authored
    2026-08-05 13:28:11 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for daef8910-e6a7-4060-babd-dd736e6f1a79
    a20bf508
    graphlemon authored
    2026-08-05 13:28:11 +0800  
    Browse Code »
  • graphlemon: benchmark artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    7674e4eb
    graphlemon authored
    2026-08-05 13:21:21 +0800  
    Browse Code »
  • graphlemon: sdd artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    d4105e15
    graphlemon authored
    2026-08-05 13:21:21 +0800  
    Browse Code »
  • graphlemon: prd artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    8e5b231d
    graphlemon authored
    2026-08-05 13:21:21 +0800  
    Browse Code »
  • graphlemon: brd artifact for task 7fc3a7a3-ebe3-48ae-97de-a98f7f3c9d35
    f16199bf
    graphlemon authored
    2026-08-05 13:21:21 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 33e0266c-d2ec-4982-9128-afd2d36a… ...
    af0f26b0
    …ea4d-main-checkout-drift
    graphlemon authored
    2026-08-05 12:58:58 +0800  
    Browse Code »

04 Aug, 2026
6 commits
  • graphlemon: test_report artifact for task 773a7a08-b295-4ba3-b506-196a21403d8b
    9eb4ef96
    graphlemon authored
    2026-08-04 18:05:36 +0800  
    Browse Code »
  • graphlemon: code_diff artifact for task 773a7a08-b295-4ba3-b506-196a21403d8b
    ed8e8e0d
    graphlemon authored
    2026-08-04 18:05:36 +0800  
    Browse Code »
  • graphlemon: merge 0ca7767c-6666-4094-bac1-2bd7829dc501
    bc3e7f6a
    graphlemon authored
    2026-08-04 18:05:36 +0800  
    Browse Code »
  • graphlemon: auto-commit uncommitted changes for 0ca7767c-6666-4094-bac1-2bd7829dc501
    e5f6315d
    graphlemon authored
    2026-08-04 18:05:36 +0800  
    Browse Code »
  • graphlemon: benchmark artifact for task 773a7a08-b295-4ba3-b506-196a21403d8b
    b14d3848
    graphlemon authored
    2026-08-04 17:56:49 +0800  
    Browse Code »
  • graphlemon: sdd artifact for task 773a7a08-b295-4ba3-b506-196a21403d8b
    4b6373b9
    graphlemon authored
    2026-08-04 17:56:49 +0800  
    Browse Code »