Skip to content

v1.6.0 — One kit, any language: configurable Output Language, /export-docs, PHP/Laravel & 3 hardening rounds

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 14 Aug 16:01
· 5 commits to main since this release

Five change groups in this release: (1) configurable Output Language — artifacts & conversation follow the language declared per project (absent → Vietnamese, fully backward-compatible); (2) /spec business layer & sliced legacy baselines; (3) new command /export-docs — render kit artifacts into your company's own PRD/SDD templates; (4) PHP + Laravel as the third first-class stack; (5) a three-round hardening audit across all 20 commands. Verified in sandboxes: all four /spec branches (greenfield · REVERSE · DELTA · scoped REVERSE) ran end-to-end with every mechanical gate passing.

🌐 1 · Output Language — one kit, any language

  • Output Language (Project Profile) — prose, artifacts and conversation in the declared language; code & identifiers always English; missing field → Vietnamese (no silent flip for ongoing projects)
  • Kit source is now fully English — runtime output follows the Profile; handoff markers renamed [CẦN …][NEEDS …] so English-output projects carry no foreign tokens; gates grep language-neutral anchors

🧾 2 · /spec — business-ready specs & sliced legacy baselines

  • Business layer — Goals & Success Metrics table, Permission Matrix (role × action), mandatory scenario class tags @happy/@negative/@edge (✅❌⚠️ at export)
  • Machine-checked "no transport-only stories" guard — UI-product scenarios must be written from the user's observable perspective
  • --scope — scoped REVERSE — baseline a large legacy system slice by slice with a covered ∪ uncovered ledger the gate reconciles against the endpoint inventory
  • --wireframes (as-is UI documentation for REVERSE) and --propose-goals (labeled 📝P-nn proposals — numbers never invented)

📤 3 · New command: /export-docs

  • Fill-only rendering of SPEC / ARCHITECTURE / reports into company templates (EXTENSION layer .claude/local/doc-templates/) — no invented content, sign-off cells never auto-filled
  • Stable 1:1 ID transform @US-XXX-Snn → AC-x.y.z via exports/TRACE_MAP.md — refreshes never renumber
  • Audience register per target — stakeholder targets translate technical identifiers into business language; engineer targets keep them verbatim
  • Export gate: heading census, placeholder residue, internal cross-refs, diagram & API-sample fidelity, 📝P-nn label fidelity

🐘 4 · Third first-class stack: PHP + Laravel

  • lang-php + framework-php-laravel + test-php overrides (Pest default — brownfield keeps PHPUnit; RFC 7807 with the documented brownfield-422 exception; host-isolated .env.testing)
  • php scanner plugin (composer audit with prod-block/dev-advisory split, project-local PHPStan) — wired through every downstream command (/discover/infra/docs/deploy/debug/simplify)

🛡️ 5 · Full-kit hardening — 3 audit rounds over all 20 commands

  • Traceability closed end-to-endNFR-xx keyed chain across all four artifact tiers (spec → arch → plan → verify); /plan §Impact Analysis (blast radius before tasks); /arch Flow Disposition (no flow silently undrawn)
  • Real-infrastructure isolation, proven not trusted — legacy test-suite pre-flight, connection tripwire whitelist at Gate 6, compose self-containment at /infra//deploy
  • Deployment safetyIMAGE_TAG digest/rollback chain; new database.md §Expand-contract + §DB-resident objects are source code; db/schema-snapshot/ refreshed in the same change-set; the "rollback < 1 minute vs destructive migration" contradiction closed; "As-is refresh" KB-sync gates
  • Scan coverage disclosurestacks_unscanned surfaced and gate-blocking: "not scanned" must never read as "nothing found"
  • Brownfield evidence, repo-resident/discover endpoint inventory generalized (consumers, scheduled jobs, CLI) + Connection/Messaging/Cache inventories (credentials always masked); guided DB-schema export with per-connection consent and a 4-step transport ladder; DB MCP servers evaluated and rejected on measured evidence
  • Multi-repo depth/discover-system generates specs/system/ requirements views + contracts/event-catalog.md, bash-first incremental re-sync; 6 new fill-only templates; multi-stack repos must declare ALL stacks in the Profile, scoped by path
  • Agent reliability — spawn prompts standardized to carry conversation-level facts (mode/flow, scope, NFR list, A-xx returns); one E2E assertion contract at Gate 6 and Gate 11 alike; results/service boards read from real runner output, never from a sub-agent's report

🧭 Also in this release

  • Getting-started guidesgetting-started-brownfield.md & getting-started-greenfield.md, linked from README & quick-start
  • Default modelsettings.json now ships claude-sonnet-5

⚠️ Upgrade notes

  • No Output Language in your Profile → everything stays Vietnamese — no silent language flip
  • A SPEC without a Coverage field is treated as full (the field postdates it)
  • Marker rename [CẦN <role>][NEEDS <role>]: update the On-missing enum in your local doc-templates/mapping.md; older exports keep the old marker until the next re-export
  • Company doc templates live in .claude/local/doc-templates/ (EXTENSION — kit upgrades never touch them; keep them out of public remotes)

Full detail per change: CHANGELOG.md § [1.6.0].