@tenkara/afm-linux-arm64 4.0.0-alpha.8 → 4.0.0-alpha.9

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.
Files changed (113) hide show
  1. package/bin/afm +2 -2
  2. package/content/CHANGELOG.md +22 -0
  3. package/content/core/afm.md +1 -1
  4. package/content/ops/evolve.md +61 -9
  5. package/content/ops/reflect.md +18 -13
  6. package/content/ops/restructure.md +2 -2
  7. package/content/ops/update.md +26 -2
  8. package/content/roles/explorer.md +1 -1
  9. package/content/roles/reviewer.md +1 -1
  10. package/content/skills/adr.md +3 -3
  11. package/content/skills/analyze.md +2 -8
  12. package/content/skills/clarify.md +2 -8
  13. package/content/skills/deliver.md +4 -20
  14. package/content/skills/diagnose.md +3 -11
  15. package/content/skills/evolve.md +6 -30
  16. package/content/skills/export-template.md +2 -5
  17. package/content/skills/generalize.md +6 -22
  18. package/content/skills/gotcha.md +3 -3
  19. package/content/skills/init.md +2 -7
  20. package/content/skills/plan.md +3 -9
  21. package/content/skills/policy.md +0 -6
  22. package/content/skills/promote.md +1 -3
  23. package/content/skills/protocol.md +2 -3
  24. package/content/skills/reconcile.md +2 -6
  25. package/content/skills/refactor.md +2 -7
  26. package/content/skills/reflect.md +7 -17
  27. package/content/skills/remediate.md +3 -9
  28. package/content/skills/restructure.md +8 -14
  29. package/content/skills/rule.md +3 -4
  30. package/content/skills/specify.md +3 -9
  31. package/content/skills/tasks.md +4 -14
  32. package/content/skills/update.md +6 -4
  33. package/content/skills/verify.md +1 -3
  34. package/content/templates/evolution-report.template.md +5 -0
  35. package/package.json +1 -1
  36. package/plugin/agy/plugin.json +1 -1
  37. package/plugin/agy/skills/afm-adr/SKILL.md +7 -3
  38. package/plugin/agy/skills/afm-analyze/SKILL.md +4 -6
  39. package/plugin/agy/skills/afm-clarify/SKILL.md +4 -6
  40. package/plugin/agy/skills/afm-deliver/SKILL.md +6 -20
  41. package/plugin/agy/skills/afm-diagnose/SKILL.md +5 -9
  42. package/plugin/agy/skills/afm-evolve/SKILL.md +9 -29
  43. package/plugin/agy/skills/afm-export-template/SKILL.md +6 -5
  44. package/plugin/agy/skills/afm-generalize/SKILL.md +8 -20
  45. package/plugin/agy/skills/afm-gotcha/SKILL.md +7 -3
  46. package/plugin/agy/skills/afm-init/SKILL.md +3 -6
  47. package/plugin/agy/skills/afm-plan/SKILL.md +5 -7
  48. package/plugin/agy/skills/afm-policy/SKILL.md +2 -4
  49. package/plugin/agy/skills/afm-promote/SKILL.md +4 -2
  50. package/plugin/agy/skills/afm-protocol/SKILL.md +6 -3
  51. package/plugin/agy/skills/afm-reconcile/SKILL.md +5 -5
  52. package/plugin/agy/skills/afm-refactor/SKILL.md +3 -6
  53. package/plugin/agy/skills/afm-reflect/SKILL.md +9 -15
  54. package/plugin/agy/skills/afm-remediate/SKILL.md +5 -7
  55. package/plugin/agy/skills/afm-restructure/SKILL.md +10 -12
  56. package/plugin/agy/skills/afm-rule/SKILL.md +7 -4
  57. package/plugin/agy/skills/afm-specify/SKILL.md +5 -7
  58. package/plugin/agy/skills/afm-tasks/SKILL.md +6 -12
  59. package/plugin/agy/skills/afm-update/SKILL.md +10 -4
  60. package/plugin/agy/skills/afm-verify/SKILL.md +4 -2
  61. package/plugin/claude-code/.claude-plugin/plugin.json +1 -1
  62. package/plugin/claude-code/agents/afm-explorer.md +1 -1
  63. package/plugin/claude-code/agents/afm-reviewer.md +1 -1
  64. package/plugin/claude-code/skills/adr/SKILL.md +7 -3
  65. package/plugin/claude-code/skills/analyze/SKILL.md +4 -6
  66. package/plugin/claude-code/skills/clarify/SKILL.md +4 -6
  67. package/plugin/claude-code/skills/deliver/SKILL.md +6 -20
  68. package/plugin/claude-code/skills/diagnose/SKILL.md +5 -9
  69. package/plugin/claude-code/skills/evolve/SKILL.md +9 -29
  70. package/plugin/claude-code/skills/export-template/SKILL.md +6 -5
  71. package/plugin/claude-code/skills/generalize/SKILL.md +8 -20
  72. package/plugin/claude-code/skills/gotcha/SKILL.md +7 -3
  73. package/plugin/claude-code/skills/init/SKILL.md +3 -6
  74. package/plugin/claude-code/skills/plan/SKILL.md +5 -7
  75. package/plugin/claude-code/skills/policy/SKILL.md +2 -4
  76. package/plugin/claude-code/skills/promote/SKILL.md +4 -2
  77. package/plugin/claude-code/skills/protocol/SKILL.md +6 -3
  78. package/plugin/claude-code/skills/reconcile/SKILL.md +5 -5
  79. package/plugin/claude-code/skills/refactor/SKILL.md +3 -6
  80. package/plugin/claude-code/skills/reflect/SKILL.md +9 -15
  81. package/plugin/claude-code/skills/remediate/SKILL.md +5 -7
  82. package/plugin/claude-code/skills/restructure/SKILL.md +10 -12
  83. package/plugin/claude-code/skills/rule/SKILL.md +7 -4
  84. package/plugin/claude-code/skills/specify/SKILL.md +5 -7
  85. package/plugin/claude-code/skills/tasks/SKILL.md +6 -12
  86. package/plugin/claude-code/skills/update/SKILL.md +10 -4
  87. package/plugin/claude-code/skills/verify/SKILL.md +4 -2
  88. package/plugin/opencode/agents/afm-explorer.md +9 -0
  89. package/plugin/opencode/agents/afm-reviewer.md +9 -0
  90. package/plugin/opencode/skills/afm-adr/SKILL.md +7 -3
  91. package/plugin/opencode/skills/afm-analyze/SKILL.md +4 -6
  92. package/plugin/opencode/skills/afm-clarify/SKILL.md +4 -6
  93. package/plugin/opencode/skills/afm-deliver/SKILL.md +6 -20
  94. package/plugin/opencode/skills/afm-diagnose/SKILL.md +5 -9
  95. package/plugin/opencode/skills/afm-evolve/SKILL.md +9 -29
  96. package/plugin/opencode/skills/afm-export-template/SKILL.md +6 -5
  97. package/plugin/opencode/skills/afm-generalize/SKILL.md +8 -20
  98. package/plugin/opencode/skills/afm-gotcha/SKILL.md +7 -3
  99. package/plugin/opencode/skills/afm-init/SKILL.md +3 -6
  100. package/plugin/opencode/skills/afm-plan/SKILL.md +5 -7
  101. package/plugin/opencode/skills/afm-policy/SKILL.md +2 -4
  102. package/plugin/opencode/skills/afm-promote/SKILL.md +4 -2
  103. package/plugin/opencode/skills/afm-protocol/SKILL.md +6 -3
  104. package/plugin/opencode/skills/afm-reconcile/SKILL.md +5 -5
  105. package/plugin/opencode/skills/afm-refactor/SKILL.md +3 -6
  106. package/plugin/opencode/skills/afm-reflect/SKILL.md +9 -15
  107. package/plugin/opencode/skills/afm-remediate/SKILL.md +5 -7
  108. package/plugin/opencode/skills/afm-restructure/SKILL.md +10 -12
  109. package/plugin/opencode/skills/afm-rule/SKILL.md +7 -4
  110. package/plugin/opencode/skills/afm-specify/SKILL.md +5 -7
  111. package/plugin/opencode/skills/afm-tasks/SKILL.md +6 -12
  112. package/plugin/opencode/skills/afm-update/SKILL.md +10 -4
  113. package/plugin/opencode/skills/afm-verify/SKILL.md +4 -2
