You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: fixtures/agent-context-conformance/ts-requirements/expected/.claude/skills/metaobjects-authoring/references/requirements.md
+9-3Lines changed: 9 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,9 +47,15 @@ line: *would this sentence have to change if the code changed but the model did
47
47
is `notes`.
48
48
49
49
**Hierarchy is nesting, and links live at the bottom.** L1 solution, L2 segment, L3
50
-
service — these never reference the model. **L4** binds an object, **L5** binds a field,
51
-
view or identity. `implementedBy` above L4 is an error. Regrouping *moves* a node; it does
52
-
not edit a parent string.
50
+
service — these never reference the model. **L4** binds a declared top-level node — an
51
+
`object.*`**or a `template.*`** — and **L5** binds a member of one: a field, view,
52
+
validator, identity, or a template's child. `implementedBy` above L4 is an error.
53
+
Regrouping *moves* a node; it does not edit a parent string.
54
+
55
+
Claim your prompts. A `template.prompt` is a model node realising a capability exactly as
56
+
an entity is, and it is the node whose retirement is hardest to see later — a removed
57
+
prompt leaves no table behind. A prompt estate with no requirement entries is the same
58
+
blind spot this whole mechanism exists to close.
53
59
54
60
**L1–L3 are levels of abstraction and ownership in the problem domain** — whose need is
55
61
this, and at what altitude — and are NEVER a directory, package, deployable or module.
Copy file name to clipboardExpand all lines: fixtures/agent-context-conformance/ts-requirements/expected/.claude/skills/metaobjects-verify/references/requirements.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,9 +35,26 @@ mechanism exists to preserve.
35
35
|`@implementedBy` above the L4 link floor | 1 |
36
36
| live `requirement.architectural` claimed by nothing | 1 |
37
37
|`@verifiedBy` naming a test that exists nowhere | 1 |
38
+
|`@verifiedBy` naming a name found only in an **unrecognised** test file | 0 (warning) |
38
39
|`@verifiedBy` naming a test that is **skipped**| 0 (warning) |
39
40
| an entity no requirement claims | 0 (warning) |
40
41
42
+
## What counts as a test file is YOUR project's call
43
+
44
+
The scan ships patterns for jest/vitest/bun, JUnit, Maven Failsafe (`*IT`), xUnit/NUnit,
45
+
pytest and Kotlin. Those are a convenience, **not an authority** — a built-in list is a guess
46
+
about your repository, and a wrong guess reports a real test as a broken claim. Declare your
Copy file name to clipboardExpand all lines: fixtures/metamodel-docs/expected/types/requirement.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ How the system is built, applied uniformly across the model. Its check is UNIVER
27
27
|`@status`| string | yes ||`planned`, `live`, `partial`, `abandoned`, `superseded`| — | As on requirement.functional. A live or partial architectural requirement claimed by NOTHING is an error: a policy declared and applied to nothing. A planned one is exempt from that check — it is not applied yet by definition. |
28
28
|`@supersededBy`| string | no ||| — | The requirement that replaced this one. Expected on status=superseded. |
29
29
|`@trackedBy`| string[]| no ||| — | As on requirement.functional. Issue or ticket references for outstanding work; free-form, not resolved. |
30
-
|`@verifiedBy`| string[]| no ||| — |Names of the tests proving the policy holds. verify checks each exists and is not skipped; it never runs them. |
30
+
|`@verifiedBy`| string[]| no ||| — |OPTIONAL — omit unless you have opened the test and read what it asserts. Names of tests that assert the policy holds. verify checks each name EXISTS and is not skipped; it never runs them, and it cannot tell whether the named test verifies this requirement — any occurrence in the test corpus satisfies it. |
31
31
|`@violation`| string | yes ||| — | What breaking it looks like — the node that would contradict it. This is what makes universality checkable. |
32
32
33
33
**Allowed children**
@@ -51,7 +51,7 @@ What the product does for a user, stated as one violable claim. Its check is EXI
51
51
|`@status`| string | yes ||`planned`, `live`, `partial`, `abandoned`, `superseded`| — | planned intended but not built yet; live implemented and in use; partial implemented with known gaps; abandoned built then deliberately retired; superseded replaced by a different mechanism. A dangling @implementedBy is an ERROR on live/partial (the model moved, the requirement is stale) and ALLOWED on planned/abandoned/superseded — on planned the nodes do not exist YET, on the other two they are meant to be gone, and that is the entry doing its job. A planned requirement also never contributes to object coverage: planning a capability must not silence the warning that nothing implements it. |
52
52
|`@supersededBy`| string | no ||| — | The requirement that replaced this one. Expected on status=superseded. |
53
53
|`@trackedBy`| string[]| no ||| — | Issue or ticket references for outstanding work — a URL, an owner/repo#123 shorthand, or a tracker key. Free-form and NOT resolved by verify, which does not reach the network; unlike @verifiedBy, nothing here is checked to exist. Its job is to stop a deferred gap becoming invisible, so verify warns when a deferred requirement names no ticket. Also the right place to link the ticket that a planned requirement will be built under. |
54
-
|`@verifiedBy`| string[]| no ||| — |Names of the tests proving the behaviour. verify checks each exists and is not skipped; it never runs them. |
54
+
|`@verifiedBy`| string[]| no ||| — |OPTIONAL — omit unless you have opened the test and read what it asserts. Names of tests that assert the behaviour. verify checks each name EXISTS and is not skipped; it never runs them, and it cannot tell whether the named test verifies this requirement — any occurrence in the test corpus satisfies it. |
55
55
|`@violation`| string | yes ||| — | What breaking it looks like, in one sentence. A requirement MUST be violable: 'every entity has a uuid primary key' is (point at one with a composite string key); 'things are persisted' is not, and is a description rather than a requirement. |
0 commit comments