• New 'Behavior' stage between Gate and Milestone, frontend-phase only, after testGate green and before report/milestone. Verifies every interactive control actually works and every text region shows the right content, independent of the tests the tdd agent wrote.
    
    - BEHAVIOR_GATE_SCHEMA / behaviorGateContract() / behaviorGatePrompt() / runBehaviorGate(); reportPrompt now gates the milestone on behavior-gate evidence (frontend-phase-behavior-gate-r*.md, last attempt must be non-RED).
    
    - Two-tier failure: interaction defects (incl. binding-garbage) flake-retry once then hard-halt via adjudicate(allowContinue:false); text issues split by source (sentinel=objective -> no continue; i18n/literal/semantic=adjudicable). Convergence loop re-runs the env + interaction hard gates after any text-layer retry so a refreshed result can't slip a green past the hard gates.
    
    - Full-stack seeded run: test-DB name guard (deterministic halt, not adjudicated), strict 4-phase ordering (empty DB -> boot backend so Flyway builds schema -> seed -> boot frontend), auth bootstrap via storageState, router-config-driven route discovery, ephemeral .tmp/behavior-gate runner with finally teardown, type-legal per-field-unique sentinels.
    
    - agentType uses the plugin-namespaced 'erp-workflow:code-reviewer' (a bare 'code-reviewer' is ambiguous with feature-dev:code-reviewer); README + agents/code-reviewer.md aligned (frontmatter name: stays bare).
    
    - Design: docs/design/2026-06-02-frontend-behavior-gate.md. README + coding-start banner updated.
    zichun authored
     
    Browse File »


  • zichun authored
     
    Browse Dir »
  • Independent Claude + Codex review of the working-tree diff surfaced
    23 issues; all applied in-place across three domains.
    
    workflows/coding.mjs (9):
    - spec/plan/verify/review prompts now git-commit their artifacts
      (closes milestone-dirty-worktree halt risk)
    - CHECKBOX_STATE_SCHEMA requires `state` + defensive guard in reviewWithFixLoop
    - writeDocs08FieldPromptM scopes edits to module via line anchor
    - assertSafeId guards Router output (module/REQ/FE ids)
    - featureLoop captures reviewWithFixLoop's return value
    - dateFromArtifactPath rejects impossible dates (9999-99-99 etc.)
    - terminal HALT review-unresolved message disambiguated
    - updated comment on top-level `return` (ESM vs node --check)
    
    lib/validate-ddl.mjs + tests (10):
    - extractType preserves unsigned/signed modifiers
    - KEY/INDEX fallthrough no longer creates spurious 'KEY' columns
    - FOREIGN KEY REFERENCES accepts schema-qualified `db.table`
    - index keys normalized to name:kind:cols (UNIQUE-aware)
    - FK keys include ON DELETE action (defaults to RESTRICT)
    - CREATE TEMPORARY TABLE parsed
    - parseForeignKeyBullet/parseIndexBullet reject prose bullets
    - +10 regression tests (62 total, all pass)
    - merge-gitignore.mjs docstring synced to implementation
    
    skills/ (4):
    - docs-06 template header: § 一~二 → § 一~三
    - downstream-gen §A steps renumbered 1-7 (was 1,3,4,5,6,7,8)
    - docs-08 initial template adds tokens.css checkbox
    - coding-start drops "已在后台启动" wording (Workflow is synchronous)
    zichun authored
     
    Browse Code »