@@ -10,9 +10,7 @@ description: |
10
10
 
11
11
  This is an orchestrator skill of AFM. The canonical procedure is the op file that `afm path ops/evolve.md` prints.
12
12
 
13
- > **Conductor, not executor** (same pattern as `deliver`). `evolve` owns 3 things that no mechanism owns alone: (1) the evidence-collection driver for the whole instance (combines `diagnose` + `reflect`), (2) the split into buckets plus the single gate, (3) the apply driver, post-conditions, and the log/lineage record. It reads and follows everything else from the mechanisms, through a suppression contract.
14
- >
15
- > **Carve-outs (it does not override existing ops):** `diagnose`/`reflect`/`generalize`/`restructure` are the **mechanisms** (each runs à la carte). `analyze` audits **one feature** (read-only). `reconcile` proposes **one single edit** at the end of a turn. `promote` **records** a finding meant for the plugin (it does not edit the plugin). `evolve` is the **cycle** that chains the mechanisms with one gate and one log — the level no other op covers.
13
+ > **Carve-outs (it does not override existing ops):** `afm diagnose`, `afm reflect`, `afm generalize` and `afm restructure` are the **mechanisms** (each runs à la carte). `afm analyze` audits **one feature** (read-only). Passive mode (`afm reconcile`) proposes **one single edit** at the end of a turn. `afm promote` **records** a finding meant for the plugin (it does not edit the plugin). `evolve` is the **cycle** that chains the mechanisms with one gate and one log — the level no other op covers.
16
14
 
17
15
  ## When NOT to activate
18
16
 
@@ -20,7 +18,7 @@ This section helps someone who already activated the skill decide if it fits. It
20
18
 
21
19
  Use a single mechanism instead when the need is narrow. A report is `afm diagnose`. Refining a doc that misled you is `afm reflect`. Merging gotchas is `afm generalize`.
22
20
 
23
- A structure or staleness check is `afm restructure`. A version bump is `afm update`. `reconcile` proposes a one-off additive signal (new gotcha, rule, or ADR) directly.
21
+ A structure or staleness check is `afm restructure`. A version bump is `afm update`. Passive mode (`afm reconcile`) proposes a one-off additive signal (new gotcha, rule, or ADR) directly.
24
22
 
25
23
  A feature-level check is `afm analyze` or `afm deliver`. Recording a finding for the plugin is `afm promote`.
26
24
 
@@ -32,36 +30,14 @@ A feature-level check is `afm analyze` or `afm deliver`. Recording a finding for
32
30
 
33
31
  ## Procedure
34
32
 
35
- Read the op (`afm path ops/evolve.md`) end to end and follow it exactly. The op has 5 phases.
36
-
37
- **Phase 1 — Evidence collection.** Combine two sources through the suppression contract. `diagnose` is the mechanical scan of the 7 axes (`afm doctor --json` plus the A7 reading), read-only. `reflect` is behavioral evidence of docs that misled the agent. Run `generalize`/`restructure` on demand, when their own trigger signal fires. An empty diagnosis counts as a valid result.
38
-
39
- **Phase 2 — Proposal.** This phase plays the IMPROVER role. Apply the op's **shared proposal discipline**: retrieval before create, then a dry run before the gate. Split the proposals into 3 buckets.
40
-
41
- A non-restorable change always goes through the gate. It never invents its own target. Decide here whether to downgrade, archive, or merge an artifact. Cap bucket (b) at 8 items per cycle (`afm evolve gate-check --critical <n> --high <n> --medium <n> --low <n>` computes what to ask and what to stage). Recurring failures come from `afm failures promotable`.
42
-
43
- **Phase 3 — Single gate.** Ask item by item with `afm ask evolve --scope <item-slug>`, at most 4 questions per call. This gate is never skippable — there is no "go" shortcut.
44
-
45
- **Phase 4 — Apply and post-conditions.** Re-run `afm doctor --json`, `afm index --check` and `afm detect --for <file>` over the touched docs, and confirm the content root is clean (`git status`, or a timestamp check with no git).
46
-
47
- **Phase 5 — Log.** Record the cycle in `docs/evolution/NNN-<date>.md`. Suggest `promote` when a finding generalizes beyond this instance.
33
+ Read the op (`afm path ops/evolve.md`) end to end and follow it exactly. The op has 5 phases: evidence collection (diagnose plus reflect), proposal in 3 buckets, a single gate (`afm ask evolve`), apply with post-conditions, and the log in `docs/evolution/`.
48
34
 
49
35
  Consult the rubric `rubrics/when-to-evolve-methodology.md` (`afm path rubrics/when-to-evolve-methodology.md`) to decide between a full cycle, a single mechanism, or a one-off fix.
50
36
 
51
- ## Invariant principles
37
+ ## Most relevant principles
52
38
 
