@sun-asterisk/sungen 3.2.25 → 3.2.26
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/dist/cli/commands/audit.d.ts.map +1 -1
- package/dist/cli/commands/audit.js +23 -4
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/exporters/matrix/build.d.ts.map +1 -1
- package/dist/exporters/matrix/build.js +4 -1
- package/dist/exporters/matrix/build.js.map +1 -1
- package/dist/exporters/matrix/map-loader.d.ts.map +1 -1
- package/dist/exporters/matrix/map-loader.js +5 -0
- package/dist/exporters/matrix/map-loader.js.map +1 -1
- package/dist/exporters/matrix/types.d.ts +11 -0
- package/dist/exporters/matrix/types.d.ts.map +1 -1
- package/dist/exporters/matrix/types.js.map +1 -1
- package/dist/harness/audit.d.ts +7 -0
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +74 -6
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/flow-contract.d.ts +18 -1
- package/dist/harness/flow-contract.d.ts.map +1 -1
- package/dist/harness/flow-contract.js +72 -9
- package/dist/harness/flow-contract.js.map +1 -1
- package/dist/harness/quality-gates.d.ts +12 -1
- package/dist/harness/quality-gates.d.ts.map +1 -1
- package/dist/harness/quality-gates.js +62 -7
- package/dist/harness/quality-gates.js.map +1 -1
- package/dist/harness/spec-branches.d.ts +88 -0
- package/dist/harness/spec-branches.d.ts.map +1 -0
- package/dist/harness/spec-branches.js +280 -0
- package/dist/harness/spec-branches.js.map +1 -0
- package/dist/harness/spec-coverage.d.ts +1 -1
- package/dist/harness/spec-coverage.js +4 -4
- package/dist/harness/spec-coverage.js.map +1 -1
- package/dist/harness/viewpoint-baseline.d.ts +9 -0
- package/dist/harness/viewpoint-baseline.d.ts.map +1 -1
- package/dist/harness/viewpoint-baseline.js +33 -3
- package/dist/harness/viewpoint-baseline.js.map +1 -1
- package/dist/harness/viewpoint-ledger.d.ts.map +1 -1
- package/dist/harness/viewpoint-ledger.js +63 -5
- package/dist/harness/viewpoint-ledger.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/add-flow.md +16 -0
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +9 -0
- package/dist/orchestrator/templates/ai-src/commands/delivery.md +9 -2
- package/dist/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +31 -1
- package/package.json +3 -3
- package/src/cli/commands/audit.ts +22 -3
- package/src/exporters/matrix/build.ts +4 -1
- package/src/exporters/matrix/map-loader.ts +5 -0
- package/src/exporters/matrix/types.ts +11 -0
- package/src/harness/audit.ts +78 -8
- package/src/harness/flow-contract.ts +87 -9
- package/src/harness/quality-gates.ts +64 -6
- package/src/harness/spec-branches.ts +346 -0
- package/src/harness/spec-coverage.ts +4 -4
- package/src/harness/viewpoint-baseline.ts +41 -6
- package/src/harness/viewpoint-ledger.ts +56 -4
- package/src/orchestrator/templates/ai-src/commands/add-flow.md +16 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +9 -0
- package/src/orchestrator/templates/ai-src/commands/delivery.md +9 -2
- package/src/orchestrator/templates/ai-src/skills/sungen-tc-generation/SKILL.md +31 -1
|
@@ -718,7 +718,7 @@ flows:
|
|
|
718
718
|
branchFrom: "BF step 1, the control tapped twice"
|
|
719
719
|
outcome: "One request, one record"
|
|
720
720
|
status: pending-clarification # the spec is silent — ASK, never assume a guard
|
|
721
|
-
reason: "The guard lives in
|
|
721
|
+
reason: "The guard lives in SCREEN_A_001's spec, which this project does not hold."
|
|
722
722
|
```
|
|
723
723
|
|
|
724
724
|
Four statuses, and **silence is not one of them**: `covered` · `deferred` · `pending-clarification`
|
|
@@ -728,6 +728,36 @@ missing flow. `sungen audit` then measures `flowCoverage` per DECLARED FLOW and
|
|
|
728
728
|
`FLOW-UNCOVERED` (declared, nobody wrote it), `FLOW-UNDECLARED` (a scenario claiming a flow id the
|
|
729
729
|
inventory never declares), `FLOW-STATUS-UNREASONED` and `FLOW-INVENTORY-MISSING`.
|
|
730
730
|
|
|
731
|
+
**Enumerate every branch the spec declares — do not rely on reading carefully.** Before writing
|
|
732
|
+
scenarios, list each mutually-exclusive branch the spec makes explicit, one line per arm:
|
|
733
|
+
|
|
734
|
+
- every `### Exception Flow X` / `### Alternative Flow X` heading;
|
|
735
|
+
- every row of a decision table (`DEC-*`, `BR-*`, any table of conditions → outcomes);
|
|
736
|
+
- every arm of an if/elif/else cascade in pseudocode;
|
|
737
|
+
- every state transition a state machine declares.
|
|
738
|
+
|
|
739
|
+
Each arm needs its OWN scenario, or a written exclusion. **Covering a sibling arm proves nothing
|
|
740
|
+
about this one** — and two scenarios that assert the same thing under different names are one test
|
|
741
|
+
counted twice, which is worse than a gap because the coverage sheet reports it as two.
|
|
742
|
+
`sungen audit` reports `SPEC-BRANCH-UNCOVERED` and `BRANCH-OVERCLAIMED`. This rule existed as
|
|
743
|
+
prose before and was missed three times in three flows; it is enumerated now for that reason.
|
|
744
|
+
|
|
745
|
+
**Two viewpoints per UI region, not one.** A region that has both conditional rendering (`DEC-*`)
|
|
746
|
+
and an acceptance scenario describing a click needs a case for EACH: "render — DEC-xxx" and
|
|
747
|
+
"interaction — click → destination". Finishing the render half is the easy half, and stopping there
|
|
748
|
+
is the common failure. Every navigation target the spec names needs a click-through case
|
|
749
|
+
(`NAV-TARGET-ABSENT`), even when this flow does not consume the destination — a context param
|
|
750
|
+
handed to another screen is that screen's input, and the handoff is where it goes wrong.
|
|
751
|
+
|
|
752
|
+
**A deny case needs its allow case.** "permission denied → content hidden" passes just as happily
|
|
753
|
+
when the content is hidden for everyone. Pair it with "permission granted → content shown", the
|
|
754
|
+
way a boundary needs `min-1 / min / max / max+1` (`PERMISSION-PAIR-MISSING`).
|
|
755
|
+
|
|
756
|
+
**State that ARRIVES with the data is a different case from state the test creates.** A
|
|
757
|
+
discriminator field you can only observe at load (an item already favourited before the page
|
|
758
|
+
opens) is a different oracle timing from the same field set by an action inside the test. Both are
|
|
759
|
+
needed; the first is usually `@manual:M1` or a data-factory fixture.
|
|
760
|
+
|
|
731
761
|
**One id per atomic CLAIM in the viewpoint.** The flow id groups; the viewpoint id identifies.
|
|
732
762
|
Writing `FL-BF-001` on four different claims makes the ledger count four items while traceability
|
|
733
763
|
sees one, so the coverage arithmetic and "which test proves this?" are both wrong and neither
|