pi-aia-asf 0.4.0 → 0.5.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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.0] - 2026-08-28
11
+
12
+ ### Added
13
+
14
+ - **06b Rule 15 — bound every long-running operation** (new mandatory QA rule):
15
+ state the expected duration before running any long command (package installs,
16
+ platform/test-harness startup, browser/daemon launches, full suites); ALWAYS
17
+ wrap it in a hard timeout (`timeout N …` / tool timeout parameter); exceeding
18
+ the bound is a bug signal — kill and diagnose the root cause; if the bound
19
+ proves too short, raise it deliberately with a reason. Rooted in the user
20
+ report of package hangs lasting up to 50,000 seconds with the agent waiting
21
+ idle. Added to the Rule 10 definition-of-done checklist.
22
+ - **SKILL.md discipline rule 6 — Bounded waits — ALWAYS** (renumbered rules
23
+ 7–10): the same rule at the phase level, with the 50,000-second hang as the
24
+ anti-example.
25
+ - **07-release.md**: "Verify first" step now requires every long-running
26
+ verification command to have run under an explicit timeout with a stated
27
+ expected duration.
28
+
10
29
  ## [0.4.0] - 2026-08-28
11
30
 
12
31
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-aia-asf",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Ai Applied Agentic Software Factory — codifies the full software development flow: intake, research, spec capture, adversarial analysis, planning with approval gates, test-first implementation, and release. Requires pi-vigilant, pi-smart-web-search, pi-smart-fetch, pi-aia-browser, and pi-intercom.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -200,10 +200,11 @@ Execute the task list milestone by milestone. Discipline rules:
200
200
  3. **No scope creep**: if something new is discovered that changes specs, capture it, ask the user, and update the plan before implementing.
201
201
  4. **Descriptive commits**: `git commit -m "type: specific description of what and why"` (e.g. `fix: verify specs before rotation`). No vague messages, no placeholders.
202
202
  5. **Browser testing — MANDATORY for any web interface**: if the deliverable has a UI/website/web app, test it through `pi-aia-browser` (`browser_init`, `browser_navigate`, `browser_click`, `browser_type`, `browser_screenshot`, `browser_dom`, …) to replicate the user's real experience — not just curl/API checks. Verify: loads, key user journeys, responsive behavior, console errors. **Silent async paths included**: ingest through the real flow and wait for the enrichment to land (06b Rule 9).
203
- 6. **Let pi-vigilant do its job**: it will auto-continue after premature stops and verify specs at settle. When it asks for `update_spec_status` with evidence, do it.
204
- 7. **CHANGELOG discipline**: every user-visible change gets a CHANGELOG entry describing exactly what changed (no placeholder text).
205
- 8. **Challenge approved designs (M4)**: if a spec's literal reading creates product tension (e.g. feedback clusters under "Plan" when "Plan = plans"), stop and resolve it with the user before implementing — never implement blindly and call it delivered.
206
- 9. **Trace before claiming delivered (M5)**: the delivery log is a claim; the code is the evidence. Before marking anything ✅, trace the actual code path, confirm the output is consumed by a surface, and confirm the operator-facing outcome test passes.
203
+ 6. **Bounded waits — ALWAYS (06b Rule 15)**: before any long-running command (package install, platform/test-harness startup, browser/daemon launch, full suite), **state the expected duration explicitly** and wrap it in a **hard timeout** (`timeout N …` or the tool's `timeout` parameter) — never run unbounded. If it exceeds the bound: kill it, diagnose what it is blocking on, fix the root cause. If the bound proves too short, raise it deliberately with a reason — never silently extend, never remove the bound. A 50,000-second hang is a failure to investigate, not patience.
204
+ 7. **Let pi-vigilant do its job**: it will auto-continue after premature stops and verify specs at settle. When it asks for `update_spec_status` with evidence, do it.
205
+ 8. **CHANGELOG discipline**: every user-visible change gets a CHANGELOG entry describing exactly what changed (no placeholder text).
206
+ 9. **Challenge approved designs (M4)**: if a spec's literal reading creates product tension (e.g. feedback clusters under "Plan" when "Plan = plans"), stop and resolve it with the user before implementing — never implement blindly and call it delivered.
207
+ 10. **Trace before claiming delivered (M5)**: the delivery log is a claim; the code is the evidence. Before marking anything ✅, trace the actual code path, confirm the output is consumed by a surface, and confirm the operator-facing outcome test passes.
207
208
 
208
209
  ---
209
210
 
@@ -146,6 +146,7 @@ never arrives, the wiring is dead — that is a failed test.
146
146
  - [ ] **Consumed by a surface: every delivered feature's output is visible in the product (UI or API) — nothing ships as dead machinery**
147
147
  - [ ] **E2E behavioral test: every feature spec has a test through the real entry point asserting the operator-facing outcome**
148
148
  - [ ] Unverifiable specs → `partial` + asked the user (never self-certified)
149
+ - [ ] **Every long-running command ran under an explicit timeout with a stated expected duration (no unbounded waits)**
149
150
 
150
151
  ## Rule 11 — Report honestly
151
152
 
@@ -194,3 +195,24 @@ done — the wiring may be dead.
194
195
  - **Scale note:** mandatory for feature specs in **large/gated work**. For small
195
196
  work, required only when the change touches a surface/wiring; otherwise the
196
197
  standard test-first rules above suffice.
198
+
199
+ ## Rule 15 — Bound every long-running operation: state the expected duration, then enforce it
200
+
201
+ > **Real failure (user report):** package installs / platform startups / test
202
+ > harnesses hung for up to **50,000 seconds** while the agent waited, doing
203
+ > nothing. An unbounded wait is not patience — it is a silent stall.
204
+
205
+ - **State the expected duration before running.** "This install should take
206
+ ~2 min", "first platform startup ~10 min", "suite ~3 min". The expectation is
207
+ part of the command, not an afterthought.
208
+ - **ALWAYS wrap it in a hard timeout** — `timeout 300 …` for shell commands, an
209
+ explicit `timeout` parameter for tool calls. Never run unbounded.
210
+ - **Exceeding the bound is a bug signal, not a slow command.** Kill it and
211
+ diagnose immediately: what is it blocking on (network, lock, hung process,
212
+ missing dependency, waiting for input)? Fix the root cause.
213
+ - **If the bound proves too short, raise it deliberately** — state the new
214
+ expectation and the reason ("first-time platform startup needs 10 min;
215
+ bound raised to 900s"). Never silently extend, never remove the bound.
216
+ - **A hang that outlives its expected duration is a failure to investigate,**
217
+ not a wait to endure. If you cannot verify something within a bounded time,
218
+ say so explicitly (Rule 11) instead of waiting indefinitely.
@@ -15,6 +15,7 @@ Publishing is **always the user's decision**. The factory prepares everything; t
15
15
  - typecheck / build passes
16
16
  - test suite green
17
17
  - all MUST specs `met` in pi-vigilant
18
+ - every long-running verification command ran under an explicit timeout with a stated expected duration (06b Rule 15) — no unbounded waits
18
19
  2. **Version bump** — semantic versioning:
19
20
  - `patch` (0.1.0 → 0.1.1): bug fixes
20
21
  - `minor` (0.1.0 → 0.2.0): new features, backward compatible