53
- The single canonical source is `PRINCIPLES.md` (`afm path PRINCIPLES.md`). Universals §1-8 apply. #2 (discover-first) applies: diagnose with evidence before you propose. #3 (mechanize-or-downgrade) applies too: evolve's own signals must pass the same test evolve applies to others.
54
-
55
- #8 (earned questions, recommendation-first) also applies to this skill.
56
-
57
- #6 (autonomy-first with self-check) follows the pattern *produce → self-check → report*. The gate is the load-bearing residue. Bright lines for #7 plugin, deletion, and push still apply.
58
-
59
- **No new principle here** — evolve is a composed materialization. The doctrine lives in the op and the rubric.
39
+ #2 (discover-first): diagnose with evidence before you propose. #3 (mechanize-or-downgrade): evolve's own signals must pass the same test evolve applies to others. #6 (autonomy-first with self-check): the gate is the load-bearing residue, and the bright lines for #7 plugin, deletion, and push still apply. #8 (earned questions, recommendation-first).
60
40
 
61
41
  ## Continuous doctrine
62
42
 
63
- The `reconcile` skill owns passive mode, and it is always on. Reconcile may **suggest** `afm evolve` when it detects a Class B signal. That signal is a lived contradiction between docs, or perceived inflation at apply time. Only the user can invoke the full cycle.
64
-
65
- ## Version
66
-
67
- Content version: `afm version` prints it.
43
+ Passive mode (`afm reconcile`) is always on. It may **suggest** `afm evolve` when it detects a Class B signal. That signal is a lived contradiction between docs, or perceived inflation at apply time. Only the user can invoke the full cycle.
@@ -7,8 +7,7 @@ description: |
7
7
 
8
8
  # AFM — Export-template
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/export-template`. The CLI owns the plan,
11
- the diff and the marker. This skill keeps the judgment.
10
+ The CLI owns the plan, the diff and the marker. This skill keeps the judgment.
12
11
 
13
12
  ## When NOT to activate
14
13
 
@@ -32,9 +31,7 @@ stop and suggest `afm init` (greenfield) or `afm refactor` (brownfield) first.
32
31
 
33
32
  ## Invariant principles
34
33
 
35
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply.
36
-
37
- Especially #5 (do not invent metadata when the operator leaves it blank: use `[TBD]` in the JSON). Also #6
34
+ Most relevant here: #5 (do not invent metadata when the operator leaves it blank: use `[TBD]` in the JSON). Also #6
38
35
  (autonomy-first, but deleting files is a bright line): confirm the diff before you delete.
39
36
 
40
37
  Passive mode (`afm reconcile`) is always on. This skill focuses only on the active conversion to a template.
@@ -8,15 +8,13 @@ description: |
8
8
 
9
9
  # AFM — Generalize (semantic consolidation of gotchas)
10
10
 
11
- Mechanism skill of AFM. The canonical procedure is the op file that `afm path ops/generalize.md` prints.
12
-
13
- > **Carve-out (does not overlap existing ops):** `promote` **registers** a finding meant for the plugin. It does not write to the plugin. `generalize` merges **inside the instance** (N gotchas become 1 rule in the same `/docs/`). `reconcile` **adds** a new gotcha. `generalize` **merges** gotchas that already exist. `reflect` refines **one** doc. `generalize` consolidates **many**. `evolve` is the **orchestrator** and it composes this skill when `diagnose` flags inflation from redundant gotchas.
11
+ > **Carve-out (does not overlap existing ops):** `afm promote` **registers** a finding meant for the plugin. It does not write to the plugin. `afm generalize` merges **inside the instance** (N gotchas become 1 rule in the same `/docs/`). `afm reconcile` **adds** a new gotcha. `afm generalize` **merges** gotchas that already exist. `afm reflect` refines **one** doc. `afm generalize` consolidates **many**. `afm evolve` is the **orchestrator** and it composes this skill when `afm diagnose` flags inflation from redundant gotchas.
14
12
 
15
13
  ## When NOT to activate
16
14
 
17
15
  This is a disambiguation criterion for someone who already activated the skill, not an activation trigger. That is why it lives in the body, not in the resident listing.
18
16
 
19
- Sending ONE learning to the plugin is `afm promote`. ADDING a new gotcha or rule is `reconcile` -> `afm gotcha`/`afm rule` (`generalize` only merges what already exists). Refining the clarity of ONE doc is `afm reflect`. With fewer than 2 similar candidates, there is no generalization to do.
17
+ Sending ONE learning to the plugin is `afm promote`. ADDING a new gotcha or rule is `afm reconcile` -> `afm gotcha`/`afm rule` (`afm generalize` only merges what already exists). Refining the clarity of ONE doc is `afm reflect`. With fewer than 2 similar candidates, there is no generalization to do.
20
18
 
21
19
  ## Pre-check
22
20
 
@@ -24,24 +22,10 @@ Sending ONE learning to the plugin is `afm promote`. ADDING a new gotcha or rule
24
22
  2. **Does `afm preflight` exit 0?** A non-zero exit says why (docs not bootstrapped, content unresolved, pin mismatch). Report it to the user. Do not fall back silently.
25
23
  3. **Is there a batch of >=2** similar gotchas/reflections? If not, report "nothing to generalize (no batch)" and stop. Generalizing from 1 case is forbidden (#5).
26
24
 
27
- ## Procedure
28
-
29
- Read the op (`afm path ops/generalize.md`) end to end. Follow it literally.
30
-
31
- **1. Identify the batch:** cluster by shared abstract cause, >=2 cases. Ask "would one more general instruction have prevented all N?" A larger batch yields a more abstract rule.
32
-
33
- **2. MetaReflect:** draft the generalized, non-case-specific rule. The original cases become examples. Follow the **shared proposal discipline** from `evolve.md` (`afm path ops/evolve.md`) instead of duplicating it. Reduce, do not create a parallel path.
34
-
35
- **3. ShowsImprovement + backtracking:** check if the rule covers all N cases. A hard rule needs an executable 0/1 trigger. Otherwise it becomes a § 1.3 principle. If it cannot cover all cases without turning vague, back out and keep the cases separate.
36
-
37
- -> **4. Own gate** (item (b), unavoidable and earned, through `afm ask generalize`; suppressed under `evolve`. On approval: write the rule via `rule.md` (`afm rule new <slug>`) and **archive the merged entries as tombstones**. Never delete) -> **5. Record** the result in `docs/evolution/NNN-<date>.md`. Suggest `promote` if the finding matters beyond this instance.
38
-
39
- ## Invariant principles
40
-
41
- Single canonical source: `PRINCIPLES.md` (`afm path PRINCIPLES.md`). Universals §1-8 apply here, especially #1 (episodic `gotchas.md` -> semantic `afm.md`). Also #3: a merged rule becomes hard only with an executable 0/1 trigger, the ShowsImprovement step of MetaReflection. Also #5: do not invent an abstraction without a real batch.
25
+ ## Gate
42
26
 
43
- Also #6/#8: self-verify before an earned gate. Deletion is a bright line. Use tombstones instead. **No new principle here** — `generalize` is a composed materialization. The doctrine lives in the op file.
27
+ The merge is load-bearing and goes through its own earned gate, `afm ask generalize` (suppressed under `afm evolve`). Merged entries become tombstones; never delete.
44
28
 
45
- ## Version
29
+ ## Most relevant here
46
30
 
47
- Content version: `afm version` prints it.
31
+ #1 (episodic `gotchas.md` -> semantic `afm.md`), #3 (a merged rule becomes hard only with an executable 0/1 trigger), #5 (no abstraction without a real batch), #6/#8 (self-verify before an earned gate; deletion is a bright line, so archive as tombstones). No new principle here: the doctrine lives in the op.
@@ -7,8 +7,8 @@ description: |
7
7
 
8
8
  # AFM — Gotcha
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/gotcha`. The CLI owns the entry
11
- gate, the number, the frontmatter the trigger index reads and the index. This skill keeps only the judgment.
10
+ The CLI owns the entry gate, the number, the frontmatter the trigger index reads and the index. This skill
11
+ keeps only the judgment.
12
12
 
