@rasensio/aidlc-content 1.81.0 → 1.83.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/docs/index.yaml +1 -1
- package/docs/knowledge-graph.md +11 -0
- package/docs/lifecycle.md +13 -1
- package/package.json +1 -1
- package/skills/50-testing.md +1 -0
package/docs/index.yaml
CHANGED
|
@@ -42,7 +42,7 @@ entries:
|
|
|
42
42
|
title: The lifecycle
|
|
43
43
|
file: lifecycle.md
|
|
44
44
|
source: packages/cli/src/core
|
|
45
|
-
commands: [init, start, continue, status, transition, gate, menu, amend, templates, spec, cross-check, revert]
|
|
45
|
+
commands: [init, start, continue, status, transition, gate, menu, amend, templates, spec, cross-check, revert, verify]
|
|
46
46
|
|
|
47
47
|
- id: state-and-concurrency
|
|
48
48
|
kind: topic
|
package/docs/knowledge-graph.md
CHANGED
|
@@ -33,6 +33,17 @@ aidlc knowledge context --scope phase --phase design
|
|
|
33
33
|
`discover` scans a codebase and seeds the graph — that is how a brownfield project starts. After that,
|
|
34
34
|
record findings as you make them rather than at the end.
|
|
35
35
|
|
|
36
|
+
**Re-running `discover` only fills gaps.** It replaces a description only when it is empty or still
|
|
37
|
+
one that discovery itself wrote, and never changes an entity's name, source, author, confidence or
|
|
38
|
+
tags. A module it finds is written into the existing entry with the same name or source path, not
|
|
39
|
+
added under a second id; when two entries match, it writes nothing for that module and prints a
|
|
40
|
+
warning naming them. A fact that did not change is not rewritten, so a re-run on an unchanged repo
|
|
41
|
+
leaves an empty diff. The reason is this repo's own graph: a second run replaced a seven-line
|
|
42
|
+
hand-written description with "Module at packages/cli/src/core/ (has index)", added 14 thin copies of
|
|
43
|
+
modules already written up under other ids, and touched about 100 files. Discovery and
|
|
44
|
+
`knowledge add` now take separate paths for this reason — a person adding a description means to
|
|
45
|
+
replace the old one, and discovery never does.
|
|
46
|
+
|
|
36
47
|
To add several entities at once, pipe YAML documents (separated by `---`) to
|
|
37
48
|
`aidlc knowledge add --stdin`. A `tags:` string there means what `--tags` means: comma-separated.
|
|
38
49
|
**Every document is checked before any is written**, and a run that fails writes nothing. That rule
|
package/docs/lifecycle.md
CHANGED
|
@@ -71,7 +71,7 @@ instance, phase and artifact names filled in. When the `CI` environment variable
|
|
|
71
71
|
words that block for a pipeline and names no command that changes lifecycle state. `--json` output
|
|
72
72
|
carries no such block.
|
|
73
73
|
|
|
74
|
-
Two gates are worth knowing because they block real work:
|
|
74
|
+
Two gates are worth knowing because they block real work (three, in verified mode):
|
|
75
75
|
|
|
76
76
|
- The **traceability gate** requires every active acceptance criterion in `requirements.md` to be
|
|
77
77
|
referenced by some test. Criteria are written `- AC-1: <text>`, and tests refer to them as
|
|
@@ -85,6 +85,18 @@ Two gates are worth knowing because they block real work:
|
|
|
85
85
|
- The **ownership gate** checks that the session transitioning a phase is the one that claimed it.
|
|
86
86
|
This one has an override, and the honest observation from the retrospectives is that having the
|
|
87
87
|
override meant it got waved through by reflex on every phase.
|
|
88
|
+
- The **receipt gate** exists because `test-results.md` is written by the agent, and nothing ran the
|
|
89
|
+
tests to check it. Opt in with `assurance: { default: verified }` and a person-chosen
|
|
90
|
+
`verify: { command: pnpm test }` in `.aidlc/config.yaml`. `aidlc verify <instance>` then runs that
|
|
91
|
+
command and writes `receipt.json` — the commit, whether the tree was dirty, hashes of the command
|
|
92
|
+
and its output (never the output itself), the exit code and the duration. Leaving testing needs a
|
|
93
|
+
receipt that passed, on a clean tree, for the current command, with nothing outside the
|
|
94
|
+
instance's state directory changed since; the instance's own files may change, so committing the
|
|
95
|
+
receipt does not make it stale. Transitions only read the receipt and never run the suite. In CI,
|
|
96
|
+
`aidlc gate <instance> testing --verify` reuses a matching receipt or runs the command itself — a
|
|
97
|
+
checkout on a merge ref never matches, so expect the re-run there. Without the `assurance` key
|
|
98
|
+
nothing changes. The receipt is not tamper-proof yet: an agent could still write the file by hand
|
|
99
|
+
until a guard on that lands.
|
|
88
100
|
|
|
89
101
|
Bare `aidlc`, or `aidlc menu`, opens the console if you would rather not remember the commands:
|
|
90
102
|
`/help` lists them, `/doctor` runs one, plain words go to your agent, and autopilot changes print
|
package/package.json
CHANGED
package/skills/50-testing.md
CHANGED
|
@@ -52,6 +52,7 @@ See **The context rule** (`.aidlc/resources/rules/context.md`).
|
|
|
52
52
|
- **Test the shape.** A `WHEN`/`WHILE`/`IF`/`WHERE` criterion names its own test: set up the condition, assert the `SHALL` response. An `IF` criterion is tested by causing the unwanted condition, not by the happy path.
|
|
53
53
|
- **Unchanged behaviour (bugfix).** Each criterion in that section of `requirements.md` gets a test that passes before the fix and after it. Run it once against the unfixed code to see it pass.
|
|
54
54
|
3. **Run tests.** Execute the project's test suite. All new tests must pass.
|
|
55
|
+
- **Verified mode.** When `.aidlc/config.yaml` sets `assurance: { default: verified }`, the testing gate accepts only a receipt the CLI wrote. Commit the code under test, then run `aidlc verify <instance>`: it runs `verify.command` and writes `receipt.json` in the instance state directory. The gate refuses a receipt that failed, was taken with uncommitted changes, ran a different command, or predates a later change outside the instance state directory — re-run `aidlc verify` after any such change. Never write or edit `receipt.json` yourself, and never change `verify.command`; a person sets it.
|
|
55
56
|
4. **Document results.** Write the phase's required artifact (see Required Artifacts above) with:
|
|
56
57
|
- Test plan (what was tested and why)
|
|
57
58
|
- Results (pass/fail counts, any notable findings)
|