forge-orkes 0.44.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,8 +29,29 @@ must_haves:
29
29
  truths: # USER-observable when plan is done. Must contain a user verb
30
30
  # (see, click, submit, receive, view, download, error, redirect).
31
31
  # Internal-only truths like "Schema applied" do NOT satisfy.
32
+ # Entry form: bare string (legacy — remains valid, no migration)
33
+ # OR object with an OPTIONAL executable check:
32
34
  - "" # e.g., "User submits signup form and lands on dashboard"
33
- - "" # e.g., "Invalid email shows inline 'must be a valid email' error"
35
+ - truth: "" # e.g., "Invalid email shows inline 'must be a valid email' error"
36
+ check: "" # OPTIONAL shell command proving the truth. Semantics:
37
+ # - exit 0 = pass; anything else = fail. The exit code, not
38
+ # agent judgment, is the verdict (executed-evidence rule).
39
+ # - must PRINT WHY it fails — its output feeds executing's
40
+ # auto-fix loop and the verification report (`diff` beats
41
+ # `diff -q`; an assert-with-message beats a bare `test`).
42
+ # - verify content/behavior, not existence (`test -f` proves
43
+ # existence only).
44
+ # - safe to run repeatedly — read-only, or idempotent against
45
+ # durable state (checks run in executing AND verifying,
46
+ # plus auto-fix retries).
47
+ # - authored at planning time, goal-backward, BEFORE code
48
+ # exists — a pre-code check can't be retro-fitted to what
49
+ # got built.
50
+ - truth: "" # A truth that can't be a command (visual, real-device,
51
+ manual: "" # external service) carries a `manual:` route INSTEAD of a
52
+ # check — e.g. "human gate" or "M9 e2e" — never a fake check.
53
+ # executing skips manual truths (no check to run); verifying
54
+ # routes them to HUMAN VERIFICATION NEEDED.
34
55
  artifacts: # Files that must exist and be substantive (not stubs).
35
56
  # Slice plans typically span 2-4 layers — paths should cross
36
57
  # boundaries (component + handler + repo), not cluster in one dir.
@@ -50,6 +71,19 @@ must_haves:
50
71
 
51
72
  <task type="auto">
52
73
  <name>Action-oriented task name</name>
74
+ <complexity>standard</complexity> <!-- OPTIONAL (M24). complexity is trivial | standard | complex.
75
+ Routing signal → resolves a model via project.yml
76
+ models.by_complexity (see FORGE.md Model Routing).
77
+ trivial = config/docs/mechanical; standard = ordinary
78
+ feature/fix; complex = cross-layer behavior, tricky logic,
79
+ high blast radius. OMIT the field → the task falls back to
80
+ skill-level model routing, exactly as pre-M24 plans did.
81
+ No migration: a task with neither field parses unchanged. -->
82
+ <task_type>code-feature</task_type> <!-- OPTIONAL (M24). code-feature | code-fix | docs | research |
83
+ config | test. The promotion-ladder BUCKET key — phases
84
+ 37-38 learn "model X is proven on task_type Y". Free choice
85
+ from this controlled vocabulary; pick the dominant kind.
86
+ OMIT → task is not bucketed; no effect on legacy plans. -->
53
87
  <files>
54
88
  - src/path/to/file.tsx (create)
55
89
  - src/path/to/other.ts (modify)
@@ -90,6 +90,10 @@ models:
90
90
  securing: sonnet # Security analysis needs depth
91
91
  debugging: sonnet # Investigation needs solid reasoning
92
92
  discussing: sonnet # Conversation needs natural fluency
93
+ # by_complexity: # Per-task complexity -> model (M24). Overrides skills.X — see FORGE.md Model Routing Precedence.
94
+ # trivial: haiku
95
+ # standard: sonnet
96
+ # complex: opus
93
97
 
94
98
  orchestration: # M10 multi-agent orchestration (experimental). Only consulted when M10 is installed.
95
99
  # auto: true # false = never auto-route Standard/Full through orchestrating (install = consent; set false to opt out).
@@ -0,0 +1,31 @@
1
+ ---
2
+ slug: "{kebab-slug}"
3
+ title: "{short human title}"
4
+ created: "{ISO date}"
5
+ status: exploring # exploring | parked | graduated | discarded
6
+ flag: "{how it's gated — e.g. alpha, ?alpha=1, feature:foo, settings.alphaMockups}"
7
+ goal: "{one line — what are we trying to see before building it for real?}"
8
+ # --- set on resolve ---
9
+ # graduated_to: m-{id} # when status: graduated
10
+ # resolved: "{ISO date}" # when graduated or discarded
11
+ # discard_reason: "..." # when status: discarded
12
+ # parked: "{ISO date}" # when status: parked
13
+ # unpark_when: "..." # when status: parked — what would bring this back
14
+ ---
15
+
16
+ # Prototype: {title}
17
+
18
+ Disposable in-app mockup, gated behind `{flag}`. Not production work — see `.claude/skills/prototyping/SKILL.md`.
19
+
20
+ ## Open question
21
+
22
+ {The thing this iteration round is trying to answer / react to right now. Rewrite as it evolves.}
23
+
24
+ ## Iterations
25
+
26
+ <!-- One terse line per pass. This is the loop's memory across /clear — keep it scannable, not a design doc. -->
27
+ - {ISO date} — {what this iteration tried, and what to look at}
28
+
29
+ ## Notes
30
+
31
+ {Optional: decisions leaning one way, dead ends, things to remember if this graduates.}