13
13
  ## When NOT to activate
14
14
 
@@ -32,7 +32,7 @@ signal belongs to `afm remediate`.
32
32
 
33
33
  ## Invariant principles
34
34
 
35
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply. Two matter most here: #5 (do not
35
+ Most relevant here: #5 (do not
36
36
  invent a gotcha without a real case; the 2x entry check is a strong gate) and #6 (autonomy-first: save the
37
37
  result and report it).
38
38
 
@@ -69,14 +69,9 @@ procedure is in `afm path interview/bootstrap` § Alternate branch. `.afm-versio
69
69
 
70
70
  ## Invariant principles
71
71
 
72
- Single canonical source: `afm path PRINCIPLES`. For this skill (greenfield), the 8 universals apply (§1-8).
73
- #9 (retroactive ADR, load-bearing) does NOT apply to init. Bootstrap forbids a retroactive ADR.
72
+ For this skill (greenfield), #9 (retroactive ADR, load-bearing) does NOT apply to init. Bootstrap forbids a retroactive ADR.
74
73
 
75
74
  ## Continuous doctrine
76
75
 
77
- Passive mode (`afm reconcile`) is the responsibility of the `reconcile` skill. It stays always-on in any AFM
76
+ Passive mode (`afm reconcile`) stays always-on in any AFM
78
77
  project session. This skill covers only the active bootstrap procedure.
79
-
80
- ## Version
81
-
82
- `afm version` prints the version in use. History: `afm path CHANGELOG`.
@@ -7,11 +7,9 @@ description: |
7
7
 
8
8
  # AFM — Plan
9
9
 
10
- An atomic skill. The procedure lives in the op: read it with `afm path ops/plan.md`, end to end, and follow it literally.
11
-
12
10
  ## When NOT to activate
13
11
 
14
- There is no `spec.md` yet: run `afm specify` first. An end-to-end delivery is `deliver`, which composes this op.
12
+ There is no `spec.md` yet: run `afm specify` first. An end-to-end delivery is `afm deliver`, which composes this op.
15
13
 
16
14
  ## Pre-check
17
15
 
@@ -23,12 +21,8 @@ Read the stack from `docs/ach.md` and never reopen it. Infer the components, dec
23
21
 
24
22
  ## Invariant principles
25
23
 
26
- Single canonical source: `afm path PRINCIPLES.md`. Universals §1-8 apply. In particular #2 (discover-first: scan before you ask), #5 (do not invent contracts or a stack) and #8 (a question carries a recommendation).
24
+ Most relevant here: #2 (discover-first: scan before you ask), #5 (do not invent contracts or a stack) and #8 (a question carries a recommendation).
27
25
 
28
26
  ## Continuous doctrine
29
27
 
30
- Passive mode is the always-on `reconcile` skill. This skill covers only the planning.
31
-
32
- ## Version
33
-
34
- `afm version`. History: `afm path CHANGELOG.md`.
28
+ Passive mode (`afm reconcile`) is always on. This skill covers only the planning.
@@ -7,8 +7,6 @@ description: |
7
7
 
8
8
  # AFM — Policy (report the organisation layer)
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/policy`.
11
-
12
10
  ## When not to activate
13
11
 
14
12
  Never to CHANGE the policy. This skill reads. The organisation bundle belongs to whoever owns it, and no
@@ -25,7 +23,3 @@ and stop.
25
23
  Run `afm policy report` and read it by family. Say plainly that a policy bundle injects context and blocks
26
24
  nothing, and name what the reader may not edit here and who owns it. Never report a policy rule as
27
25
  enforced.
28
-
29
- ## Invariant principles
30
-
31
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply.
@@ -7,8 +7,6 @@ description: |
7
7
 
8
8
  # AFM — Promote
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/promote`.
11
-
12
10
  ## When NOT to activate
13
11
 
14
12
  This disambiguation applies once this skill has already activated. Project-specific learning stays in
@@ -31,7 +29,7 @@ bring the plugin INTO the instance (the opposite direction).
31
29
 
32
30
  ## Invariant principles
33
31
 
34
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply. That includes #5: never record a
32
+ Most relevant here: #5: never record a
35
33
  project-specific learning, and never one without a real case; the list grows on demand.
36
34
 
37
35
  It also includes #6/#7: the plugin boundary is **absolute**. This op records a finding and never applies a
@@ -7,8 +7,7 @@ description: |
7
7
 
8
8
  # AFM — Protocol (declared autonomy posture)
9
9
 
10
- Skill of `afm`. The canonical procedure is the op `afm path ops/protocol`. Field and preset definitions are
11
- in `afm path core/protocol`.
10
+ Field and preset definitions are in `afm path core/protocol`.
12
11
 
13
12
  > **A protocol is data, not a new execution path.** It parametrizes operations that already exist. A project
14
13
  > with no `protocol:` declared uses the defaults, which reproduce pre-v4 behavior.
@@ -35,7 +34,7 @@ Outside the three presets, the file must already exist: never invent one.
35
34
 
36
35
  ## Invariant principles
37
36
 
38
- Single canonical source: `afm path PRINCIPLES`. See especially #4 and #5.
37
+ Most relevant here: #4 and #5.
39
38
 
40
39
  #4: `[TBD]` beats invention. An instance with no declared posture does not receive an assumed one.
41
40
 
@@ -24,7 +24,7 @@ One criterion decides where something belongs (universal principle #1, source in
24
24
 
25
25
  `docs/` holds rules, decisions, gotchas, architecture, persona, flows and cross-module contracts. The agent's memory holds only the user's style and durable preferences ("small PRs, not big bundles") and personal context (role, years of experience, current focus).
26
26
 
27
- `docs/` is a living source, **not a frozen bootstrap artifact**: it evolves through the whole session by passive reconcile. The signal table is `afm path interview/triggers.md`. The procedure is the op: read it with `afm path ops/reconcile.md`.
27
+ `docs/` is a living source, **not a frozen bootstrap artifact**: it evolves through the whole session by passive reconcile. The signal table is `afm path interview/triggers.md`.
28
28
 
29
29
  ## Procedure (always-on)
30
30
 
@@ -42,8 +42,4 @@ Never apply an edit without proposing it first, never save a project rule in mem
42
42
 
43
43
  ## Invariant principles
44
44
 
45
- Single canonical source: `afm path PRINCIPLES.md`. Universals §1-8 apply, in particular #1 (the one criterion for memory against doc), #5 (no gotcha or rule without a case) and #6 (reconcile PROPOSES at the end of the turn).
46
-
47
- ## Version
48
-
49
- `afm version`. History: `afm path CHANGELOG.md`.
45
+ Most relevant here: #1 (the one criterion for memory against doc), #5 (no gotcha or rule without a case) and #6 (reconcile PROPOSES at the end of the turn).
@@ -70,15 +70,10 @@ For brownfield projects without `docs/.afm-version`:
70
70
 
71
71
  ## Invariant principles
72
72
 
73
- Single canonical source: `afm path PRINCIPLES`. For this skill (brownfield), **all** apply: the 8 universals
73
+ For this skill (brownfield), **all** principles apply: the 8 universals
74
74
  §1-8 plus the addition §9 (a retroactive ADR is load-bearing-only). #9 separates refactor from init. Init
75
75
  forbids retroactive ADRs.
76
76
 
77
77
  ## Continuous doctrine
78
78
 
79
- Passive mode (`afm reconcile`) is the responsibility of the `reconcile` skill. It is always-on in any AFM
80
- project session. This skill covers only the active refactor procedure.
81
-
82
- ## Version
83
-
84
- `afm version` prints the version in use. History: `afm path CHANGELOG`.
79
+ Passive mode (`afm reconcile`) is always-on in any AFM project session. This skill covers only the active refactor procedure.
@@ -1,53 +1,43 @@
1
1
  ---
2
2
  name: reflect
3
3
  description: |
4
- Finds where the local docs failed AS A HARNESS in this session. Examples are an ambiguous rule applied wrong, a doc that misled, and a user correction against the doc. The evidence is the session trajectory, never a static scan. It proposes edits that make the docs more assertive.
4
+ Finds where the local docs failed AS A HARNESS in the live session and the project's sessions since the last cycle. Examples are an ambiguous rule applied wrong, a doc that misled, and a user correction against the doc. The evidence is the session trajectory, never a static scan. It proposes edits that make the docs more assertive.
5
5
  Activates: `afm reflect`, "this rule is ambiguous", "the doc sent me the wrong way", "why do I keep getting this wrong when the doc covers it?".
6
6
  ---
7
7
 
8
8
 
9
9
  # AFM — Reflect (behavioral self-reflection on the docs)
10
10
 
11
- Mechanism skill of AFM. The canonical procedure is the op file that `afm path ops/reflect.md` prints.
12
-
13
- > **Carve-out (does not overlap existing ops):** `reconcile` works **code to docs, and is additive**. It learns a new fact and proposes adding it. `reflect` works **docs to docs, and refines**. An existing doc guided the agent wrong, so `reflect` proposes a clearer version. `diagnose` runs a **static** scan. `reflect` uses **behavioral** evidence from the session trajectory. Only the agent sees its own stumble. `evolve` is the **orchestrator**. It composes `reflect` and `diagnose` into one cycle with a single gate.
11
+ > **Carve-out (does not overlap existing ops):** `afm reconcile` works **code to docs, and is additive**. It learns a new fact and proposes adding it. `reflect` works **docs to docs, and refines**. An existing doc guided the agent wrong, so `reflect` proposes a clearer version. `afm diagnose` runs a **static** scan. `reflect` uses **behavioral** evidence from the session trajectory. Only the agent sees its own stumble. `afm evolve` is the **orchestrator**. It composes `reflect` and `afm diagnose` into one cycle with a single gate.
14
12
 
15
13
  ## When not to activate
16
14
 
17
15
  This is a disambiguation criterion for a skill already active, not an activation criterion. That is why it lives in the body, not in the resident listing.
18
16
 
19
- Learning a new fact, gotcha, or decision belongs to `reconcile`. Route it to `afm gotcha`, `afm rule`, or `afm adr`. A static mechanical scan belongs to `afm diagnose`. Merging N gotchas belongs to `afm generalize`. A failure with an external signal belongs to `afm remediate`. The full cycle belongs to `afm evolve`.
17
+ Learning a new fact, gotcha, or decision belongs to passive mode (`afm reconcile`). Route it to `afm gotcha`, `afm rule`, or `afm adr`. A static mechanical scan belongs to `afm diagnose`. Merging N gotchas belongs to `afm generalize`. A failure with an external signal belongs to `afm remediate`. The full cycle belongs to `afm evolve`.
20
18
 
21
19
  ## Pre-check
22
20
 
23
21
  1. **Does `<consumer>/docs/.afm-version` exist?** If not, stop. Suggest `afm init` (greenfield) or `afm refactor` (brownfield) first.
24
22
  2. **Does `afm preflight` exit 0?** A non-zero exit says why (docs not bootstrapped, content unresolved, pin mismatch). Report it to the user. Do not fall back silently.
25
- 3. **Did the session hit a doc-friction event** (or an articulated symptom)? If not, report "no doc friction observed" and stop. Reflection without behavioral evidence is forbidden (#5).
23
+ 3. **Did the live session or the project's sessions since the last cycle hit a doc-friction event** (or an articulated symptom)? Read the window with `afm sessions --since reflect --json` and `afm sessions signals --since reflect --json`. If the whole window has no signal, report "no doc friction observed" and stop. Reflection without behavioral evidence is forbidden (#5).
26
24
 
27
25
  ## Procedure
28
26
 
29
- Read the op (`afm path ops/reflect.md`) end to end. Follow it literally.
30
-
31
27
  The steps are:
32
28
 
33
- **1. Collection.** Build the behavioral signature φ_b = `(symptom-lived, doc-causal-status, mechanism)`. Cite both the doc passage **and** the session event.
29
+ **1. Collection.** Build the behavioral signature φ_b = `(symptom-lived, doc-causal-status, mechanism)`. Cite both the doc passage **and** the session event (`session:<id>@<ts>`). Weight: one signal in the live session suffices; a past-session signal needs 2 or more sessions, an explicit correction, or `regressed`, and `regressed` comes first. A repeated prompt is a finding: propose the artifact that stops the retyping.
34
30
 
35
31
  **2. Self-critique.** Consider a rival hypothesis: it was me, not the doc. Apply the guardrail: a violated rule is not a wrong rule. Apply an addressability filter.
36
32
 
37
33
  **3. Proposal.** Refine instructiveness: rewrite the ambiguous part, add an executable trigger, and remove ambiguity. Add suggestions for the human. This step follows the **shared proposal discipline** in `evolve.md` (`afm path ops/evolve.md`) and does not duplicate it.
38
34
 
39
- **4. Own gate.** Ask item by item, earned, with `afm ask reflect --scope <item-slug>`. `evolve` suppresses this gate.
35
+ **4. Own gate.** Ask item by item, earned, with `afm ask reflect --scope <item-slug>`. `afm evolve` suppresses this gate.
40
36
 
41
- **5. Record.** Write to `docs/evolution/NNN-<date>.md`. Add a `promote` suggestion when the finding generalizes. Hand off to `reconcile`.
37
+ **5. Record.** Write to `docs/evolution/NNN-<date>.md`. Add an `afm promote` suggestion when the finding generalizes. Hand off to passive mode (`afm reconcile`).
42
38
 
43
39
  ## Invariant principles
44
40
 
45
- The single canonical source is `PRINCIPLES.md` (`afm path PRINCIPLES.md`). Universals §1-8 apply.
46
-
47
41
  Rule #1 applies: refine the doc's instructiveness, not the agent's memory. Rule #5 applies: no lived event, no finding. Rule #6 applies: self-verify, then report. The gate is a load-bearing residue. Bright lines #7 for plugin, deletion, and push apply.
48
42
 
49
43
  Rule #8 applies: a suggestion or question must be earned, recommendation-first. **No new principle here.** `reflect` is a composed materialization. The doctrine lives in the op file.
50
-
51
- ## Version
52
-
53
- Content version: `afm version` prints it.
@@ -8,8 +8,6 @@ description: |
8
8
 
9
9
  # AFM — Remediate (CRITIC loop)
10
10
 
11
- Atomic skill of AFM. The canonical procedure is the op file that `afm path ops/remediate.md` prints.
12
-
13
11
  ## When NOT to activate
14
12
 
15
13
  This is a disambiguation for a skill that already activated. It is not an activation trigger. That is why it lives in the body and not in the resident listing.
@@ -24,16 +22,12 @@ Use `afm.md § 5.1` for an in-task retry at the moment of the error. Use `afm go
24
22
 
25
23
  ## Procedure
26
24
 
27
- Read the op (`afm path ops/remediate.md`) end to end and follow it literally. It includes the promotion gate (#5): 1 user correction OR at least 2 mechanical occurrences promote a failure. A transient failure does not promote. It also includes classification through the rubric `rubrics/failure-classification.md` (`afm path rubrics/failure-classification.md`). For each delta, propose the artifact (procedure or learning) and cite the source `sig=` (hard rule 19). Ask the artifact question with `afm ask remediate --scope <sig>`, materialize the result, close the signature with `afm failures close --sig <sig> --as remediated`, and report it (#6).
25
+ The op includes the promotion gate (#5): 1 user correction OR at least 2 mechanical occurrences promote a failure. A transient failure does not promote. It also includes classification through the rubric `rubrics/failure-classification.md` (`afm path rubrics/failure-classification.md`). For each delta, propose the artifact (procedure or learning) and cite the source `sig=` (hard rule 19). Ask the artifact question with `afm ask remediate --scope <sig>`, materialize the result, close the signature with `afm failures close --sig <sig> --as remediated`, and report it (#6).
28
26
 
29
27
  ## Invariant principles
30
28
 
31
- The single canonical source is `PRINCIPLES.md` (`afm path PRINCIPLES.md`). See in particular #3 (CRITIC corollary — recognition by tool, not self-judgment). See also #5 (do not promote a failure without recurrence or an oracle) and #6 (propose only, the human approves).
29
+ Most relevant here: #3 (CRITIC corollary — recognition by tool, not self-judgment). See also #5 (do not promote a failure without recurrence or an oracle) and #6 (propose only, the human approves).
32
30
 
33
31
  ## Continuous doctrine
34
32
 
35
- The `reconcile` skill owns passive mode, and it is always on. It reads `afm failures promotable` at the end of the turn and can propose remediation with no explicit command. The `evolve` cycle uses the failure events as evidence for `reflect`, toward a final remediation. This skill is the active record of the loop.
36
-
37
- ## Version
38
-
39
- Content version: `afm version` prints it.
33
+ Passive mode (`afm reconcile`) is always on. It reads `afm failures promotable` at the end of the turn and can propose remediation with no explicit command. The `afm evolve` cycle uses the failure events as evidence for `afm reflect`, toward a final remediation. This skill is the active record of the loop.
@@ -8,9 +8,7 @@ description: |
8
8
 
9
9
  # AFM — Restructure (context architecture health)
10
10
 
11
- This is a mechanism skill of AFM. The canonical procedure is the op file that `afm path ops/restructure.md` prints.
12
-
13
- > **Carve-out (does not overlap existing ops):** `diagnose` A1 finds a **dead reference** (the path does not exist). `restructure` staleness finds a path that **exists but changed** while the doc did not. `reconcile` adds **missing** information. `restructure` relocates information that **exists but sits in the wrong place**. `reflect` targets **clarity**. `restructure` targets **location and freshness**. `evolve` is the **orchestrator** that composes this skill when `diagnose` flags staleness or bloat.
11
+ > **Carve-out (does not overlap existing ops):** `afm diagnose` A1 finds a **dead reference** (the path does not exist). `restructure` staleness finds a path that **exists but changed** while the doc did not. `afm reconcile` adds **missing** information. `restructure` relocates information that **exists but sits in the wrong place**. `afm reflect` targets **clarity**. `restructure` targets **location and freshness**. `afm evolve` is the **orchestrator** that composes this skill when `afm diagnose` flags staleness or bloat.
14
12
  >
15
13
  > **Maturity (honest YAGNI):** the actionable core today is **staleness** (from git) plus **findability**. **Temperature tiering** (always-hot vs on-demand) is an **opt-in** ADR proposal, only for a doc that has actually outgrown its size. Small docs do not need it.
16
14
 
@@ -18,7 +16,7 @@ This is a mechanism skill of AFM. The canonical procedure is the op file that `a
18
16
 
19
17
  This is a disambiguation guide for a skill that has already activated. It does not gate activation, so it stays in the body, not in the resident listing.
20
18
 
21
- A path that does not exist belongs to `afm diagnose` (A1). Staleness means the path exists but changed. Information never documented belongs to `reconcile` → `afm gotcha` or `afm rule`. An ambiguous doc belongs to `afm reflect`. Merging gotchas belongs to `afm generalize`. The full cycle belongs to `afm evolve`.
19
+ A path that does not exist belongs to `afm diagnose` (A1). Staleness means the path exists but changed. Information never documented belongs to passive mode (`afm reconcile`) → `afm gotcha` or `afm rule`. An ambiguous doc belongs to `afm reflect`. Merging gotchas belongs to `afm generalize`. The full cycle belongs to `afm evolve`.
22
20
 
23
21
  ## Pre-check
24
22
 
@@ -28,25 +26,21 @@ A path that does not exist belongs to `afm diagnose` (A1). Staleness means the p
28
26
 
29
27
  ## Procedure
30
28
 
31
- Read the op (`afm path ops/restructure.md`) end to end. Follow it literally. Use these five steps.
29
+ Use these five steps.
32
30
 
33
31
  1. **Staleness scan.** `afm doctor --json` runs it (findings with axis `staleness` and `dead-gotcha`); read them. The git trigger fires in two cases. First case: a path cited in the doc has a later last commit than the doc. Second case: the doc has been stale for more than N commits. A hit is a candidate, not a verdict. The scan never rewrites the doc on its own.
34
- 2. **Findability.** Relocate or cross-reference information that exists but sits buried or in the wrong doc. Cite both locations. Route information that is genuinely missing to `reconcile`.
32
+ 2. **Findability.** Relocate or cross-reference information that exists but sits buried or in the wrong doc. Cite both locations. Route information that is genuinely missing to passive mode (`afm reconcile`).
35
33
  3. **Temperature partition.** Propose a hot/on-demand loading strategy as an opt-in ADR. Do this only when a doc has outgrown its size. Preserve 100% of the content.
36
- 4. **Its own gate.** This gate is load-bearing and earned, one `afm ask restructure --scope <item-slug>` per finding. It follows the **shared-proposal discipline** in `evolve.md` (`afm path ops/evolve.md`), instead of a duplicate copy of that discipline. `evolve` suppresses this gate when it runs.
37
- 5. **Record.** Write the result to `docs/evolution/NNN-<date>.md`. Suggest `promote` if the finding generalizes.
34
+ 4. **Its own gate.** This gate is load-bearing and earned, one `afm ask restructure --scope <item-slug>` per finding. It follows the **shared-proposal discipline** in `evolve.md` (`afm path ops/evolve.md`), instead of a duplicate copy of that discipline. `afm evolve` suppresses this gate when it runs.
35
+ 5. **Record.** Write the result to `docs/evolution/NNN-<date>.md`. Suggest `afm promote` if the finding generalizes.
38
36
 
39
37
  ## Invariant principles
40
38
 
41
- The single canonical source is `PRINCIPLES.md` (`afm path PRINCIPLES.md`). Universal principles §1-8 apply here. Four principles matter most for this skill.
39
+ Most relevant here:
42
40
 
43
41
  - #2: get git evidence before you propose a change.
44
42
  - #3: staleness needs an executable git trigger.
45
- - #4/#5: missing product content becomes `[TBD]` or goes to `reconcile`. Never invent it.
43
+ - #4/#5: missing product content becomes `[TBD]` or goes to passive mode (`afm reconcile`). Never invent it.
46
44
  - #6/#8: self-check the work, then pass an earned gate.
47
45
 
48
46
  **No new principle here.** `restructure` is a composed materialization. The doctrine lives in the op file.
49
-
50
- ## Version
51
-
52
- Content version: `afm version` prints it.
@@ -7,9 +7,8 @@ description: |
7
7
 
8
8
  # AFM — Rule
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/rule`. The CLI owns the number, the
11
- rule file, the index line and the runner skeleton, and refuses a rule with no honest trigger form. This
12
- skill keeps only the judgment.
10
+ The CLI owns the number, the rule file, the index line and the runner skeleton, and refuses a rule with no
11
+ honest trigger form. This skill keeps only the judgment.
13
12
 
14
13
  ## When NOT to activate
15
14
 
@@ -36,7 +35,7 @@ that already exist.
36
35
 
37
36
  ## Invariant principles
38
37
 
39
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply. Note especially #3 (a hard rule needs
38
+ Most relevant here: #3 (a hard rule needs
40
39
  a mechanical trigger, or it is a principle instead) and #6 (autonomy-first: materialize the change and
41
40
  report it).
42
41
 
@@ -7,11 +7,9 @@ description: |
7
7
 
8
8
  # AFM — Specify
9
9
 
10
- An atomic skill. The procedure lives in the op: read it with `afm path ops/specify.md`, end to end, and follow it literally.
11
-
12
10
  ## When NOT to activate
13
11
 
14
- A trivial change (no feature folder needed) goes straight to the `afm.md § 2` loop. A full end-to-end delivery is `deliver`, which composes this op.
12
+ A trivial change (no feature folder needed) goes straight to the `afm.md § 2` loop. A full end-to-end delivery is `afm deliver`, which composes this op.
15
13
 
16
14
  ## Pre-check
17
15
 
@@ -23,12 +21,8 @@ The number comes from `afm next-id feature`, never by hand. What is left to you
23
21
 
24
22
  ## Invariant principles
25
23
 
26
- Single canonical source: `afm path PRINCIPLES.md`. Universals §1-8 apply. In particular #2 (discover-first: compute the heuristic and the US from the scan), #5 (never invent a success criterion) and #6 (autonomy-first).
24
+ Most relevant here: #2 (discover-first: compute the heuristic and the US from the scan), #5 (never invent a success criterion) and #6 (autonomy-first).
27
25
 
28
26
  ## Continuous doctrine
29
27
 
30
- Passive mode is the always-on `reconcile` skill. This skill covers only the opening of the feature.
31
-
32
- ## Version
33
-
34
- `afm version`. History: `afm path CHANGELOG.md`.
28
+ Passive mode (`afm reconcile`) is always on. This skill covers only the opening of the feature.
@@ -7,28 +7,18 @@ description: |
7
7
 
8
8
  # AFM — Tasks
9
9
 
10
- An atomic skill. The procedure lives in the op: read it with `afm path ops/tasks.md`, end to end, and follow it literally.
11
-
12
10
  ## When NOT to activate
13
11
 
14
- There is no `plan.md` yet: run `afm plan` first. An end-to-end delivery is `deliver`, which composes this op.
12
+ There is no `plan.md` yet: run `afm plan` first. An end-to-end delivery is `afm deliver`, which composes this op.
15
13
 
16
14
  ## Pre-check
17
15
 
18
16
  Run `afm preflight` (exit 3: stop and suggest `afm init` or `afm refactor`). Run `afm feature status <NNN> --json`: a non-empty `blockers` is an open `[NEEDS CLARIFICATION:]` in the plan. That is a hard refusal with no override, not a question.
19
17
 
20
- ## Procedure
21
-
22
- Create the file with the generator (`afm new feature-tasks --feature NNN-slug`), then add every task with `afm task add <NNN> --kind <k> --text <t>`: setup tasks, then for each spec scenario a red task (`--scenario N`) and the green task that closes it (`--closes Txxx`), an optional refactor, the validation task of each plan boundary (`--validates <boundary name>`), and one reconcile task, last. Never write a task by hand: the tasks live in the frontmatter `tasks:` list, and the CLI assigns the id and validates the item. Mark `--parallel` only where a task does not depend on the one before it; a green never is. Give every task a `US-NNN` or `RF-NN` (`--refs`). The CLI refuses an item that breaks a lint rule. Then run `afm feature lint <NNN>` and fix what it reports until it exits 0: a missing task with `afm task add`, a wrong field or kind with `afm task set <NNN> <Txxx> --<field> <value>` (`--clear <field>` clears one), a task that should not exist with `afm task remove <NNN> <Txxx>`. Never edit the YAML by hand. The reconcile task closes the `status:` keys; close each task with `afm task done`. Autonomy-first: write and report.
23
-
24
- ## Invariant principles
18
+ ## Principles
25
19
 
26
- Single canonical source: `afm path PRINCIPLES.md`. Universals §1-8 apply. In particular #5 (every task traces to a US or RF) and rule 1 (TDD: no green task without the red task it closes).
20
+ Most relevant here: #5 (every task traces to a US or RF) and rule 1 (TDD: no green task without the red task it closes).
27
21
 
28
22
  ## Continuous doctrine
29
23
 
30
- Passive mode is the always-on `reconcile` skill. This skill covers only the task list.
31
-
32
- ## Version
33
-
34
- `afm version`. History: `afm path CHANGELOG.md`.
24
+ Passive mode (`afm reconcile`) is always on. This skill covers only the task list.
@@ -7,8 +7,7 @@ description: |
7
7
 
8
8
  # AFM — Update (sync instance-plugin)
9
9
 
10
- This is the sync skill of `afm`. The canonical procedure is the op `afm path ops/update`. The CLI runs the
11
- codemod registry, proves each op and moves the pin. This skill keeps the judgment.
10
+ The CLI runs the codemod registry, proves each op and moves the pin. This skill keeps the judgment.
12
11
 
13
12
  > **Carve-out (does not overlap existing ops):** `afm init` and `afm refactor` **create** the instance
14
13
  > (bootstrap). `update` brings an **existing** instance forward, the path that `afm refactor` refuses.
@@ -42,13 +41,16 @@ the run. A pin **ahead** of the binary is an anomaly: report it, never roll it b
42
41
  4. **Language migration** (when the instance is not English): read `prd.md` § 11.1 FIRST and derive the
43
42
  excluded scope from it, and only then read a file. `[TBD]` there stops the step and asks
44
43
  `afm ask update-strings`. It never picks a language. The artifacts question is
45
- `afm ask update-artifacts`.
44
+ `afm ask update-artifacts`. On migrate, run the rewrite as one orchestrated batch through
45
+ {{host:workflow}}, with a light model per agent ({{host:light-model}}) for the rewrite and the loss
46
+ check. Escalate only a flagged file to a capable model. The session model keeps the excluded scope and
47
+ the final gate.
46
48
  5. Post-conditions: `afm index --check` returns 0 and the plugin boundary stays clean. Report in chat what
47
49
  migrated and what stayed pending. Under `afm evolve`, feed it to `docs/evolution/`.
48
50
 
49
51
  ## Invariant principles
50
52
 
51
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply. Follow #2 (discover-first): the proof of
53
+ Most relevant here: #2 (discover-first): the proof of
52
54
  need is the grep that shows what is missing. Follow #4/#5: materialize only what the plugin already provides
53
55
  ready-made, and never invent missing product content. Follow #6 (autonomy-first with a gate). Bright line
54
56
  #7 applies: only **read** the plugin, and write only to the instance.
@@ -7,8 +7,6 @@ description: |
7
7
 
8
8
  # AFM — Verify (stamp a human review)
9
9
 
10
- Atomic skill of `afm`. The canonical procedure is the op `afm path ops/verify`.
11
-
12
10
  ## When not to activate
13
11
 
14
12
  Never on ordinary work, and never on your own output. This skill records that a PERSON read a document. An
@@ -28,4 +26,4 @@ agent actor. Report the tier that resulted and what it means.
28
26
 
29
27
  ## Invariant principles
30
28
 
31
- Single canonical source: `afm path PRINCIPLES`. Universals §1-8 apply. #5 is load-bearing here.
29
+ Most relevant here: #5 is load-bearing.
@@ -11,6 +11,7 @@ frontmatter_for_output: |
11
11
  date: 'YYYY-MM-DD'
12
12
  cycle_trigger: '<explicit invocation or the symptom stated by the user: cite it>'
13
13
  new_signal: '<which Class A delta or symptom released the cooldown>'
14
+ resolves: [] # optional: fingerprints (from `afm sessions signals`) of the friction this cycle fixed
14
15
  ---
15
16
 
16
17
  # Evolution cycle {{NNN}} — {{date YYYY-MM-DD}}
@@ -20,6 +21,10 @@ frontmatter_for_output: |
20
21
  > sorting these names, and an ordinal-first name sorts by ordinal before date — a low ordinal on
21
22
  > a recent date rewinds the window in silence. `NNN` is now only a same-day tiebreak.
22
23
  >
24
+ > **`resolves:` (frontmatter, optional)** lists the signal fingerprints this cycle fixed. `afm sessions signals`
25
+ > marks a signal with one of them `resolved` when it happened before this report's date, and `regressed` when
26
+ > it happens again after it (the fix did not hold).
27
+ >
23
28
  > **`mechanism:` (frontmatter) is mandatory and it is not decoration.** `reflect`, `evolve` and `restructure`
24
29
  > all write into this one directory, and each one's cadence window is "since MY last report".
25
30
  > Without the field the windows collapse into one, and the cheap mechanism starves the expensive
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tenkara/afm-linux-arm64",
3
- "version": "4.0.0-alpha.8",
3
+ "version": "4.0.0-alpha.9",
4
4
  "description": "The afm binary (CLI and MCP server) for linux-arm64.",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {